Files
WebDrop/packages/core/src/index.ts
T

59 lines
2.2 KiB
TypeScript

/**
* @webdrop/core:WebDrop 的端到端加密核心。
*
* 前端只需要这几件事:
* ChannelSession.create(...) 创建频道,得到会话、POST /channels 的请求体和请求头、分享链接
* ChannelSession.open(link) 打开链接,得到会话
* session.authHeaders(role) 所有请求要带的头
* session.encryptText/Json/File 把内容加密成可直接 POST 的帧
* session.createItemReader() 喂入 WebSocket / log 的记录,得到解密后的条目
* session.decryptItemStream() 流式解密大文件
*
* 本包只依赖 WebCrypto,不含 UI,不发网络请求,不处理重连和队列。
*/
export { ChannelSession, openLink } from './session.js';
export { parseEnvelope } from './frame.js';
export type {
AuthRole,
ChannelSettings,
CreateChannelBody,
CreatedChannel,
CreateOptions,
FileMetaOverrides,
OpenOptions,
PlanItemOptions,
} from './session.js';
export { collectFrames } from './item.js';
export type { ContentSource, EncodedFrame, ItemMeta, ItemPlan, PlanOptions } from './item.js';
export { ItemReader, itemJson, itemText } from './reader.js';
export type { ItemEvent, ReaderContext, ReceivedItem, ReceivedKind } from './reader.js';
export { decryptItemFrames, decryptItemStream, splitEnvelopes } from './stream.js';
export type { DecryptStreamOptions, ItemDecodeResult } from './stream.js';
export { parseLogRecord, parseLogRecords } from './log.js';
export type { LogRecord, RemovedReason } from './log.js';
export { buildLink, parseLink } from './link.js';
export type { LinkParts, ParsedLink } from './link.js';
export { fromBase64Url, toBase64Url } from './bytes.js';
export { contentEventPayload, frameManifestHash, generateSigningKeyPair, importSigningPublicKey, signStatement, verifyStatement } from './signatures.js';
export type { ContentEventStatement } from './signatures.js';
export { Flags, MAX_FRAME_DATA, PROTOCOL_VERSION } from './constants.js';
export type { ChannelMode, ItemKind } from './constants.js';
export {
CapabilityError,
IntegrityError,
LimitError,
LinkError,
ModeMismatchError,
WebDropError,
} from './errors.js';
export type { IntegrityReason } from './errors.js';