@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
@@ -1,18 +1,20 @@
1
1
  // Copyright 2026 TEEPIN Project
2
2
  // Licensed under the Apache License, Version 2.0
3
- import { backoff } from './client.js';
4
- import { ChecksumMismatchError, ConnectionError, errorCode, isRetryable, ObjectChangedError, TeepinError, UploadError, } from './errors.js';
5
- import { md5Hex } from './md5.js';
6
- import { MAX_OBJECT_SIZE, MAX_PART_SIZE, MAX_PARTS, MIN_PART_SIZE } from './storage.js';
7
- /** The part size of uploads in parts and of parallel download ranges. */
3
+ import { Sha256 } from './direct/sha256.js';
4
+ import { TeepinError } from './errors.js';
5
+ import { MAX_PART_SIZE, MAX_PARTS, MIN_PART_SIZE } from './storage.js';
6
+ /** computeETag hashes a whole source in reads of this size, so a file of any size is never held in memory at once. */
7
+ const ETAG_READ = 8 * 2 ** 20;
8
+ /** The part size of uploads in parts, unless asked for. */
8
9
  export const DEFAULT_PART_SIZE = 16 * 2 ** 20;
9
10
  /** upload sends larger data in parts. */
10
11
  export const MULTIPART_THRESHOLD = 16 * 2 ** 20;
11
12
  /** How many parts or ranges move at once. */
12
13
  export const DEFAULT_CONCURRENCY = 8;
13
14
  /**
14
- * The part size an upload of size bytes uses when want is asked for: at
15
- * least MIN_PART_SIZE, doubled until the parts fit in MAX_PARTS.
15
+ * The part size earlier releases' uploads in parts used for size bytes when want was asked for: at least
16
+ * MIN_PART_SIZE, doubled until the parts fit in MAX_PARTS. With computeETag it matches the ETag of an object uploaded
17
+ * in parts before the direct path (one ending in "-<parts>"); objects uploaded now have their SHA-256 as their ETag.
16
18
  */
