@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/storage.js
CHANGED
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
// Copyright 2026 TEEPIN Project
|
|
3
3
|
// Licensed under the Apache License, Version 2.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.StorageService = exports.unquote = exports.
|
|
5
|
+
exports.StorageService = exports.unquote = exports.parseObject = exports.MAX_OBJECT_SIZE = exports.MAX_PARTS = exports.MAX_PART_SIZE = exports.MIN_PART_SIZE = exports.ObjectFile = void 0;
|
|
6
|
+
const large_js_1 = require("./direct/large.js");
|
|
7
|
+
const reads_js_1 = require("./direct/reads.js");
|
|
8
|
+
const uploads_js_1 = require("./direct/uploads.js");
|
|
6
9
|
const errors_js_1 = require("./errors.js");
|
|
7
10
|
const transfer_js_1 = require("./transfer.js");
|
|
8
|
-
|
|
11
|
+
var reads_js_2 = require("./direct/reads.js");
|
|
12
|
+
Object.defineProperty(exports, "ObjectFile", { enumerable: true, get: function () { return reads_js_2.ObjectFile; } });
|
|
13
|
+
/**
|
|
14
|
+
* Earlier releases' rules for uploads in parts, which partSize and computeETag use to match the ETag of an object
|
|
15
|
+
* uploaded in parts before the direct path. Uploads now follow the direct path's own rules (at most 3,000 parts).
|
|
16
|
+
*/
|
|
9
17
|
exports.MIN_PART_SIZE = 5 * 2 ** 20;
|
|
10
18
|
exports.MAX_PART_SIZE = 5 * 2 ** 30;
|
|
11
19
|
exports.MAX_PARTS = 10000;
|
|
20
|
+
/** The largest object Teepin Storage holds (5 TiB). */
|
|
12
21
|
exports.MAX_OBJECT_SIZE = 5 * 2 ** 40;
|
|
13
22
|
const bucketPath = (bucket) => `/v1/storage/buckets/${encodeURIComponent(bucket)}`;
|
|
14
23
|
const uploadPath = (bucket, id) => `${bucketPath(bucket)}/uploads/${encodeURIComponent(id)}`;
|
|
@@ -55,49 +64,57 @@ function parseUpload(raw) {
|
|
|
55
64
|
metadata: d.metadata,
|
|
56
65
|
createdAt: new Date(String(d.created_at)),
|
|
57
66
|
expiresAt: new Date(String(d.expires_at)),
|
|
58
|
-
parts: (d.parts ?? []).map((p) => ({
|
|
59
|
-
number: Number(p.part_number),
|
|
60
|
-
size: Number(p.size_bytes),
|
|
61
|
-
etag: unquote(String(p.etag)),
|
|
62
|
-
uploadedAt: date(p.uploaded_at),
|
|
63
|
-
})),
|
|
64
67
|
};
|
|
65
68
|
}
|
|
66
|
-
function quote(etag) {
|
|
67
|
-
return etag === '*' || etag.startsWith('"') || etag.startsWith('W/"') ? etag : `"${etag}"`;
|
|
68
|
-
}
|
|
69
|
-
exports.quote = quote;
|
|
70
69
|
function unquote(etag) {
|
|
71
70
|
return etag.trim().replace(/^W\//, '').replace(/^"|"$/g, '');
|
|
72
71
|
}
|
|
73
72
|
exports.unquote = unquote;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
const total = range ? Number(range.slice(range.lastIndexOf('/') + 1)) : size;
|
|
78
|
-
const modified = response.headers.get('Last-Modified');
|
|
73
|
+
/** An object's download headers, from its details (the read session's, or statObject's). */
|
|
74
|
+
function directInfo(contentType, etag, size, total, lastModified) {
|
|
75
|
+
const t = lastModified?.getTime();
|
|
79
76
|
return {
|
|
80
77
|
size,
|
|
81
78
|
totalSize: total,
|
|
82
|
-
contentType:
|
|
83
|
-
etag: unquote(
|
|
84
|
-
lastModified:
|
|
79
|
+
contentType: contentType || 'application/octet-stream',
|
|
80
|
+
etag: unquote(etag),
|
|
81
|
+
lastModified: t === undefined || Number.isNaN(t) ? undefined : new Date(Math.floor(t / 1000) * 1000),
|
|
85
82
|
};
|
|
86
83
|
}
|
|
87
84
|
/**
|
|
88
|
-
* Teepin Storage
|
|
89
|
-
*
|
|
90
|
-
* way to move data of any size.
|
|
85
|
+
* Teepin Storage: buckets, objects and transfers. upload and download are the
|
|
86
|
+
* high-level way to move data of any size.
|
|
91
87
|
*
|
|
92
88
|
* Every method sends your API key, so call them from a backend you control.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
89
|
+
*
|
|
90
|
+
* Reads come straight from the storage network, each byte verified on this
|
|
91
|
+
* device before it is used (TEEPIN-STORAGE-DESIGN.md section 22.5). Writes are
|
|
92
|
+
* encrypted on this device and sent straight to the storage network too
|
|
93
|
+
* (section 22.4): small objects in packs, large ones in parts. No file byte
|
|
94
|
+
* passes through Teepin's API.
|
|
95
95
|
*/
|
|
96
96
|
class StorageService {
|
|
97
97
|
client;
|
|
98
|
+
directReads;
|
|
99
|
+
uploadEngine;
|
|
98
100
|
constructor(client) {
|
|
99
101
|
this.client = client;
|
|
100
102
|
}
|
|
103
|
+
/** Reads through read sessions, made on first use. */
|
|
104
|
+
get reads() {
|
|
105
|
+
return (this.directReads ??= new reads_js_1.DirectReads(this.client));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The direct upload engine, made on first use: putObject's shared packs and the node entry's upload runs. Internal:
|
|
109
|
+
* @teepin/sdk/node gives it the disk.
|
|
110
|
+
*/
|
|
111
|
+
get directUploads() {
|
|
112
|
+
return (this.uploadEngine ??= new uploads_js_1.DirectUploads(this.client));
|
|
113
|
+
}
|
|
114
|
+
/** Zeroes the data keys kept for reads (TeepinClient.close calls it). */
|
|
115
|
+
close() {
|
|
116
|
+
this.directReads?.close();
|
|
117
|
+
}
|
|
101
118
|
async call(req) {
|
|
102
119
|
return this.client.call(req);
|
|
103
120
|
}
|
|
@@ -164,93 +181,64 @@ class StorageService {
|
|
|
164
181
|
} while (cursor);
|
|
165
182
|
}
|
|
166
183
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
184
|
+
* Stores an object, encrypted on this device: in a pack shared with the other putObject calls waiting at the same
|
|
185
|
+
* time (up to 16 MiB), or in parts straight to the storage network above that; an empty one is written by the API
|
|
186
|
+
* alone, with no bytes. The call returns once its object is committed. upload also takes streams.
|
|
169
187
|
*/
|
|
170
188
|
async putObject(bucket, key, body, opts = {}) {
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
if (
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
headers['If-None-Match'] = '*';
|
|
180
|
-
try {
|
|
181
|
-
const { data } = await this.call({
|
|
182
|
-
method: 'PUT',
|
|
183
|
-
path: `${bucketPath(bucket)}/object`,
|
|
184
|
-
query: { key },
|
|
185
|
-
headers,
|
|
186
|
-
body: () => body,
|
|
187
|
-
mode: 'safe',
|
|
188
|
-
transfer: true,
|
|
189
|
-
signal: opts.signal,
|
|
190
|
-
});
|
|
191
|
-
return parseObject(data);
|
|
192
|
-
}
|
|
193
|
-
catch (err) {
|
|
194
|
-
if (err instanceof errors_js_1.PreconditionFailedError && opts.ifNoneMatch && retried(err)) {
|
|
195
|
-
throw new errors_js_1.PreconditionFailedError({
|
|
196
|
-
statusCode: 412,
|
|
197
|
-
code: err.code,
|
|
198
|
-
message: `${err.message.replace(/ \(412.*$/, '')}; if this upload was retried, an earlier attempt may have stored it`,
|
|
199
|
-
requestId: err.requestId,
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
throw err;
|
|
203
|
-
}
|
|
189
|
+
const up = this.directUploads;
|
|
190
|
+
const src = (0, transfer_js_1.sourceOf)(body);
|
|
191
|
+
const write = { contentType: opts.contentType, metadata: opts.metadata, ifMatch: opts.ifMatch, ifNoneMatch: opts.ifNoneMatch };
|
|
192
|
+
if (src.size === 0)
|
|
193
|
+
return up.putEmpty(bucket, key, write, opts.signal);
|
|
194
|
+
if (src.size > up.packObjectLimit())
|
|
195
|
+
return up.putLarge(bucket, key, { size: src.size, readAt: (o, n) => src.read(o, n) }, write, opts.signal);
|
|
196
|
+
return up.put(bucket, key, await src.read(0, src.size), write, opts.signal);
|
|
204
197
|
}
|
|
205
198
|
/** An object's details without its bytes. */
|
|
206
199
|
async statObject(bucket, key, signal) {
|
|
207
200
|
return parseObject((await this.call({ method: 'GET', path: `${bucketPath(bucket)}/object`, query: { key }, signal })).data);
|
|
208
201
|
}
|
|
209
|
-
/** An object's download headers without its bytes. */
|
|
202
|
+
/** An object's download headers without its bytes, built from statObject. */
|
|
210
203
|
async headObject(bucket, key, signal) {
|
|
211
|
-
const
|
|
212
|
-
|
|
204
|
+
const obj = await this.statObject(bucket, key, signal);
|
|
205
|
+
const modified = Number.isNaN(obj.updatedAt.getTime()) ? obj.uploadedAt : obj.updatedAt;
|
|
206
|
+
return directInfo(obj.contentType, obj.etag, obj.size, obj.size, modified);
|
|
213
207
|
}
|
|
214
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* Streams an object's bytes, or one range. Resolves to null when ifNoneMatch matched.
|
|
210
|
+
*
|
|
211
|
+
* The bytes come from the storage network, each verified before the body yields it (a whole read's SHA-256 as its
|
|
212
|
+
* last bytes arrive: ChecksumMismatchError), and ifNoneMatch asks the object's details first, so a match signs and
|
|
213
|
+
* bills nothing. Read the body to its end or cancel it: that frees the read and zeroes its copy of the data key.
|
|
214
|
+
*/
|
|
215
215
|
async getObject(bucket, key, opts = {}) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
if (opts.ifMatch)
|
|
221
|
-
headers['If-Range'] = quote(opts.ifMatch);
|
|
216
|
+
if (opts.ifNoneMatch) {
|
|
217
|
+
const obj = await this.statObject(bucket, key, opts.signal);
|
|
218
|
+
if (obj.etag && obj.etag === unquote(opts.ifNoneMatch))
|
|
219
|
+
return null;
|
|
222
220
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
const
|
|
226
|
-
method: 'GET',
|
|
227
|
-
path: `${bucketPath(bucket)}/object/content`,
|
|
228
|
-
query: { key },
|
|
229
|
-
headers,
|
|
230
|
-
transfer: true,
|
|
231
|
-
signal: opts.signal,
|
|
232
|
-
});
|
|
233
|
-
if (response.status === 304) {
|
|
234
|
-
await response.body?.cancel();
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
const info = infoOf(response);
|
|
238
|
-
if (opts.ifMatch && (info.etag !== unquote(opts.ifMatch) || (opts.range && response.status !== 206))) {
|
|
239
|
-
await response.body?.cancel();
|
|
240
|
-
throw new errors_js_1.ObjectChangedError();
|
|
241
|
-
}
|
|
242
|
-
const body = response.body ?? new Response(new Uint8Array()).body;
|
|
221
|
+
const reads = this.reads;
|
|
222
|
+
const { session: s, dek, a, b, ranged } = await reads.get(bucket, key, opts.range?.start ?? 0, opts.range?.end, opts.ifMatch ?? '', opts.signal);
|
|
223
|
+
const body = (0, reads_js_1.readable)((signal) => reads.body(s, dek, a, b, !ranged, signal), opts.signal, () => dek?.fill(0));
|
|
243
224
|
return {
|
|
244
|
-
...
|
|
225
|
+
...directInfo(s.contentType, s.etag, b - a, s.size, s.uploadedAt),
|
|
245
226
|
body,
|
|
246
|
-
bytes:
|
|
247
|
-
text: async () => new
|
|
227
|
+
bytes: () => (0, reads_js_1.drain)(body),
|
|
228
|
+
text: async () => new TextDecoder().decode(await (0, reads_js_1.drain)(body)),
|
|
248
229
|
};
|
|
249
230
|
}
|
|
250
|
-
/**
|
|
251
|
-
|
|
231
|
+
/**
|
|
232
|
+
* Deletes an object; with ifMatch, only if it still has that ETag (PreconditionFailedError otherwise). An AbortSignal
|
|
233
|
+
* in place of the options is taken as before.
|
|
234
|
+
*/
|
|
235
|
+
async deleteObject(bucket, key, opts = {}) {
|
|
236
|
+
const { ifMatch, signal } = opts instanceof AbortSignal ? { ifMatch: undefined, signal: opts } : opts;
|
|
237
|
+
const headers = {};
|
|
238
|
+
if (ifMatch)
|
|
239
|
+
headers['If-Match'] = ifMatch === '*' ? '*' : `"${unquote(ifMatch)}"`;
|
|
252
240
|
try {
|
|
253
|
-
await this.call({ method: 'DELETE', path: `${bucketPath(bucket)}/object`, query: { key }, signal });
|
|
241
|
+
await this.call({ method: 'DELETE', path: `${bucketPath(bucket)}/object`, query: { key }, headers, signal });
|
|
254
242
|
}
|
|
255
243
|
catch (err) {
|
|
256
244
|
// An earlier attempt deleted it.
|
|
@@ -302,97 +290,59 @@ class StorageService {
|
|
|
302
290
|
/**
|
|
303
291
|
* Copies srcBucket/srcKey (any bucket of the project) to bucket/key. The
|
|
304
292
|
* bytes are read and written again, so a copy is billed as a download as
|
|
305
|
-
* well as the stored copy.
|
|
293
|
+
* well as the stored copy. The conditions are on the destination.
|
|
294
|
+
*
|
|
295
|
+
* The copy is made on this device (section 23.6): the object is read (every
|
|
296
|
+
* byte verified) and uploaded anew, packed or in parts, streamed under the
|
|
297
|
+
* upload's memory bound. It keeps the source's content type and metadata.
|
|
306
298
|
*/
|
|
307
299
|
async copyObject(bucket, key, srcBucket, srcKey, opts = {}) {
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
if (
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
query: { key, ttl_seconds: opts.expiresIn, disposition: opts.attachment ? 'attachment' : undefined },
|
|
330
|
-
mode: 'safe',
|
|
331
|
-
signal: opts.signal,
|
|
332
|
-
});
|
|
333
|
-
return { url: this.client.absolute(data.url), expiresAt: new Date(data.expires_at) };
|
|
300
|
+
const up = this.directUploads;
|
|
301
|
+
const src = await this.statObject(srcBucket, srcKey, opts.signal);
|
|
302
|
+
const write = { contentType: src.contentType, metadata: src.metadata, ifMatch: opts.ifMatch, ifNoneMatch: opts.ifNoneMatch };
|
|
303
|
+
if (src.size === 0)
|
|
304
|
+
return up.putEmpty(bucket, key, write, opts.signal);
|
|
305
|
+
// Pinned to the version stated: a source replaced meanwhile is ObjectChangedError, never a mix. A direct object
|
|
306
|
+
// always has an ETag, so one missing is refused, never copied unpinned (profile 1's N-2).
|
|
307
|
+
if (!src.etag)
|
|
308
|
+
throw new errors_js_1.TeepinError(`copying ${srcKey}: the source has no ETag to pin the copy to`);
|
|
309
|
+
const r = await this.getObject(srcBucket, srcKey, { ifMatch: src.etag, signal: opts.signal });
|
|
310
|
+
if (!r)
|
|
311
|
+
throw new errors_js_1.TeepinError(`copying ${srcKey}: no answer`);
|
|
312
|
+
if (src.size <= up.packObjectLimit())
|
|
313
|
+
return up.put(bucket, key, await r.bytes(), write, opts.signal);
|
|
314
|
+
const source = (0, large_js_1.streamSource)(r.body);
|
|
315
|
+
try {
|
|
316
|
+
return await up.putStream(bucket, key, source, { ...write, expectedSize: src.size }, opts.signal);
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
await source.release();
|
|
320
|
+
}
|
|
334
321
|
}
|
|
335
|
-
/**
|
|
336
|
-
|
|
322
|
+
/**
|
|
323
|
+
* Makes a share link to an object that exists now: a console page anyone holding it can open with no sign-in, to
|
|
324
|
+
* preview or save the object, until it expires. It opens whatever is at the key when it is opened, and stops opening
|
|
325
|
+
* when the object is deleted or the account's stored data is on hold. The link carries its own credential, so share
|
|
326
|
+
* it only with those who may read the object. openLink opens one in code.
|
|
327
|
+
*/
|
|
328
|
+
async createLink(bucket, key, opts = {}) {
|
|
329
|
+
const ttl = opts.expiresIn;
|
|
330
|
+
if (ttl !== undefined && !(Number.isInteger(ttl) && ttl > 0))
|
|
331
|
+
throw new errors_js_1.TeepinError(`expiresIn must be a whole number of seconds, 1 or more (got ${ttl})`);
|
|
337
332
|
const { data } = await this.call({
|
|
338
333
|
method: 'POST',
|
|
339
|
-
path: `${bucketPath(bucket)}/object/
|
|
340
|
-
|
|
334
|
+
path: `${bucketPath(bucket)}/object/link`,
|
|
335
|
+
json: { key, ttl_seconds: ttl, disposition: opts.disposition },
|
|
341
336
|
mode: 'safe',
|
|
342
337
|
signal: opts.signal,
|
|
343
338
|
});
|
|
344
|
-
return {
|
|
345
|
-
url: this.client.absolute(data.url),
|
|
346
|
-
method: data.method,
|
|
347
|
-
headers: data.headers ?? {},
|
|
348
|
-
maxBytes: data.max_bytes,
|
|
349
|
-
expiresAt: new Date(data.expires_at),
|
|
350
|
-
};
|
|
351
|
-
}
|
|
352
|
-
/** Starts an upload in parts. upload does all of it for you. */
|
|
353
|
-
async createUpload(bucket, key, opts = {}) {
|
|
354
|
-
const { data } = await this.call({
|
|
355
|
-
method: 'POST',
|
|
356
|
-
path: `${bucketPath(bucket)}/uploads`,
|
|
357
|
-
json: { key, content_type: opts.contentType || undefined, metadata: opts.metadata },
|
|
358
|
-
mode: 'unsent',
|
|
359
|
-
signal: opts.signal,
|
|
360
|
-
});
|
|
361
|
-
return parseUpload(data);
|
|
362
|
-
}
|
|
363
|
-
/** Sends part number (1 to 10000) of an upload; sending a number again replaces it. */
|
|
364
|
-
async uploadPart(bucket, uploadId, number, data, signal) {
|
|
365
|
-
const { data: p } = await this.call({
|
|
366
|
-
method: 'PUT',
|
|
367
|
-
path: `${uploadPath(bucket, uploadId)}/parts/${number}`,
|
|
368
|
-
body: () => data,
|
|
369
|
-
mode: 'safe',
|
|
370
|
-
transfer: true,
|
|
371
|
-
signal,
|
|
372
|
-
});
|
|
373
|
-
return { number: Number(p.part_number), size: Number(p.size_bytes), etag: unquote(String(p.etag)), uploadedAt: date(p.uploaded_at) };
|
|
374
|
-
}
|
|
375
|
-
/** An upload and the parts received so far, in order. */
|
|
376
|
-
async listParts(bucket, uploadId, signal) {
|
|
377
|
-
return parseUpload((await this.call({ method: 'GET', path: `${uploadPath(bucket, uploadId)}/parts`, signal })).data);
|
|
339
|
+
return { url: String(data?.url ?? ''), expiresAt: new Date(String(data?.expires_at ?? '')) };
|
|
378
340
|
}
|
|
379
341
|
/** A bucket's open uploads under prefix, oldest first. */
|
|
380
342
|
async listUploads(bucket, prefix = '', signal) {
|
|
381
343
|
const { data } = await this.call({ method: 'GET', path: `${bucketPath(bucket)}/uploads`, query: { prefix }, signal });
|
|
382
344
|
return (data.uploads ?? []).map(parseUpload);
|
|
383
345
|
}
|
|
384
|
-
/** Assembles the parts named, in ascending order, into the object. */
|
|
385
|
-
async completeUpload(bucket, uploadId, parts, signal) {
|
|
386
|
-
const { data } = await this.call({
|
|
387
|
-
method: 'POST',
|
|
388
|
-
path: `${uploadPath(bucket, uploadId)}/complete`,
|
|
389
|
-
json: { parts: parts.map((p) => ({ part_number: p.number, etag: p.etag })) },
|
|
390
|
-
mode: 'unsent',
|
|
391
|
-
transfer: true,
|
|
392
|
-
signal,
|
|
393
|
-
});
|
|
394
|
-
return parseObject(data);
|
|
395
|
-
}
|
|
396
346
|
/** Cancels an upload and drops its parts. */
|
|
397
347
|
async abortUpload(bucket, uploadId, signal) {
|
|
398
348
|
try {
|
|
@@ -404,24 +354,104 @@ class StorageService {
|
|
|
404
354
|
}
|
|
405
355
|
}
|
|
406
356
|
/**
|
|
407
|
-
* Stores data at bucket/key:
|
|
408
|
-
*
|
|
409
|
-
*
|
|
357
|
+
* Stores data at bucket/key, encrypted on this device: packed (shared with putObject's calls) up to 16 MiB, in
|
|
358
|
+
* parallel parts straight to the storage network above that, and a stream of unknown size read a part ahead and sent
|
|
359
|
+
* as it is read (its parts held in memory: at most (concurrency + 3) of them). Each part is retried on its own.
|
|
410
360
|
*
|
|
411
361
|
* ```ts
|
|
412
362
|
* await teepin.storage.upload('my-bucket', 'videos/a.mp4', file, { onProgress: (done, total) => {} });
|
|
413
363
|
* ```
|
|
414
364
|
*/
|
|
415
|
-
upload(bucket, key, body, opts) {
|
|
416
|
-
|
|
365
|
+
async upload(bucket, key, body, opts = {}) {
|
|
366
|
+
const up = this.directUploads;
|
|
367
|
+
const lim = up.packObjectLimit();
|
|
368
|
+
const one = async (data, contentType) => {
|
|
369
|
+
const write = { contentType, metadata: opts.metadata };
|
|
370
|
+
const obj = data.length ? await up.put(bucket, key, data, write, opts.signal) : await up.putEmpty(bucket, key, write, opts.signal);
|
|
371
|
+
opts.onProgress?.(data.length, data.length);
|
|
372
|
+
return obj;
|
|
373
|
+
};
|
|
374
|
+
if ((0, large_js_1.isStreamBody)(body)) {
|
|
375
|
+
const inner = (0, large_js_1.streamSource)(body);
|
|
376
|
+
// What fits in a pack goes as one object; the first read is handed on, and dropped once its bytes are taken.
|
|
377
|
+
const head = await (0, large_js_1.readUpTo)(inner, lim + 1, opts.signal).catch(async (err) => {
|
|
378
|
+
await inner.release(err);
|
|
379
|
+
throw err;
|
|
380
|
+
});
|
|
381
|
+
if (head.length <= lim) {
|
|
382
|
+
await inner.release();
|
|
383
|
+
return one(head, opts.contentType);
|
|
384
|
+
}
|
|
385
|
+
const source = (0, large_js_1.prefixed)(head, inner);
|
|
386
|
+
try {
|
|
387
|
+
return await up.putStream(bucket, key, source, {
|
|
388
|
+
contentType: opts.contentType,
|
|
389
|
+
metadata: opts.metadata,
|
|
390
|
+
partSize: opts.partSize,
|
|
391
|
+
expectedSize: opts.expectedSize,
|
|
392
|
+
concurrency: opts.concurrency,
|
|
393
|
+
onProgress: opts.onProgress,
|
|
394
|
+
}, opts.signal);
|
|
395
|
+
}
|
|
396
|
+
finally {
|
|
397
|
+
await source.release();
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
const src = (0, transfer_js_1.sourceOf)(body);
|
|
401
|
+
const contentType = opts.contentType || src.type;
|
|
402
|
+
if (src.size > exports.MAX_OBJECT_SIZE)
|
|
403
|
+
throw new errors_js_1.TeepinError(`${src.size} bytes is over the 5 TiB an object may hold`);
|
|
404
|
+
if (src.size > lim) {
|
|
405
|
+
return up.putLarge(bucket, key, { size: src.size, readAt: (o, n) => src.read(o, n) }, { contentType, metadata: opts.metadata, partSize: opts.partSize, onProgress: opts.onProgress }, opts.signal);
|
|
406
|
+
}
|
|
407
|
+
return one(await src.read(0, src.size), contentType);
|
|
417
408
|
}
|
|
418
|
-
/**
|
|
419
|
-
|
|
420
|
-
|
|
409
|
+
/**
|
|
410
|
+
* Downloads an object into memory, as parallel ranges: the storage network's read windows, every byte verified before
|
|
411
|
+
* it is written, and the whole object checked against its SHA-256 (a mismatch is tried once more before
|
|
412
|
+
* ChecksumMismatchError).
|
|
413
|
+
*/
|
|
414
|
+
async download(bucket, key, opts = {}) {
|
|
415
|
+
let data = new Uint8Array(0);
|
|
416
|
+
const object = await this.reads.download(bucket, key, (obj) => {
|
|
417
|
+
data = new Uint8Array(obj.size);
|
|
418
|
+
return {
|
|
419
|
+
write: (offset, chunk) => {
|
|
420
|
+
data.set(chunk, offset);
|
|
421
|
+
},
|
|
422
|
+
sha256: (size) => (0, transfer_js_1.sha256Hex)(data.subarray(0, size)),
|
|
423
|
+
};
|
|
424
|
+
}, this.downloadParams(opts));
|
|
425
|
+
return { object, data };
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Downloads an object into sink (a file, in @teepin/sdk/node), as parallel ranges pinned to one version. Every byte is
|
|
429
|
+
* verified before it is written (the whole object's SHA-256 too, when it is read in one range).
|
|
430
|
+
*/
|
|
431
|
+
downloadTo(bucket, key, sink, opts = {}) {
|
|
432
|
+
return this.reads.download(bucket, key, () => ({ write: (offset, chunk) => sink.write(offset, chunk) }), this.downloadParams(opts));
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Opens an object for reading at any offset: read(offset, length), size, info and close(). Reading straight on
|
|
436
|
+
* fetches a window at a time (64 MiB on the storage network) with the next prefetch windows ahead, so up to
|
|
437
|
+
* prefetch + 2 windows are held in memory; a read somewhere else fetches only what it needs. Every byte is verified
|
|
438
|
+
* before it is read, and every window comes from the version first opened: ObjectChangedError if the object is
|
|
439
|
+
* replaced while it is read. Close it when done: that zeroes its copy of the data key.
|
|
440
|
+
*/
|
|
441
|
+
async openObject(bucket, key, opts = {}) {
|
|
442
|
+
const reads = this.reads;
|
|
443
|
+
const { session: s, dek, block, align } = await reads.openFile(bucket, key, opts.signal);
|
|
444
|
+
const info = directInfo(s.contentType, s.etag, s.size, s.size, s.uploadedAt);
|
|
445
|
+
return new reads_js_1.ObjectFile((a, b, signal) => reads.fetch(s, dek, a, b, signal), s.size, block, align, info, opts.prefetch ?? 2, () => dek?.fill(0), opts.signal);
|
|
421
446
|
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
447
|
+
downloadParams(opts) {
|
|
448
|
+
return {
|
|
449
|
+
partSize: opts.partSize ?? 0,
|
|
450
|
+
concurrency: opts.concurrency && opts.concurrency > 0 ? opts.concurrency : transfer_js_1.DEFAULT_CONCURRENCY,
|
|
451
|
+
onProgress: opts.onProgress,
|
|
452
|
+
verify: !opts.skipVerify,
|
|
453
|
+
signal: opts.signal,
|
|
454
|
+
};
|
|
425
455
|
}
|
|
426
456
|
}
|
|
427
457
|
exports.StorageService = StorageService;
|
package/dist/cjs/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
|