@spinajs/fs 2.0.481 → 2.0.484
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/lib/cjs/cli/cat.d.ts +11 -0
- package/lib/cjs/cli/cat.d.ts.map +1 -0
- package/lib/cjs/cli/cat.js +40 -0
- package/lib/cjs/cli/cat.js.map +1 -0
- package/lib/cjs/cli/cp.d.ts +11 -0
- package/lib/cjs/cli/cp.d.ts.map +1 -0
- package/lib/cjs/cli/cp.js +41 -0
- package/lib/cjs/cli/cp.js.map +1 -0
- package/lib/cjs/cli/download.d.ts +7 -0
- package/lib/cjs/cli/download.d.ts.map +1 -0
- package/lib/cjs/cli/download.js +39 -0
- package/lib/cjs/cli/download.js.map +1 -0
- package/lib/cjs/cli/exists.d.ts +7 -0
- package/lib/cjs/cli/exists.d.ts.map +1 -0
- package/lib/cjs/cli/exists.js +39 -0
- package/lib/cjs/cli/exists.js.map +1 -0
- package/lib/cjs/cli/fs.d.ts +11 -0
- package/lib/cjs/cli/fs.d.ts.map +1 -1
- package/lib/cjs/cli/fs.js +47 -21
- package/lib/cjs/cli/fs.js.map +1 -1
- package/lib/cjs/cli/hash.d.ts +11 -0
- package/lib/cjs/cli/hash.d.ts.map +1 -0
- package/lib/cjs/cli/hash.js +40 -0
- package/lib/cjs/cli/hash.js.map +1 -0
- package/lib/cjs/cli/info.d.ts +7 -0
- package/lib/cjs/cli/info.d.ts.map +1 -0
- package/lib/cjs/cli/info.js +45 -0
- package/lib/cjs/cli/info.js.map +1 -0
- package/lib/cjs/cli/ls.d.ts +7 -0
- package/lib/cjs/cli/ls.d.ts.map +1 -0
- package/lib/cjs/cli/ls.js +40 -0
- package/lib/cjs/cli/ls.js.map +1 -0
- package/lib/cjs/cli/mkdir.d.ts +7 -0
- package/lib/cjs/cli/mkdir.d.ts.map +1 -0
- package/lib/cjs/cli/mkdir.js +39 -0
- package/lib/cjs/cli/mkdir.js.map +1 -0
- package/lib/cjs/cli/mv.d.ts +11 -0
- package/lib/cjs/cli/mv.d.ts.map +1 -0
- package/lib/cjs/cli/mv.js +41 -0
- package/lib/cjs/cli/mv.js.map +1 -0
- package/lib/cjs/cli/rm.d.ts +1 -6
- package/lib/cjs/cli/rm.d.ts.map +1 -1
- package/lib/cjs/cli/rm.js +14 -4
- package/lib/cjs/cli/rm.js.map +1 -1
- package/lib/cjs/cli/stat.d.ts +1 -5
- package/lib/cjs/cli/stat.d.ts.map +1 -1
- package/lib/cjs/cli/stat.js +20 -3
- package/lib/cjs/cli/stat.js.map +1 -1
- package/lib/cjs/cli/unzip.d.ts +11 -0
- package/lib/cjs/cli/unzip.d.ts.map +1 -0
- package/lib/cjs/cli/unzip.js +47 -0
- package/lib/cjs/cli/unzip.js.map +1 -0
- package/lib/cjs/cli/upload.d.ts +7 -0
- package/lib/cjs/cli/upload.d.ts.map +1 -0
- package/lib/cjs/cli/upload.js +40 -0
- package/lib/cjs/cli/upload.js.map +1 -0
- package/lib/cjs/cli/write.d.ts +13 -0
- package/lib/cjs/cli/write.d.ts.map +1 -0
- package/lib/cjs/cli/write.js +54 -0
- package/lib/cjs/cli/write.js.map +1 -0
- package/lib/cjs/cli/zip.d.ts +12 -0
- package/lib/cjs/cli/zip.d.ts.map +1 -0
- package/lib/cjs/cli/zip.js +51 -0
- package/lib/cjs/cli/zip.js.map +1 -0
- package/lib/cjs/config/fs.d.ts +9 -0
- package/lib/cjs/config/fs.d.ts.map +1 -0
- package/lib/cjs/config/fs.js +22 -0
- package/lib/cjs/config/fs.js.map +1 -0
- package/lib/cjs/file-hasher.d.ts +85 -5
- package/lib/cjs/file-hasher.d.ts.map +1 -1
- package/lib/cjs/file-hasher.js +106 -14
- package/lib/cjs/file-hasher.js.map +1 -1
- package/lib/cjs/file-info.d.ts +94 -5
- package/lib/cjs/file-info.d.ts.map +1 -1
- package/lib/cjs/file-info.js +267 -73
- package/lib/cjs/file-info.js.map +1 -1
- package/lib/cjs/fp.d.ts +80 -2
- package/lib/cjs/fp.d.ts.map +1 -1
- package/lib/cjs/fp.js +149 -3
- package/lib/cjs/fp.js.map +1 -1
- package/lib/cjs/index.d.ts +2 -1
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +7 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +89 -12
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js +13 -13
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/local-provider.d.ts +51 -6
- package/lib/cjs/local-provider.d.ts.map +1 -1
- package/lib/cjs/local-provider.js +254 -76
- package/lib/cjs/local-provider.js.map +1 -1
- package/lib/cjs/temp-cleanup-strategy.d.ts +70 -0
- package/lib/cjs/temp-cleanup-strategy.d.ts.map +1 -0
- package/lib/cjs/temp-cleanup-strategy.js +157 -0
- package/lib/cjs/temp-cleanup-strategy.js.map +1 -0
- package/lib/cjs/temp-provider.d.ts +59 -0
- package/lib/cjs/temp-provider.d.ts.map +1 -0
- package/lib/cjs/temp-provider.js +150 -0
- package/lib/cjs/temp-provider.js.map +1 -0
- package/lib/mjs/cli/cat.d.ts +11 -0
- package/lib/mjs/cli/cat.d.ts.map +1 -0
- package/lib/mjs/cli/cat.js +37 -0
- package/lib/mjs/cli/cat.js.map +1 -0
- package/lib/mjs/cli/cp.d.ts +11 -0
- package/lib/mjs/cli/cp.d.ts.map +1 -0
- package/lib/mjs/cli/cp.js +38 -0
- package/lib/mjs/cli/cp.js.map +1 -0
- package/lib/mjs/cli/download.d.ts +7 -0
- package/lib/mjs/cli/download.d.ts.map +1 -0
- package/lib/mjs/cli/download.js +36 -0
- package/lib/mjs/cli/download.js.map +1 -0
- package/lib/mjs/cli/exists.d.ts +7 -0
- package/lib/mjs/cli/exists.d.ts.map +1 -0
- package/lib/mjs/cli/exists.js +36 -0
- package/lib/mjs/cli/exists.js.map +1 -0
- package/lib/mjs/cli/fs.d.ts +11 -1
- package/lib/mjs/cli/fs.d.ts.map +1 -1
- package/lib/mjs/cli/fs.js +43 -22
- package/lib/mjs/cli/fs.js.map +1 -1
- package/lib/mjs/cli/hash.d.ts +11 -0
- package/lib/mjs/cli/hash.d.ts.map +1 -0
- package/lib/mjs/cli/hash.js +37 -0
- package/lib/mjs/cli/hash.js.map +1 -0
- package/lib/mjs/cli/info.d.ts +7 -0
- package/lib/mjs/cli/info.d.ts.map +1 -0
- package/lib/mjs/cli/info.js +42 -0
- package/lib/mjs/cli/info.js.map +1 -0
- package/lib/mjs/cli/ls.d.ts +7 -0
- package/lib/mjs/cli/ls.d.ts.map +1 -0
- package/lib/mjs/cli/ls.js +37 -0
- package/lib/mjs/cli/ls.js.map +1 -0
- package/lib/mjs/cli/mkdir.d.ts +7 -0
- package/lib/mjs/cli/mkdir.d.ts.map +1 -0
- package/lib/mjs/cli/mkdir.js +36 -0
- package/lib/mjs/cli/mkdir.js.map +1 -0
- package/lib/mjs/cli/mv.d.ts +11 -0
- package/lib/mjs/cli/mv.d.ts.map +1 -0
- package/lib/mjs/cli/mv.js +38 -0
- package/lib/mjs/cli/mv.js.map +1 -0
- package/lib/mjs/cli/rm.d.ts +1 -6
- package/lib/mjs/cli/rm.d.ts.map +1 -1
- package/lib/mjs/cli/rm.js +15 -5
- package/lib/mjs/cli/rm.js.map +1 -1
- package/lib/mjs/cli/stat.d.ts +1 -5
- package/lib/mjs/cli/stat.d.ts.map +1 -1
- package/lib/mjs/cli/stat.js +21 -4
- package/lib/mjs/cli/stat.js.map +1 -1
- package/lib/mjs/cli/unzip.d.ts +11 -0
- package/lib/mjs/cli/unzip.d.ts.map +1 -0
- package/lib/mjs/cli/unzip.js +44 -0
- package/lib/mjs/cli/unzip.js.map +1 -0
- package/lib/mjs/cli/upload.d.ts +7 -0
- package/lib/mjs/cli/upload.d.ts.map +1 -0
- package/lib/mjs/cli/upload.js +37 -0
- package/lib/mjs/cli/upload.js.map +1 -0
- package/lib/mjs/cli/write.d.ts +13 -0
- package/lib/mjs/cli/write.d.ts.map +1 -0
- package/lib/mjs/cli/write.js +51 -0
- package/lib/mjs/cli/write.js.map +1 -0
- package/lib/mjs/cli/zip.d.ts +12 -0
- package/lib/mjs/cli/zip.d.ts.map +1 -0
- package/lib/mjs/cli/zip.js +48 -0
- package/lib/mjs/cli/zip.js.map +1 -0
- package/lib/mjs/config/fs.d.ts +9 -0
- package/lib/mjs/config/fs.d.ts.map +1 -0
- package/lib/mjs/config/fs.js +20 -0
- package/lib/mjs/config/fs.js.map +1 -0
- package/lib/mjs/file-hasher.d.ts +85 -5
- package/lib/mjs/file-hasher.d.ts.map +1 -1
- package/lib/mjs/file-hasher.js +106 -14
- package/lib/mjs/file-hasher.js.map +1 -1
- package/lib/mjs/file-info.d.ts +94 -5
- package/lib/mjs/file-info.d.ts.map +1 -1
- package/lib/mjs/file-info.js +233 -73
- package/lib/mjs/file-info.js.map +1 -1
- package/lib/mjs/fp.d.ts +80 -2
- package/lib/mjs/fp.d.ts.map +1 -1
- package/lib/mjs/fp.js +135 -4
- package/lib/mjs/fp.js.map +1 -1
- package/lib/mjs/index.d.ts +2 -1
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +8 -3
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +89 -12
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js +13 -13
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/local-provider.d.ts +51 -6
- package/lib/mjs/local-provider.d.ts.map +1 -1
- package/lib/mjs/local-provider.js +257 -79
- package/lib/mjs/local-provider.js.map +1 -1
- package/lib/mjs/temp-cleanup-strategy.d.ts +70 -0
- package/lib/mjs/temp-cleanup-strategy.d.ts.map +1 -0
- package/lib/mjs/temp-cleanup-strategy.js +153 -0
- package/lib/mjs/temp-cleanup-strategy.js.map +1 -0
- package/lib/mjs/temp-provider.d.ts +59 -0
- package/lib/mjs/temp-provider.d.ts.map +1 -0
- package/lib/mjs/temp-provider.js +147 -0
- package/lib/mjs/temp-provider.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +12 -6
- package/lib/cjs/local-temp-provider.d.ts +0 -18
- package/lib/cjs/local-temp-provider.d.ts.map +0 -1
- package/lib/cjs/local-temp-provider.js +0 -63
- package/lib/cjs/local-temp-provider.js.map +0 -1
- package/lib/mjs/local-temp-provider.d.ts +0 -18
- package/lib/mjs/local-temp-provider.d.ts.map +0 -1
- package/lib/mjs/local-temp-provider.js +0 -60
- package/lib/mjs/local-temp-provider.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Stats } from 'fs';
|
|
2
2
|
import { fs, IFsLocalOptions, IStat, IZipResult } from './interfaces.js';
|
|
3
3
|
import { Log } from '@spinajs/log-common';
|
|
4
|
+
import archiver from 'archiver';
|
|
4
5
|
/**
|
|
5
6
|
* Abstract layer for file operations.
|
|
6
7
|
* Basic implementation is just wrapper for native node fs functions
|
|
@@ -8,7 +9,9 @@ import { Log } from '@spinajs/log-common';
|
|
|
8
9
|
* It allows to wrap other libs eg. aws s3, ftp
|
|
9
10
|
* and inject it into code without changing logic that use them.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
+
* All failures are surfaced as IOFail ( the original error is preserved as the
|
|
13
|
+
* inner cause ). When basePath is set, all paths are sandboxed to it - resolved
|
|
14
|
+
* paths escaping basePath ( eg. via `..` ) throw IOFail.
|
|
12
15
|
*/
|
|
13
16
|
export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
14
17
|
Options: T;
|
|
@@ -32,12 +35,12 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
|
32
35
|
/**
|
|
33
36
|
* read all content of file
|
|
34
37
|
*/
|
|
35
|
-
read(path: string, encoding?: BufferEncoding): Promise<string |
|
|
36
|
-
readStream(path: string, encoding?: BufferEncoding): Promise<ReadStream>;
|
|
38
|
+
read(path: string, encoding?: BufferEncoding): Promise<string | NonSharedBuffer>;
|
|
39
|
+
readStream(path: string, encoding?: BufferEncoding): Promise<import("fs").ReadStream>;
|
|
37
40
|
/**
|
|
38
41
|
* Write to file string or buffer
|
|
39
42
|
*/
|
|
40
|
-
write(path: string, data: string | Uint8Array, encoding
|
|
43
|
+
write(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
|
|
41
44
|
append(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
|
|
42
45
|
writeStream(path: string, rStream?: BufferEncoding | NodeJS.ReadableStream, encoding?: BufferEncoding): Promise<import("fs").WriteStream>;
|
|
43
46
|
/**
|
|
@@ -60,6 +63,11 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
|
60
63
|
* Change name of a file
|
|
61
64
|
*/
|
|
62
65
|
rename(oldPath: string, newPath: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Native rename seam - extracted so move/rename logic ( eg. EXDEV fallback )
|
|
68
|
+
* can be tested without a real cross-device setup.
|
|
69
|
+
*/
|
|
70
|
+
protected _rename(oldPath: string, newPath: string): Promise<void>;
|
|
63
71
|
/**
|
|
64
72
|
*
|
|
65
73
|
* Deletes file OR
|
|
@@ -79,7 +87,16 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
|
79
87
|
* Returns file statistics, not all fields may be accesible
|
|
80
88
|
*/
|
|
81
89
|
stat(path: string): Promise<IStat>;
|
|
82
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Maps native fs.Stats onto IStat.
|
|
92
|
+
*
|
|
93
|
+
* birthtime is the creation time; ctime is inode CHANGE time and would reset
|
|
94
|
+
* file age on chmod / rename ( breaks temp fs cleanup ageing ). Defensive:
|
|
95
|
+
* some filesystems report epoch 0 when birthtime is unsupported - fall back
|
|
96
|
+
* to mtime so age-based logic does not treat files as infinitely old.
|
|
97
|
+
*/
|
|
98
|
+
protected toStatEntry(result: Stats): IStat;
|
|
99
|
+
tmppath(ext?: string): string;
|
|
83
100
|
/**
|
|
84
101
|
* List content of directory
|
|
85
102
|
*
|
|
@@ -89,6 +106,34 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
|
89
106
|
unzip(path: string, destPath?: string, dstFs?: fs): Promise<string>;
|
|
90
107
|
isDir(path: string): Promise<boolean>;
|
|
91
108
|
zip(path: string | (string | string[])[], dstFs?: fs, dstFile?: string): Promise<IZipResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Source path of a zip entry. Entries are either a plain path or a
|
|
111
|
+
* [ sourcePath, entryName ] tuple.
|
|
112
|
+
*/
|
|
113
|
+
protected zipEntrySource(entry: string | string[]): string;
|
|
114
|
+
/**
|
|
115
|
+
* Name a zip entry is stored under. Defaults to the source path when no
|
|
116
|
+
* explicit entry name is given.
|
|
117
|
+
*/
|
|
118
|
+
protected zipEntryName(entry: string | string[]): string;
|
|
119
|
+
/**
|
|
120
|
+
* Fails fast with a single clear error listing every missing source, so a
|
|
121
|
+
* missing entry never yields a silently incomplete archive.
|
|
122
|
+
*/
|
|
123
|
+
protected assertSourcesExist(paths: (string | string[])[]): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Adds every source to the archive - a plain-path directory is added
|
|
126
|
+
* recursively, everything else as a single file stored under its entry name.
|
|
127
|
+
*/
|
|
128
|
+
protected addZipEntries(archive: ReturnType<typeof archiver>, paths: (string | string[])[]): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Builds the {@link IZipResult} accessor object for a finished archive.
|
|
131
|
+
*
|
|
132
|
+
* The zip path is resolved against the DESTINATION fs ( outFile is relative
|
|
133
|
+
* to its base path ). Remote destinations may not support path resolving -
|
|
134
|
+
* fall back to the raw name so the accessors still work.
|
|
135
|
+
*/
|
|
136
|
+
protected buildZipResult(fs: fs, outFile: string): IZipResult;
|
|
92
137
|
resolvePath(path: string): string;
|
|
93
138
|
}
|
|
94
139
|
//# sourceMappingURL=local-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,9 @@ const util_1 = require("@spinajs/util");
|
|
|
33
33
|
* It allows to wrap other libs eg. aws s3, ftp
|
|
34
34
|
* and inject it into code without changing logic that use them.
|
|
35
35
|
*
|
|
36
|
-
*
|
|
36
|
+
* All failures are surfaced as IOFail ( the original error is preserved as the
|
|
37
|
+
* inner cause ). When basePath is set, all paths are sandboxed to it - resolved
|
|
38
|
+
* paths escaping basePath ( eg. via `..` ) throw IOFail.
|
|
37
39
|
*/
|
|
38
40
|
let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
39
41
|
/**
|
|
@@ -52,12 +54,20 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
52
54
|
}
|
|
53
55
|
async resolve() {
|
|
54
56
|
await super.resolve();
|
|
57
|
+
// canonicalize configured base path once - a relative basePath would otherwise
|
|
58
|
+
// resolve against cwd at every call ( and self-join in checks below )
|
|
59
|
+
if (this.Options.basePath) {
|
|
60
|
+
this.Options.basePath = (0, path_1.resolve)(this.Options.basePath);
|
|
61
|
+
}
|
|
55
62
|
const basePath = this.Options.basePath ?? process.env.WORKSPACE_ROOT_PATH ?? process.cwd();
|
|
56
63
|
this.Logger.info(`Initializing file provider ${this.Options.name} with base path ${basePath}`);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
// check the raw path - this.exists() would resolve it against basePath again
|
|
65
|
+
if (!(0, fs_1.existsSync)(basePath)) {
|
|
66
|
+
this.Logger.warn(`Base path ${basePath} for file provider ${this.Options.name} not exists, trying to create base folder`);
|
|
67
|
+
// use the computed base path - Options.basePath may be undefined when the
|
|
68
|
+
// env / cwd fallback was taken
|
|
69
|
+
await (0, promises_1.mkdir)(basePath, { recursive: true });
|
|
70
|
+
this.Logger.success(`Base path ${basePath} created`);
|
|
61
71
|
}
|
|
62
72
|
}
|
|
63
73
|
/**
|
|
@@ -80,53 +90,81 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
80
90
|
throw new exceptions_1.IOFail(`file ${srcPath} does not exists`);
|
|
81
91
|
}
|
|
82
92
|
const dPath = this.resolvePath(destPath ?? (0, path_1.basename)(srcPath));
|
|
83
|
-
|
|
93
|
+
try {
|
|
94
|
+
// cp creates missing destination parent directories itself
|
|
95
|
+
await (0, promises_2.cp)(srcPath, dPath, { force: true, recursive: true });
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
throw new exceptions_1.IOFail(`Cannot upload ${srcPath} to ${dPath}`, err);
|
|
99
|
+
}
|
|
84
100
|
}
|
|
85
101
|
/**
|
|
86
102
|
* read all content of file
|
|
87
103
|
*/
|
|
88
104
|
async read(path, encoding) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
});
|
|
105
|
+
const p = this.resolvePath(path);
|
|
106
|
+
try {
|
|
107
|
+
// no encoding -> raw Buffer. Defaulting to 'binary' ( latin1 ) would return
|
|
108
|
+
// a string and corrupt binary data for callers expecting a Buffer.
|
|
109
|
+
return await (0, promises_1.readFile)(p, { encoding: encoding ?? null });
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
throw new exceptions_1.IOFail(`Cannot read file ${path}`, err);
|
|
113
|
+
}
|
|
99
114
|
}
|
|
100
|
-
readStream(path, encoding) {
|
|
101
|
-
|
|
115
|
+
async readStream(path, encoding) {
|
|
116
|
+
const p = this.resolvePath(path);
|
|
117
|
+
// fail fast with a consistent error - otherwise the error surfaces asynchronously
|
|
118
|
+
// on the returned stream. NOTE: runtime read failures are still stream errors.
|
|
119
|
+
if (!(await this.exists(path))) {
|
|
120
|
+
throw new exceptions_1.IOFail(`Cannot read file ${path}, file does not exists`);
|
|
121
|
+
}
|
|
122
|
+
return (0, fs_1.createReadStream)(p, encoding ? { encoding } : {});
|
|
102
123
|
}
|
|
103
124
|
/**
|
|
104
125
|
* Write to file string or buffer
|
|
105
126
|
*/
|
|
106
127
|
async write(path, data, encoding) {
|
|
107
|
-
|
|
128
|
+
const p = this.resolvePath(path);
|
|
129
|
+
let fHandle;
|
|
130
|
+
try {
|
|
131
|
+
fHandle = await (0, promises_1.open)(p, 'w');
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
throw new exceptions_1.IOFail(`Cannot open file ${path} for writing`, err);
|
|
135
|
+
}
|
|
108
136
|
try {
|
|
109
|
-
fHandle = await (0, promises_1.open)(this.resolvePath(path), 'w');
|
|
110
137
|
await fHandle.writeFile(data, { encoding });
|
|
138
|
+
// flush to disk so data is durable before success is reported
|
|
139
|
+
await fHandle.sync();
|
|
111
140
|
}
|
|
112
141
|
catch (err) {
|
|
113
142
|
throw new exceptions_1.IOFail(`Cannot write to file ${path}`, err);
|
|
114
143
|
}
|
|
115
144
|
finally {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
await fHandle.close();
|
|
119
|
-
}
|
|
145
|
+
// close must ALWAYS run and must never mask the original error
|
|
146
|
+
await fHandle.close().catch(() => { });
|
|
120
147
|
}
|
|
121
148
|
}
|
|
122
149
|
async append(path, data, encoding) {
|
|
123
|
-
|
|
150
|
+
const p = this.resolvePath(path);
|
|
151
|
+
try {
|
|
152
|
+
await (0, promises_1.appendFile)(p, data, encoding);
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
throw new exceptions_1.IOFail(`Cannot append to file ${path}`, err);
|
|
156
|
+
}
|
|
124
157
|
}
|
|
125
158
|
writeStream(path, rStream, encoding) {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
159
|
+
const enc = typeof rStream === 'string' ? rStream : encoding;
|
|
160
|
+
const stream = (0, fs_1.createWriteStream)(this.resolvePath(path), enc ? { encoding: enc } : {});
|
|
161
|
+
// pipe ANY readable stream, not only fs.ReadStream instances - the contract accepts
|
|
162
|
+
// NodeJS.ReadableStream ( PassThrough, http/s3 bodies etc. ), instanceof would
|
|
163
|
+
// silently skip those and stall the caller
|
|
164
|
+
if (rStream && typeof rStream !== 'string' && typeof rStream.pipe === 'function') {
|
|
165
|
+
// pipe() does NOT forward errors - without this, a failing source leaves the
|
|
166
|
+
// write stream open forever and the caller waiting for 'close' hangs
|
|
167
|
+
rStream.on('error', (err) => stream.destroy(err instanceof Error ? err : new exceptions_1.IOFail(String(err))));
|
|
130
168
|
rStream.pipe(stream);
|
|
131
169
|
}
|
|
132
170
|
return Promise.resolve(stream);
|
|
@@ -145,7 +183,7 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
145
183
|
}
|
|
146
184
|
}
|
|
147
185
|
async dirExists(path) {
|
|
148
|
-
return this.
|
|
186
|
+
return this.isDir(path);
|
|
149
187
|
}
|
|
150
188
|
/**
|
|
151
189
|
* Copy file or dir to another location
|
|
@@ -163,10 +201,15 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
163
201
|
}
|
|
164
202
|
else {
|
|
165
203
|
const dPath = this.resolvePath(dest);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
204
|
+
try {
|
|
205
|
+
await (0, promises_2.cp)(sPath, dPath, {
|
|
206
|
+
recursive: true,
|
|
207
|
+
force: true,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
throw new exceptions_1.IOFail(`Cannot copy ${path} to ${dest}`, err);
|
|
212
|
+
}
|
|
170
213
|
}
|
|
171
214
|
}
|
|
172
215
|
/**
|
|
@@ -177,17 +220,45 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
177
220
|
if (dstFs) {
|
|
178
221
|
await dstFs.upload(oPath, newPath);
|
|
179
222
|
await this.rm(oldPath);
|
|
223
|
+
return;
|
|
180
224
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
225
|
+
const nPath = this.resolvePath(newPath);
|
|
226
|
+
// rename does not create missing destination directories - align with copy
|
|
227
|
+
// ( cp creates them ). Failures here are ignored, rename reports the real error.
|
|
228
|
+
await (0, promises_1.mkdir)((0, path_1.dirname)(nPath), { recursive: true }).catch(() => { });
|
|
229
|
+
try {
|
|
230
|
+
await this._rename(oPath, nPath);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
// rename cannot cross devices / mounts ( eg. C: -> D:, docker volumes ) -
|
|
234
|
+
// fall back to copy + delete
|
|
235
|
+
if (err?.code === 'EXDEV') {
|
|
236
|
+
await (0, promises_2.cp)(oPath, nPath, { recursive: true, force: true });
|
|
237
|
+
await this.rm(oldPath);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
throw new exceptions_1.IOFail(`Cannot move ${oldPath} to ${newPath}`, err);
|
|
184
241
|
}
|
|
185
242
|
}
|
|
186
243
|
/**
|
|
187
244
|
* Change name of a file
|
|
188
245
|
*/
|
|
189
246
|
async rename(oldPath, newPath) {
|
|
190
|
-
|
|
247
|
+
const oPath = this.resolvePath(oldPath);
|
|
248
|
+
const nPath = this.resolvePath(newPath);
|
|
249
|
+
try {
|
|
250
|
+
await this._rename(oPath, nPath);
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
throw new exceptions_1.IOFail(`Cannot rename ${oldPath} to ${newPath}`, err);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Native rename seam - extracted so move/rename logic ( eg. EXDEV fallback )
|
|
258
|
+
* can be tested without a real cross-device setup.
|
|
259
|
+
*/
|
|
260
|
+
_rename(oldPath, newPath) {
|
|
261
|
+
return (0, promises_1.rename)(oldPath, newPath);
|
|
191
262
|
}
|
|
192
263
|
/**
|
|
193
264
|
*
|
|
@@ -206,24 +277,47 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
206
277
|
* @param path - directory to create
|
|
207
278
|
*/
|
|
208
279
|
async mkdir(path) {
|
|
209
|
-
|
|
280
|
+
const p = this.resolvePath(path);
|
|
281
|
+
try {
|
|
282
|
+
await (0, promises_1.mkdir)(p, { recursive: true });
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
throw new exceptions_1.IOFail(`Cannot create directory ${path}`, err);
|
|
286
|
+
}
|
|
210
287
|
}
|
|
211
288
|
/**
|
|
212
289
|
* Returns file statistics, not all fields may be accesible
|
|
213
290
|
*/
|
|
214
291
|
async stat(path) {
|
|
215
|
-
const
|
|
292
|
+
const p = this.resolvePath(path);
|
|
293
|
+
try {
|
|
294
|
+
return this.toStatEntry(await (0, promises_1.stat)(p));
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
throw err instanceof exceptions_1.IOFail ? err : new exceptions_1.IOFail(`Cannot stat ${path}`, err);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Maps native fs.Stats onto IStat.
|
|
302
|
+
*
|
|
303
|
+
* birthtime is the creation time; ctime is inode CHANGE time and would reset
|
|
304
|
+
* file age on chmod / rename ( breaks temp fs cleanup ageing ). Defensive:
|
|
305
|
+
* some filesystems report epoch 0 when birthtime is unsupported - fall back
|
|
306
|
+
* to mtime so age-based logic does not treat files as infinitely old.
|
|
307
|
+
*/
|
|
308
|
+
toStatEntry(result) {
|
|
309
|
+
const birth = result.birthtime && result.birthtime.getTime() > 0 ? result.birthtime : result.mtime;
|
|
216
310
|
return {
|
|
217
311
|
IsDirectory: result.isDirectory(),
|
|
218
312
|
IsFile: result.isFile(),
|
|
219
|
-
CreationTime: luxon_1.DateTime.fromJSDate(
|
|
313
|
+
CreationTime: luxon_1.DateTime.fromJSDate(birth),
|
|
220
314
|
ModifiedTime: luxon_1.DateTime.fromJSDate(result.mtime),
|
|
221
315
|
AccessTime: luxon_1.DateTime.fromJSDate(result.atime),
|
|
222
316
|
Size: result.size,
|
|
223
317
|
};
|
|
224
318
|
}
|
|
225
|
-
tmppath() {
|
|
226
|
-
return (0, path_1.join)(this.Options.basePath, super.tmpname());
|
|
319
|
+
tmppath(ext) {
|
|
320
|
+
return (0, path_1.join)(this.Options.basePath, super.tmpname(ext));
|
|
227
321
|
}
|
|
228
322
|
/**
|
|
229
323
|
* List content of directory
|
|
@@ -231,18 +325,32 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
231
325
|
* @param path - path to directory
|
|
232
326
|
*/
|
|
233
327
|
async list(path) {
|
|
234
|
-
|
|
328
|
+
const p = this.resolvePath(path);
|
|
329
|
+
try {
|
|
330
|
+
return await (0, promises_1.readdir)(p);
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
throw new exceptions_1.IOFail(`Cannot list directory ${path}`, err);
|
|
334
|
+
}
|
|
235
335
|
}
|
|
236
336
|
async unzip(path, destPath, dstFs) {
|
|
337
|
+
const srcPath = this.resolvePath(path);
|
|
338
|
+
if (!(await this.exists(path))) {
|
|
339
|
+
throw new exceptions_1.IOFail(`Cannot unzip, file ${path} does not exists`);
|
|
340
|
+
}
|
|
237
341
|
const dFs = dstFs ?? this;
|
|
238
342
|
const dst = dFs.resolvePath(destPath ?? dFs.tmpname());
|
|
239
343
|
return new Promise((resolve, reject) => {
|
|
240
|
-
(0, fs_1.createReadStream)(
|
|
344
|
+
const rStream = (0, fs_1.createReadStream)(srcPath);
|
|
345
|
+
// without this handler a source read error is an unhandled stream 'error'
|
|
346
|
+
// event and CRASHES the process instead of rejecting
|
|
347
|
+
rStream.on('error', (err) => reject(new exceptions_1.IOFail(`Cannot read zip file ${path}`, err)));
|
|
348
|
+
rStream.pipe(unzipper_1.default
|
|
241
349
|
.Extract({
|
|
242
350
|
path: dst,
|
|
243
351
|
})
|
|
244
352
|
.on('close', () => resolve(dst))
|
|
245
|
-
.on('error', reject));
|
|
353
|
+
.on('error', (err) => reject(new exceptions_1.IOFail(`Cannot unzip file ${path}`, err))));
|
|
246
354
|
});
|
|
247
355
|
}
|
|
248
356
|
async isDir(path) {
|
|
@@ -256,21 +364,14 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
256
364
|
}
|
|
257
365
|
async zip(path, dstFs, dstFile) {
|
|
258
366
|
const paths = (0, util_1.toArray)(path);
|
|
367
|
+
await this.assertSourcesExist(paths);
|
|
259
368
|
const fs = dstFs ?? (await di_1.DI.resolve('__file_provider__', ['fs-temp']));
|
|
260
369
|
const outFile = dstFile ?? `${fs.tmpname()}.zip`;
|
|
261
370
|
const wStream = await fs.writeStream(outFile);
|
|
262
371
|
const archive = (0, archiver_1.default)('zip');
|
|
263
372
|
// pipe archive data to the file
|
|
264
373
|
archive.pipe(wStream);
|
|
265
|
-
|
|
266
|
-
if (!Array.isArray(p)) {
|
|
267
|
-
if (await this.isDir(p)) {
|
|
268
|
-
archive.directory(this.resolvePath(p), false);
|
|
269
|
-
continue;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
archive.file(this.resolvePath(Array.isArray(p) ? p[0] : p), { name: (0, path_1.basename)(Array.isArray(p) ? p[1] : p) });
|
|
273
|
-
}
|
|
374
|
+
await this.addZipEntries(archive, paths);
|
|
274
375
|
archive.on('entry', (entry) => {
|
|
275
376
|
this.Logger.trace(`Archiving file ${entry.name}, size: ${entry.stats?.size} into ${outFile}, fs: ${fs.Name}`);
|
|
276
377
|
});
|
|
@@ -289,32 +390,109 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
289
390
|
reject(new exceptions_1.IOFail('Archiving error', err));
|
|
290
391
|
});
|
|
291
392
|
wStream.on('close', () => {
|
|
292
|
-
|
|
293
|
-
fs,
|
|
294
|
-
asFilePath: () => {
|
|
295
|
-
return outFile;
|
|
296
|
-
},
|
|
297
|
-
asStream: (encoding) => {
|
|
298
|
-
return (0, fs_1.createReadStream)(outFile, {
|
|
299
|
-
encoding: encoding ?? 'binary',
|
|
300
|
-
});
|
|
301
|
-
},
|
|
302
|
-
asBase64: () => {
|
|
303
|
-
return (0, fs_1.readFileSync)(outFile, { encoding: 'base64' });
|
|
304
|
-
},
|
|
305
|
-
unlink: async () => {
|
|
306
|
-
return await fs.rm(outFile);
|
|
307
|
-
},
|
|
308
|
-
};
|
|
309
|
-
resolve(result);
|
|
393
|
+
resolve(this.buildZipResult(fs, outFile));
|
|
310
394
|
});
|
|
311
|
-
|
|
395
|
+
// finalize() also reports failures via its returned promise - catch it so a
|
|
396
|
+
// failure is not an unhandled rejection on top of the 'error' event
|
|
397
|
+
archive.finalize().catch((err) => reject(new exceptions_1.IOFail('Archiving error', err)));
|
|
312
398
|
});
|
|
313
399
|
}
|
|
400
|
+
/**
|
|
401
|
+
* Source path of a zip entry. Entries are either a plain path or a
|
|
402
|
+
* [ sourcePath, entryName ] tuple.
|
|
403
|
+
*/
|
|
404
|
+
zipEntrySource(entry) {
|
|
405
|
+
return Array.isArray(entry) ? entry[0] : entry;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Name a zip entry is stored under. Defaults to the source path when no
|
|
409
|
+
* explicit entry name is given.
|
|
410
|
+
*/
|
|
411
|
+
zipEntryName(entry) {
|
|
412
|
+
return Array.isArray(entry) ? entry[1] : entry;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Fails fast with a single clear error listing every missing source, so a
|
|
416
|
+
* missing entry never yields a silently incomplete archive.
|
|
417
|
+
*/
|
|
418
|
+
async assertSourcesExist(paths) {
|
|
419
|
+
const missing = [];
|
|
420
|
+
for (const p of paths) {
|
|
421
|
+
const src = this.zipEntrySource(p);
|
|
422
|
+
if (!(await this.exists(src))) {
|
|
423
|
+
missing.push(src);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
if (missing.length > 0) {
|
|
427
|
+
throw new exceptions_1.IOFail(`Cannot zip, source path(s) not found: ${missing.join(', ')}`);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Adds every source to the archive - a plain-path directory is added
|
|
432
|
+
* recursively, everything else as a single file stored under its entry name.
|
|
433
|
+
*/
|
|
434
|
+
async addZipEntries(archive, paths) {
|
|
435
|
+
for (const p of paths) {
|
|
436
|
+
if (!Array.isArray(p) && (await this.isDir(p))) {
|
|
437
|
+
archive.directory(this.resolvePath(p), false);
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
archive.file(this.resolvePath(this.zipEntrySource(p)), { name: (0, path_1.basename)(this.zipEntryName(p)) });
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Builds the {@link IZipResult} accessor object for a finished archive.
|
|
445
|
+
*
|
|
446
|
+
* The zip path is resolved against the DESTINATION fs ( outFile is relative
|
|
447
|
+
* to its base path ). Remote destinations may not support path resolving -
|
|
448
|
+
* fall back to the raw name so the accessors still work.
|
|
449
|
+
*/
|
|
450
|
+
buildZipResult(fs, outFile) {
|
|
451
|
+
let zipPath = outFile;
|
|
452
|
+
try {
|
|
453
|
+
zipPath = fs.resolvePath(outFile);
|
|
454
|
+
}
|
|
455
|
+
catch {
|
|
456
|
+
/* keep outFile as-is */
|
|
457
|
+
}
|
|
458
|
+
return {
|
|
459
|
+
fs,
|
|
460
|
+
asFilePath: () => zipPath,
|
|
461
|
+
asStream: (encoding) => (0, fs_1.createReadStream)(zipPath, encoding ? { encoding } : {}),
|
|
462
|
+
asBase64: () => (0, fs_1.readFileSync)(zipPath, { encoding: 'base64' }),
|
|
463
|
+
unlink: async () => await fs.rm(outFile),
|
|
464
|
+
};
|
|
465
|
+
}
|
|
314
466
|
resolvePath(path) {
|
|
315
|
-
if (!this.Options.basePath
|
|
467
|
+
if (!this.Options.basePath)
|
|
316
468
|
return path;
|
|
317
|
-
|
|
469
|
+
const base = this.Options.basePath;
|
|
470
|
+
if ((0, path_1.isAbsolute)(path)) {
|
|
471
|
+
// absolute path already inside basePath is returned as-is. Using
|
|
472
|
+
// path.relative instead of startsWith avoids false positives on sibling
|
|
473
|
+
// directories (eg. basePath `/data/files` and path `/data/files-2/x`)
|
|
474
|
+
// and is separator-safe across platforms.
|
|
475
|
+
const rel = (0, path_1.relative)(base, path);
|
|
476
|
+
if (rel === '' || (!rel.startsWith('..') && !(0, path_1.isAbsolute)(rel))) {
|
|
477
|
+
return path;
|
|
478
|
+
}
|
|
479
|
+
// fully-qualified paths ( drive letter / UNC on windows ) outside the
|
|
480
|
+
// sandbox are rejected. Rooted-but-driveless paths ( `/x`, `\x` ) are the
|
|
481
|
+
// established "fs root" idiom ( eg. list('/') ) and fall through to be
|
|
482
|
+
// resolved relative to basePath, exactly like join() always treated them.
|
|
483
|
+
const root = (0, path_1.parse)(path).root;
|
|
484
|
+
if (root !== '/' && root !== '\\') {
|
|
485
|
+
throw new exceptions_1.IOFail(`Path ${path} is outside of filesystem base path ( ${base} ), fs: ${this.Options.name}`);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// join normalizes `..` segments - verify the result still lives inside basePath
|
|
489
|
+
// so relative paths cannot escape the sandbox ( eg. ../../etc/passwd )
|
|
490
|
+
const joined = (0, path_1.join)(base, path);
|
|
491
|
+
const rel = (0, path_1.relative)(base, joined);
|
|
492
|
+
if (rel.startsWith('..') || (0, path_1.isAbsolute)(rel)) {
|
|
493
|
+
throw new exceptions_1.IOFail(`Path ${path} escapes filesystem base path ( ${base} ), fs: ${this.Options.name}`);
|
|
494
|
+
}
|
|
495
|
+
return joined;
|
|
318
496
|
}
|
|
319
497
|
};
|
|
320
498
|
exports.fsNative = fsNative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAA4D;AAC5D,oDAA6C;AAC7C,2BAAoH;AACpH,+CAA8F;AAC9F,iCAAiC;AACjC,oCAA+D;AAC/D,mDAAyE;AACzE,+BAAsC;AACtC,oDAAkD;AAClD,wDAAgC;AAChC,wDAAgC;AAChC,0CAA6C;AAC7C,wCAAwC;AAExC;;;;;;;;GAQG;AAGI,IAAM,QAAQ,GAAd,MAAM,QAAoC,SAAQ,kBAAE;IAIzD;;;OAGG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,YAAmB,OAAU;QAC3B,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAG;QAG3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAM,CAAC,0EAA0E,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO;QAElB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE3F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAE/F,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,sBAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,2CAA2C,CACrH,CAAC;YAEF,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,OAAO,CAAC,QAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,UAAU,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,QAAiB;QACpD,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,mBAAM,CAAC,QAAQ,OAAO,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAA,eAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAA,aAAE,EAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,QAAyB;QACvD,OAAO,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,IAAA,aAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACjF,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,UAAU,CAAC,IAAY,EAAE,QAAyB;QACvD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAA,qBAAgB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,IAAyB,EAAE,QAAwB;QAClF,IAAI,OAAO,GAAe,IAAW,CAAC;QAEtC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,wBAAwB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,IAAyB,EAAE,QAAyB;QACpF,MAAM,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,OAAgD,EAAE,QAAyB;QAC1G,MAAM,MAAM,GAAG,IAAA,sBAAiB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACvD,QAAQ,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,QAAQ;SACzE,CAAC,CAAC;QAEH,IAAI,OAAO,YAAY,eAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM,CAAC,IAAY;QAC9B,IAAI,CAAC;YACH,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,cAAS,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAY,EAAE,KAAU;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAA,aAAE,EAAC,KAAK,EAAE,KAAK,EAAE;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAe,EAAE,KAAU;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,IAAA,iBAAM,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QAClD,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,EAAE,CAAC,IAAY;QAC1B,MAAM,IAAA,aAAE,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YACvB,YAAY,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/C,YAAY,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/C,UAAU,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,QAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,OAAO,MAAM,IAAA,kBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,QAAiB,EAAE,KAAU;QAC5D,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAA,qBAAgB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,kBAAQ;iBACL,OAAO,CAAC;gBACP,IAAI,EAAE,GAAG;aACV,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBAC/B,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,IAAoC,EAAE,KAAU,EAAE,OAAgB;QACjF,MAAM,KAAK,GAAG,IAAA,cAAO,EAAC,IAAW,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,MAAM,OAAE,CAAC,OAAO,CAAK,mBAAmB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,CAAC;QAEhC,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC9C,SAAS;gBACX,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,eAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;QAED,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,OAAO,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,WAAW,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,SAAS,KAAK,CAAC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,CACnH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,8CAA8C,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;oBACrF,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,MAAM,MAAM,GAAG;oBACb,EAAE;oBACF,UAAU,EAAE,GAAG,EAAE;wBACf,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,QAAQ,EAAE,CAAC,QAAyB,EAAE,EAAE;wBACtC,OAAO,IAAA,qBAAgB,EAAC,OAAO,EAAE;4BAC/B,QAAQ,EAAE,QAAQ,IAAI,QAAQ;yBAC/B,CAAC,CAAC;oBACL,CAAC;oBACD,QAAQ,EAAE,GAAG,EAAE;wBACb,OAAO,IAAA,iBAAY,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvD,CAAC;oBAED,MAAM,EAAE,KAAK,IAAI,EAAE;wBACjB,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;iBACF,CAAC;gBAEF,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAClF,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AA3UY,4BAAQ;AAET;IADT,IAAA,mBAAM,EAAC,IAAI,CAAC;8BACK,gBAAG;wCAAC;mBAFX,QAAQ;IAFpB,IAAA,eAAU,EAAC,IAAI,CAAC;IAChB,IAAA,qBAAgB,GAAE;;GACN,QAAQ,CA2UpB"}
|
|
1
|
+
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"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"}
|