17
19
  export function partSize(size, want = 0) {
18
20
  let p = Math.max(want || DEFAULT_PART_SIZE, MIN_PART_SIZE);
@@ -34,14 +36,18 @@ async function composite(parts) {
34
36
  return `${await sha256Hex(all)}-${parts.length}`;
35
37
  }
36
38
  /**
37
- * The ETag Teepin gives source: the SHA-256 when parts is 0, or for an
38
- * upload in parts of partBytes the SHA-256 of the parts' SHA-256s with
39
- * "-<parts>". Compare with StorageObject.etag to tell whether local data and
40
- * an object hold the same bytes.
39
+ * The ETag Teepin gives source: its SHA-256 when parts is 0, which is every object uploaded now however it was sent.
40
+ * An object uploaded in parts by an earlier release has the SHA-256 of its parts' SHA-256s with "-<parts>": pass the
41
+ * part size it used (partSize) and its part count. Compare with StorageObject.etag to tell whether local data and an
42
+ * object hold the same bytes.
41
43
  */
42
44
  export async function computeETag(source, partBytes, parts) {
43
- if (parts === 0)
44
- return sha256Hex(await source.read(0, source.size));
45
+ if (parts === 0) {
46
+ const h = new Sha256();
47
+ for (let off = 0; off < source.size; off += ETAG_READ)
48
+ h.update(await source.read(off, Math.min(ETAG_READ, source.size - off)));
49
+ return h.hexDigest();
50
+ }
45
51
  if (Math.ceil(source.size / partBytes) !== parts)
46
52
  throw new TeepinError(`${source.size} bytes in parts of ${partBytes} is not ${parts} parts`);
47
53
  const sums = [];
@@ -65,340 +71,4 @@ export function sourceOf(body) {
65
71
  }
66
72
  return body;
67
73
  }
68
- function isStream(body) {
69
- if (typeof ReadableStream !== 'undefined' && body instanceof ReadableStream)
70
- return true;
71
- return typeof body === 'object' && body !== null && Symbol.asyncIterator in body && !('read' in body && 'size' in body);
72
- }
73
- class Progress {
74
- total;
75
- fn;
76
- done = 0;
77
- constructor(total, fn) {
78
- this.total = total;
79
- this.fn = fn;
80
- }
81
- add(n) {
82
- if (!this.fn || n === 0)
83
- return;
84
- this.done += n;
85
- this.fn(this.done, this.total);
86
- }
87
- }
88
- /** Runs fn for each item, n at a time, stopping at the first error, which it throws. */
89
- async function parallel(items, n, signal, fn) {
90
- const ctl = new AbortController();
91
- const onAbort = () => ctl.abort(signal?.reason);
92
- signal?.addEventListener('abort', onAbort, { once: true });
93
- let next = 0;
94
- let failure;
95
- const worker = async () => {
96
- while (next < items.length && failure === undefined && !ctl.signal.aborted) {
97
- const item = items[next++];
98
- try {
99
- await fn(item, ctl.signal);
100
- }
101
- catch (err) {
102
- if (failure === undefined)
103
- failure = err;
104
- ctl.abort(err);
105
- }
106
- }
107
- };
108
- try {
109
- await Promise.all(Array.from({ length: Math.min(n, items.length) }, worker));
110
- }
111
- finally {
112
- signal?.removeEventListener('abort', onAbort);
113
- }
114
- if (failure !== undefined)
115
- throw failure;
116
- if (signal?.aborted)
117
- throw signal.reason;
118
- }
119
- export async function upload(s, bucket, key, body, opts = {}) {
120
- if (isStream(body))
121
- return uploadStream(s, bucket, key, body, opts);
122
- const src = sourceOf(body);
123
- const contentType = opts.contentType || src.type;
124
- if (src.size > MAX_OBJECT_SIZE)
125
- throw new TeepinError(`${src.size} bytes is over the 5 TiB an object may hold`);
126
- if (src.size <= MULTIPART_THRESHOLD) {
127
- const bytes = await src.read(0, src.size);
128
- return putVerified(s, bucket, key, bytes, contentType, opts);
129
- }
130
- return uploadParts(s, bucket, key, src, contentType, opts);
131
- }
132
- async function putVerified(s, bucket, key, bytes, contentType, opts) {
133
- const want = await sha256Hex(bytes);
134
- const obj = await s.putObject(bucket, key, bytes, { contentType, metadata: opts.metadata, signal: opts.signal });
135
- if (obj.etag && obj.etag !== want)
136
- throw new ChecksumMismatchError(`stored ${obj.etag}, sent ${want}`);
137
- opts.onProgress?.(bytes.length, bytes.length);
138
- return obj;
139
- }
140
- async function uploadParts(s, bucket, key, src, contentType, opts) {
141
- const size = partSize(src.size, opts.partSize);
142
- const n = Math.ceil(src.size / size);
143
- const span = (num) => {
144
- const off = (num - 1) * size;
145
- return [off, Math.min(size, src.size - off)];
146
- };
147
- const progress = new Progress(src.size, opts.onProgress);
148
- const sums = new Array(n + 1);
149
- let up;
150
- if (opts.resume)
151
- up = await resumable(s, bucket, key, contentType, src, n, span, sums, progress, opts.signal);
152
- up ??= await s.createUpload(bucket, key, { contentType, metadata: opts.metadata, signal: opts.signal });
153
- const id = up.id;
154
- const todo = [];
155
- for (let num = 1; num <= n; num++)
156
- if (!sums[num])
157
- todo.push(num);
158
- try {
159
- await parallel(todo, opts.concurrency ?? DEFAULT_CONCURRENCY, opts.signal, async (num, signal) => {
160
- const [off, len] = span(num);
161
- const bytes = await src.read(off, len);
162
- const md5 = md5Hex(bytes);
163
- const part = await s.uploadPart(bucket, id, num, bytes, signal);
164
- if (part.etag !== md5)
165
- throw new ChecksumMismatchError(`part ${num}: the server received MD5 ${part.etag}, sent ${md5}`);
166
- sums[num] = { md5, sha256: await sha256Raw(bytes) };
167
- progress.add(len);
168
- });
169
- }
170
- catch (err) {
171
- throw await failUpload(s, bucket, id, !!opts.resume, err);
172
- }
173
- const parts = [];
174
- const shas = [];
175
- for (let num = 1; num <= n; num++) {
176
- parts.push({ number: num, etag: sums[num].md5 });
177
- shas.push(sums[num].sha256);
178
- }
179
- return complete(s, bucket, key, id, parts, await composite(shas), !!opts.resume, opts.signal);
180
- }
181
- async function complete(s, bucket, key, id, parts, want, keep, signal) {
182
- let obj;
183
- try {
184
- obj = await s.completeUpload(bucket, id, parts, signal);
185
- }
186
- catch (err) {
187
- if (isRetryable(err) || errorCode(err) === 'upload_not_found') {
188
- // The answer may have been lost after the object was made.
189
- const got = await s.statObject(bucket, key, signal).catch(() => null);
190
- if (got && got.etag === want)
191
- return got;
192
- }
193
- throw await failUpload(s, bucket, id, keep, err);
194
- }
195
- if (obj.etag !== want)
196
- throw new ChecksumMismatchError(`stored ${obj.etag}, sent ${want}`);
197
- return obj;
198
- }
199
- async function failUpload(s, bucket, id, keep, err) {
200
- if (!keep)
201
- await s.abortUpload(bucket, id).catch(() => undefined);
202
- return new UploadError(id, err);
203
- }
204
- /** The newest open upload of key this data can continue, with sums filled for parts it already holds with the same bytes. */
205
- async function resumable(s, bucket, key, contentType, src, n, span, sums, progress, signal) {
206
- const ups = await s.listUploads(bucket, key, signal);
207
- for (let i = ups.length - 1; i >= 0; i--) {
208
- if (ups[i].key !== key || (contentType && ups[i].contentType !== contentType))
209
- continue;
210
- let up;
211
- try {
212
- up = await s.listParts(bucket, ups[i].id, signal);
213
- }
214
- catch (err) {
215
- if (errorCode(err) === 'upload_not_found')
216
- continue; // completed, cancelled or expired meanwhile
217
- throw err;
218
- }
219
- for (const p of up.parts) {
220
- if (p.number < 1 || p.number > n)
221
- continue;
222
- const [off, len] = span(p.number);
223
- if (p.size !== len)
224
- continue; // another part size: sent again
225
- const bytes = await src.read(off, len);
226
- if (md5Hex(bytes) === p.etag) {
227
- sums[p.number] = { md5: p.etag, sha256: await sha256Raw(bytes) };
228
- progress.add(len);
229
- }
230
- }
231
- return up;
232
- }
233
- return undefined;
234
- }
235
- async function* chunksOf(body) {
236
- if (typeof ReadableStream !== 'undefined' && body instanceof ReadableStream) {
237
- const reader = body.getReader();
238
- try {
239
- for (;;) {
240
- const { done, value } = await reader.read();
241
- if (done)
242
- return;
243
- if (value?.length)
244
- yield value;
245
- }
246
- }
247
- finally {
248
- reader.releaseLock();
249
- }
250
- }
251
- else {
252
- for await (const c of body)
253
- if (c?.length)
254
- yield c;
255
- }
256
- }
257
- /** Reads a stream into parts of size bytes (the last may be shorter). */
258
- async function* partsOf(body, size) {
259
- let buf = new Uint8Array(size);
260
- let filled = 0;
261
- for await (let chunk of chunksOf(body)) {
262
- while (chunk.length) {
263
- const take = Math.min(size - filled, chunk.length);
264
- buf.set(chunk.subarray(0, take), filled);
265
- filled += take;
266
- chunk = chunk.subarray(take);
267
- if (filled === size) {
268
- yield buf;
269
- buf = new Uint8Array(size);
270
- filled = 0;
271
- }
272
- }
273
- }
274
- if (filled)
275
- yield buf.subarray(0, filled);
276
- }
277
- /** Sends a stream of unknown size: what fits in one part in one request, the rest in parts, concurrency at a time. */
278
- async function uploadStream(s, bucket, key, body, opts) {
279
- const size = Math.max(opts.partSize || DEFAULT_PART_SIZE, MIN_PART_SIZE);
280
- const parts = partsOf(body, size);
281
- const first = await parts.next();
282
- const firstBytes = first.done ? new Uint8Array() : first.value;
283
- const second = firstBytes.length === size ? await parts.next() : { done: true, value: undefined };
284
- if (second.done)
285
- return putVerified(s, bucket, key, firstBytes, opts.contentType, opts);
286
- const progress = new Progress(-1, opts.onProgress);
287
- const up = await s.createUpload(bucket, key, { contentType: opts.contentType, metadata: opts.metadata, signal: opts.signal });
288
- const sums = [];
289
- const inflight = new Set();
290
- let failure;
291
- const ctl = new AbortController();
292
- opts.signal?.addEventListener('abort', () => ctl.abort(opts.signal?.reason), { once: true });
293
- const send = (num, bytes) => {
294
- const p = (async () => {
295
- const md5 = md5Hex(bytes);
296
- const part = await s.uploadPart(bucket, up.id, num, bytes, ctl.signal);
297
- if (part.etag !== md5)
298
- throw new ChecksumMismatchError(`part ${num}`);
299
- sums[num - 1] = { md5, sha256: await sha256Raw(bytes) };
300
- progress.add(bytes.length);
301
- })().catch((err) => {
302
- failure ??= err;
303
- ctl.abort(err);
304
- });
305
- inflight.add(p);
306
- p.finally(() => inflight.delete(p));
307
- };
308
- try {
309
- let num = 0;
310
- const queue = async (bytes) => {
311
- if (++num > MAX_PARTS)
312
- throw new TeepinError(`the stream is over ${MAX_PARTS} parts of ${size} bytes; raise partSize`);
313
- while (inflight.size >= (opts.concurrency ?? DEFAULT_CONCURRENCY))
314
- await Promise.race(inflight);
315
- if (failure !== undefined)
316
- throw failure;
317
- send(num, bytes);
318
- };
319
- await queue(firstBytes);
320
- await queue(second.value);
321
- for await (const bytes of { [Symbol.asyncIterator]: () => parts }) {
322
- if (failure !== undefined)
323
- break;
324
- await queue(bytes);
325
- }
326
- await Promise.all(inflight);
327
- if (failure !== undefined)
328
- throw failure;
329
- }
330
- catch (err) {
331
- await Promise.allSettled(inflight);
332
- throw await failUpload(s, bucket, up.id, false, failure ?? err);
333
- }
334
- const list = sums.map((x, i) => ({ number: i + 1, etag: x.md5 }));
335
- return complete(s, bucket, key, up.id, list, await composite(sums.map((x) => x.sha256)), false, opts.signal);
336
- }
337
- /** Copies length bytes of obj from start into write, continuing where it broke off after a passing failure. */
338
- async function fetchRange(s, bucket, key, obj, start, length, write, progress, signal) {
339
- let done = 0;
340
- for (let attempt = 0; length > 0; attempt++) {
341
- try {
342
- const r = await s.getObject(bucket, key, { range: { start: start + done, end: start + length - 1 }, ifMatch: obj.etag, signal });
343
- const reader = r.body.getReader();
344
- try {
345
- for (;;) {
346
- let chunk;
347
- try {
348
- chunk = await reader.read();
349
- }
350
- catch (err) {
351
- if (signal?.aborted)
352
- throw signal.reason;
353
- throw new ConnectionError('the download broke off', err);
354
- }
355
- if (chunk.done)
356
- break;
357
- await write(start + done, chunk.value);
358
- done += chunk.value.length;
359
- progress.add(chunk.value.length);
360
- }
361
- }
362
- finally {
363
- reader.releaseLock();
364
- }
365
- if (done < length)
366
- throw new ConnectionError('the download ended early');
367
- return;
368
- }
369
- catch (err) {
370
- if (err instanceof ObjectChangedError || !isRetryable(err) || attempt >= s.client.maxRetries || signal?.aborted)
371
- throw err;
372
- await s.client.sleep(backoff(attempt, err), signal);
373
- }
374
- }
375
- }
376
- /** Stats the object, opens a writer for it, and fetches it as ranges, concurrency at a time. */
377
- async function fetchAll(s, bucket, key, open, opts) {
378
- const obj = await s.statObject(bucket, key, opts.signal);
379
- const write = open(obj);
380
- const size = opts.partSize || DEFAULT_PART_SIZE;
381
- const progress = new Progress(obj.size, opts.onProgress);
382
- const ranges = [];
383
- for (let off = 0; off < obj.size; off += size)
384
- ranges.push(off);
385
- await parallel(ranges, opts.concurrency ?? DEFAULT_CONCURRENCY, opts.signal, (off, signal) => fetchRange(s, bucket, key, obj, off, Math.min(size, obj.size - off), write, progress, signal));
386
- return obj;
387
- }
388
- /** Downloads into memory and checks objects stored in one request against their SHA-256. For large files use downloadTo. */
389
- export async function download(s, bucket, key, opts = {}) {
390
- let data = new Uint8Array();
391
- const object = await fetchAll(s, bucket, key, (obj) => {
392
- data = new Uint8Array(obj.size);
393
- return (off, chunk) => data.set(chunk, off);
394
- }, opts);
395
- if (!opts.skipVerify && object.partCount === 0 && object.checksumSha256 && (await sha256Hex(data)) !== object.checksumSha256) {
396
- throw new ChecksumMismatchError();
397
- }
398
- return { object, data };
399
- }
400
- /** Downloads into sink, as parallel ranges pinned to one version of the object. Does not check the checksum; @teepin/sdk/node's downloadFile does. */
401
- export async function downloadTo(s, bucket, key, sink, opts = {}) {
402
- return fetchAll(s, bucket, key, () => (off, chunk) => sink.write(off, chunk), opts);
403
- }
404
74
  //# sourceMappingURL=transfer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { InferenceService } from './inference.js';
2
2
  import { InstancesService } from './instances.js';
3
3
  import { StorageService } from './storage.js';
4
4
  /** This SDK's version, sent in the User-Agent where the runtime allows it. */
5
- export declare const VERSION = "0.2.1";
5
+ export declare const VERSION = "0.3.0";
6
6
  /** The public API. */
7
7
  export declare const DEFAULT_BASE_URL = "https://api.teepin.com";
8
8
  /** Client configuration. Usually nothing: the key and address come from the
@@ -23,6 +23,32 @@ export interface ClientConfig {
23
23
  maxRetries?: number;
24
24
  /** The fetch to use (default: the global one). */
25
25
  fetch?: typeof fetch;
26
+ /**
27
+ * Milliseconds a read keeps an object's data key in memory, so later reads of the same version needn't fetch it
28
+ * (default 600000; 0 keeps none). Keys are zeroed on expiry and on close().
29
+ */
30
+ keyCacheTtl?: number;
31
+ /**
32
+ * Milliseconds an upload waits for an unavailable storage network or control plane before StorageUnavailableError
33
+ * (default: the TEEPIN_UPLOAD_WAIT environment variable in seconds, else 600000). 0 fails at once.
34
+ */
35
+ uploadWait?: number;
36
+ /** The most packs or parts an upload has in flight at once (default: TEEPIN_UPLOAD_CONCURRENCY, else 32). */
37
+ uploadConcurrency?: number;
38
+ /**
39
+ * Where @teepin/sdk/node's upload runs keep their journals (default: TEEPIN_STATE_DIR, else the OS's state
40
+ * directory: $XDG_STATE_HOME/teepin, ~/Library/Application Support/teepin or %LOCALAPPDATA%\teepin).
41
+ */
42
+ stateDir?: string;
43
+ }
44
+ /** One request to a URL the control plane signed: the storage network's. */
45
+ export interface SignedRequest {
46
+ method: string;
47
+ url: string;
48
+ /** Sent exactly as signed. */
49
+ headers: Record<string, string>;
50
+ body?: BodyInit;
51
+ signal?: AbortSignal;
26
52
  }
