@teepin/sdk 0.2.0 → 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.
- package/README.md +181 -396
- package/dist/cjs/client.js +42 -4
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/direct/bytes.js +50 -0
- package/dist/cjs/direct/bytes.js.map +1 -0
- package/dist/cjs/direct/common.js +167 -0
- package/dist/cjs/direct/common.js.map +1 -0
- package/dist/cjs/direct/downloads-plan.js +127 -0
- package/dist/cjs/direct/downloads-plan.js.map +1 -0
- package/dist/cjs/direct/engine.js +405 -0
- package/dist/cjs/direct/engine.js.map +1 -0
- package/dist/cjs/direct/formats.js +44 -0
- package/dist/cjs/direct/formats.js.map +1 -0
- package/dist/cjs/direct/hpke.js +275 -0
- package/dist/cjs/direct/hpke.js.map +1 -0
- package/dist/cjs/direct/journal.js +80 -0
- package/dist/cjs/direct/journal.js.map +1 -0
- package/dist/cjs/direct/large.js +850 -0
- package/dist/cjs/direct/large.js.map +1 -0
- package/dist/cjs/direct/reads.js +1314 -0
- package/dist/cjs/direct/reads.js.map +1 -0
- package/dist/cjs/direct/sha256.js +122 -0
- package/dist/cjs/direct/sha256.js.map +1 -0
- package/dist/cjs/direct/tws1.js +480 -0
- package/dist/cjs/direct/tws1.js.map +1 -0
- package/dist/cjs/direct/uploads.js +1706 -0
- package/dist/cjs/direct/uploads.js.map +1 -0
- package/dist/cjs/errors.js +70 -13
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/links.js +195 -0
- package/dist/cjs/links.js.map +1 -0
- package/dist/cjs/node/downloads.js +835 -0
- package/dist/cjs/node/downloads.js.map +1 -0
- package/dist/cjs/node/journal.js +841 -0
- package/dist/cjs/node/journal.js.map +1 -0
- package/dist/cjs/node/uploads.js +219 -0
- package/dist/cjs/node/uploads.js.map +1 -0
- package/dist/cjs/node.js +26 -39
- package/dist/cjs/node.js.map +1 -1
- package/dist/cjs/storage.js +214 -184
- package/dist/cjs/storage.js.map +1 -1
- package/dist/cjs/transfer.js +18 -351
- package/dist/cjs/transfer.js.map +1 -1
- package/dist/esm/client.js +42 -4
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/direct/bytes.js +42 -0
- package/dist/esm/direct/bytes.js.map +1 -0
- package/dist/esm/direct/common.js +155 -0
- package/dist/esm/direct/common.js.map +1 -0
- package/dist/esm/direct/downloads-plan.js +117 -0
- package/dist/esm/direct/downloads-plan.js.map +1 -0
- package/dist/esm/direct/engine.js +385 -0
- package/dist/esm/direct/engine.js.map +1 -0
- package/dist/esm/direct/formats.js +40 -0
- package/dist/esm/direct/formats.js.map +1 -0
- package/dist/esm/direct/hpke.js +262 -0
- package/dist/esm/direct/hpke.js.map +1 -0
- package/dist/esm/direct/journal.js +75 -0
- package/dist/esm/direct/journal.js.map +1 -0
- package/dist/esm/direct/large.js +816 -0
- package/dist/esm/direct/large.js.map +1 -0
- package/dist/esm/direct/reads.js +1275 -0
- package/dist/esm/direct/reads.js.map +1 -0
- package/dist/esm/direct/sha256.js +118 -0
- package/dist/esm/direct/sha256.js.map +1 -0
- package/dist/esm/direct/tws1.js +460 -0
- package/dist/esm/direct/tws1.js.map +1 -0
- package/dist/esm/direct/uploads.js +1660 -0
- package/dist/esm/direct/uploads.js.map +1 -0
- package/dist/esm/errors.js +64 -11
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/links.js +189 -0
- package/dist/esm/links.js.map +1 -0
- package/dist/esm/node/downloads.js +829 -0
- package/dist/esm/node/downloads.js.map +1 -0
- package/dist/esm/node/journal.js +824 -0
- package/dist/esm/node/journal.js.map +1 -0
- package/dist/esm/node/uploads.js +187 -0
- package/dist/esm/node/uploads.js.map +1 -0
- package/dist/esm/node.js +17 -14
- package/dist/esm/node.js.map +1 -1
- package/dist/esm/storage.js +214 -184
- package/dist/esm/storage.js.map +1 -1
- package/dist/esm/transfer.js +19 -349
- package/dist/esm/transfer.js.map +1 -1
- package/dist/types/client.d.ts +45 -4
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/direct/bytes.d.ts +11 -0
- package/dist/types/direct/bytes.d.ts.map +1 -0
- package/dist/types/direct/common.d.ts +47 -0
- package/dist/types/direct/common.d.ts.map +1 -0
- package/dist/types/direct/downloads-plan.d.ts +75 -0
- package/dist/types/direct/downloads-plan.d.ts.map +1 -0
- package/dist/types/direct/engine.d.ts +191 -0
- package/dist/types/direct/engine.d.ts.map +1 -0
- package/dist/types/direct/formats.d.ts +9 -0
- package/dist/types/direct/formats.d.ts.map +1 -0
- package/dist/types/direct/hpke.d.ts +55 -0
- package/dist/types/direct/hpke.d.ts.map +1 -0
- package/dist/types/direct/journal.d.ts +55 -0
- package/dist/types/direct/journal.d.ts.map +1 -0
- package/dist/types/direct/large.d.ts +170 -0
- package/dist/types/direct/large.d.ts.map +1 -0
- package/dist/types/direct/reads.d.ts +306 -0
- package/dist/types/direct/reads.d.ts.map +1 -0
- package/dist/types/direct/sha256.d.ts +16 -0
- package/dist/types/direct/sha256.d.ts.map +1 -0
- package/dist/types/direct/tws1.d.ts +157 -0
- package/dist/types/direct/tws1.d.ts.map +1 -0
- package/dist/types/direct/uploads.d.ts +461 -0
- package/dist/types/direct/uploads.d.ts.map +1 -0
- package/dist/types/errors.d.ts +47 -8
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/links.d.ts +86 -0
- package/dist/types/links.d.ts.map +1 -0
- package/dist/types/node/downloads.d.ts +73 -0
- package/dist/types/node/downloads.d.ts.map +1 -0
- package/dist/types/node/journal.d.ts +162 -0
- package/dist/types/node/journal.d.ts.map +1 -0
- package/dist/types/node/uploads.d.ts +86 -0
- package/dist/types/node/uploads.d.ts.map +1 -0
- package/dist/types/node.d.ts +4 -2
- package/dist/types/node.d.ts.map +1 -1
- package/dist/types/storage.d.ts +107 -64
- package/dist/types/storage.d.ts.map +1 -1
- package/dist/types/transfer.d.ts +14 -23
- package/dist/types/transfer.d.ts.map +1 -1
- package/package.json +8 -5
package/dist/cjs/client.js
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
// Licensed under the Apache License, Version 2.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.backoff = exports.certainlyUnsent = exports.TeepinClient = exports.DEFAULT_BASE_URL = exports.VERSION = void 0;
|
|
6
|
+
const engine_js_1 = require("./direct/engine.js");
|
|
6
7
|
const errors_js_1 = require("./errors.js");
|
|
7
8
|
const inference_js_1 = require("./inference.js");
|
|
8
9
|
const instances_js_1 = require("./instances.js");
|
|
9
10
|
const storage_js_1 = require("./storage.js");
|
|
10
11
|
/** This SDK's version, sent in the User-Agent where the runtime allows it. */
|
|
11
|
-
exports.VERSION = '0.
|
|
12
|
+
exports.VERSION = '0.3.0-rc.1';
|
|
12
13
|
/** The public API. */
|
|
13
14
|
exports.DEFAULT_BASE_URL = 'https://api.teepin.com';
|
|
14
15
|
/** An environment variable, where there is an environment (Node, Deno, Bun;
|
|
@@ -37,8 +38,17 @@ class TeepinClient {
|
|
|
37
38
|
inference;
|
|
38
39
|
apiKey;
|
|
39
40
|
projectId;
|
|
41
|
+
/** Milliseconds one call that is not a transfer may take; also how long a storage read waits for its next bytes. */
|
|
40
42
|
timeout;
|
|
41
43
|
maxRetries;
|
|
44
|
+
/** Milliseconds a read keeps a data key (ClientConfig.keyCacheTtl); 0 keeps none. */
|
|
45
|
+
keyCacheTtl;
|
|
46
|
+
/** Milliseconds an upload waits for storage to come back (ClientConfig.uploadWait); 0 fails at once. */
|
|
47
|
+
uploadWait;
|
|
48
|
+
/** The most packs or parts in flight at once (ClientConfig.uploadConcurrency). */
|
|
49
|
+
uploadConcurrency;
|
|
50
|
+
/** Where upload runs keep their journals (ClientConfig.stateDir); undefined for the default. */
|
|
51
|
+
stateDir;
|
|
42
52
|
fetchImpl;
|
|
43
53
|
/** Waits between retries; replaced in tests. */
|
|
44
54
|
sleep = sleep;
|
|
@@ -48,6 +58,12 @@ class TeepinClient {
|
|
|
48
58
|
this.projectId = config.projectId;
|
|
49
59
|
this.timeout = config.timeout ?? 60000;
|
|
50
60
|
this.maxRetries = Math.max(0, config.maxRetries ?? 4);
|
|
61
|
+
// 0 turns the cache off (every read fetches its key); undefined is the default. NaN keeps none.
|
|
62
|
+
this.keyCacheTtl = config.keyCacheTtl === undefined ? 600000 : Math.max(0, config.keyCacheTtl) || 0;
|
|
63
|
+
// 0 is a real choice (don't wait out an outage); only undefined takes the environment's or the default. NaN is 0.
|
|
64
|
+
this.uploadWait = config.uploadWait === undefined ? (0, engine_js_1.envNumber)(engine_js_1.UPLOAD_WAIT_ENV, engine_js_1.DEFAULT_UPLOAD_WAIT_MS / 1000) * 1000 : Math.max(0, config.uploadWait) || 0;
|
|
65
|
+
this.uploadConcurrency = Math.max(1, Math.floor(config.uploadConcurrency || (0, engine_js_1.envNumber)(engine_js_1.CONCURRENCY_ENV, engine_js_1.MAX_CONCURRENCY)));
|
|
66
|
+
this.stateDir = config.stateDir || undefined;
|
|
51
67
|
const f = config.fetch ?? globalThis.fetch;
|
|
52
68
|
if (!f)
|
|
53
69
|
throw new errors_js_1.TeepinError('no fetch: use Node 20 or later, or pass config.fetch');
|
|
@@ -87,9 +103,28 @@ class TeepinClient {
|
|
|
87
103
|
const mode = method === 'GET' || method === 'DELETE' ? 'safe' : 'unsent';
|
|
88
104
|
return (await this.call({ method, path, json, mode })).data;
|
|
89
105
|
}
|
|
90
|
-
/**
|
|
91
|
-
|
|
92
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Sends a request the control plane signed for the storage network, once: without the API key, and with no retries
|
|
108
|
+
* (the direct engine decides). Resolves once the answer's headers are in, its body then bounded by signal; throws
|
|
109
|
+
* ConnectionError when no answer came (an abort throws the signal's reason) and APIError for an error answer.
|
|
110
|
+
*/
|
|
111
|
+
async sendSigned(req) {
|
|
112
|
+
let response;
|
|
113
|
+
try {
|
|
114
|
+
response = await this.fetchImpl(req.url, { method: req.method, headers: req.headers, body: req.body, signal: req.signal });
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
if (req.signal?.aborted)
|
|
118
|
+
throw req.signal.reason ?? err;
|
|
119
|
+
throw new errors_js_1.ConnectionError(`${req.method} to the storage network: ${err instanceof Error ? err.message : String(err)}`, err);
|
|
120
|
+
}
|
|
121
|
+
if (response.status >= 400)
|
|
122
|
+
throw await decodeError(response);
|
|
123
|
+
return response;
|
|
124
|
+
}
|
|
125
|
+
/** Zeroes the data keys storage reads keep in memory. The client still works: later reads fetch their keys again. */
|
|
126
|
+
close() {
|
|
127
|
+
this.storage.close();
|
|
93
128
|
}
|
|
94
129
|
async sendOnce(req, payload) {
|
|
95
130
|
let url = this.baseUrl + req.path;
|
|
@@ -154,6 +189,7 @@ async function decodeError(response) {
|
|
|
154
189
|
let code;
|
|
155
190
|
let type;
|
|
156
191
|
let deleteAfter;
|
|
192
|
+
let details;
|
|
157
193
|
const text = await response.text().catch(() => '');
|
|
158
194
|
try {
|
|
159
195
|
const body = JSON.parse(text);
|
|
@@ -168,6 +204,7 @@ async function decodeError(response) {
|
|
|
168
204
|
code = body.code;
|
|
169
205
|
if (body.delete_after)
|
|
170
206
|
deleteAfter = new Date(body.delete_after);
|
|
207
|
+
details = body;
|
|
171
208
|
}
|
|
172
209
|
}
|
|
173
210
|
catch {
|
|
@@ -182,6 +219,7 @@ async function decodeError(response) {
|
|
|
182
219
|
requestId: response.headers.get('X-Request-ID') ?? undefined,
|
|
183
220
|
retryAfterMs: retry > 0 ? retry * 1000 : undefined,
|
|
184
221
|
deleteAfter,
|
|
222
|
+
details,
|
|
185
223
|
});
|
|
186
224
|
}
|
|
187
225
|
/** Teepin's own answers that say a billed call was refused before it ran, by status. */
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 TEEPIN Project
|
|
3
|
+
// Licensed under the Apache License, Version 2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.isInt = exports.fromBase64 = exports.utf8 = exports.constantTimeEqual = exports.concat = void 0;
|
|
6
|
+
// Byte helpers the direct-storage formats share.
|
|
7
|
+
/** The bytes of parts, joined into one new array. */
|
|
8
|
+
function concat(parts) {
|
|
9
|
+
let n = 0;
|
|
10
|
+
for (const p of parts)
|
|
11
|
+
n += p.length;
|
|
12
|
+
const out = new Uint8Array(n);
|
|
13
|
+
let off = 0;
|
|
14
|
+
for (const p of parts) {
|
|
15
|
+
out.set(p, off);
|
|
16
|
+
off += p.length;
|
|
17
|
+
}
|
|
18
|
+
return out;
|
|
19
|
+
}
|
|
20
|
+
exports.concat = concat;
|
|
21
|
+
/** Whether a and b hold the same bytes, in time that depends only on their lengths. */
|
|
22
|
+
function constantTimeEqual(a, b) {
|
|
23
|
+
if (a.length !== b.length)
|
|
24
|
+
return false;
|
|
25
|
+
let d = 0;
|
|
26
|
+
for (let i = 0; i < a.length; i++)
|
|
27
|
+
d |= a[i] ^ b[i];
|
|
28
|
+
return d === 0;
|
|
29
|
+
}
|
|
30
|
+
exports.constantTimeEqual = constantTimeEqual;
|
|
31
|
+
/** A string's UTF-8 bytes. */
|
|
32
|
+
function utf8(s) {
|
|
33
|
+
return new TextEncoder().encode(s);
|
|
34
|
+
}
|
|
35
|
+
exports.utf8 = utf8;
|
|
36
|
+
/** The bytes of a base64 string (atob is in Node 16+ and every browser). */
|
|
37
|
+
function fromBase64(s) {
|
|
38
|
+
const bin = atob(s);
|
|
39
|
+
const out = new Uint8Array(bin.length);
|
|
40
|
+
for (let i = 0; i < bin.length; i++)
|
|
41
|
+
out[i] = bin.charCodeAt(i);
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
exports.fromBase64 = fromBase64;
|
|
45
|
+
/** Whether n is a whole number JavaScript holds exactly. */
|
|
46
|
+
function isInt(n) {
|
|
47
|
+
return Number.isSafeInteger(n);
|
|
48
|
+
}
|
|
49
|
+
exports.isInt = isInt;
|
|
50
|
+
//# sourceMappingURL=bytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../src/direct/bytes.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,iDAAiD;;;AAEjD,iDAAiD;AAEjD,qDAAqD;AACrD,SAAgB,MAAM,CAAC,KAAmB;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;QACrB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;KACjB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAVD,wBAUC;AAED,uFAAuF;AACvF,SAAgB,iBAAiB,CAAC,CAAa,EAAE,CAAa;IAC5D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AALD,8CAKC;AAED,8BAA8B;AAC9B,SAAgB,IAAI,CAAC,CAAS;IAC5B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAFD,oBAEC;AAED,4EAA4E;AAC5E,SAAgB,UAAU,CAAC,CAAS;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AALD,gCAKC;AAED,4DAA4D;AAC5D,SAAgB,KAAK,CAAC,CAAS;IAC7B,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAFD,sBAEC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 TEEPIN Project
|
|
3
|
+
// Licensed under the Apache License, Version 2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.Slots = exports.Progress = exports.joinCapped = exports.linked = exports.abortable = exports.Deferred = exports.objectFrom = exports.uuid7 = exports.toBase64 = void 0;
|
|
6
|
+
const str = (v) => (v === undefined || v === null ? '' : String(v));
|
|
7
|
+
const unquote = (etag) => etag.trim().replace(/^W\//, '').replace(/^"|"$/g, '');
|
|
8
|
+
const hex = (b) => Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('');
|
|
9
|
+
/** base64 of bytes (btoa is in Node 16+ and every browser). */
|
|
10
|
+
function toBase64(b) {
|
|
11
|
+
let s = '';
|
|
12
|
+
for (let i = 0; i < b.length; i += 0x8000)
|
|
13
|
+
s += String.fromCharCode(...b.subarray(i, i + 0x8000));
|
|
14
|
+
return btoa(s);
|
|
15
|
+
}
|
|
16
|
+
exports.toBase64 = toBase64;
|
|
17
|
+
/** A UUIDv7 (RFC 9562): a millisecond timestamp, then random bits, so ids sort by time. */
|
|
18
|
+
function uuid7() {
|
|
19
|
+
const b = crypto.getRandomValues(new Uint8Array(16));
|
|
20
|
+
let ms = Date.now();
|
|
21
|
+
for (let i = 5; i >= 0; i--) {
|
|
22
|
+
b[i] = ms % 256;
|
|
23
|
+
ms = Math.floor(ms / 256);
|
|
24
|
+
}
|
|
25
|
+
b[6] = (b[6] & 0x0f) | 0x70;
|
|
26
|
+
b[8] = (b[8] & 0x3f) | 0x80;
|
|
27
|
+
const h = hex(b);
|
|
28
|
+
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;
|
|
29
|
+
}
|
|
30
|
+
exports.uuid7 = uuid7;
|
|
31
|
+
/** An object from the API's JSON. */
|
|
32
|
+
function objectFrom(raw) {
|
|
33
|
+
const d = (raw ?? {});
|
|
34
|
+
const date = (v) => new Date(str(v) || NaN);
|
|
35
|
+
return {
|
|
36
|
+
id: str(d.id),
|
|
37
|
+
key: str(d.key),
|
|
38
|
+
size: Number(d.size_bytes ?? 0),
|
|
39
|
+
contentType: d.content_type || undefined,
|
|
40
|
+
metadata: d.metadata,
|
|
41
|
+
checksumSha256: d.checksum_sha256 || undefined,
|
|
42
|
+
etag: unquote(str(d.etag)),
|
|
43
|
+
partCount: Number(d.part_count ?? 0),
|
|
44
|
+
status: str(d.status),
|
|
45
|
+
backend: str(d.backend),
|
|
46
|
+
createdAt: date(d.created_at),
|
|
47
|
+
updatedAt: date(d.updated_at),
|
|
48
|
+
uploadedAt: d.uploaded_at ? date(d.uploaded_at) : undefined,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
exports.objectFrom = objectFrom;
|
|
52
|
+
/** A promise with its resolve at hand. */
|
|
53
|
+
class Deferred {
|
|
54
|
+
promise;
|
|
55
|
+
resolve;
|
|
56
|
+
settled = false;
|
|
57
|
+
constructor() {
|
|
58
|
+
this.promise = new Promise((resolve) => {
|
|
59
|
+
this.resolve = () => {
|
|
60
|
+
this.settled = true;
|
|
61
|
+
resolve();
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.Deferred = Deferred;
|
|
67
|
+
/** Resolves when p does, or rejects with signal's reason when it aborts first. */
|
|
68
|
+
function abortable(p, signal) {
|
|
69
|
+
if (!signal)
|
|
70
|
+
return p;
|
|
71
|
+
if (signal.aborted) {
|
|
72
|
+
p.catch(() => undefined);
|
|
73
|
+
return Promise.reject(signal.reason);
|
|
74
|
+
}
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
const onAbort = () => reject(signal.reason);
|
|
77
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
78
|
+
p.then((v) => {
|
|
79
|
+
signal.removeEventListener('abort', onAbort);
|
|
80
|
+
resolve(v);
|
|
81
|
+
}, (err) => {
|
|
82
|
+
signal.removeEventListener('abort', onAbort);
|
|
83
|
+
reject(err);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
exports.abortable = abortable;
|
|
88
|
+
/** A controller that aborts with parent's reason, and a function that unlinks it once it is no longer needed. */
|
|
89
|
+
function linked(parent) {
|
|
90
|
+
const ctl = new AbortController();
|
|
91
|
+
if (!parent)
|
|
92
|
+
return { ctl, unlink: () => { } };
|
|
93
|
+
if (parent.aborted) {
|
|
94
|
+
ctl.abort(parent.reason);
|
|
95
|
+
return { ctl, unlink: () => { } };
|
|
96
|
+
}
|
|
97
|
+
const onAbort = () => ctl.abort(parent.reason);
|
|
98
|
+
parent.addEventListener('abort', onAbort, { once: true });
|
|
99
|
+
return { ctl, unlink: () => parent.removeEventListener('abort', onAbort) };
|
|
100
|
+
}
|
|
101
|
+
exports.linked = linked;
|
|
102
|
+
/** Waits for every task to end, at most ms; whether they all did. Tasks never reject here (callers catch their own). */
|
|
103
|
+
async function joinCapped(tasks, ms) {
|
|
104
|
+
let timer;
|
|
105
|
+
const capped = new Promise((resolve) => {
|
|
106
|
+
timer = setTimeout(() => resolve(false), ms);
|
|
107
|
+
});
|
|
108
|
+
try {
|
|
109
|
+
return await Promise.race([Promise.allSettled(tasks).then(() => true), capped]);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
clearTimeout(timer);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.joinCapped = joinCapped;
|
|
116
|
+
/** Bytes done of a total, reported as they go. */
|
|
117
|
+
class Progress {
|
|
118
|
+
total;
|
|
119
|
+
fn;
|
|
120
|
+
done = 0;
|
|
121
|
+
constructor(total, fn) {
|
|
122
|
+
this.total = total;
|
|
123
|
+
this.fn = fn;
|
|
124
|
+
}
|
|
125
|
+
add(n) {
|
|
126
|
+
if (!this.fn || n === 0)
|
|
127
|
+
return;
|
|
128
|
+
this.done += n;
|
|
129
|
+
this.fn(this.done, this.total);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.Progress = Progress;
|
|
133
|
+
/** A semaphore whose waits an abort ends. */
|
|
134
|
+
class Slots {
|
|
135
|
+
free;
|
|
136
|
+
waiters = [];
|
|
137
|
+
constructor(free) {
|
|
138
|
+
this.free = free;
|
|
139
|
+
}
|
|
140
|
+
async acquire(signal) {
|
|
141
|
+
for (;;) {
|
|
142
|
+
signal?.throwIfAborted();
|
|
143
|
+
if (this.free > 0) {
|
|
144
|
+
this.free--;
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
let wake;
|
|
148
|
+
const woken = new Promise((resolve) => (wake = resolve));
|
|
149
|
+
this.waiters.push(wake);
|
|
150
|
+
try {
|
|
151
|
+
await abortable(woken, signal);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
this.waiters = this.waiters.filter((w) => w !== wake);
|
|
155
|
+
if (this.free > 0)
|
|
156
|
+
this.waiters.shift()?.(); // a wake-up this call may have taken goes on to the next
|
|
157
|
+
throw err;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
release() {
|
|
162
|
+
this.free++;
|
|
163
|
+
this.waiters.shift()?.();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.Slots = Slots;
|
|
167
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/direct/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2026 TEEPIN Project
|
|
3
|
+
// Licensed under the Apache License, Version 2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.passing = exports.stopsRun = exports.plan = exports.fold = exports.keyParts = exports.partProblem = exports.UnsafePathError = exports.PART_SUFFIX = void 0;
|
|
6
|
+
// Batch downloads' rules that need no file system (TEEPIN-STORAGE-DESIGN.md sections 19.15 and 22.5): a port of the
|
|
7
|
+
// path rules and the plan in teepin-python's _downloads.py.
|
|
8
|
+
//
|
|
9
|
+
// - Which key can be a path under the destination: every part of it a file name; on Windows also without the
|
|
10
|
+
// characters Windows refuses, a device name (with any extension) or a trailing dot or space, on every OS, since a
|
|
11
|
+
// folder may be shared with Windows.
|
|
12
|
+
// - Which keys would land on one file: the same path, or paths that differ only by case where names ignore case.
|
|
13
|
+
// - Which errors leave an object to go on with later (pending), and which stop a whole run.
|
|
14
|
+
//
|
|
15
|
+
// The node entry (src/node/downloads.ts) does the rest: the files, the links, the journal. Nothing here imports a Node
|
|
16
|
+
// module.
|
|
17
|
+
const errors_js_1 = require("../errors.js");
|
|
18
|
+
/** A download is written into its target's path with this added, and renamed into place only when whole. */
|
|
19
|
+
exports.PART_SUFFIX = '.teepin-part';
|
|
20
|
+
/** A key that can't be written under the destination: not a safe path, a link leading out, or another key's file. */
|
|
21
|
+
class UnsafePathError extends errors_js_1.TeepinError {
|
|
22
|
+
constructor(message) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = 'UnsafePathError';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.UnsafePathError = UnsafePathError;
|
|
28
|
+
/** Windows' device names: a file named one of these, with any extension, is the device (CON, COM1, ...). */
|
|
29
|
+
const WIN_RESERVED = new Set(['CON', 'PRN', 'AUX', 'NUL', ...['COM', 'LPT'].flatMap((p) => [...'0123456789\u00b9\u00b2\u00b3'].map((d) => p + d))]);
|
|
30
|
+
/** Characters Windows doesn't allow in a file name. */
|
|
31
|
+
const WIN_BAD = new Set([...'<>:"|?*\\', ...Array.from({ length: 31 }, (_, i) => String.fromCharCode(i + 1))]);
|
|
32
|
+
/**
|
|
33
|
+
* Why one part of a key's path can't be a file name ("" when it can). On Windows also: its forbidden characters, a
|
|
34
|
+
* device name with or without an extension, and a trailing dot or space, which Windows drops, so the file would land
|
|
35
|
+
* under another name than the key's.
|
|
36
|
+
*/
|
|
37
|
+
function partProblem(part, windows) {
|
|
38
|
+
if (part === '' || part === '.' || part === '..')
|
|
39
|
+
return "an empty, '.' or '..' part";
|
|
40
|
+
if (part.includes('\0'))
|
|
41
|
+
return 'a NUL character';
|
|
42
|
+
if (windows) {
|
|
43
|
+
if ([...part].some((c) => WIN_BAD.has(c)))
|
|
44
|
+
return "a character Windows doesn't allow in a file name";
|
|
45
|
+
if (part.endsWith('.') || part.endsWith(' '))
|
|
46
|
+
return 'a name ending in a dot or a space, which Windows would drop';
|
|
47
|
+
if (WIN_RESERVED.has(part.split('.')[0].replace(/ +$/, '').toUpperCase()))
|
|
48
|
+
return 'a name Windows keeps for a device';
|
|
49
|
+
}
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
exports.partProblem = partProblem;
|
|
53
|
+
/** A key's path split into its parts, each checked by partProblem: UnsafePathError for the first that can't be a name. */
|
|
54
|
+
function keyParts(rel, windows) {
|
|
55
|
+
const parts = rel.split('/');
|
|
56
|
+
for (const part of parts) {
|
|
57
|
+
const why = partProblem(part, windows);
|
|
58
|
+
if (why)
|
|
59
|
+
throw new UnsafePathError(`${JSON.stringify(rel)} isn't a safe path under the destination: ${why}`);
|
|
60
|
+
}
|
|
61
|
+
return parts;
|
|
62
|
+
}
|
|
63
|
+
exports.keyParts = keyParts;
|
|
64
|
+
/** A path as names that ignore case see it (NFC, then upper and lower case, so a sharp s and "SS" are one), or as it is. */
|
|
65
|
+
function fold(path, insensitive) {
|
|
66
|
+
return insensitive ? path.normalize('NFC').toUpperCase().toLowerCase() : path;
|
|
67
|
+
}
|
|
68
|
+
exports.fold = fold;
|
|
69
|
+
/**
|
|
70
|
+
* (key, relative path) pairs to the plan: folder markers skipped, keys that aren't safe paths failed, and a key whose
|
|
71
|
+
* file another key already takes failed.
|
|
72
|
+
*/
|
|
73
|
+
async function plan(pairs, paths) {
|
|
74
|
+
const entries = [];
|
|
75
|
+
const collisions = [];
|
|
76
|
+
const seen = new Map(); // folded path -> the key going there
|
|
77
|
+
for (const [key, rel] of pairs) {
|
|
78
|
+
if (rel === '' || rel.endsWith('/')) {
|
|
79
|
+
const path = paths.shown(rel);
|
|
80
|
+
entries.push({ key, path, result: { key, path, status: 'skipped', resumed: false } });
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
let path;
|
|
84
|
+
try {
|
|
85
|
+
path = await paths.target(keyParts(rel, paths.windows), rel);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (!(err instanceof UnsafePathError))
|
|
89
|
+
throw err;
|
|
90
|
+
const shown = paths.shown(rel);
|
|
91
|
+
entries.push({ key, path: shown, result: { key, path: shown, status: 'failed', error: err, resumed: false } });
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// Two keys that differ only by case are one file where names ignore case, and so would their part files be.
|
|
95
|
+
const norm = fold(path, paths.insensitive);
|
|
96
|
+
const other = seen.get(norm);
|
|
97
|
+
if (other !== undefined) {
|
|
98
|
+
if (other === key)
|
|
99
|
+
continue; // the same key twice
|
|
100
|
+
const error = new UnsafePathError(`${JSON.stringify(key)} and ${JSON.stringify(other)} both go to ${path}`);
|
|
101
|
+
collisions.push({ key, path, status: 'failed', error, resumed: false });
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
seen.set(norm, key);
|
|
105
|
+
entries.push({ key, path });
|
|
106
|
+
}
|
|
107
|
+
return { entries, collisions };
|
|
108
|
+
}
|
|
109
|
+
exports.plan = plan;
|
|
110
|
+
/** Errors that stop a whole run: what's left stays pending, to run again (a revoked key, no credit). */
|
|
111
|
+
function stopsRun(err) {
|
|
112
|
+
return err instanceof errors_js_1.UnauthorizedError || err instanceof errors_js_1.ForbiddenError || err instanceof errors_js_1.PaymentRequiredError;
|
|
113
|
+
}
|
|
114
|
+
exports.stopsRun = stopsRun;
|
|
115
|
+
/**
|
|
116
|
+
* An error after which an object's download is kept, to go on with later: one that stops the run, the network, a busy
|
|
117
|
+
* or failing service, or the local disk (full, say: any failed system call).
|
|
118
|
+
*/
|
|
119
|
+
function passing(err) {
|
|
120
|
+
if (stopsRun(err) || err instanceof errors_js_1.ConnectionError)
|
|
121
|
+
return true;
|
|
122
|
+
if (err instanceof errors_js_1.APIError)
|
|
123
|
+
return err.statusCode === 429 || err.statusCode >= 500;
|
|
124
|
+
return err instanceof Error && 'syscall' in err && typeof err.syscall === 'string';
|
|
125
|
+
}
|
|
126
|
+
exports.passing = passing;
|
|
127
|
+
//# sourceMappingURL=downloads-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloads-plan.js","sourceRoot":"","sources":["../../../src/direct/downloads-plan.ts"],"names":[],"mappings":"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"}
|