@adonis-agora/media 0.8.1 → 0.9.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.
- package/CHANGELOG.md +121 -0
- package/README.md +206 -0
- package/dist/providers/media_provider.d.ts +3 -13
- package/dist/providers/media_provider.d.ts.map +1 -1
- package/dist/providers/media_provider.js +151 -4
- package/dist/providers/media_provider.js.map +1 -1
- package/dist/src/content_type.d.ts +6 -1
- package/dist/src/content_type.d.ts.map +1 -1
- package/dist/src/content_type.js +102 -7
- package/dist/src/content_type.js.map +1 -1
- package/dist/src/define_config.d.ts +88 -5
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js +7 -2
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/direct_upload.d.ts +177 -0
- package/dist/src/direct_upload.d.ts.map +1 -0
- package/dist/src/direct_upload.js +299 -0
- package/dist/src/direct_upload.js.map +1 -0
- package/dist/src/direct_upload_handler.d.ts +83 -0
- package/dist/src/direct_upload_handler.d.ts.map +1 -0
- package/dist/src/direct_upload_handler.js +180 -0
- package/dist/src/direct_upload_handler.js.map +1 -0
- package/dist/src/disks/factory.d.ts +11 -3
- package/dist/src/disks/factory.d.ts.map +1 -1
- package/dist/src/disks/factory.js +5 -3
- package/dist/src/disks/factory.js.map +1 -1
- package/dist/src/disks/s3.d.ts +10 -0
- package/dist/src/disks/s3.d.ts.map +1 -1
- package/dist/src/disks/s3.js +96 -22
- package/dist/src/disks/s3.js.map +1 -1
- package/dist/src/disks/sigv4.d.ts +58 -0
- package/dist/src/disks/sigv4.d.ts.map +1 -0
- package/dist/src/disks/sigv4.js +87 -0
- package/dist/src/disks/sigv4.js.map +1 -0
- package/dist/src/disks/xml_fallback.d.ts +3 -3
- package/dist/src/disks/xml_fallback.js +3 -3
- package/dist/src/errors.d.ts +104 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +145 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hls/delivery.d.ts +112 -0
- package/dist/src/hls/delivery.d.ts.map +1 -0
- package/dist/src/hls/delivery.js +118 -0
- package/dist/src/hls/delivery.js.map +1 -0
- package/dist/src/hls/playlist.d.ts +67 -0
- package/dist/src/hls/playlist.d.ts.map +1 -0
- package/dist/src/hls/playlist.js +126 -0
- package/dist/src/hls/playlist.js.map +1 -0
- package/dist/src/index.d.ts +18 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +13 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/media_collection.d.ts +8 -1
- package/dist/src/media_collection.d.ts.map +1 -1
- package/dist/src/media_collection.js +23 -1
- package/dist/src/media_collection.js.map +1 -1
- package/dist/src/media_library.d.ts +32 -2
- package/dist/src/media_library.d.ts.map +1 -1
- package/dist/src/media_library.js +218 -11
- package/dist/src/media_library.js.map +1 -1
- package/dist/src/media_manager.d.ts +37 -2
- package/dist/src/media_manager.d.ts.map +1 -1
- package/dist/src/media_manager.js +54 -1
- package/dist/src/media_manager.js.map +1 -1
- package/dist/src/media_record.d.ts +22 -2
- package/dist/src/media_record.d.ts.map +1 -1
- package/dist/src/services/booted_app.d.ts +9 -0
- package/dist/src/services/booted_app.d.ts.map +1 -0
- package/dist/src/services/booted_app.js +33 -0
- package/dist/src/services/booted_app.js.map +1 -0
- package/dist/src/services/main.d.ts +12 -0
- package/dist/src/services/main.d.ts.map +1 -1
- package/dist/src/services/main.js +15 -3
- package/dist/src/services/main.js.map +1 -1
- package/dist/src/single_file_store.d.ts +4 -0
- package/dist/src/single_file_store.d.ts.map +1 -1
- package/dist/src/single_file_store.js +8 -4
- package/dist/src/single_file_store.js.map +1 -1
- package/dist/src/testing/fake_transformer.d.ts +32 -0
- package/dist/src/testing/fake_transformer.d.ts.map +1 -0
- package/dist/src/testing/fake_transformer.js +32 -0
- package/dist/src/testing/fake_transformer.js.map +1 -0
- package/dist/src/testing/index.d.ts +2 -0
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +1 -0
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/transformer.d.ts +111 -0
- package/dist/src/transformer.d.ts.map +1 -0
- package/dist/src/transformer.js +2 -0
- package/dist/src/transformer.js.map +1 -0
- package/dist/src/transformers/factory.d.ts +30 -0
- package/dist/src/transformers/factory.d.ts.map +1 -0
- package/dist/src/transformers/factory.js +34 -0
- package/dist/src/transformers/factory.js.map +1 -0
- package/dist/src/transformers/hls.d.ts +110 -0
- package/dist/src/transformers/hls.d.ts.map +1 -0
- package/dist/src/transformers/hls.js +111 -0
- package/dist/src/transformers/hls.js.map +1 -0
- package/dist/src/transformers/mediabunny.d.ts +5 -0
- package/dist/src/transformers/mediabunny.d.ts.map +1 -0
- package/dist/src/transformers/mediabunny.js +150 -0
- package/dist/src/transformers/mediabunny.js.map +1 -0
- package/dist/src/transformers/mediabunny_loader.d.ts +15 -0
- package/dist/src/transformers/mediabunny_loader.d.ts.map +1 -0
- package/dist/src/transformers/mediabunny_loader.js +21 -0
- package/dist/src/transformers/mediabunny_loader.js.map +1 -0
- package/dist/src/transformers/probe.d.ts +56 -0
- package/dist/src/transformers/probe.d.ts.map +1 -0
- package/dist/src/transformers/probe.js +32 -0
- package/dist/src/transformers/probe.js.map +1 -0
- package/dist/src/transformers/source_file.d.ts +20 -0
- package/dist/src/transformers/source_file.d.ts.map +1 -0
- package/dist/src/transformers/source_file.js +30 -0
- package/dist/src/transformers/source_file.js.map +1 -0
- package/dist/stubs/config/media.stub +12 -0
- package/package.json +11 -7
- package/LICENSE +0 -21
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
15
15
|
* Each factory returns a {@link DiskFactory} — a lazy thunk. Calling it in the config file costs
|
|
16
|
-
* nothing; `@aws-sdk/client-s3`
|
|
17
|
-
*
|
|
16
|
+
* nothing; `@aws-sdk/client-s3` is only imported when the provider builds the selected disk at
|
|
17
|
+
* boot, keeping the AWS SDK an optional peer. (Presigning needs no SDK at all — it is hand-rolled
|
|
18
|
+
* SigV4, see `sigv4.ts`.)
|
|
18
19
|
*/
|
|
19
20
|
export const disks = {
|
|
20
|
-
/** S3 (or S3-compatible) disk — needs the optional `@aws-sdk/client-s3`
|
|
21
|
+
/** S3 (or S3-compatible) disk — needs the optional `@aws-sdk/client-s3` peer. */
|
|
21
22
|
s3(config) {
|
|
22
23
|
return async () => {
|
|
23
24
|
const { S3Client } = await import('@aws-sdk/client-s3');
|
|
@@ -35,6 +36,7 @@ export const disks = {
|
|
|
35
36
|
...(config.publicBaseUrl !== undefined ? { publicBaseUrl: config.publicBaseUrl } : {}),
|
|
36
37
|
...(config.region !== undefined ? { region: config.region } : {}),
|
|
37
38
|
...(config.endpoint !== undefined ? { endpoint: config.endpoint } : {}),
|
|
39
|
+
...(config.publicEndpoint !== undefined ? { publicEndpoint: config.publicEndpoint } : {}),
|
|
38
40
|
...(config.forcePathStyle !== undefined ? { forcePathStyle: config.forcePathStyle } : {}),
|
|
39
41
|
...(config.visibility !== undefined ? { visibility: config.visibility } : {}),
|
|
40
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/disks/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/disks/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/src/disks/s3.d.ts
CHANGED
|
@@ -19,6 +19,14 @@ export interface S3DiskOptions {
|
|
|
19
19
|
region?: string;
|
|
20
20
|
/** Custom endpoint (S3-compatible services). Used for URL synthesis when no `publicBaseUrl` is set. */
|
|
21
21
|
endpoint?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Endpoint presigned URLs are signed against, when it differs from `endpoint`. SigV4 embeds the
|
|
24
|
+
* `Host` in the signature, and presigned URLs are consumed by the BROWSER (a part `PUT` during a
|
|
25
|
+
* direct upload, a `GET` while streaming) — so when the app reaches storage through an internal
|
|
26
|
+
* FQDN the internet cannot resolve (MinIO behind a private network), set this to the public one.
|
|
27
|
+
* Server-side operations keep using `endpoint`; only what leaves the server is signed for here.
|
|
28
|
+
*/
|
|
29
|
+
publicEndpoint?: string;
|
|
22
30
|
/** Emit path-style URLs (`endpoint/bucket/key`) instead of virtual-hosted-style. */
|
|
23
31
|
forcePathStyle?: boolean;
|
|
24
32
|
/**
|
|
@@ -39,6 +47,7 @@ export interface S3DiskOptions {
|
|
|
39
47
|
* plus a {@link DiskCapabilities} descriptor), detected structurally via `isExtendedDisk`.
|
|
40
48
|
*/
|
|
41
49
|
export declare class S3Disk implements Disk, MultipartUploadDisk, ExtendedDisk {
|
|
50
|
+
#private;
|
|
42
51
|
/** Coarse feature descriptor — S3 supports presign, native multipart, and prefix listing. */
|
|
43
52
|
readonly capabilities: DiskCapabilities;
|
|
44
53
|
private readonly client;
|
|
@@ -47,6 +56,7 @@ export declare class S3Disk implements Disk, MultipartUploadDisk, ExtendedDisk {
|
|
|
47
56
|
private readonly publicBaseUrl;
|
|
48
57
|
private readonly region;
|
|
49
58
|
private readonly endpoint;
|
|
59
|
+
private readonly publicEndpoint;
|
|
50
60
|
private readonly forcePathStyle;
|
|
51
61
|
private readonly visibility;
|
|
52
62
|
constructor(options: S3DiskOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../../src/disks/s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAWL,KAAK,QAAQ,EAEd,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../../src/disks/s3.ts"],"names":[],"mappings":"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"}
|
package/dist/src/disks/s3.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AbortMultipartUploadCommand, CompleteMultipartUploadCommand, CopyObjectCommand, CreateMultipartUploadCommand, DeleteObjectCommand, DeleteObjectsCommand, GetObjectCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, UploadPartCommand, } from '@aws-sdk/client-s3';
|
|
2
|
-
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
3
2
|
import { hardenBodyStream } from './harden_body_stream.js';
|
|
3
|
+
import { presignS3Url } from './sigv4.js';
|
|
4
4
|
import { extractListObjectsV2FromXml, isXmlEntityDeserializationError } from './xml_fallback.js';
|
|
5
5
|
/** Default presigned-URL lifetime when a caller passes no `expiresIn` (30 minutes). */
|
|
6
6
|
const DEFAULT_SIGNED_URL_TTL_SECONDS = 1800;
|
|
@@ -48,6 +48,7 @@ export class S3Disk {
|
|
|
48
48
|
publicBaseUrl;
|
|
49
49
|
region;
|
|
50
50
|
endpoint;
|
|
51
|
+
publicEndpoint;
|
|
51
52
|
forcePathStyle;
|
|
52
53
|
visibility;
|
|
53
54
|
constructor(options) {
|
|
@@ -57,6 +58,7 @@ export class S3Disk {
|
|
|
57
58
|
this.publicBaseUrl = options.publicBaseUrl;
|
|
58
59
|
this.region = options.region;
|
|
59
60
|
this.endpoint = options.endpoint;
|
|
61
|
+
this.publicEndpoint = options.publicEndpoint;
|
|
60
62
|
this.forcePathStyle = options.forcePathStyle ?? false;
|
|
61
63
|
this.visibility = options.visibility ?? 'private';
|
|
62
64
|
this.capabilities = {
|
|
@@ -165,12 +167,80 @@ export class S3Disk {
|
|
|
165
167
|
return this.visibility;
|
|
166
168
|
}
|
|
167
169
|
async getSignedUrl(key, options) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
170
|
+
const query = {};
|
|
171
|
+
if (options?.contentType !== undefined)
|
|
172
|
+
query['response-content-type'] = options.contentType;
|
|
173
|
+
if (options?.contentDisposition !== undefined) {
|
|
174
|
+
query['response-content-disposition'] = options.contentDisposition;
|
|
175
|
+
}
|
|
176
|
+
return this.#presign('GET', this.key(key), query, toExpiresInSeconds(options?.expiresIn), {
|
|
177
|
+
browserFacing: true,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
// --- Hand-rolled SigV4 presigning ---------------------------------------------------------
|
|
181
|
+
/**
|
|
182
|
+
* Credentials + region for signing, resolved from the SDK client's own config so every credential
|
|
183
|
+
* source the client supports (static, env, shared config, IAM role) keeps working. Only the
|
|
184
|
+
* *signature computation* is hand-rolled — see {@link presignS3Url} for why (it is pure local
|
|
185
|
+
* crypto, and owning it is what lets a URL be signed for {@link S3DiskOptions.publicEndpoint}
|
|
186
|
+
* without constructing a second client per endpoint).
|
|
187
|
+
*/
|
|
188
|
+
async #signingContext() {
|
|
189
|
+
const config = this.client.config;
|
|
190
|
+
const credentials = typeof config.credentials === 'function' ? await config.credentials() : config.credentials;
|
|
191
|
+
let region = this.region;
|
|
192
|
+
if (region === undefined) {
|
|
193
|
+
try {
|
|
194
|
+
region = typeof config.region === 'function' ? await config.region() : config.region;
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// A client constructed without a region (S3-compatible services often don't need one).
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { credentials, region: region ?? 'us-east-1' };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The scheme/host/path a presigned URL is computed for. `browserFacing` URLs prefer
|
|
204
|
+
* {@link S3DiskOptions.publicEndpoint}: the signature bakes the `Host` in, and these URLs are
|
|
205
|
+
* consumed outside the server's network. Server-side presigns (the list XML fallback) always
|
|
206
|
+
* target the internal endpoint.
|
|
207
|
+
*/
|
|
208
|
+
#presignTarget(fullKey, options) {
|
|
209
|
+
const bucket = options.bucket ?? this.bucket;
|
|
210
|
+
const base = (options.browserFacing ? this.publicEndpoint : undefined) ?? this.endpoint;
|
|
211
|
+
if (base !== undefined) {
|
|
212
|
+
const url = new URL(base);
|
|
213
|
+
const basePath = url.pathname.replace(/\/+$/, '');
|
|
214
|
+
const protocol = url.protocol === 'http:' ? 'http:' : 'https:';
|
|
215
|
+
if (this.forcePathStyle) {
|
|
216
|
+
return {
|
|
217
|
+
protocol,
|
|
218
|
+
host: url.host,
|
|
219
|
+
path: `${basePath}/${bucket}${fullKey ? `/${fullKey}` : ''}`,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return { protocol, host: `${bucket}.${url.host}`, path: `${basePath}/${fullKey}` };
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
protocol: 'https:',
|
|
226
|
+
host: `${bucket}.s3.${options.region}.amazonaws.com`,
|
|
227
|
+
path: `/${fullKey}`,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/** Presign one request against this disk. `fullKey` is already prefixed; `''` targets the bucket. */
|
|
231
|
+
async #presign(method, fullKey, query, expiresInSeconds, options) {
|
|
232
|
+
const { credentials, region } = await this.#signingContext();
|
|
233
|
+
const target = this.#presignTarget(fullKey, { ...options, region });
|
|
234
|
+
return presignS3Url({
|
|
235
|
+
method,
|
|
236
|
+
protocol: target.protocol,
|
|
237
|
+
host: target.host,
|
|
238
|
+
path: target.path,
|
|
239
|
+
query,
|
|
240
|
+
credentials,
|
|
241
|
+
region,
|
|
242
|
+
expiresInSeconds,
|
|
243
|
+
});
|
|
174
244
|
}
|
|
175
245
|
async getMetaData(key) {
|
|
176
246
|
try {
|
|
@@ -282,15 +352,22 @@ export class S3Disk {
|
|
|
282
352
|
if (!isXmlEntityDeserializationError(err))
|
|
283
353
|
throw err;
|
|
284
354
|
// fast-xml-parser rejected valid entity refs in the ListObjectsV2 XML — presign the same
|
|
285
|
-
// request and fetch the raw body, then parse it by hand
|
|
286
|
-
//
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
355
|
+
// request (hand-rolled SigV4, see sigv4.ts) and fetch the raw body, then parse it by hand
|
|
356
|
+
// into the same shape. This is a SERVER-side fetch, so it deliberately targets the internal
|
|
357
|
+
// endpoint even when a `publicEndpoint` is configured (see xml_fallback.ts).
|
|
358
|
+
const listQuery = {
|
|
359
|
+
'list-type': '2',
|
|
360
|
+
prefix: fullPrefix,
|
|
361
|
+
delimiter: options?.delimiter ?? '/',
|
|
362
|
+
};
|
|
363
|
+
if (options?.limit !== undefined)
|
|
364
|
+
listQuery['max-keys'] = String(options.limit);
|
|
365
|
+
if (options?.cursor !== undefined)
|
|
366
|
+
listQuery['continuation-token'] = options.cursor;
|
|
367
|
+
const signedUrl = await this.#presign('GET', '', listQuery, 60, {
|
|
368
|
+
browserFacing: false,
|
|
369
|
+
bucket,
|
|
370
|
+
});
|
|
294
371
|
const response = await fetch(signedUrl);
|
|
295
372
|
if (!response.ok) {
|
|
296
373
|
throw new Error(`S3Disk: signed list fallback failed: HTTP ${response.status} ${response.statusText}`);
|
|
@@ -337,12 +414,9 @@ export class S3Disk {
|
|
|
337
414
|
return { partNumber, etag: out.ETag };
|
|
338
415
|
}
|
|
339
416
|
async presignUploadPart(key, uploadId, partNumber, expiresInSeconds) {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
UploadId: uploadId,
|
|
344
|
-
PartNumber: partNumber,
|
|
345
|
-
}), { expiresIn: Math.max(1, Math.round(expiresInSeconds)) });
|
|
417
|
+
// Browser-facing: the client PUTs the part bytes to this URL, so it is signed against the
|
|
418
|
+
// public endpoint when one is configured.
|
|
419
|
+
return this.#presign('PUT', this.key(key), { uploadId, partNumber: String(partNumber) }, expiresInSeconds, { browserFacing: true });
|
|
346
420
|
}
|
|
347
421
|
async completeMultipartUpload(key, uploadId, parts) {
|
|
348
422
|
await this.client.send(new CompleteMultipartUploadCommand({
|
package/dist/src/disks/s3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/disks/s3.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/disks/s3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static credentials a SigV4 signature is computed from. Mirrors the resolved shape of an AWS
|
|
3
|
+
* credential provider (`accessKeyId`/`secretAccessKey` + the optional STS `sessionToken`).
|
|
4
|
+
*/
|
|
5
|
+
export interface SigV4Credentials {
|
|
6
|
+
accessKeyId: string;
|
|
7
|
+
secretAccessKey: string;
|
|
8
|
+
sessionToken?: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Input for {@link presignS3Url}. `host` + `path` are given separately (never a pre-built URL)
|
|
12
|
+
* because the signature covers both and they must be byte-identical between what is signed and what
|
|
13
|
+
* the client requests: the presigner encodes the raw `path` exactly once and uses that single
|
|
14
|
+
* encoding for the canonical request AND the returned URL, so the two cannot drift.
|
|
15
|
+
*/
|
|
16
|
+
export interface PresignS3UrlInput {
|
|
17
|
+
/** HTTP method the URL authorizes (`GET`, `PUT`, …). */
|
|
18
|
+
method: string;
|
|
19
|
+
/** URL scheme of the endpoint. */
|
|
20
|
+
protocol: 'http:' | 'https:';
|
|
21
|
+
/** Host the client will connect to, including a non-default port (`minio.example.com:9000`). */
|
|
22
|
+
host: string;
|
|
23
|
+
/** Absolute, UNENCODED object path (`/bucket/my key.png`). Encoded here, exactly once. */
|
|
24
|
+
path: string;
|
|
25
|
+
/** Extra query parameters to sign into the URL (`uploadId`, `partNumber`, `response-content-type`, …). */
|
|
26
|
+
query?: Record<string, string> | undefined;
|
|
27
|
+
credentials: SigV4Credentials;
|
|
28
|
+
/** Signing region — must match what the endpoint expects (`us-east-1` for MinIO defaults). */
|
|
29
|
+
region: string;
|
|
30
|
+
/** Signing service. Default `s3`. */
|
|
31
|
+
service?: string | undefined;
|
|
32
|
+
/** Lifetime of the URL, in whole seconds (SigV4 caps this at 7 days / 604800). */
|
|
33
|
+
expiresInSeconds: number;
|
|
34
|
+
/** Signing time. Injectable so tests can pin the signature; defaults to `new Date()`. */
|
|
35
|
+
now?: Date | undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Presign an S3 request with AWS Signature Version 4 **query-string authentication** — the
|
|
39
|
+
* credential, timestamp, TTL and signature all travel as `X-Amz-*` query parameters, so the URL is
|
|
40
|
+
* self-contained and anyone holding it (a browser `PUT`ting a multipart part, a `<video>` tag
|
|
41
|
+
* streaming a segment) can perform exactly this one request until it expires.
|
|
42
|
+
*
|
|
43
|
+
* Hand-rolled on `node:crypto` — ~60 lines of HMAC chaining — instead of pulling in
|
|
44
|
+
* `@aws-sdk/s3-request-presigner`: presigning is pure computation (no round-trip to S3), and owning
|
|
45
|
+
* it lets the signature target ANY host. That is what makes a split internal/public endpoint
|
|
46
|
+
* trivial: SigV4 signs the `Host` header, so a URL signed for the internal endpoint is invalid on
|
|
47
|
+
* the public one — with the SDK that means constructing a second client per endpoint, here it is
|
|
48
|
+
* just a different `host` argument.
|
|
49
|
+
*
|
|
50
|
+
* The payload is declared `UNSIGNED-PAYLOAD`, the standard for presigned S3 URLs: the body cannot
|
|
51
|
+
* be known at signing time (the client hasn't produced it yet), and S3 accepts the literal in the
|
|
52
|
+
* canonical request for query-auth.
|
|
53
|
+
*
|
|
54
|
+
* Verified against AWS's published SigV4 test vector (the documented `examplebucket` presigned GET)
|
|
55
|
+
* in `test/sigv4.spec.ts`.
|
|
56
|
+
*/
|
|
57
|
+
export declare function presignS3Url(input: PresignS3UrlInput): string;
|
|
58
|
+
//# sourceMappingURL=sigv4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigv4.d.ts","sourceRoot":"","sources":["../../../src/disks/sigv4.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC7B,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,IAAI,EAAE,MAAM,CAAC;IACb,0GAA0G;IAC1G,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3C,WAAW,EAAE,gBAAgB,CAAC;IAC9B,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB;AAqCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA8C7D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { createHash, createHmac } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* RFC 3986 percent-encoding as SigV4 defines it: everything except unreserved characters
|
|
4
|
+
* (`A–Z a–z 0–9 - _ . ~`) is encoded, with uppercase hex. `encodeURIComponent` is close but leaves
|
|
5
|
+
* `!'()*` bare, and any of those in an object key would make the canonical request disagree with
|
|
6
|
+
* what S3 reconstructs server-side — a signature mismatch that only bites on the one file whose
|
|
7
|
+
* name contains them.
|
|
8
|
+
*/
|
|
9
|
+
function uriEncode(value) {
|
|
10
|
+
return encodeURIComponent(value).replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
11
|
+
}
|
|
12
|
+
/** Encode a path for the canonical URI: each segment percent-encoded, `/` separators preserved. */
|
|
13
|
+
function encodePath(path) {
|
|
14
|
+
return path.split('/').map(uriEncode).join('/');
|
|
15
|
+
}
|
|
16
|
+
/** `YYYYMMDD'T'HHMMSS'Z'` — the `X-Amz-Date` format. */
|
|
17
|
+
function toAmzDate(date) {
|
|
18
|
+
return date
|
|
19
|
+
.toISOString()
|
|
20
|
+
.replace(/[-:]/g, '')
|
|
21
|
+
.replace(/\.\d{3}Z$/, 'Z');
|
|
22
|
+
}
|
|
23
|
+
function hmac(key, data) {
|
|
24
|
+
return createHmac('sha256', key).update(data, 'utf8').digest();
|
|
25
|
+
}
|
|
26
|
+
function sha256Hex(data) {
|
|
27
|
+
return createHash('sha256').update(data, 'utf8').digest('hex');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Presign an S3 request with AWS Signature Version 4 **query-string authentication** — the
|
|
31
|
+
* credential, timestamp, TTL and signature all travel as `X-Amz-*` query parameters, so the URL is
|
|
32
|
+
* self-contained and anyone holding it (a browser `PUT`ting a multipart part, a `<video>` tag
|
|
33
|
+
* streaming a segment) can perform exactly this one request until it expires.
|
|
34
|
+
*
|
|
35
|
+
* Hand-rolled on `node:crypto` — ~60 lines of HMAC chaining — instead of pulling in
|
|
36
|
+
* `@aws-sdk/s3-request-presigner`: presigning is pure computation (no round-trip to S3), and owning
|
|
37
|
+
* it lets the signature target ANY host. That is what makes a split internal/public endpoint
|
|
38
|
+
* trivial: SigV4 signs the `Host` header, so a URL signed for the internal endpoint is invalid on
|
|
39
|
+
* the public one — with the SDK that means constructing a second client per endpoint, here it is
|
|
40
|
+
* just a different `host` argument.
|
|
41
|
+
*
|
|
42
|
+
* The payload is declared `UNSIGNED-PAYLOAD`, the standard for presigned S3 URLs: the body cannot
|
|
43
|
+
* be known at signing time (the client hasn't produced it yet), and S3 accepts the literal in the
|
|
44
|
+
* canonical request for query-auth.
|
|
45
|
+
*
|
|
46
|
+
* Verified against AWS's published SigV4 test vector (the documented `examplebucket` presigned GET)
|
|
47
|
+
* in `test/sigv4.spec.ts`.
|
|
48
|
+
*/
|
|
49
|
+
export function presignS3Url(input) {
|
|
50
|
+
const service = input.service ?? 's3';
|
|
51
|
+
const now = input.now ?? new Date();
|
|
52
|
+
const amzDate = toAmzDate(now);
|
|
53
|
+
const dateStamp = amzDate.slice(0, 8);
|
|
54
|
+
const scope = `${dateStamp}/${input.region}/${service}/aws4_request`;
|
|
55
|
+
const query = {
|
|
56
|
+
...input.query,
|
|
57
|
+
'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
|
|
58
|
+
'X-Amz-Credential': `${input.credentials.accessKeyId}/${scope}`,
|
|
59
|
+
'X-Amz-Date': amzDate,
|
|
60
|
+
'X-Amz-Expires': String(Math.max(1, Math.round(input.expiresInSeconds))),
|
|
61
|
+
'X-Amz-SignedHeaders': 'host',
|
|
62
|
+
...(input.credentials.sessionToken !== undefined
|
|
63
|
+
? { 'X-Amz-Security-Token': input.credentials.sessionToken }
|
|
64
|
+
: {}),
|
|
65
|
+
};
|
|
66
|
+
// Canonical query string: pairs encoded first, then sorted BY THE ENCODED bytes — the order S3
|
|
67
|
+
// reconstructs on its side.
|
|
68
|
+
const canonicalQuery = Object.entries(query)
|
|
69
|
+
.map(([name, value]) => [uriEncode(name), uriEncode(value)])
|
|
70
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
71
|
+
.map(([name, value]) => `${name}=${value}`)
|
|
72
|
+
.join('&');
|
|
73
|
+
const canonicalPath = encodePath(input.path);
|
|
74
|
+
const canonicalRequest = [
|
|
75
|
+
input.method.toUpperCase(),
|
|
76
|
+
canonicalPath,
|
|
77
|
+
canonicalQuery,
|
|
78
|
+
`host:${input.host}\n`,
|
|
79
|
+
'host',
|
|
80
|
+
'UNSIGNED-PAYLOAD',
|
|
81
|
+
].join('\n');
|
|
82
|
+
const stringToSign = ['AWS4-HMAC-SHA256', amzDate, scope, sha256Hex(canonicalRequest)].join('\n');
|
|
83
|
+
const signingKey = hmac(hmac(hmac(hmac(`AWS4${input.credentials.secretAccessKey}`, dateStamp), input.region), service), 'aws4_request');
|
|
84
|
+
const signature = createHmac('sha256', signingKey).update(stringToSign, 'utf8').digest('hex');
|
|
85
|
+
return `${input.protocol}//${input.host}${canonicalPath}?${canonicalQuery}&X-Amz-Signature=${signature}`;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=sigv4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigv4.js","sourceRoot":"","sources":["../../../src/disks/sigv4.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* `fast-xml-parser` v5 (CVE remediation), whose stricter mode rejects valid numeric character
|
|
4
4
|
* references (`
`, …) that S3 legitimately emits inside keys — surfacing as a deserialization
|
|
5
5
|
* error on `ListObjectsV2`. This module provides a fallback for {@link S3Disk.list}: re-issue the
|
|
6
|
-
* request as a signed raw GET (presigned with
|
|
6
|
+
* request as a signed raw GET (presigned with the hand-rolled SigV4 signer in `sigv4.ts`, no extra
|
|
7
7
|
* peer) and hand-parse the XML, bypassing `fast-xml-parser` entirely.
|
|
8
8
|
*
|
|
9
9
|
* NOTE: this fallback does NOT depend on `fast-xml-parser` — it exists precisely to work around it —
|
|
10
|
-
* and introduces NO new peer: the signing reuses the presigner already bundled with the S3
|
|
11
|
-
* only regex XML parsing lives here.
|
|
10
|
+
* and introduces NO new peer: the signing reuses the SigV4 presigner already bundled with the S3
|
|
11
|
+
* disk, so only regex XML parsing lives here.
|
|
12
12
|
*/
|
|
13
13
|
/** Is this the `fast-xml-parser` entity-rejection error the signed-GET fallback exists for? */
|
|
14
14
|
export declare function isXmlEntityDeserializationError(error: unknown): boolean;
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* `fast-xml-parser` v5 (CVE remediation), whose stricter mode rejects valid numeric character
|
|
4
4
|
* references (`
`, …) that S3 legitimately emits inside keys — surfacing as a deserialization
|
|
5
5
|
* error on `ListObjectsV2`. This module provides a fallback for {@link S3Disk.list}: re-issue the
|
|
6
|
-
* request as a signed raw GET (presigned with
|
|
6
|
+
* request as a signed raw GET (presigned with the hand-rolled SigV4 signer in `sigv4.ts`, no extra
|
|
7
7
|
* peer) and hand-parse the XML, bypassing `fast-xml-parser` entirely.
|
|
8
8
|
*
|
|
9
9
|
* NOTE: this fallback does NOT depend on `fast-xml-parser` — it exists precisely to work around it —
|
|
10
|
-
* and introduces NO new peer: the signing reuses the presigner already bundled with the S3
|
|
11
|
-
* only regex XML parsing lives here.
|
|
10
|
+
* and introduces NO new peer: the signing reuses the SigV4 presigner already bundled with the S3
|
|
11
|
+
* disk, so only regex XML parsing lives here.
|
|
12
12
|
*/
|
|
13
13
|
const ENTITY_NAME_REGEX = /Invalid character.*entity name/i;
|
|
14
14
|
/** Is this the `fast-xml-parser` entity-rejection error the signed-GET fallback exists for? */
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -55,6 +55,77 @@ export declare class ConversionNotDefinedError extends Error {
|
|
|
55
55
|
readonly code = "E_MEDIA_CONVERSION_NOT_DEFINED";
|
|
56
56
|
constructor(collection: string, conversion: string);
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* A conversion was requested by a name that names neither an image preset nor a transformer of the
|
|
60
|
+
* record's collection — the transformer counterpart of {@link ConversionNotDefinedError}, raised by
|
|
61
|
+
* `MediaLibrary.transform`.
|
|
62
|
+
*/
|
|
63
|
+
export declare class TransformerNotDefinedError extends Error {
|
|
64
|
+
readonly code = "E_MEDIA_TRANSFORMER_NOT_DEFINED";
|
|
65
|
+
constructor(collection: string, transformer: string);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A transformer-produced conversion was read (`url` / `deliver` / HLS delivery) before it was
|
|
69
|
+
* generated. Deliberately NOT generated lazily on read like image conversions: a transform is
|
|
70
|
+
* assumed heavy (a video remux takes minutes), and a read path is the wrong place to pay that.
|
|
71
|
+
* Generate it explicitly — `media.library.transform(id, name)` from a job — then read again.
|
|
72
|
+
*/
|
|
73
|
+
export declare class TransformNotReadyError extends Error {
|
|
74
|
+
readonly mediaId: string;
|
|
75
|
+
readonly transformer: string;
|
|
76
|
+
readonly code = "E_MEDIA_TRANSFORM_NOT_READY";
|
|
77
|
+
constructor(mediaId: string, transformer: string);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Two derivatives of one collection claim the same name. Presets and transformers persist into the
|
|
81
|
+
* same `record.conversions` map, so the namespace is shared; raised at registry construction (boot),
|
|
82
|
+
* not on first attach.
|
|
83
|
+
*/
|
|
84
|
+
export declare class TransformerConflictError extends Error {
|
|
85
|
+
readonly code = "E_MEDIA_TRANSFORMER_CONFLICT";
|
|
86
|
+
constructor(collection: string, name: string);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A transformer needs a runtime capability the host doesn't provide — an optional peer that isn't
|
|
90
|
+
* installed (`mediabunny`), or an API the runtime lacks (WebCodecs in Node). Thrown by the built-in
|
|
91
|
+
* transformers and available for custom ones, so "this environment can't do that" always surfaces
|
|
92
|
+
* as one clear, typed error instead of a deep import/undefined crash.
|
|
93
|
+
*/
|
|
94
|
+
export declare class TransformerRuntimeMissingError extends Error {
|
|
95
|
+
readonly transformer: string;
|
|
96
|
+
readonly requirement: string;
|
|
97
|
+
readonly code = "E_MEDIA_TRANSFORMER_RUNTIME_MISSING";
|
|
98
|
+
constructor(transformer: string, requirement: string, hint?: string);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* A transformer violated the output contract: wrote outside its prefix (`..`/absolute path),
|
|
102
|
+
* declared an `entry` it never wrote, or wrote artifacts without declaring an entry. These are
|
|
103
|
+
* programming errors in the transformer, surfaced with the transformer's name so the broken one is
|
|
104
|
+
* obvious.
|
|
105
|
+
*/
|
|
106
|
+
export declare class TransformerOutputError extends Error {
|
|
107
|
+
readonly code = "E_MEDIA_TRANSFORMER_OUTPUT_INVALID";
|
|
108
|
+
constructor(transformer: string, reason: string);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* A metadata-only conversion (a probe, a blurhash) was asked for its file — `url`, `signedUrl` or
|
|
112
|
+
* `deliver` — but it has no artifact; only `record.conversions[name].meta` exists. Read the record
|
|
113
|
+
* instead of a URL.
|
|
114
|
+
*/
|
|
115
|
+
export declare class ConversionArtifactMissingError extends Error {
|
|
116
|
+
readonly code = "E_MEDIA_CONVERSION_ARTIFACT_MISSING";
|
|
117
|
+
constructor(mediaId: string, conversion: string);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The HLS transformer could not stream-copy the source: a track's codec cannot be carried by the
|
|
121
|
+
* segment format (MPEG-TS wants h264/aac), and no re-encode path exists in this runtime. Definitive
|
|
122
|
+
* for the file — retrying cannot fix it; re-encode the source, or provide a WebCodecs
|
|
123
|
+
* implementation (see `transformers.hls({ webcodecs })`).
|
|
124
|
+
*/
|
|
125
|
+
export declare class HlsSourceUnsupportedError extends Error {
|
|
126
|
+
readonly code = "E_MEDIA_HLS_SOURCE_UNSUPPORTED";
|
|
127
|
+
constructor(details: string);
|
|
128
|
+
}
|
|
58
129
|
export declare class ImageProcessorMissingError extends Error {
|
|
59
130
|
readonly code = "E_MEDIA_IMAGE_PROCESSOR_MISSING";
|
|
60
131
|
constructor();
|
|
@@ -81,6 +152,39 @@ export declare class UploadSessionExpiredError extends Error {
|
|
|
81
152
|
readonly code = "E_MEDIA_UPLOAD_SESSION_EXPIRED";
|
|
82
153
|
constructor(id: string);
|
|
83
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* A part size the S3 multipart API cannot honour: below the 5 MiB minimum (every part but the last
|
|
157
|
+
* must reach it, or `CompleteMultipartUpload` fails with `EntityTooSmall` AFTER the client uploaded
|
|
158
|
+
* everything), or small enough that the file would need more than the 10,000 parts S3 allows.
|
|
159
|
+
* Raised at `initiate`, where it costs nothing — the alternative is discovering it at complete,
|
|
160
|
+
* when the whole file has already crossed the wire.
|
|
161
|
+
*/
|
|
162
|
+
export declare class UploadPartSizeError extends Error {
|
|
163
|
+
readonly code = "E_MEDIA_UPLOAD_PART_SIZE";
|
|
164
|
+
constructor(detail: string);
|
|
165
|
+
}
|
|
166
|
+
/** A confirmed part number outside `1..totalParts` for the session — a client slicing with the wrong part size. */
|
|
167
|
+
export declare class UploadPartOutOfRangeError extends Error {
|
|
168
|
+
readonly partNumber: number;
|
|
169
|
+
readonly totalParts: number;
|
|
170
|
+
readonly code = "E_MEDIA_UPLOAD_PART_OUT_OF_RANGE";
|
|
171
|
+
constructor(partNumber: number, totalParts: number);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* `complete()` was asked to assemble an upload whose parts are not all accounted for (neither
|
|
175
|
+
* confirmed to the session nor supplied in the call). Failing fast here names the EXACT missing
|
|
176
|
+
* part numbers; letting S3 discover it returns an opaque `InvalidPart` after a round-trip.
|
|
177
|
+
*/
|
|
178
|
+
export declare class UploadPartsIncompleteError extends Error {
|
|
179
|
+
readonly sessionId: string;
|
|
180
|
+
readonly missingParts: readonly number[];
|
|
181
|
+
readonly code = "E_MEDIA_UPLOAD_PARTS_INCOMPLETE";
|
|
182
|
+
constructor(sessionId: string, missingParts: readonly number[]);
|
|
183
|
+
}
|
|
184
|
+
export declare class DirectUploadsNotConfiguredError extends Error {
|
|
185
|
+
readonly code = "E_MEDIA_DIRECT_NOT_CONFIGURED";
|
|
186
|
+
constructor();
|
|
187
|
+
}
|
|
84
188
|
export declare class ResumableUploadsNotConfiguredError extends Error {
|
|
85
189
|
readonly code = "E_MEDIA_RESUMABLE_NOT_CONFIGURED";
|
|
86
190
|
constructor();
|