27
53
  /** When a failed request may be sent again. */
28
54
  export type RetryMode =
@@ -91,8 +117,17 @@ export declare class TeepinClient {
91
117
  readonly inference: InferenceService;
92
118
  private readonly apiKey?;
93
119
  private readonly projectId?;
94
- private readonly timeout;
120
+ /** Milliseconds one call that is not a transfer may take; also how long a storage read waits for its next bytes. */
121
+ readonly timeout: number;
95
122
  readonly maxRetries: number;
123
+ /** Milliseconds a read keeps a data key (ClientConfig.keyCacheTtl); 0 keeps none. */
124
+ readonly keyCacheTtl: number;
125
+ /** Milliseconds an upload waits for storage to come back (ClientConfig.uploadWait); 0 fails at once. */
126
+ readonly uploadWait: number;
127
+ /** The most packs or parts in flight at once (ClientConfig.uploadConcurrency). */
128
+ readonly uploadConcurrency: number;
129
+ /** Where upload runs keep their journals (ClientConfig.stateDir); undefined for the default. */
130
+ readonly stateDir?: string;
96
131
  private readonly fetchImpl;
97
132
  /** Waits between retries; replaced in tests. */
98
133
  sleep: (ms: number, signal?: AbortSignal) => Promise<void>;
@@ -106,8 +141,14 @@ export declare class TeepinClient {
106
141
  }>;
107
142
  /** The JSON call the compute API uses. */
108
143
  request<T = unknown>(method: string, path: string, json?: unknown): Promise<T>;
109
- /** An API path as an absolute URL. */
110
- absolute(path: string): string;
144
+ /**
145
+ * Sends a request the control plane signed for the storage network, once: without the API key, and with no retries
146
+ * (the direct engine decides). Resolves once the answer's headers are in, its body then bounded by signal; throws
147
+ * ConnectionError when no answer came (an abort throws the signal's reason) and APIError for an error answer.
148
+ */
149
+ sendSigned(req: SignedRequest): Promise<Response>;
150
+ /** Zeroes the data keys storage reads keep in memory. The client still works: later reads fetch their keys again. */
151
+ close(): void;
111
152
  private sendOnce;
112
153
  }
