@teepin/sdk 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +41 -36
  2. package/dist/cjs/client.js +42 -4
  3. package/dist/cjs/client.js.map +1 -1
  4. package/dist/cjs/direct/bytes.js +50 -0
  5. package/dist/cjs/direct/bytes.js.map +1 -0
  6. package/dist/cjs/direct/common.js +167 -0
  7. package/dist/cjs/direct/common.js.map +1 -0
  8. package/dist/cjs/direct/downloads-plan.js +127 -0
  9. package/dist/cjs/direct/downloads-plan.js.map +1 -0
  10. package/dist/cjs/direct/engine.js +405 -0
  11. package/dist/cjs/direct/engine.js.map +1 -0
  12. package/dist/cjs/direct/formats.js +44 -0
  13. package/dist/cjs/direct/formats.js.map +1 -0
  14. package/dist/cjs/direct/hpke.js +275 -0
  15. package/dist/cjs/direct/hpke.js.map +1 -0
  16. package/dist/cjs/direct/journal.js +80 -0
  17. package/dist/cjs/direct/journal.js.map +1 -0
  18. package/dist/cjs/direct/large.js +850 -0
  19. package/dist/cjs/direct/large.js.map +1 -0
  20. package/dist/cjs/direct/reads.js +1314 -0
  21. package/dist/cjs/direct/reads.js.map +1 -0
  22. package/dist/cjs/direct/sha256.js +122 -0
  23. package/dist/cjs/direct/sha256.js.map +1 -0
  24. package/dist/cjs/direct/tws1.js +480 -0
  25. package/dist/cjs/direct/tws1.js.map +1 -0
  26. package/dist/cjs/direct/uploads.js +1706 -0
  27. package/dist/cjs/direct/uploads.js.map +1 -0
  28. package/dist/cjs/errors.js +70 -13
  29. package/dist/cjs/errors.js.map +1 -1
  30. package/dist/cjs/index.js +5 -1
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/links.js +195 -0
  33. package/dist/cjs/links.js.map +1 -0
  34. package/dist/cjs/node/downloads.js +835 -0
  35. package/dist/cjs/node/downloads.js.map +1 -0
  36. package/dist/cjs/node/journal.js +841 -0
  37. package/dist/cjs/node/journal.js.map +1 -0
  38. package/dist/cjs/node/uploads.js +219 -0
  39. package/dist/cjs/node/uploads.js.map +1 -0
  40. package/dist/cjs/node.js +26 -39
  41. package/dist/cjs/node.js.map +1 -1
  42. package/dist/cjs/storage.js +214 -184
  43. package/dist/cjs/storage.js.map +1 -1
  44. package/dist/cjs/transfer.js +18 -351
  45. package/dist/cjs/transfer.js.map +1 -1
  46. package/dist/esm/client.js +42 -4
  47. package/dist/esm/client.js.map +1 -1
  48. package/dist/esm/direct/bytes.js +42 -0
  49. package/dist/esm/direct/bytes.js.map +1 -0
  50. package/dist/esm/direct/common.js +155 -0
  51. package/dist/esm/direct/common.js.map +1 -0
  52. package/dist/esm/direct/downloads-plan.js +117 -0
  53. package/dist/esm/direct/downloads-plan.js.map +1 -0
  54. package/dist/esm/direct/engine.js +385 -0
  55. package/dist/esm/direct/engine.js.map +1 -0
  56. package/dist/esm/direct/formats.js +40 -0
  57. package/dist/esm/direct/formats.js.map +1 -0
  58. package/dist/esm/direct/hpke.js +262 -0
  59. package/dist/esm/direct/hpke.js.map +1 -0
  60. package/dist/esm/direct/journal.js +75 -0
  61. package/dist/esm/direct/journal.js.map +1 -0
  62. package/dist/esm/direct/large.js +816 -0
  63. package/dist/esm/direct/large.js.map +1 -0
  64. package/dist/esm/direct/reads.js +1275 -0
  65. package/dist/esm/direct/reads.js.map +1 -0
  66. package/dist/esm/direct/sha256.js +118 -0
  67. package/dist/esm/direct/sha256.js.map +1 -0
  68. package/dist/esm/direct/tws1.js +460 -0
  69. package/dist/esm/direct/tws1.js.map +1 -0
  70. package/dist/esm/direct/uploads.js +1660 -0
  71. package/dist/esm/direct/uploads.js.map +1 -0
  72. package/dist/esm/errors.js +64 -11
  73. package/dist/esm/errors.js.map +1 -1
  74. package/dist/esm/index.js +1 -0
  75. package/dist/esm/index.js.map +1 -1
  76. package/dist/esm/links.js +189 -0
  77. package/dist/esm/links.js.map +1 -0
  78. package/dist/esm/node/downloads.js +829 -0
  79. package/dist/esm/node/downloads.js.map +1 -0
  80. package/dist/esm/node/journal.js +824 -0
  81. package/dist/esm/node/journal.js.map +1 -0
  82. package/dist/esm/node/uploads.js +187 -0
  83. package/dist/esm/node/uploads.js.map +1 -0
  84. package/dist/esm/node.js +17 -14
  85. package/dist/esm/node.js.map +1 -1
  86. package/dist/esm/storage.js +214 -184
  87. package/dist/esm/storage.js.map +1 -1
  88. package/dist/esm/transfer.js +19 -349
  89. package/dist/esm/transfer.js.map +1 -1
  90. package/dist/types/client.d.ts +45 -4
  91. package/dist/types/client.d.ts.map +1 -1
  92. package/dist/types/direct/bytes.d.ts +11 -0
  93. package/dist/types/direct/bytes.d.ts.map +1 -0
  94. package/dist/types/direct/common.d.ts +47 -0
  95. package/dist/types/direct/common.d.ts.map +1 -0
  96. package/dist/types/direct/downloads-plan.d.ts +75 -0
  97. package/dist/types/direct/downloads-plan.d.ts.map +1 -0
  98. package/dist/types/direct/engine.d.ts +191 -0
  99. package/dist/types/direct/engine.d.ts.map +1 -0
  100. package/dist/types/direct/formats.d.ts +9 -0
  101. package/dist/types/direct/formats.d.ts.map +1 -0
  102. package/dist/types/direct/hpke.d.ts +55 -0
  103. package/dist/types/direct/hpke.d.ts.map +1 -0
  104. package/dist/types/direct/journal.d.ts +55 -0
  105. package/dist/types/direct/journal.d.ts.map +1 -0
  106. package/dist/types/direct/large.d.ts +170 -0
  107. package/dist/types/direct/large.d.ts.map +1 -0
  108. package/dist/types/direct/reads.d.ts +306 -0
  109. package/dist/types/direct/reads.d.ts.map +1 -0
  110. package/dist/types/direct/sha256.d.ts +16 -0
  111. package/dist/types/direct/sha256.d.ts.map +1 -0
  112. package/dist/types/direct/tws1.d.ts +157 -0
  113. package/dist/types/direct/tws1.d.ts.map +1 -0
  114. package/dist/types/direct/uploads.d.ts +461 -0
  115. package/dist/types/direct/uploads.d.ts.map +1 -0
  116. package/dist/types/errors.d.ts +47 -8
  117. package/dist/types/errors.d.ts.map +1 -1
  118. package/dist/types/index.d.ts +1 -0
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/dist/types/links.d.ts +86 -0
  121. package/dist/types/links.d.ts.map +1 -0
  122. package/dist/types/node/downloads.d.ts +73 -0
  123. package/dist/types/node/downloads.d.ts.map +1 -0
  124. package/dist/types/node/journal.d.ts +162 -0
  125. package/dist/types/node/journal.d.ts.map +1 -0
  126. package/dist/types/node/uploads.d.ts +86 -0
  127. package/dist/types/node/uploads.d.ts.map +1 -0
  128. package/dist/types/node.d.ts +4 -2
  129. package/dist/types/node.d.ts.map +1 -1
  130. package/dist/types/storage.d.ts +107 -64
  131. package/dist/types/storage.d.ts.map +1 -1
  132. package/dist/types/transfer.d.ts +14 -23
  133. package/dist/types/transfer.d.ts.map +1 -1
  134. package/package.json +2 -2
