@teepin/sdk 0.2.1 → 0.3.0-rc.1

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
@@ -1,5 +1,8 @@
1
1
  import type { TeepinClient } from './client.js';
2
+ import { ObjectFile } from './direct/reads.js';
3
+ import { DirectUploads } from './direct/uploads.js';
2
4
  import { type DownloadOptions, type DownloadSink, type UploadBody, type UploadOptions } from './transfer.js';
5
+ export { ObjectFile } from './direct/reads.js';
3
6
  /** A bucket of the project. */
4
7
  export interface Bucket {
5
8
  id: string;
@@ -61,6 +64,10 @@ export interface PutObjectOptions {
61
64
  ifMatch?: string;
62
65
  /** Write only if no object is at the key. */
63
66
  ifNoneMatch?: boolean;
67
+ /**
68
+ * Stops the call. An object a pack has already taken may still be saved: its pack is shared with other putObject
69
+ * calls, and goes on.
70
+ */
64
71
  signal?: AbortSignal;
65
72
  }
66
73
  /** An inclusive byte range; end undefined means to the end. */
@@ -68,6 +75,15 @@ export interface ByteRange {
68
75
  start: number;
69
76
  end?: number;
70
77
  }
78
+ export interface DeleteObjectOptions {
79
+ /**
80
+ * Delete only if the object still has this ETag (quoted or not; "*" for any object), checked in the same step as the
81
+ * delete: otherwise PreconditionFailedError (412) and nothing is deleted. A move passes the ETag it checked, so a
82
+ * write that lands in between survives.
83
+ */
84
+ ifMatch?: string;
85
+ signal?: AbortSignal;
86
+ }
71
87
  export interface GetObjectOptions {
72
88
  range?: ByteRange;
73
89
  /** Resolve to null when the object still has this ETag (304). */
@@ -92,6 +108,12 @@ export interface ObjectResponse extends ObjectInfo {
92
108
  bytes(): Promise<Uint8Array>;
93
109
  text(): Promise<string>;
94
110
  }
111
+ export interface OpenObjectOptions {
112
+ /** Windows fetched ahead of a reader reading straight on (default 2); up to prefetch + 2 windows are held in memory. */
113
+ prefetch?: number;
114
+ /** Aborting it stops every read of the object, as close() does. */
115
+ signal?: AbortSignal;
116
+ }
95
117
  /** One key deleteObjects could not delete. */
96
118
  export interface DeleteError {
97
119
  key: string;
@@ -103,16 +125,21 @@ export interface DeleteResult {
103
125
  deleted: string[];
104
126
  errors: DeleteError[];
105
127
  }
106
- /** A link that works without a credential until expiresAt. */
107
- export interface SignedUrl {
128
+ /**
129
+ * A share link (section 26): a console page anyone holding url can open, to preview or save the object, until
130
+ * expiresAt. Its sealed token is url's fragment (<console>/l#<token>), never sent to the console's host.
131
+ */
132
+ export interface ShareLink {
108
133
  url: string;
134
+ /** The second it stops opening. */
109
135
  expiresAt: Date;
110
136
  }
111
- /** A single-use upload link: one successful PUT of url with headers. */
112
- export interface SignedUpload extends SignedUrl {
113
- method: string;
114
- headers: Record<string, string>;
115
- maxBytes: number;
137
+ export interface CreateLinkOptions {
138
+ /** Seconds the link opens for: 1 to 86,400 (24 hours); default 900 (15 minutes). */
139
+ expiresIn?: number;
140
+ /** "inline" (the default): the page previews the object where it safely can; "attachment": it saves the file. */
141
+ disposition?: 'inline' | 'attachment';
142
+ signal?: AbortSignal;
116
143
  }
117
144
  /** An upload in parts that has not been completed. */
118
145
  export interface Upload {
@@ -123,37 +150,44 @@ export interface Upload {
123
150
  createdAt: Date;
124
151
  /** When it is cancelled if not completed (7 days). */
125
152
  expiresAt: Date;
126
- /** Filled by listParts. */
127
- parts: Part[];
128
153
  }
129
- /** A part the server has received. */
130
- export interface Part {
131
- number: number;
132
- size: number;
133
- /** The MD5 of the part, in hex; completeUpload needs it. */
134
- etag: string;
135
- uploadedAt?: Date;
136
- }
137
- /** The rules of uploads in parts. */
154
+ /**
155
+ * Earlier releases' rules for uploads in parts, which partSize and computeETag use to match the ETag of an object
156
+ * uploaded in parts before the direct path. Uploads now follow the direct path's own rules (at most 3,000 parts).
157
+ */
138
158
  export declare const MIN_PART_SIZE: number;
139
159
  export declare const MAX_PART_SIZE: number;
140
160
  export declare const MAX_PARTS = 10000;
161
+ /** The largest object Teepin Storage holds (5 TiB). */
141
162
  export declare const MAX_OBJECT_SIZE: number;
142
163
  export declare function parseObject(raw: unknown): StorageObject;
143
- export declare function quote(etag: string): string;
144
164
  export declare function unquote(etag: string): string;
145
165
  /**
146
- * Teepin Storage. Each method is one API call, named after the route in the
147
- * API reference (/v1/openapi.json); upload and download are the high-level
148
- * way to move data of any size.
166
+ * Teepin Storage: buckets, objects and transfers. upload and download are the
167
+ * high-level way to move data of any size.
149
168
  *
150
169
  * Every method sends your API key, so call them from a backend you control.
151
- * To let a browser download or upload one object without the key, sign a
152
- * link with presignDownload or presignUpload and hand it only that.
170
+ *
171
+ * Reads come straight from the storage network, each byte verified on this
172
+ * device before it is used (TEEPIN-STORAGE-DESIGN.md section 22.5). Writes are
173
+ * encrypted on this device and sent straight to the storage network too
174
+ * (section 22.4): small objects in packs, large ones in parts. No file byte
175
+ * passes through Teepin's API.
153
176
  */
154
177
  export declare class StorageService {
155
178
  readonly client: TeepinClient;
179
+ private directReads?;
180
+ private uploadEngine?;
156
181
  constructor(client: TeepinClient);
182
+ /** Reads through read sessions, made on first use. */
183
+ private get reads();
184
+ /**
185
+ * The direct upload engine, made on first use: putObject's shared packs and the node entry's upload runs. Internal:
186
+ * @teepin/sdk/node gives it the disk.
187
+ */
188
+ get directUploads(): DirectUploads;
189
+ /** Zeroes the data keys kept for reads (TeepinClient.close calls it). */
190
+ close(): void;
157
191
  private call;
158
192
  /** Whether the account's stored data is on hold. */
159
193
  getHold(signal?: AbortSignal): Promise<StorageHold>;
@@ -176,18 +210,28 @@ export declare class StorageService {
176
210
  */
177
211
  objects(bucket: string, prefix?: string, signal?: AbortSignal): AsyncGenerator<StorageObject>;
178
212
  /**
179
- * Uploads an object in one request (up to 5 GiB). It is retried after a
180
- * passing failure. upload handles data of any size.
213
+ * Stores an object, encrypted on this device: in a pack shared with the other putObject calls waiting at the same
214
+ * time (up to 16 MiB), or in parts straight to the storage network above that; an empty one is written by the API
215
+ * alone, with no bytes. The call returns once its object is committed. upload also takes streams.
181
216
  */
182
217
  putObject(bucket: string, key: string, body: Blob | ArrayBuffer | ArrayBufferView | string, opts?: PutObjectOptions): Promise<StorageObject>;
183
218
  /** An object's details without its bytes. */
184
219
  statObject(bucket: string, key: string, signal?: AbortSignal): Promise<StorageObject>;
185
- /** An object's download headers without its bytes. */
220
+ /** An object's download headers without its bytes, built from statObject. */
186
221
  headObject(bucket: string, key: string, signal?: AbortSignal): Promise<ObjectInfo>;
187
- /** Streams an object's bytes, or one range. Resolves to null when ifNoneMatch matched. */
222
+ /**
223
+ * Streams an object's bytes, or one range. Resolves to null when ifNoneMatch matched.
224
+ *
225
+ * The bytes come from the storage network, each verified before the body yields it (a whole read's SHA-256 as its
226
+ * last bytes arrive: ChecksumMismatchError), and ifNoneMatch asks the object's details first, so a match signs and
227
+ * bills nothing. Read the body to its end or cancel it: that frees the read and zeroes its copy of the data key.
228
+ */
188
229
  getObject(bucket: string, key: string, opts?: GetObjectOptions): Promise<ObjectResponse | null>;
189
- /** Deletes an object. */
190
- deleteObject(bucket: string, key: string, signal?: AbortSignal): Promise<void>;
230
+ /**
231
+ * Deletes an object; with ifMatch, only if it still has that ETag (PreconditionFailedError otherwise). An AbortSignal
232
+ * in place of the options is taken as before.
233
+ */
234
+ deleteObject(bucket: string, key: string, opts?: DeleteObjectOptions | AbortSignal): Promise<void>;
191
235
  /**
192
236
  * Deletes many objects, 1000 to a request; each key succeeds or fails on
193
237
  * its own. A key already gone is in errors with code object_not_found.
@@ -201,61 +245,60 @@ export declare class StorageService {
201
245
  /**
202
246
  * Copies srcBucket/srcKey (any bucket of the project) to bucket/key. The
203
247
  * bytes are read and written again, so a copy is billed as a download as
204
- * well as the stored copy.
248
+ * well as the stored copy. The conditions are on the destination.
249
+ *
250
+ * The copy is made on this device (section 23.6): the object is read (every
251
+ * byte verified) and uploaded anew, packed or in parts, streamed under the
252
+ * upload's memory bound. It keeps the source's content type and metadata.
205
253
  */
206
254
  copyObject(bucket: string, key: string, srcBucket: string, srcKey: string, opts?: {
207
255
  ifMatch?: string;
208
256
  ifNoneMatch?: boolean;
209
257
  signal?: AbortSignal;
210
258
  }): Promise<StorageObject>;
211
- /** Signs a link that downloads one object: up to 24 hours (default 15 minutes). */
212
- presignDownload(bucket: string, key: string, opts?: {
213
- expiresIn?: number;
214
- attachment?: boolean;
215
- signal?: AbortSignal;
216
- }): Promise<SignedUrl>;
217
- /** Signs a link a browser can upload one object to, once: up to 1 hour (default 15 minutes), at most maxBytes (default 5 GiB). */
218
- presignUpload(bucket: string, key: string, opts?: {
219
- expiresIn?: number;
220
- maxBytes?: number;
221
- contentType?: string;
222
- signal?: AbortSignal;
223
- }): Promise<SignedUpload>;
224
- /** Starts an upload in parts. upload does all of it for you. */
225
- createUpload(bucket: string, key: string, opts?: {
226
- contentType?: string;
227
- metadata?: Record<string, string>;
228
- signal?: AbortSignal;
229
- }): Promise<Upload>;
230
- /** Sends part number (1 to 10000) of an upload; sending a number again replaces it. */
231
- uploadPart(bucket: string, uploadId: string, number: number, data: Uint8Array | Blob, signal?: AbortSignal): Promise<Part>;
232
- /** An upload and the parts received so far, in order. */
233
- listParts(bucket: string, uploadId: string, signal?: AbortSignal): Promise<Upload>;
259
+ /**
260
+ * Makes a share link to an object that exists now: a console page anyone holding it can open with no sign-in, to
261
+ * preview or save the object, until it expires. It opens whatever is at the key when it is opened, and stops opening
262
+ * when the object is deleted or the account's stored data is on hold. The link carries its own credential, so share
263
+ * it only with those who may read the object. openLink opens one in code.
264
+ */
265
+ createLink(bucket: string, key: string, opts?: CreateLinkOptions): Promise<ShareLink>;
234
266
  /** A bucket's open uploads under prefix, oldest first. */
235
267
  listUploads(bucket: string, prefix?: string, signal?: AbortSignal): Promise<Upload[]>;
236
- /** Assembles the parts named, in ascending order, into the object. */
237
- completeUpload(bucket: string, uploadId: string, parts: {
238
- number: number;
239
- etag: string;
240
- }[], signal?: AbortSignal): Promise<StorageObject>;
241
268
  /** Cancels an upload and drops its parts. */
242
269
  abortUpload(bucket: string, uploadId: string, signal?: AbortSignal): Promise<void>;
243
270
  /**
244
- * Stores data at bucket/key: in one request up to 16 MiB, in parallel parts
245
- * above that. Each part is retried on its own, and the stored object's
246
- * ETag is checked against the bytes sent.
271
+ * Stores data at bucket/key, encrypted on this device: packed (shared with putObject's calls) up to 16 MiB, in
272
+ * parallel parts straight to the storage network above that, and a stream of unknown size read a part ahead and sent
273
+ * as it is read (its parts held in memory: at most (concurrency + 3) of them). Each part is retried on its own.
247
274
  *
248
275
  * ```ts
249
276
  * await teepin.storage.upload('my-bucket', 'videos/a.mp4', file, { onProgress: (done, total) => {} });
250
277
  * ```
251
278
  */
252
279
  upload(bucket: string, key: string, body: UploadBody, opts?: UploadOptions): Promise<StorageObject>;
253
- /** Downloads an object into memory, large ones as parallel ranges, checked against its SHA-256. */
280
+ /**
281
+ * Downloads an object into memory, as parallel ranges: the storage network's read windows, every byte verified before
282
+ * it is written, and the whole object checked against its SHA-256 (a mismatch is tried once more before
283
+ * ChecksumMismatchError).
284
+ */
254
285
  download(bucket: string, key: string, opts?: DownloadOptions): Promise<{
255
286
  object: StorageObject;
256
287
  data: Uint8Array;
257
288
  }>;
258
- /** Downloads an object into sink (a file, in @teepin/sdk/node), as parallel ranges pinned to one version. */
289
+ /**
290
+ * Downloads an object into sink (a file, in @teepin/sdk/node), as parallel ranges pinned to one version. Every byte is
291
+ * verified before it is written (the whole object's SHA-256 too, when it is read in one range).
292
+ */
259
293
  downloadTo(bucket: string, key: string, sink: DownloadSink, opts?: DownloadOptions): Promise<StorageObject>;
294
+ /**
295
+ * Opens an object for reading at any offset: read(offset, length), size, info and close(). Reading straight on
296
+ * fetches a window at a time (64 MiB on the storage network) with the next prefetch windows ahead, so up to
297
+ * prefetch + 2 windows are held in memory; a read somewhere else fetches only what it needs. Every byte is verified
298
+ * before it is read, and every window comes from the version first opened: ObjectChangedError if the object is
299
+ * replaced while it is read. Close it when done: that zeroes its copy of the data key.
300
+ */
301
+ openObject(bucket: string, key: string, opts?: OpenObjectOptions): Promise<ObjectFile>;
302
+ private downloadParams;
260
303
  }
261
304
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { type StorageObject, type StorageService } from './storage.js';
2
- /** The part size of uploads in parts and of parallel download ranges. */
1
+ /** The part size of uploads in parts, unless asked for. */
3
2
  export declare const DEFAULT_PART_SIZE: number;
4
3
  /** upload sends larger data in parts. */
5
4
  export declare const MULTIPART_THRESHOLD: number;
@@ -17,22 +16,21 @@ export type UploadBody = string | ArrayBuffer | ArrayBufferView | Blob | UploadS
17
16
  export interface UploadOptions {
18
17
  contentType?: string;
19
18
  metadata?: Record<string, string>;
20
- /** Bytes per part (default 16 MiB, at least 5 MiB). */
19
+ /** Bytes per part (default 16 MiB, or 64 MiB for a stream with no expectedSize; at least 5 MiB). */
21
20
  partSize?: number;
22
- /** Parts sent at once (default 8). */
21
+ /** A stream's parts sent at once (default 4); other uploads follow the client's uploadConcurrency. */
23
22
  concurrency?: number;
24
23
  /** Bytes sent so far and the total (-1 for a stream); advances as parts finish. */
25
24
  onProgress?: (done: number, total: number) => void;
26
25
  /**
27
- * Continue an earlier, unfinished upload of the same key: parts the server
28
- * already holds are skipped when their MD5 matches. A failed upload is then
29
- * left open (for 7 days) to be resumed, instead of cancelled.
26
+ * A stream's expected size in bytes, a hint: it chooses the part size, so a stream larger than 3,000 of the default
27
+ * 64 MiB parts can be sent.
30
28
  */
31
- resume?: boolean;
29
+ expectedSize?: number;
32
30
  signal?: AbortSignal;
33
31
  }
34
32
  export interface DownloadOptions {
35
- /** Bytes per range fetched at once (default 16 MiB). */
33
+ /** Bytes per range fetched at once. Ranges are the storage network's read windows (64 MiB), which a smaller partSize splits. */
36
34
  partSize?: number;
37
35
  /** Ranges fetched at once (default 8). */
38
36
  concurrency?: number;
@@ -46,27 +44,20 @@ export interface DownloadSink {
46
44
  write(offset: number, data: Uint8Array): void | Promise<void>;
47
45
  }
48
46
  /**
49
- * The part size an upload of size bytes uses when want is asked for: at
50
- * least MIN_PART_SIZE, doubled until the parts fit in MAX_PARTS.
47
+ * The part size earlier releases' uploads in parts used for size bytes when want was asked for: at least
48
+ * MIN_PART_SIZE, doubled until the parts fit in MAX_PARTS. With computeETag it matches the ETag of an object uploaded
49
+ * in parts before the direct path (one ending in "-<parts>"); objects uploaded now have their SHA-256 as their ETag.
51
50
  */
52
51
  export declare function partSize(size: number, want?: number): number;
53
52
  /** The SHA-256 of data, in hex. */
54
53
  export declare function sha256Hex(data: Uint8Array): Promise<string>;
55
54
  /**
56
- * The ETag Teepin gives source: the SHA-256 when parts is 0, or for an
57
- * upload in parts of partBytes the SHA-256 of the parts' SHA-256s with
58
- * "-<parts>". Compare with StorageObject.etag to tell whether local data and
59
- * an object hold the same bytes.
55
+ * The ETag Teepin gives source: its SHA-256 when parts is 0, which is every object uploaded now however it was sent.
56
+ * An object uploaded in parts by an earlier release has the SHA-256 of its parts' SHA-256s with "-<parts>": pass the
57
+ * part size it used (partSize) and its part count. Compare with StorageObject.etag to tell whether local data and an
58
+ * object hold the same bytes.
60
59
  */
61
60
  export declare function computeETag(source: UploadSource, partBytes: number, parts: number): Promise<string>;
62
61
  /** An UploadSource over bytes or a Blob. */
63
62
  export declare function sourceOf(body: Exclude<UploadBody, ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>>): UploadSource;
64
- export declare function upload(s: StorageService, bucket: string, key: string, body: UploadBody, opts?: UploadOptions): Promise<StorageObject>;
65
- /** Downloads into memory and checks objects stored in one request against their SHA-256. For large files use downloadTo. */
66
- export declare function download(s: StorageService, bucket: string, key: string, opts?: DownloadOptions): Promise<{
67
- object: StorageObject;
68
- data: Uint8Array;
69
- }>;
70
- /** Downloads into sink, as parallel ranges pinned to one version of the object. Does not check the checksum; @teepin/sdk/node's downloadFile does. */
71
- export declare function downloadTo(s: StorageService, bucket: string, key: string, sink: DownloadSink, opts?: DownloadOptions): Promise<StorageObject>;
72
63
  //# sourceMappingURL=transfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"AAUA,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,QAAe,CAAC;AAC9C,yCAAyC;AACzC,eAAO,MAAM,mBAAmB,QAAe,CAAC;AAChD,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3D;AAED,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE/I,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,gIAAgI;IAChI,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,MAAM,CAIvD;AAID,mCAAmC;AACnC,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjE;AAYD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzG;AAED,4CAA4C;AAC5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,YAAY,CAYxH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teepin/sdk",
3
- "version": "0.2.1",
3
+ "version": "0.3.0-rc.1",
4
4
  "description": "Official TypeScript/JavaScript SDK for Teepin Web Services: Teepin Inference (AI models in confidential enclaves, OpenAI-compatible) and Teepin Storage, for Node 20+ and browsers",
5
5
  "files": [
6
6
  "dist",
@@ -10,7 +10,7 @@
10
10
  "scripts": {
11
11
  "build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && node scripts/package-types.mjs",
12
12
  "prepare": "npm run build",
13
- "test": "npm run build && node --test test/storage.test.mjs test/inference.test.mjs test/config.test.mjs",
13
+ "test": "npm run build && node --test test/storage.test.mjs test/inference.test.mjs test/config.test.mjs test/formats.test.mjs test/fake-direct.test.mjs test/engine.test.mjs test/journal.test.mjs test/sha256.test.mjs test/reads.test.mjs test/downloads.test.mjs test/uploads.test.mjs test/uploads-large.test.mjs test/upload-journal.test.mjs test/links.test.mjs",
14
14
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.examples.json"
15
15
  },
16
16
  "keywords": [