113
154
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** The bytes of parts, joined into one new array. */
2
+ export declare function concat(parts: Uint8Array[]): Uint8Array;
3
+ /** Whether a and b hold the same bytes, in time that depends only on their lengths. */
4
+ export declare function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean;
5
+ /** A string's UTF-8 bytes. */
6
+ export declare function utf8(s: string): Uint8Array;
7
+ /** The bytes of a base64 string (atob is in Node 16+ and every browser). */
8
+ export declare function fromBase64(s: string): Uint8Array;
9
+ /** Whether n is a whole number JavaScript holds exactly. */
10
+ export declare function isInt(n: number): boolean;
11
+ //# sourceMappingURL=bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../../src/direct/bytes.ts"],"names":[],"mappings":"AAKA,qDAAqD;AACrD,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,CAUtD;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAKvE;AAED,8BAA8B;AAC9B,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAE1C;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAKhD;AAED,4DAA4D;AAC5D,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAExC"}
@@ -0,0 +1,47 @@
1
+ import type { StorageObject } from '../storage.js';
2
+ /** Plain JSON, as the API answers it. */
3
+ export type Json = Record<string, unknown>;
4
+ /** base64 of bytes (btoa is in Node 16+ and every browser). */
5
+ export declare function toBase64(b: Uint8Array): string;
6
+ /** A UUIDv7 (RFC 9562): a millisecond timestamp, then random bits, so ids sort by time. */
7
+ export declare function uuid7(): string;
8
+ /** An object from the API's JSON. */
9
+ export declare function objectFrom(raw: unknown): StorageObject;
10
+ /** A promise with its resolve at hand. */
11
+ export declare class Deferred {
12
+ readonly promise: Promise<void>;
13
+ resolve: () => void;
14
+ settled: boolean;
15
+ constructor();
16
+ }
17
+ /** Resolves when p does, or rejects with signal's reason when it aborts first. */
18
+ export declare function abortable<T>(p: Promise<T>, signal?: AbortSignal): Promise<T>;
19
+ /** A controller that aborts with parent's reason, and a function that unlinks it once it is no longer needed. */
20
+ export declare function linked(parent?: AbortSignal): {
21
+ ctl: AbortController;
22
+ unlink: () => void;
23
+ };
24
+ /** Waits for every task to end, at most ms; whether they all did. Tasks never reject here (callers catch their own). */
25
+ export declare function joinCapped(tasks: readonly Promise<unknown>[], ms: number): Promise<boolean>;
26
+ /** Bytes done of a total, reported as they go. */
27
+ export declare class Progress {
28
+ private readonly total;
29
+ private readonly fn?;
30
+ private done;
31
+ constructor(total: number, fn?: ((done: number, total: number) => void) | undefined);
32
+ add(n: number): void;
33
+ }
34
+ /** What waits are charged to: a pack, a large upload or a stream (uploadWait bounds each). */
35
+ export interface Waits {
36
+ waited: number;
37
+ throttled: boolean;
38
+ }
39
+ /** A semaphore whose waits an abort ends. */
40
+ export declare class Slots {
41
+ private free;
42
+ private waiters;
43
+ constructor(free: number);
44
+ acquire(signal?: AbortSignal): Promise<void>;
45
+ release(): void;
46
+ }
47
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/direct/common.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,yCAAyC;AACzC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAI9C;AAED,2FAA2F;AAC3F,wBAAgB,KAAK,IAAI,MAAM,CAW9B;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAkBtD;AAED,0CAA0C;AAC1C,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAG,MAAM,IAAI,CAAC;IACrB,OAAO,UAAS;;CAUjB;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoB5E;AAED,iHAAiH;AACjH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAUzF;AAED,wHAAwH;AACxH,wBAAsB,UAAU,CAAC,KAAK,EAAE,SAAS,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUjG;AAED,kDAAkD;AAClD,qBAAa,QAAQ;IAGjB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAHtB,OAAO,CAAC,IAAI,CAAK;gBAEE,KAAK,EAAE,MAAM,EACb,EAAE,CAAC,UAAS,MAAM,SAAS,MAAM,KAAK,IAAI,aAAA;IAG7D,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;CAKrB;AAED,8FAA8F;AAC9F,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,6CAA6C;AAC7C,qBAAa,KAAK;IAEJ,OAAO,CAAC,IAAI;IADxB,OAAO,CAAC,OAAO,CAAyB;gBACpB,IAAI,EAAE,MAAM;IAE1B,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD,OAAO,IAAI,IAAI;CAIhB"}