@@ -0,0 +1,461 @@
1
+ import type { TeepinClient } from '../client.js';
2
+ import type { StorageObject } from '../storage.js';
3
+ import { AdaptiveLimit, RetryBudget, SpeedMeter, type Outcome, type PartRules } from './engine.js';
4
+ import { Deferred, type Json, type Waits } from './common.js';
5
+ import { type Entry, type Journal } from './journal.js';
6
+ import { Parts, type PartSource, type StreamSource } from './large.js';
7
+ export { abortable, Deferred, joinCapped, linked, objectFrom, Progress, Slots, toBase64, uuid7, type Json, type Waits } from './common.js';
8
+ /** An unfinished run is shown as expired after this long untouched (7 days). */
9
+ export declare const RUN_EXPIRY_MS: number;
10
+ /** The state directory's size that earns a warning (section 17.12), unless TEEPIN_STATE_WARN_BYTES says. */
11
+ export declare const STATE_WARN_ENV = "TEEPIN_STATE_WARN_BYTES";
12
+ export declare const STATE_WARN_BYTES: number;
13
+ /** How long a stopping step waits for its tasks, and a cleanup call may take, in ms (section 22.13's cap). */
14
+ export declare const CLEANUP_MS = 5000;
15
+ /** What an error says, for a journal: its code (or name) and message. */
16
+ export declare function describe(err: unknown): string;
17
+ /** Errors that stop a whole run, with its files kept for resumeUploads. */
18
+ export declare function stopsRun(err: unknown): boolean;
19
+ /**
20
+ * Whether an empty file's failed put is final. A passing failure (the network, a busy server) or one that stops the run
21
+ * (a revoked key, no credit) leaves it queued in the journal for resumeUploads, as a pack's files are left.
22
+ */
23
+ export declare function emptyPutFinal(err: unknown): boolean;
24
+ /** The hashes an upload takes. The default works everywhere (MD5 and incremental SHA-256 in TypeScript, one-shot SHA-256 from WebCrypto); the node entry puts node:crypto's in. */
25
+ export interface Digests {
26
+ md5(data: Uint8Array): string;
27
+ sha256(data: Uint8Array): Promise<string>;
28
+ incremental(): {
29
+ update(data: Uint8Array): void;
30
+ hex(): string;
31
+ };
32
+ }
33
+ export declare const webDigests: Digests;
34
+ /** The first public key seen for each account and key version (section 11.4): a different key under the same version is refused. */
35
+ export interface KeyPins {
36
+ /** Pins the key if it's new; false when another key holds that account and version. */
37
+ check(accountId: string, version: number, publicKey: Uint8Array): Promise<boolean>;
38
+ }
39
+ /** Pins kept for the life of this client (browsers; the node entry keeps them in the state directory). */
40
+ export declare class MemoryPins implements KeyPins {
41
+ private readonly pins;
42
+ check(accountId: string, version: number, publicKey: Uint8Array): Promise<boolean>;
43
+ }
44
+ /** Sizes the engine works with: tests shrink them, as the Python tests patch _engine's constants. */
45
+ export interface UploadSizes extends PartRules {
46
+ /** Objects up to this size are packed; larger ones go in parts (16 MiB). */
47
+ packObjectLimit: number;
48
+ /** A pack closes at about this many stored bytes (9 MiB), less on a slow link (section 22.7). */
49
+ packTarget: number;
50
+ /** A slow link's pack target never goes below this (64 KiB). */
51
+ packMinTarget: number;
52
+ /** The most objects in a pack. */
53
+ packMaxObjects: number;
54
+ /** A stream's parts in flight unless the caller says. */
55
+ streamConcurrency: number;
56
+ }
57
+ /** A file's size, modification time and SHA-256 when it was queued. */
58
+ export interface FileHash {
59
+ size: number;
60
+ mtime: string;
61
+ sha256: string;
62
+ }
63
+ /** A run's place on disk (the node entry's run directory): its journal, its pack files and data keys, held under its lock. */
64
+ export interface RunPlace {
65
+ readonly id: string;
66
+ readonly journal: Journal;
67
+ writePack(name: string, data: Uint8Array): Promise<void>;
68
+ readPack(name: string): Promise<Uint8Array | undefined>;
69
+ removePack(name: string): Promise<void>;
70
+ packNames(): Promise<string[]>;
71
+ /** A large upload's data key (E3), written 0600 and durably before the upload's parts are signed. */
72
+ writeKey(id: string, key: Uint8Array): Promise<void>;
73
+ readKey(id: string): Promise<Uint8Array | undefined>;
74
+ /** Zeroes the key's file, then deletes it. */
75
+ removeKey(id: string): Promise<void>;
76
+ keyNames(): Promise<string[]>;
77
+ /** Closes the journal and releases the lock: the run stays for resumeUploads. Safe to call twice. */
78
+ release(): Promise<void>;
79
+ /** Deletes the run (its journal closed), then releases its lock. */
80
+ remove(): Promise<void>;
81
+ }
82
+ /** What a run on disk needs from the node entry: run directories, locks and journals, and the files themselves. */
83
+ export interface RunHost {
84
+ /** A new run, locked by this process. */
85
+ create(): Promise<RunPlace>;
86
+ /** Every run, oldest first. */
87
+ ids(): Promise<string[]>;
88
+ /** The run, locked for this caller; undefined when another process, or another run in this one, holds it. */
89
+ take(id: string): Promise<RunPlace | undefined>;
90
+ /** A run's journal read without taking it, and whether a live process holds it; undefined when it's gone or damaged. */
91
+ peek(id: string): Promise<{
92
+ journal: Pick<Journal, 'get' | 'rows'>;
93
+ inUse: boolean;
94
+ } | undefined>;
95
+ /** Appends one line about a finished run to the history, which every SDK on the machine shares (an append only). */
96
+ history(line: string): Promise<void>;
97
+ /** Trims the history to its last 7 days: at cleanUploads (section 25.4, G-3). */
98
+ trimHistory?(): Promise<void>;
99
+ /** The bytes the runs' state takes. */
100
+ size(): Promise<number>;
101
+ /** A file's size, modification time and SHA-256, or the error reading it (a FileChangedError). */
102
+ hashFile(path: string): Promise<FileHash | Error>;
103
+ /** length bytes of a file from offset (fewer at its end). */
104
+ readAt(path: string, offset: number, length: number): Promise<Uint8Array>;
105
+ /** A small file whole, read as up to size + 1 bytes so a file that grew shows it. */
106
+ readWhole(path: string, size: number): Promise<Uint8Array>;
107
+ /** In one pass, a file's whole SHA-256 and each part's (faster than the default where the platform has a native hash). */
108
+ hashParts?(path: string, size: number, partSize: number): Promise<{
109
+ whole: string;
110
+ parts: Map<number, string>;
111
+ }>;
112
+ /** A content type guessed from a file's name. */
113
+ contentType(path: string): string | undefined;
114
+ }
115
+ /** One file's result from a run: saved, failed with its error, or pending (kept in the journal for resumeUploads). */
116
+ export interface UploadResult {
117
+ key: string;
118
+ /** The source file. */
119
+ path?: string;
120
+ /**
121
+ * saved; failed (final: the file changed, a precondition failed, ...); or pending: not uploaded yet because of a
122
+ * passing error (storage unavailable past uploadWait, a revoked key), kept in the run's journal for resumeUploads.
123
+ */
124
+ status: 'saved' | 'failed' | 'pending';
125
+ object?: StorageObject;
126
+ /** Why it failed or is pending. */
127
+ error?: unknown;
128
+ }
129
+ /** An upload run kept in the local state directory (listUploadRuns). */
130
+ export interface UploadRun {
131
+ id: string;
132
+ bucket: string;
133
+ created: Date;
134
+ updated: Date;
135
+ files: number;
136
+ saved: number;
137
+ failed: number;
138
+ /** Files not uploaded yet: resumeUploads continues them. */
139
+ pending: number;
140
+ /** Untouched for longer than 7 days: its files were not uploaded, and only cleanUploads removes it. */
141
+ expired: boolean;
142
+ /** A live process (this one included) is working on it. */
143
+ inUse: boolean;
144
+ }
145
+ /** Conditions and details of an object being written. */
146
+ export interface WriteOptions {
147
+ contentType?: string;
148
+ metadata?: Record<string, string>;
149
+ ifMatch?: string;
150
+ ifNoneMatch?: boolean;
151
+ }
152
+ /** A signed PUT, as sign answers it. */
153
+ export interface SignedPut {
154
+ method: string;
155
+ url: string;
156
+ headers: Record<string, string>;
157
+ expires_at?: string;
158
+ }
159
+ /** One object on its way into a pack. */
160
+ export declare class Item {
161
+ readonly key: string;
162
+ readonly size: number;
163
+ readonly sha256: string;
164
+ readonly read: () => Promise<Uint8Array>;
165
+ readonly ifNoneMatch: boolean;
166
+ readonly path?: string | undefined;
167
+ readonly fileId?: string | undefined;
168
+ objectId: string;
169
+ result?: StorageObject;
170
+ error?: unknown;
171
+ /** false when the error leaves the item journaled for resumeUploads. */
172
+ final: boolean;
173
+ /** putObject's: set when a pack takes the item, resolved when its result is in, and to wake its waiting caller. */
174
+ picked: boolean;
175
+ done?: Deferred;
176
+ wake?: Deferred;
177
+ /** The pack and object id its file row last journaled. */
178
+ journaled: string;
179
+ readonly contentType: string;
180
+ readonly metadata: Record<string, string>;
181
+ readonly ifMatch: string;
182
+ constructor(key: string, size: number, sha256: string, read: () => Promise<Uint8Array>, contentType?: string, metadata?: Record<string, string>, ifNoneMatch?: boolean, ifMatch?: string, path?: string | undefined, fileId?: string | undefined);
183
+ reserveJSON(): Json;
184
+ }
185
+ export type PackState = 'new' | 'reserved' | 'built' | 'signed' | 'uploading' | 'sent' | 'unknown' | 'committing' | 'committed' | 'conflict' | 'bad' | 'failed';
186
+ /** One pack's state, kept in its store (a run's journal, or memory). */
187
+ export declare class Pack implements Waits {
188
+ readonly bucket: string;
189
+ items: Item[];
190
+ readonly store: PackStore;
191
+ readonly id: string;
192
+ state: PackState;
193
+ idem: string;
194
+ reservation: Json;
195
+ signBody: Json;
196
+ signed: Json;
197
+ size: number;
198
+ md5: string;
199
+ sha256: string;
200
+ fileName: string;
201
+ data?: Uint8Array;
202
+ attempts: number;
203
+ rebuilds: number;
204
+ verifies: number;
205
+ resigns: number;
206
+ waited: number;
207
+ throttled: boolean;
208
+ lastError: string;
209
+ constructor(bucket: string, items: Item[], store: PackStore, id?: string);
210
+ get serverId(): string;
211
+ }
212
+ /** An item's result, delivered with others in one journal write. */
213
+ type Done = [item: Item, object: StorageObject | undefined, error: unknown, final: boolean];
214
+ /** A pack's state and bytes in memory: putObject's packs, and the packs of a run journaled in memory. */
215
+ export declare class PackStore {
216
+ savePack(p: Pack): Promise<void>;
217
+ putBytes(p: Pack, data: Uint8Array): Promise<void>;
218
+ getBytes(p: Pack): Promise<Uint8Array | undefined>;
219
+ dropBytes(p: Pack): Promise<void>;
220
+ itemsDone(done: readonly Done[]): Promise<void>;
221
+ }
222
+ /** A run's packs in its journal, and their bytes in its directory (or in memory, for a run journaled in memory). */
223
+ export declare class RunStore extends PackStore {
224
+ readonly journal: Journal;
225
+ readonly place?: RunPlace | undefined;
226
+ constructor(journal: Journal, place?: RunPlace | undefined);
227
+ savePack(p: Pack): Promise<void>;
228
+ /** The run row with its updated time now. */
229
+ touch(): Entry[];
230
+ putBytes(p: Pack, data: Uint8Array): Promise<void>;
231
+ getBytes(p: Pack): Promise<Uint8Array | undefined>;
232
+ dropBytes(p: Pack): Promise<void>;
233
+ itemsDone(done: readonly Done[]): Promise<void>;
234
+ }
235
+ /** A run between its steps: begun (journaled and hashed), its empty files put, then sent and finished. */
236
+ export interface RunState {
237
+ bucket: string;
238
+ store: RunStore;
239
+ place?: RunPlace;
240
+ items: Item[];
241
+ packs: Pack[];
242
+ /** Results already known, by file id. */
243
+ results: Map<string, UploadResult>;
244
+ }
245
+ /**
246
+ * Who releases an interrupted run: whichever ends last, the run's own step (once it has stopped) or its last pack task.
247
+ * A run that isn't interrupted is finished by its own step as usual, and this never fires.
248
+ */
249
+ export declare class RunCloser {
250
+ private live;
251
+ private stopped;
252
+ private fired;
253
+ started(): void;
254
+ /** A task ended (taskDone) or the run's step stopped: true for the one call that should release the run. */
255
+ ended(taskDone: boolean): boolean;
256
+ }
257
+ /** The account key from an answer, checked: the account id's bytes, the public key and its version. */
258
+ export interface AccountKey {
259
+ account: Uint8Array;
260
+ publicKey: Uint8Array;
261
+ version: number;
262
+ }
263
+ /**
264
+ * Direct uploads for one storage service: the account key, putObject's shared packs, upload runs, resume and cleanup.
265
+ * The methods tests replace (as the Python tests patch _direct.py) are newDataKey, encryptObject, wrapKey, putSigned,
266
+ * expiresSoon, dispatch, send and hashParts.
267
+ */
268
+ export declare class DirectUploads {
269
+ readonly client: TeepinClient;
270
+ readonly limit: AdaptiveLimit;
271
+ readonly budget: RetryBudget;
272
+ readonly parts: Parts;
273
+ /** The sizes it works with (tests shrink them). */
274
+ readonly sizes: UploadSizes;
275
+ /**
276
+ * The measured upload speed to the storage network: shrinks packs and new uploads' parts on a slow link (section
277
+ * 22.7). Tests set it with speed.set.
278
+ */
279
+ readonly speed: SpeedMeter;
280
+ /**
281
+ * A storage PUT's own timer: at least minMs, and its bytes at bytesPerSecond (30 s and 64 KiB/s); on a link measured
282
+ * slower, twice its time at that speed (section 22.7). Tests shorten it.
283
+ */
284
+ putTimeout: {
285
+ minMs: number;
286
+ bytesPerSecond: number;
287
+ };
288
+ /** How long a stopping step waits for its tasks, and a cleanup call may take (ms). */
289
+ cleanupMs: number;
290
+ digests: Digests;
291
+ pins: KeyPins;
292
+ /** Runs on disk: the node entry's (undefined in browsers). */
293
+ host?: RunHost;
294
+ /** Where warnings go: a run removed by cleanUploads, a large state directory. */
295
+ warn: (message: string) => void;
296
+ private accountId?;
297
+ private queue;
298
+ /** Wake-ups of putObject calls waiting for a slot: resolved when one comes free. */
299
+ private slotWaiters;
300
+ private readonly memory;
301
+ constructor(client: TeepinClient);
302
+ newDataKey(): Uint8Array;
303
+ encryptObject(dek: Uint8Array, plain: Uint8Array): Promise<Uint8Array>;
304
+ wrapKey(publicKey: Uint8Array, account: Uint8Array, objectId: Uint8Array, dek: Uint8Array): Promise<Uint8Array>;
305
+ /** Whether a signature is too close to its expiry to use. */
306
+ expiresSoon(signed: Json): boolean;
307
+ /**
308
+ * Sends one signed PUT to the storage network, with exactly the signed headers and never the API key; returns its
309
+ * ETag, unquoted ("" when the answer has none, as a browser sees it: the storage network doesn't expose it).
310
+ */
311
+ putSigned(signed: Json, data: Uint8Array, signal?: AbortSignal): Promise<string>;
312
+ /**
313
+ * putSigned, measured (section 22.7): the PUT every pack and part goes through. One that succeeds is a sample; one its
314
+ * own timer ended with no answer is an upper bound (a slow link, measured from a cold start too). Any other failure (an
315
+ * error status, a refused connection, the caller's abort) is never measured.
316
+ */
317
+ putMeasured(signed: Json, data: Uint8Array, signal?: AbortSignal): Promise<string>;
318
+ /**
319
+ * The pack/parts choice for every way in (putObject, upload, uploadFiles, copyObject): an object over this goes in
320
+ * parts. At the speed measured so far (section 22.7).
321
+ */
322
+ packObjectLimit(): number;
323
+ /** The next pack's target size, at the speed measured so far. */
324
+ packTarget(): number;
325
+ /** Where runs keep their state, when it's on disk. */
326
+ get runHost(): RunHost;
327
+ /**
328
+ * A control-plane call (each is idempotent, so retried by the client as safe), with rounds of waiting while the
329
+ * control plane is busy or failing, up to the upload's wait (p's; with no p, none). Returns the status and the answer.
330
+ */
331
+ control<T = Json>(method: string, path: string, body: unknown, p: Waits | undefined, signal?: AbortSignal, timeout?: number): Promise<{
332
+ status: number;
333
+ data: T;
334
+ }>;
335
+ /** One round of waiting for a service to come back; StorageUnavailableError once p has waited as long as it may. */
336
+ wait(p: Waits, round: number, err: unknown, signal?: AbortSignal): Promise<void>;
337
+ /** The account key from an answer, checked against the suite, this client's account and the pin. */
338
+ checkKey(raw: unknown): Promise<AccountKey>;
339
+ /** Items' results: journaled together, then their callers woken. */
340
+ done(store: PackStore, done: readonly Done[]): Promise<void>;
341
+ /**
342
+ * Takes a pack to committed, delivering every item's result. Throws only an error that stops a whole run (auth,
343
+ * permission, credit), after recording it on the pack's items, or the abort's reason, recording nothing.
344
+ */
345
+ drive(p: Pack, signal?: AbortSignal): Promise<void>;
346
+ private fail;
347
+ private reserve;
348
+ private build;
349
+ /**
350
+ * Every item read, checked against its queued hash, encrypted with a fresh key and appended to the pack, then
351
+ * decrypt-checked ("saved" means readable, section 19.3) and its key wrapped; or the items that changed since they
352
+ * were queued.
353
+ */
354
+ private buildPack;
355
+ private sign;
356
+ /** A pack's one PUT. Replaced in tests. */
357
+ send(p: Pack, signal?: AbortSignal): Promise<void>;
358
+ private commit;
359
+ /** A new reservation and fresh keys for the pack's items (section 17.3). */
360
+ private renew;
361
+ private deliver;
362
+ /**
363
+ * Stores one object of up to 16 MiB in a pack shared with the other calls waiting now, and returns it once its pack
364
+ * commits. A waiting call dispatches the queue itself whenever a slot comes free (release wakes it), so a slot freed
365
+ * anywhere serves the queue. The wait for a slot is bounded by uploadWait: an item no pack took by then leaves the
366
+ * queue (so it certainly wasn't saved) with StorageUnavailableError; once a pack has it, the pack's own bounded waits
367
+ * decide (section 22.4). An abort while it waits takes it out of the queue; once a pack has it, the pack goes on (it
368
+ * is shared) and the call stops waiting for it.
369
+ */
370
+ put(bucket: string, key: string, data: Uint8Array, opts?: WriteOptions, signal?: AbortSignal): Promise<StorageObject>;
371
+ /** Forms a pack from what's waiting whenever a send slot is free. Replaced in tests. */
372
+ dispatch(): void;
373
+ private runShared;
374
+ /**
375
+ * Every slot comes back through here, from putObject's packs and a run's alike, and putObject's waiting calls are
376
+ * woken to dispatch: while they wait, a run's next pack waits too (AdaptiveLimit.priority).
377
+ */
378
+ release(outcome: Outcome): void;
379
+ /**
380
+ * An empty object: the metadata-only route (section 23.5, A2), which carries no bytes (a pack holds none, and an
381
+ * upload needs none). Retried by the client as a safe call; no rounds of waiting.
382
+ */
383
+ putEmpty(bucket: string, key: string, opts?: WriteOptions, signal?: AbortSignal): Promise<StorageObject>;
384
+ /** An object over the pack limit from bytes, a Blob or any seekable source, in parts. Kept in memory: nothing could resume it after a crash. */
385
+ putLarge(bucket: string, key: string, source: PartSource, opts?: WriteOptions & {
386
+ partSize?: number;
387
+ onProgress?: (done: number, total: number) => void;
388
+ }, signal?: AbortSignal): Promise<StorageObject>;
389
+ /**
390
+ * A stream over the pack limit whose size isn't known (section 22.1, E2 b), in parts held in memory (concurrency of
391
+ * them, the sizes' streamConcurrency unless given). Nothing could resume it after a crash.
392
+ */
393
+ putStream(bucket: string, key: string, source: StreamSource, opts?: WriteOptions & {
394
+ partSize?: number;
395
+ expectedSize?: number;
396
+ concurrency?: number;
397
+ onProgress?: (done: number, total: number) => void;
398
+ }, signal?: AbortSignal): Promise<StorageObject>;
399
+ /**
400
+ * A new large upload's part size for size bytes, by this engine's rules, at the speed measured so far: TooLargeError
401
+ * with reason connection_speed when it can't be sent at it (section 22.7). name is for the error.
402
+ */
403
+ partSize(size: number, want?: number, name?: string): number;
404
+ /** A new stream's part size (section 22.1, E2 b), at the speed measured so far, as partSize. */
405
+ streamPartSize(expectedSize?: number, want?: number, name?: string): number;
406
+ /**
407
+ * In one pass: the whole source's SHA-256 (declared at create) and each part's (checked as the part is sent, D1).
408
+ * Replaced in tests.
409
+ */
410
+ hashParts(source: PartSource, partSize: number): Promise<{
411
+ whole: string;
412
+ parts: Map<number, string>;
413
+ }>;
414
+ /** A run's first step: journaled (on disk unless journal is false), and every file hashed. */
415
+ beginFiles(bucket: string, entries: ReadonlyArray<[key: string, path: string]>, opts: {
416
+ contentType?: string;
417
+ metadata?: Record<string, string>;
418
+ ifNoneMatch?: boolean;
419
+ journal?: boolean;
420
+ }, signal?: AbortSignal): Promise<RunState>;
421
+ private journalFiles;
422
+ private fileItem;
423
+ /**
424
+ * A run's middle and last steps: its empty files put (the A2 route), then its queued items packed, its packs already
425
+ * under way and its large files sent, every file's result recorded and the run finished. partSize is for files sent
426
+ * in parts (0: the default).
427
+ */
428
+ runState(state: RunState, onProgress?: (done: number, total: number) => void, partSize?: number, signal?: AbortSignal): Promise<UploadResult[]>;
429
+ private sendRun;
430
+ /** A large file's upload: the one its journal left unfinished, or a new one. */
431
+ private largeItem;
432
+ /** A large file's whole and part hashes; a file that can't be read the same way is a changed file. */
433
+ private hashFileParts;
434
+ /** An interrupted run, left for resumeUploads: its journal closed and its lock released (its directory stays). Safe to call twice. */
435
+ abandon(store: RunStore, place?: RunPlace): Promise<void>;
436
+ private finish;
437
+ /** Continues every interrupted run no other process (or run in this one) is working on, and returns their files' results. */
438
+ resume(onProgress?: (done: number, total: number) => void, signal?: AbortSignal): Promise<UploadResult[]>;
439
+ /** A run's first step on resume: its journal read back, its queued files checked again (a changed one fails, and its large upload is cancelled). */
440
+ beginResume(place: RunPlace, signal?: AbortSignal): Promise<RunState>;
441
+ private readRun;
442
+ /** Pack files the journal doesn't name, and data keys of uploads that have ended, are deleted (section 17.12, E3). */
443
+ private sweepOrphans;
444
+ /**
445
+ * Cancels a file's unfinished large uploads at the storage network and deletes their journaled data keys (E3): a file
446
+ * that won't be sent must not leave parts behind to be kept, and billed, until they expire.
447
+ */
448
+ private endUploads;
449
+ /** Cancels an upload: one call (the client's own retries, none while stopping), best effort, since the upload sweeper ends what it misses. */
450
+ abortOne(bucket: string, uploadId: string, stopping?: boolean): Promise<void>;
451
+ /** The runs kept in the state directory. */
452
+ listRuns(): Promise<UploadRun[]>;
453
+ /**
454
+ * Removes runs untouched for longer than olderThan ms that no process is working on, with a warning for each: never
455
+ * silently. Their open large uploads are cancelled, and their data keys go with their journals (E3).
456
+ */
457
+ clean(olderThan: number, signal?: AbortSignal): Promise<UploadRun[]>;
458
+ }
459
+ /** An If-Match value as the control plane takes it: unquoted, or "*". */
460
+ export declare function normalizeIfMatch(v?: string): string;
461
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../../src/direct/uploads.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,8 @@ export declare class APIError extends TeepinError {
22
22
  readonly retryAfterMs?: number;
23
23
  /** With storage_on_hold: when held data is deleted unless credit is added. */
24
24
  readonly deleteAfter?: Date;
25
+ /** The error answer's other fields, beyond error and code (pack_committed's pack, upload_completed's upload_id). */
26
+ readonly details: Readonly<Record<string, unknown>>;
25
27
  constructor(init: {
26
28
  statusCode: number;
27
29
  message: string;
@@ -30,6 +32,7 @@ export declare class APIError extends TeepinError {
30
32
  requestId?: string;
31
33
  retryAfterMs?: number;
32
34
  deleteAfter?: Date;
35
+ details?: Record<string, unknown>;
33
36
  });
34
37
  /** HTTP status (the same as statusCode). */
35
38
  get status(): number;
@@ -56,6 +59,13 @@ export declare class UnauthorizedError extends APIError {
56
59
  export declare class ForbiddenError extends APIError {
57
60
  constructor(init: ConstructorParameters<typeof APIError>[0]);
58
61
  }
62
+ /**
63
+ * A share link that can't be opened (403 invalid_link): its token is damaged, or it has expired. A ForbiddenError, so
64
+ * code that handles a refusal handles this too. Ask the link's owner for a new one.
65
+ */
66
+ export declare class InvalidLinkError extends ForbiddenError {
67
+ constructor(init: ConstructorParameters<typeof APIError>[0]);
68
+ }
59
69
  /** A write refused by ifMatch or ifNoneMatch (412). */
60
70
  export declare class PreconditionFailedError extends APIError {
61
71
  constructor(init: ConstructorParameters<typeof APIError>[0]);
@@ -81,9 +91,16 @@ export declare class StreamError extends APIError {
81
91
  export declare class StreamEndedError extends TeepinError {
82
92
  constructor(cause?: unknown);
83
93
  }
84
- /** An object or part over the size allowed (413). */
94
+ /**
95
+ * An object or part over the size allowed (413). reason is "connection_speed" when the SDK refused an upload itself,
96
+ * before sending it: the connection to storage measured too slow to send it in parts of a few minutes each
97
+ * (TEEPIN-STORAGE-DESIGN.md section 22.7). Otherwise it is "".
98
+ */
85
99
  export declare class TooLargeError extends APIError {
86
- constructor(init: ConstructorParameters<typeof APIError>[0]);
100
+ readonly reason: string;
101
+ constructor(init: ConstructorParameters<typeof APIError>[0] & {
102
+ reason?: string;
103
+ });
87
104
  }
88
105
  /** A request that got no HTTP answer: the network failed or it timed out. */
89
106
  export declare class ConnectionError extends TeepinError {
@@ -93,16 +110,38 @@ export declare class ConnectionError extends TeepinError {
93
110
  export declare class ObjectChangedError extends TeepinError {
94
111
  constructor();
95
112
  }
113
+ /**
114
+ * Data that failed a check after retrying: a segment that doesn't authenticate, a key that doesn't match the object, a
115
+ * damaged pack, or bytes that don't match the object's checksum. reason says which check failed, e.g. "segment",
116
+ * "commitment", "needle", "truncated", "format" or "checksum".
117
+ */
118
+ export declare class DataIntegrityError extends TeepinError {
119
+ readonly reason: string;
120
+ constructor(message: string, reason?: string);
121
+ }
96
122
  /** Bytes that do not match the object's checksum. */
97
- export declare class ChecksumMismatchError extends TeepinError {
123
+ export declare class ChecksumMismatchError extends DataIntegrityError {
98
124
  constructor(detail?: string);
99
125
  }
100
- /** An upload in parts that failed; with resume, uploading the same data to the same key again continues it. */
101
- export declare class UploadError extends TeepinError {
102
- readonly uploadId: string;
103
- constructor(uploadId: string, cause: unknown);
126
+ /**
127
+ * An object whose encryption key has been erased (410 key_erased): it can never be read again. A NotFoundError, so
128
+ * code that handles a missing object handles this too.
129
+ */
130
+ export declare class KeyErasedError extends NotFoundError {
131
+ constructor(init: ConstructorParameters<typeof APIError>[0]);
132
+ }
133
+ /** The storage network (or the control plane) didn't come back within the time an upload may wait (uploadWait). Nothing was reported saved that isn't. */
134
+ export declare class StorageUnavailableError extends TeepinError {
135
+ constructor(message: string, options?: {
136
+ cause?: unknown;
137
+ });
138
+ }
139
+ /** A source file changed while it was being uploaded, so it wasn't saved. path names it. */
140
+ export declare class FileChangedError extends TeepinError {
141
+ readonly path: string;
142
+ constructor(path: string, detail?: string);
104
143
  }
105
- /** Builds the APIError subclass for a status. */
144
+ /** Builds the APIError subclass for a status (KeyErasedError and InvalidLinkError by their codes). */
106
145
  export declare function apiError(init: ConstructorParameters<typeof APIError>[0]): APIError;
107
146
  /** The API code of err, or "" when it is not an API error. */
108
147
  export declare function errorCode(err: unknown): string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAGA,iDAAiD;AACjD,qBAAa,WAAY,SAAQ,KAAK;IACpC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;gBACN,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAM3D;AAED,yHAAyH;AACzH,qBAAa,QAAS,SAAQ,WAAW;IACvC,mBAAmB;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,oHAAoH;IACpH,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAExC,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,IAAI,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC;IAaD,4CAA4C;IAC5C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,8EAA8E;IAC9E,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;CACF;AAED,0DAA0D;AAC1D,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,mGAAmG;AACnG,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,kDAAkD;AAClD,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,6CAA6C;AAC7C,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,+EAA+E;AAC/E,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,uDAAuD;AACvD,qBAAa,uBAAwB,SAAQ,QAAQ;gBACvC,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,qGAAqG;AACrG,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IAI3D,6EAA6E;IAC7E,IAAI,MAAM,IAAI,OAAO,CAEpB;CACF;AAED,8HAA8H;AAC9H,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,yFAAyF;AACzF,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,KAAK,CAAC,EAAE,OAAO;CAO5B;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAKlF;AAED,6EAA6E;AAC7E,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAI7C;AAED,6DAA6D;AAC7D,qBAAa,kBAAmB,SAAQ,WAAW;;CAKlD;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,MAAM,SAAK;CAKzC;AAED,qDAAqD;AACrD,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,MAAM,SAAK;CAIxB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,aAAa;gBACnC,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;CAI5D;AAED,0JAA0J;AAC1J,qBAAa,uBAAwB,SAAQ,WAAW;gBAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,4FAA4F;AAC5F,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK;CAKtC;AAED,sGAAsG;AACtG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAwBlF;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGjD;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,2HAA2H;AAC3H,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEvF;AAED,wIAAwI;AACxI,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAEzE;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE"}
@@ -8,6 +8,7 @@ export { TeepinClient, DEFAULT_BASE_URL, VERSION, type ClientConfig } from './cl
8
8
  export { InstancesService } from './instances.js';
9
9
  export * from './inference.js';
10
10
  export * from './storage.js';
11
+ export { linkToken, openLink, SharedObject, type LinkDisposition, type OpenLinkOptions } from './links.js';
11
12
  export { DEFAULT_CONCURRENCY, DEFAULT_PART_SIZE, MULTIPART_THRESHOLD, computeETag, partSize, sha256Hex, sourceOf, type DownloadOptions, type DownloadSink, type UploadBody, type UploadOptions, type UploadSource, } from './transfer.js';
12
13
  export { md5Hex } from './md5.js';
13
14
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3G,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}