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