@kensio/yulin 1.8.0 → 1.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/dist/service/s3/bucket/sim-s3-bucket-access.d.ts.map +1 -1
- package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -1
- package/dist/service/s3/bucket/sim-s3-bucket-access.js.map +1 -1
- package/dist/service/s3/mount/sim-s3-mount.type.d.ts +12 -0
- package/dist/service/s3/mount/sim-s3-mount.type.d.ts.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-allowed.d.ts +36 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-allowed.d.ts.map +1 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-allowed.js +73 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-allowed.js.map +1 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-object-metadata.d.ts.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-object-metadata.js +5 -6
- package/dist/service/s3/storage/filesystem/s3-filesystem-object-metadata.js.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-safety.d.ts +2 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-safety.d.ts.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-safety.js +7 -41
- package/dist/service/s3/storage/filesystem/s3-filesystem-safety.js.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +1 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts.map +1 -1
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +1 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-s3-bucket-access.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/bucket/sim-s3-bucket-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAG1F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,UAAU,2BAA2B;IACnC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC5D,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IAExD,YAAY,UAAU,EAAE,2BAA2B,EAGlD;IAED;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,CAK1D;IAED;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,GAAG,CAK7C;IAED;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,GAAG,CAEpD;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,UAAU,EAAE,eAAe,GAAG,MAAM,EACpC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,2BAAgC,GACxC,IAAI,
|
|
1
|
+
{"version":3,"file":"sim-s3-bucket-access.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/bucket/sim-s3-bucket-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAG1F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF,UAAU,2BAA2B;IACnC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC5D,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IAExD,YAAY,UAAU,EAAE,2BAA2B,EAGlD;IAED;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,CAK1D;IAED;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,GAAG,CAK7C;IAED;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,GAAG,CAEpD;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,UAAU,EAAE,eAAe,GAAG,MAAM,EACpC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,2BAAgC,GACxC,IAAI,CAUN;IAED;;OAEG;IACH,aAAa,IAAI,SAAS,MAAM,EAAE,CAEjC;IAED;;OAEG;IACH,kBAAkB,IAAI,IAAI,CAEzB;CACF"}
|
|
@@ -48,7 +48,12 @@ export class SimS3BucketAccess {
|
|
|
48
48
|
* listed anywhere, and nothing happens outside watch mode.
|
|
49
49
|
*/
|
|
50
50
|
mountFilesystem(bucketName, directoryPath, options = {}) {
|
|
51
|
-
this.required(bucketName).configureSimStorage(new FilesystemS3BucketStorage({
|
|
51
|
+
this.required(bucketName).configureSimStorage(new FilesystemS3BucketStorage({
|
|
52
|
+
directoryPath,
|
|
53
|
+
...(options.additionalFileExtensions !== undefined && {
|
|
54
|
+
additionalFileExtensions: options.additionalFileExtensions,
|
|
55
|
+
}),
|
|
56
|
+
}));
|
|
52
57
|
this.mountWatches.register(bucketName, directoryPath, options);
|
|
53
58
|
}
|
|
54
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-s3-bucket-access.js","sourceRoot":"","sources":["../../../../src/service/s3/bucket/sim-s3-bucket-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAQrE;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IACX,OAAO,CAA4C;IACnD,kBAAkB,CAA2B;IAC7C,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAExD,YAAY,UAAuC;QACjD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,UAAoC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAA6B,CAAC,CAAC;QAC/D,aAAa,CAAC,MAAM,EAAE,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAE3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,UAAoC;QACtC,OAAO,cAAc,CACnB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,EACpC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,UAAoC;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,UAAoC,EACpC,aAAqB,EACrB,OAAO,GAAgC,EAAE;QAEzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAC3C,IAAI,yBAAyB,CAAC,
|
|
1
|
+
{"version":3,"file":"sim-s3-bucket-access.js","sourceRoot":"","sources":["../../../../src/service/s3/bucket/sim-s3-bucket-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAQrE;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IACX,OAAO,CAA4C;IACnD,kBAAkB,CAA2B;IAC7C,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAExD,YAAY,UAAuC;QACjD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,UAAoC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAA6B,CAAC,CAAC;QAC/D,aAAa,CAAC,MAAM,EAAE,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAE3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,UAAoC;QACtC,OAAO,cAAc,CACnB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,EACpC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,UAAoC;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CACb,UAAoC,EACpC,aAAqB,EACrB,OAAO,GAAgC,EAAE;QAEzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAC3C,IAAI,yBAAyB,CAAC;YAC5B,aAAa;YACb,GAAG,CAAC,OAAO,CAAC,wBAAwB,KAAK,SAAS,IAAI;gBACpD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;aAC3D,CAAC;SACH,CAAC,CACH,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -27,5 +27,17 @@ export interface SimS3MountFilesystemOptions {
|
|
|
27
27
|
* build one reload. The default suits a generator writing its output.
|
|
28
28
|
*/
|
|
29
29
|
readonly settleMs?: number | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* File extensions to serve in addition to the usual web ones.
|
|
32
|
+
*
|
|
33
|
+
* A mounted Bucket only serves files whose extension is on a cautious list —
|
|
34
|
+
* the web's own types, and nothing else — so that pointing a Bucket at a
|
|
35
|
+
* directory cannot be talked into reading whatever else is in it. A site
|
|
36
|
+
* serving a data file of its own needs its extension named here: a pinyin
|
|
37
|
+
* dictionary's `.freq`, a `.wasm` module, a `.pdf`.
|
|
38
|
+
*
|
|
39
|
+
* Added to the list rather than replacing it, and a leading dot is optional.
|
|
40
|
+
*/
|
|
41
|
+
readonly additionalFileExtensions?: readonly string[] | undefined;
|
|
30
42
|
}
|
|
31
43
|
//# sourceMappingURL=sim-s3-mount.type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-s3-mount.type.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/mount/sim-s3-mount.type.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAErD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-s3-mount.type.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/mount/sim-s3-mount.type.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAErD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACnE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What filesystem-backed simulated S3 storage will touch.
|
|
3
|
+
*
|
|
4
|
+
* The lists themselves, kept apart from the checks in
|
|
5
|
+
* `s3-filesystem-safety.ts` that apply them: this file answers "what is
|
|
6
|
+
* allowed" and that one answers "is this allowed", and only this one changes
|
|
7
|
+
* when the web grows another file type.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default directory names that are safe to use as filesystem storage roots.
|
|
11
|
+
*/
|
|
12
|
+
export declare const defaultAllowedDirectoryNames: readonly ["assets", "build", "dist", "out", "public", "static", "www"];
|
|
13
|
+
/**
|
|
14
|
+
* Write an extension the way `path.extname` reports one.
|
|
15
|
+
*
|
|
16
|
+
* A caller thinking about their own files says `.freq` or `freq` without
|
|
17
|
+
* meaning anything by the difference, and gets the same answer either way.
|
|
18
|
+
*
|
|
19
|
+
* An empty one is refused rather than normalised. `path.extname` reports `.`
|
|
20
|
+
* for a name ending in a dot, so normalising `""` to `.` would quietly turn a
|
|
21
|
+
* stray entry in a mount's list into permission to serve `secret.` — which is
|
|
22
|
+
* not something anybody asked for by passing an empty string.
|
|
23
|
+
*/
|
|
24
|
+
export declare function normaliseExtension(extension: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Cautious list of allowed file extensions for simulated S3 objects. This is to
|
|
27
|
+
* try and avoid reading or writing other files that might be unsafe.
|
|
28
|
+
*
|
|
29
|
+
* A mount adds to this rather than replacing it — see
|
|
30
|
+
* `additionalFileExtensions` on the mount options. The list is long, general
|
|
31
|
+
* and the reason the check is worth having, so a project needing one more
|
|
32
|
+
* extension should not have to restate the other twenty-odd to get it, nor be
|
|
33
|
+
* able to drop `.html` by forgetting it.
|
|
34
|
+
*/
|
|
35
|
+
export declare const defaultAllowedObjectFileExtensions: Set<string>;
|
|
36
|
+
//# sourceMappingURL=s3-filesystem-allowed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-filesystem-allowed.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-allowed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B,YACvC,QAAQ,EACR,OAAO,EACP,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,CACG,CAAC;AAEX;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,kCAAkC,aAuB7C,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What filesystem-backed simulated S3 storage will touch.
|
|
3
|
+
*
|
|
4
|
+
* The lists themselves, kept apart from the checks in
|
|
5
|
+
* `s3-filesystem-safety.ts` that apply them: this file answers "what is
|
|
6
|
+
* allowed" and that one answers "is this allowed", and only this one changes
|
|
7
|
+
* when the web grows another file type.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default directory names that are safe to use as filesystem storage roots.
|
|
11
|
+
*/
|
|
12
|
+
export const defaultAllowedDirectoryNames = [
|
|
13
|
+
"assets",
|
|
14
|
+
"build",
|
|
15
|
+
"dist",
|
|
16
|
+
"out",
|
|
17
|
+
"public",
|
|
18
|
+
"static",
|
|
19
|
+
"www",
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Write an extension the way `path.extname` reports one.
|
|
23
|
+
*
|
|
24
|
+
* A caller thinking about their own files says `.freq` or `freq` without
|
|
25
|
+
* meaning anything by the difference, and gets the same answer either way.
|
|
26
|
+
*
|
|
27
|
+
* An empty one is refused rather than normalised. `path.extname` reports `.`
|
|
28
|
+
* for a name ending in a dot, so normalising `""` to `.` would quietly turn a
|
|
29
|
+
* stray entry in a mount's list into permission to serve `secret.` — which is
|
|
30
|
+
* not something anybody asked for by passing an empty string.
|
|
31
|
+
*/
|
|
32
|
+
export function normaliseExtension(extension) {
|
|
33
|
+
const lowered = extension.trim().toLowerCase();
|
|
34
|
+
if (lowered === "" || lowered === ".") {
|
|
35
|
+
throw new Error(`Filesystem S3 storage file extension must not be empty. Got: ${JSON.stringify(extension)}`);
|
|
36
|
+
}
|
|
37
|
+
return lowered.startsWith(".") ? lowered : `.${lowered}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Cautious list of allowed file extensions for simulated S3 objects. This is to
|
|
41
|
+
* try and avoid reading or writing other files that might be unsafe.
|
|
42
|
+
*
|
|
43
|
+
* A mount adds to this rather than replacing it — see
|
|
44
|
+
* `additionalFileExtensions` on the mount options. The list is long, general
|
|
45
|
+
* and the reason the check is worth having, so a project needing one more
|
|
46
|
+
* extension should not have to restate the other twenty-odd to get it, nor be
|
|
47
|
+
* able to drop `.html` by forgetting it.
|
|
48
|
+
*/
|
|
49
|
+
export const defaultAllowedObjectFileExtensions = new Set([
|
|
50
|
+
".css",
|
|
51
|
+
".eot",
|
|
52
|
+
".gif",
|
|
53
|
+
".htm",
|
|
54
|
+
".html",
|
|
55
|
+
".ico",
|
|
56
|
+
".jpeg",
|
|
57
|
+
".jpg",
|
|
58
|
+
".js",
|
|
59
|
+
".json",
|
|
60
|
+
".map",
|
|
61
|
+
".mjs",
|
|
62
|
+
".otf",
|
|
63
|
+
".png",
|
|
64
|
+
".svg",
|
|
65
|
+
".ttc",
|
|
66
|
+
".ttf",
|
|
67
|
+
".txt",
|
|
68
|
+
".webp",
|
|
69
|
+
".woff",
|
|
70
|
+
".woff2",
|
|
71
|
+
".xml",
|
|
72
|
+
]);
|
|
73
|
+
//# sourceMappingURL=s3-filesystem-allowed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-filesystem-allowed.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-allowed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,QAAQ;IACR,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,KAAK;CACG,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE/C,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,gEAAgE,IAAI,CAAC,SAAS,CAC5E,SAAS,CACV,EAAE,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,GAAG,CAAC;IACxD,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;CACP,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-filesystem-object-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,MAAM,GACV,mBAAmB,
|
|
1
|
+
{"version":3,"file":"s3-filesystem-object-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,MAAM,GACV,mBAAmB,CASrB"}
|
|
@@ -4,13 +4,12 @@ import { SimS3ObjectMetadata } from "../../object/s3-object.js";
|
|
|
4
4
|
* Make up reasonable metadata for an Object based on the file on disk.
|
|
5
5
|
*/
|
|
6
6
|
export function metadataForFilesystemS3ObjectKey(key) {
|
|
7
|
-
const contentType = contentTypeForFilesystemS3ObjectKey(key);
|
|
8
|
-
/* v8 ignore if -- defensive fallback */
|
|
9
|
-
if (contentType === undefined) {
|
|
10
|
-
return new SimS3ObjectMetadata();
|
|
11
|
-
}
|
|
12
7
|
return new SimS3ObjectMetadata({
|
|
13
|
-
|
|
8
|
+
// Octet-stream for anything the table below has never heard of, which is
|
|
9
|
+
// what S3 reports for an object whose type it was never told. That case
|
|
10
|
+
// arrives by way of `additionalFileExtensions`: the table is the web's own
|
|
11
|
+
// types, and the option exists for files that are not one of them.
|
|
12
|
+
"content-type": contentTypeForFilesystemS3ObjectKey(key) ?? "application/octet-stream",
|
|
14
13
|
});
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-filesystem-object-metadata.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,GAAW;IAEX,
|
|
1
|
+
{"version":3,"file":"s3-filesystem-object-metadata.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-object-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,GAAW;IAEX,OAAO,IAAI,mBAAmB,CAAC;QAC7B,yEAAyE;QACzE,wEAAwE;QACxE,2EAA2E;QAC3E,mEAAmE;QACnE,cAAc,EACZ,mCAAmC,CAAC,GAAG,CAAC,IAAI,0BAA0B;KACzE,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,mCAAmC,CAAC,GAAW;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAElD,OAAO,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,uBAAuB,GAAgC,IAAI,GAAG,CAAC;IACnE,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,MAAM,EAAE,+BAA+B,CAAC;IACzC,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAC1B,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC3B,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAC7B,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC5B,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,MAAM,EAAE,eAAe,CAAC;IACzB,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC3B,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,MAAM,EAAE,iBAAiB,CAAC;CAC5B,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
interface FilesystemS3StorageSafetyProperties {
|
|
2
2
|
readonly allowedDirectoryNames?: readonly string[] | undefined;
|
|
3
|
+
readonly additionalFileExtensions?: readonly string[] | undefined;
|
|
3
4
|
}
|
|
4
5
|
/**
|
|
5
6
|
* Safety checks for filesystem-based simulated S3 storage.
|
|
@@ -9,6 +10,7 @@ interface FilesystemS3StorageSafetyProperties {
|
|
|
9
10
|
*/
|
|
10
11
|
export declare class FilesystemS3StorageSafety {
|
|
11
12
|
private readonly allowedDirectoryNames;
|
|
13
|
+
private readonly allowedFileExtensions;
|
|
12
14
|
constructor(properties?: FilesystemS3StorageSafetyProperties);
|
|
13
15
|
/**
|
|
14
16
|
* Throw an error if a directory path appears to be unsafe for use as S3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-filesystem-safety.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-safety.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3-filesystem-safety.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-safety.ts"],"names":[],"mappings":"AASA,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACnE;AAED;;;;;GAKG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoB;IAC1D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAE5D,YAAY,UAAU,GAAE,mCAAwC,EAS/D;IAED;;;OAGG;IACH,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAqCnD;IAED;;;OAGG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAMrC;IAED;;;OAGG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQzC;IAED;;OAEG;IACH,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;IAED,OAAO,CAAC,kCAAkC;CAG3C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { defaultAllowedDirectoryNames, defaultAllowedObjectFileExtensions, normaliseExtension, } from "./s3-filesystem-allowed.js";
|
|
3
4
|
/**
|
|
4
5
|
* Safety checks for filesystem-based simulated S3 storage.
|
|
5
6
|
*
|
|
@@ -8,9 +9,14 @@ import path from "node:path";
|
|
|
8
9
|
*/
|
|
9
10
|
export class FilesystemS3StorageSafety {
|
|
10
11
|
allowedDirectoryNames;
|
|
12
|
+
allowedFileExtensions;
|
|
11
13
|
constructor(properties = {}) {
|
|
12
14
|
const { allowedDirectoryNames = defaultAllowedDirectoryNames } = properties;
|
|
13
15
|
this.allowedDirectoryNames = allowedDirectoryNames;
|
|
16
|
+
this.allowedFileExtensions = new Set([
|
|
17
|
+
...defaultAllowedObjectFileExtensions,
|
|
18
|
+
...(properties.additionalFileExtensions ?? []).map((extension) => normaliseExtension(extension)),
|
|
19
|
+
]);
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
16
22
|
* Throw an error if a directory path appears to be unsafe for use as S3
|
|
@@ -62,50 +68,10 @@ export class FilesystemS3StorageSafety {
|
|
|
62
68
|
* Check whether a sim S3 Object key has an allowed file extension.
|
|
63
69
|
*/
|
|
64
70
|
isAllowedObjectKeyExtension(key) {
|
|
65
|
-
return
|
|
71
|
+
return this.allowedFileExtensions.has(path.extname(key).toLowerCase());
|
|
66
72
|
}
|
|
67
73
|
pathContainsParentDirectorySegment(value) {
|
|
68
74
|
return value.split(/[\\/]/u).includes("..");
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Default directory names that are safe to use as filesystem storage roots.
|
|
73
|
-
*/
|
|
74
|
-
const defaultAllowedDirectoryNames = [
|
|
75
|
-
"assets",
|
|
76
|
-
"build",
|
|
77
|
-
"dist",
|
|
78
|
-
"out",
|
|
79
|
-
"public",
|
|
80
|
-
"static",
|
|
81
|
-
"www",
|
|
82
|
-
];
|
|
83
|
-
/**
|
|
84
|
-
* Cautious list of allowed file extensions for simulated S3 objects. This is to
|
|
85
|
-
* try and avoid reading or writing other files that might be unsafe.
|
|
86
|
-
*/
|
|
87
|
-
const allowedObjectFileExtensions = new Set([
|
|
88
|
-
".css",
|
|
89
|
-
".eot",
|
|
90
|
-
".gif",
|
|
91
|
-
".htm",
|
|
92
|
-
".html",
|
|
93
|
-
".ico",
|
|
94
|
-
".jpeg",
|
|
95
|
-
".jpg",
|
|
96
|
-
".js",
|
|
97
|
-
".json",
|
|
98
|
-
".map",
|
|
99
|
-
".mjs",
|
|
100
|
-
".otf",
|
|
101
|
-
".png",
|
|
102
|
-
".svg",
|
|
103
|
-
".ttc",
|
|
104
|
-
".ttf",
|
|
105
|
-
".txt",
|
|
106
|
-
".webp",
|
|
107
|
-
".woff",
|
|
108
|
-
".woff2",
|
|
109
|
-
".xml",
|
|
110
|
-
]);
|
|
111
77
|
//# sourceMappingURL=s3-filesystem-safety.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-filesystem-safety.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"s3-filesystem-safety.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { SimS3Object } from "../../object/s3-object.js";
|
|
|
3
3
|
interface FilesystemS3BucketStorageProperties {
|
|
4
4
|
readonly directoryPath: string;
|
|
5
5
|
readonly allowedDirectoryNames?: readonly string[];
|
|
6
|
+
readonly additionalFileExtensions?: readonly string[];
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
9
|
* Maps simulated S3 Objects to files under a directory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-filesystem-storage.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AASxD,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"s3-filesystem-storage.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AASxD,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvD;AAED;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IAEpD,YAAY,UAAU,EAAE,mCAAmC,EAW1D;IAED;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA4B7D;IAED;;OAEG;IACG,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAazD;IAED;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlD;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1C;IAED,OAAO,CAAC,oBAAoB;CAiB7B"}
|
|
@@ -21,6 +21,7 @@ export class FilesystemS3BucketStorage {
|
|
|
21
21
|
constructor(properties) {
|
|
22
22
|
this.safety = new FilesystemS3StorageSafety({
|
|
23
23
|
allowedDirectoryNames: properties.allowedDirectoryNames,
|
|
24
|
+
additionalFileExtensions: properties.additionalFileExtensions,
|
|
24
25
|
});
|
|
25
26
|
this.safety.assertSafeDirectoryPath(properties.directoryPath);
|
|
26
27
|
this.directoryPath = path.resolve(properties.directoryPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-filesystem-storage.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"s3-filesystem-storage.js","sourceRoot":"","sources":["../../../../../src/service/s3/storage/filesystem/s3-filesystem-storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED