@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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"}
|
|
@@ -9,12 +9,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
/* eslint-disable security/detect-non-literal-fs-filename */
|
|
11
11
|
import { IOFail } from '@spinajs/exceptions';
|
|
12
|
-
import { constants, createReadStream, createWriteStream, existsSync,
|
|
13
|
-
import { rm, stat, readdir, rename, mkdir, access, open, appendFile } from 'node:fs/promises';
|
|
12
|
+
import { constants, createReadStream, createWriteStream, existsSync, readFileSync } from 'fs';
|
|
13
|
+
import { rm, stat, readdir, rename, mkdir, access, open, appendFile, readFile } from 'node:fs/promises';
|
|
14
14
|
import { DateTime } from 'luxon';
|
|
15
15
|
import { DI, Injectable, PerInstanceCheck } from '@spinajs/di';
|
|
16
16
|
import { fs } from './interfaces.js';
|
|
17
|
-
import { basename, join } from 'path';
|
|
17
|
+
import { basename, dirname, isAbsolute, join, parse, relative, resolve as pathResolve } from 'path';
|
|
18
18
|
import { Log, Logger } from '@spinajs/log-common';
|
|
19
19
|
import archiver from 'archiver';
|
|
20
20
|
import unzipper from 'unzipper';
|
|
@@ -27,7 +27,9 @@ import { toArray } from '@spinajs/util';
|
|
|
27
27
|
* It allows to wrap other libs eg. aws s3, ftp
|
|
28
28
|
* and inject it into code without changing logic that use them.
|
|
29
29
|
*
|
|
30
|
-
*
|
|
30
|
+
* All failures are surfaced as IOFail ( the original error is preserved as the
|
|
31
|
+
* inner cause ). When basePath is set, all paths are sandboxed to it - resolved
|
|
32
|
+
* paths escaping basePath ( eg. via `..` ) throw IOFail.
|
|
31
33
|
*/
|
|
32
34
|
let fsNative = class fsNative extends fs {
|
|
33
35
|
/**
|
|
@@ -46,12 +48,20 @@ let fsNative = class fsNative extends fs {
|
|
|
46
48
|
}
|
|
47
49
|
async resolve() {
|
|
48
50
|
await super.resolve();
|
|
51
|
+
// canonicalize configured base path once - a relative basePath would otherwise
|
|
52
|
+
// resolve against cwd at every call ( and self-join in checks below )
|
|
53
|
+
if (this.Options.basePath) {
|
|
54
|
+
this.Options.basePath = pathResolve(this.Options.basePath);
|
|
55
|
+
}
|
|
49
56
|
const basePath = this.Options.basePath ?? process.env.WORKSPACE_ROOT_PATH ?? process.cwd();
|
|
50
57
|
this.Logger.info(`Initializing file provider ${this.Options.name} with base path ${basePath}`);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
// check the raw path - this.exists() would resolve it against basePath again
|
|
59
|
+
if (!existsSync(basePath)) {
|
|
60
|
+
this.Logger.warn(`Base path ${basePath} for file provider ${this.Options.name} not exists, trying to create base folder`);
|
|
61
|
+
// use the computed base path - Options.basePath may be undefined when the
|
|
62
|
+
// env / cwd fallback was taken
|
|
63
|
+
await mkdir(basePath, { recursive: true });
|
|
64
|
+
this.Logger.success(`Base path ${basePath} created`);
|
|
55
65
|
}
|
|
56
66
|
}
|
|
57
67
|
/**
|
|
@@ -74,53 +84,81 @@ let fsNative = class fsNative extends fs {
|
|
|
74
84
|
throw new IOFail(`file ${srcPath} does not exists`);
|
|
75
85
|
}
|
|
76
86
|
const dPath = this.resolvePath(destPath ?? basename(srcPath));
|
|
77
|
-
|
|
87
|
+
try {
|
|
88
|
+
// cp creates missing destination parent directories itself
|
|
89
|
+
await cp(srcPath, dPath, { force: true, recursive: true });
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
throw new IOFail(`Cannot upload ${srcPath} to ${dPath}`, err);
|
|
93
|
+
}
|
|
78
94
|
}
|
|
79
95
|
/**
|
|
80
96
|
* read all content of file
|
|
81
97
|
*/
|
|
82
98
|
async read(path, encoding) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
});
|
|
99
|
+
const p = this.resolvePath(path);
|
|
100
|
+
try {
|
|
101
|
+
// no encoding -> raw Buffer. Defaulting to 'binary' ( latin1 ) would return
|
|
102
|
+
// a string and corrupt binary data for callers expecting a Buffer.
|
|
103
|
+
return await readFile(p, { encoding: encoding ?? null });
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
throw new IOFail(`Cannot read file ${path}`, err);
|
|
107
|
+
}
|
|
93
108
|
}
|
|
94
|
-
readStream(path, encoding) {
|
|
95
|
-
|
|
109
|
+
async readStream(path, encoding) {
|
|
110
|
+
const p = this.resolvePath(path);
|
|
111
|
+
// fail fast with a consistent error - otherwise the error surfaces asynchronously
|
|
112
|
+
// on the returned stream. NOTE: runtime read failures are still stream errors.
|
|
113
|
+
if (!(await this.exists(path))) {
|
|
114
|
+
throw new IOFail(`Cannot read file ${path}, file does not exists`);
|
|
115
|
+
}
|
|
116
|
+
return createReadStream(p, encoding ? { encoding } : {});
|
|
96
117
|
}
|
|
97
118
|
/**
|
|
98
119
|
* Write to file string or buffer
|
|
99
120
|
*/
|
|
100
121
|
async write(path, data, encoding) {
|
|
101
|
-
|
|
122
|
+
const p = this.resolvePath(path);
|
|
123
|
+
let fHandle;
|
|
124
|
+
try {
|
|
125
|
+
fHandle = await open(p, 'w');
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
throw new IOFail(`Cannot open file ${path} for writing`, err);
|
|
129
|
+
}
|
|
102
130
|
try {
|
|
103
|
-
fHandle = await open(this.resolvePath(path), 'w');
|
|
104
131
|
await fHandle.writeFile(data, { encoding });
|
|
132
|
+
// flush to disk so data is durable before success is reported
|
|
133
|
+
await fHandle.sync();
|
|
105
134
|
}
|
|
106
135
|
catch (err) {
|
|
107
136
|
throw new IOFail(`Cannot write to file ${path}`, err);
|
|
108
137
|
}
|
|
109
138
|
finally {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
await fHandle.close();
|
|
113
|
-
}
|
|
139
|
+
// close must ALWAYS run and must never mask the original error
|
|
140
|
+
await fHandle.close().catch(() => { });
|
|
114
141
|
}
|
|
115
142
|
}
|
|
116
143
|
async append(path, data, encoding) {
|
|
117
|
-
|
|
144
|
+
const p = this.resolvePath(path);
|
|
145
|
+
try {
|
|
146
|
+
await appendFile(p, data, encoding);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
throw new IOFail(`Cannot append to file ${path}`, err);
|
|
150
|
+
}
|
|
118
151
|
}
|
|
119
152
|
writeStream(path, rStream, encoding) {
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
153
|
+
const enc = typeof rStream === 'string' ? rStream : encoding;
|
|
154
|
+
const stream = createWriteStream(this.resolvePath(path), enc ? { encoding: enc } : {});
|
|
155
|
+
// pipe ANY readable stream, not only fs.ReadStream instances - the contract accepts
|
|
156
|
+
// NodeJS.ReadableStream ( PassThrough, http/s3 bodies etc. ), instanceof would
|
|
157
|
+
// silently skip those and stall the caller
|
|
158
|
+
if (rStream && typeof rStream !== 'string' && typeof rStream.pipe === 'function') {
|
|
159
|
+
// pipe() does NOT forward errors - without this, a failing source leaves the
|
|
160
|
+
// write stream open forever and the caller waiting for 'close' hangs
|
|
161
|
+
rStream.on('error', (err) => stream.destroy(err instanceof Error ? err : new IOFail(String(err))));
|
|
124
162
|
rStream.pipe(stream);
|
|
125
163
|
}
|
|
126
164
|
return Promise.resolve(stream);
|
|
@@ -139,7 +177,7 @@ let fsNative = class fsNative extends fs {
|
|
|
139
177
|
}
|
|
140
178
|
}
|
|
141
179
|
async dirExists(path) {
|
|
142
|
-
return this.
|
|
180
|
+
return this.isDir(path);
|
|
143
181
|
}
|
|
144
182
|
/**
|
|
145
183
|
* Copy file or dir to another location
|
|
@@ -157,10 +195,15 @@ let fsNative = class fsNative extends fs {
|
|
|
157
195
|
}
|
|
158
196
|
else {
|
|
159
197
|
const dPath = this.resolvePath(dest);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
198
|
+
try {
|
|
199
|
+
await cp(sPath, dPath, {
|
|
200
|
+
recursive: true,
|
|
201
|
+
force: true,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
throw new IOFail(`Cannot copy ${path} to ${dest}`, err);
|
|
206
|
+
}
|
|
164
207
|
}
|
|
165
208
|
}
|
|
166
209
|
/**
|
|
@@ -171,17 +214,45 @@ let fsNative = class fsNative extends fs {
|
|
|
171
214
|
if (dstFs) {
|
|
172
215
|
await dstFs.upload(oPath, newPath);
|
|
173
216
|
await this.rm(oldPath);
|
|
217
|
+
return;
|
|
174
218
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
219
|
+
const nPath = this.resolvePath(newPath);
|
|
220
|
+
// rename does not create missing destination directories - align with copy
|
|
221
|
+
// ( cp creates them ). Failures here are ignored, rename reports the real error.
|
|
222
|
+
await mkdir(dirname(nPath), { recursive: true }).catch(() => { });
|
|
223
|
+
try {
|
|
224
|
+
await this._rename(oPath, nPath);
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
// rename cannot cross devices / mounts ( eg. C: -> D:, docker volumes ) -
|
|
228
|
+
// fall back to copy + delete
|
|
229
|
+
if (err?.code === 'EXDEV') {
|
|
230
|
+
await cp(oPath, nPath, { recursive: true, force: true });
|
|
231
|
+
await this.rm(oldPath);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
throw new IOFail(`Cannot move ${oldPath} to ${newPath}`, err);
|
|
178
235
|
}
|
|
179
236
|
}
|
|
180
237
|
/**
|
|
181
238
|
* Change name of a file
|
|
182
239
|
*/
|
|
183
240
|
async rename(oldPath, newPath) {
|
|
184
|
-
|
|
241
|
+
const oPath = this.resolvePath(oldPath);
|
|
242
|
+
const nPath = this.resolvePath(newPath);
|
|
243
|
+
try {
|
|
244
|
+
await this._rename(oPath, nPath);
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
throw new IOFail(`Cannot rename ${oldPath} to ${newPath}`, err);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Native rename seam - extracted so move/rename logic ( eg. EXDEV fallback )
|
|
252
|
+
* can be tested without a real cross-device setup.
|
|
253
|
+
*/
|
|
254
|
+
_rename(oldPath, newPath) {
|
|
255
|
+
return rename(oldPath, newPath);
|
|
185
256
|
}
|
|
186
257
|
/**
|
|
187
258
|
*
|
|
@@ -200,24 +271,47 @@ let fsNative = class fsNative extends fs {
|
|
|
200
271
|
* @param path - directory to create
|
|
201
272
|
*/
|
|
202
273
|
async mkdir(path) {
|
|
203
|
-
|
|
274
|
+
const p = this.resolvePath(path);
|
|
275
|
+
try {
|
|
276
|
+
await mkdir(p, { recursive: true });
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
throw new IOFail(`Cannot create directory ${path}`, err);
|
|
280
|
+
}
|
|
204
281
|
}
|
|
205
282
|
/**
|
|
206
283
|
* Returns file statistics, not all fields may be accesible
|
|
207
284
|
*/
|
|
208
285
|
async stat(path) {
|
|
209
|
-
const
|
|
286
|
+
const p = this.resolvePath(path);
|
|
287
|
+
try {
|
|
288
|
+
return this.toStatEntry(await stat(p));
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
throw err instanceof IOFail ? err : new IOFail(`Cannot stat ${path}`, err);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Maps native fs.Stats onto IStat.
|
|
296
|
+
*
|
|
297
|
+
* birthtime is the creation time; ctime is inode CHANGE time and would reset
|
|
298
|
+
* file age on chmod / rename ( breaks temp fs cleanup ageing ). Defensive:
|
|
299
|
+
* some filesystems report epoch 0 when birthtime is unsupported - fall back
|
|
300
|
+
* to mtime so age-based logic does not treat files as infinitely old.
|
|
301
|
+
*/
|
|
302
|
+
toStatEntry(result) {
|
|
303
|
+
const birth = result.birthtime && result.birthtime.getTime() > 0 ? result.birthtime : result.mtime;
|
|
210
304
|
return {
|
|
211
305
|
IsDirectory: result.isDirectory(),
|
|
212
306
|
IsFile: result.isFile(),
|
|
213
|
-
CreationTime: DateTime.fromJSDate(
|
|
307
|
+
CreationTime: DateTime.fromJSDate(birth),
|
|
214
308
|
ModifiedTime: DateTime.fromJSDate(result.mtime),
|
|
215
309
|
AccessTime: DateTime.fromJSDate(result.atime),
|
|
216
310
|
Size: result.size,
|
|
217
311
|
};
|
|
218
312
|
}
|
|
219
|
-
tmppath() {
|
|
220
|
-
return join(this.Options.basePath, super.tmpname());
|
|
313
|
+
tmppath(ext) {
|
|
314
|
+
return join(this.Options.basePath, super.tmpname(ext));
|
|
221
315
|
}
|
|
222
316
|
/**
|
|
223
317
|
* List content of directory
|
|
@@ -225,18 +319,32 @@ let fsNative = class fsNative extends fs {
|
|
|
225
319
|
* @param path - path to directory
|
|
226
320
|
*/
|
|
227
321
|
async list(path) {
|
|
228
|
-
|
|
322
|
+
const p = this.resolvePath(path);
|
|
323
|
+
try {
|
|
324
|
+
return await readdir(p);
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
throw new IOFail(`Cannot list directory ${path}`, err);
|
|
328
|
+
}
|
|
229
329
|
}
|
|
230
330
|
async unzip(path, destPath, dstFs) {
|
|
331
|
+
const srcPath = this.resolvePath(path);
|
|
332
|
+
if (!(await this.exists(path))) {
|
|
333
|
+
throw new IOFail(`Cannot unzip, file ${path} does not exists`);
|
|
334
|
+
}
|
|
231
335
|
const dFs = dstFs ?? this;
|
|
232
336
|
const dst = dFs.resolvePath(destPath ?? dFs.tmpname());
|
|
233
337
|
return new Promise((resolve, reject) => {
|
|
234
|
-
createReadStream(
|
|
338
|
+
const rStream = createReadStream(srcPath);
|
|
339
|
+
// without this handler a source read error is an unhandled stream 'error'
|
|
340
|
+
// event and CRASHES the process instead of rejecting
|
|
341
|
+
rStream.on('error', (err) => reject(new IOFail(`Cannot read zip file ${path}`, err)));
|
|
342
|
+
rStream.pipe(unzipper
|
|
235
343
|
.Extract({
|
|
236
344
|
path: dst,
|
|
237
345
|
})
|
|
238
346
|
.on('close', () => resolve(dst))
|
|
239
|
-
.on('error', reject));
|
|
347
|
+
.on('error', (err) => reject(new IOFail(`Cannot unzip file ${path}`, err))));
|
|
240
348
|
});
|
|
241
349
|
}
|
|
242
350
|
async isDir(path) {
|
|
@@ -250,21 +358,14 @@ let fsNative = class fsNative extends fs {
|
|
|
250
358
|
}
|
|
251
359
|
async zip(path, dstFs, dstFile) {
|
|
252
360
|
const paths = toArray(path);
|
|
361
|
+
await this.assertSourcesExist(paths);
|
|
253
362
|
const fs = dstFs ?? (await DI.resolve('__file_provider__', ['fs-temp']));
|
|
254
363
|
const outFile = dstFile ?? `${fs.tmpname()}.zip`;
|
|
255
364
|
const wStream = await fs.writeStream(outFile);
|
|
256
365
|
const archive = archiver('zip');
|
|
257
366
|
// pipe archive data to the file
|
|
258
367
|
archive.pipe(wStream);
|
|
259
|
-
|
|
260
|
-
if (!Array.isArray(p)) {
|
|
261
|
-
if (await this.isDir(p)) {
|
|
262
|
-
archive.directory(this.resolvePath(p), false);
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
archive.file(this.resolvePath(Array.isArray(p) ? p[0] : p), { name: basename(Array.isArray(p) ? p[1] : p) });
|
|
267
|
-
}
|
|
368
|
+
await this.addZipEntries(archive, paths);
|
|
268
369
|
archive.on('entry', (entry) => {
|
|
269
370
|
this.Logger.trace(`Archiving file ${entry.name}, size: ${entry.stats?.size} into ${outFile}, fs: ${fs.Name}`);
|
|
270
371
|
});
|
|
@@ -283,32 +384,109 @@ let fsNative = class fsNative extends fs {
|
|
|
283
384
|
reject(new IOFail('Archiving error', err));
|
|
284
385
|
});
|
|
285
386
|
wStream.on('close', () => {
|
|
286
|
-
|
|
287
|
-
fs,
|
|
288
|
-
asFilePath: () => {
|
|
289
|
-
return outFile;
|
|
290
|
-
},
|
|
291
|
-
asStream: (encoding) => {
|
|
292
|
-
return createReadStream(outFile, {
|
|
293
|
-
encoding: encoding ?? 'binary',
|
|
294
|
-
});
|
|
295
|
-
},
|
|
296
|
-
asBase64: () => {
|
|
297
|
-
return readFileSync(outFile, { encoding: 'base64' });
|
|
298
|
-
},
|
|
299
|
-
unlink: async () => {
|
|
300
|
-
return await fs.rm(outFile);
|
|
301
|
-
},
|
|
302
|
-
};
|
|
303
|
-
resolve(result);
|
|
387
|
+
resolve(this.buildZipResult(fs, outFile));
|
|
304
388
|
});
|
|
305
|
-
|
|
389
|
+
// finalize() also reports failures via its returned promise - catch it so a
|
|
390
|
+
// failure is not an unhandled rejection on top of the 'error' event
|
|
391
|
+
archive.finalize().catch((err) => reject(new IOFail('Archiving error', err)));
|
|
306
392
|
});
|
|
307
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Source path of a zip entry. Entries are either a plain path or a
|
|
396
|
+
* [ sourcePath, entryName ] tuple.
|
|
397
|
+
*/
|
|
398
|
+
zipEntrySource(entry) {
|
|
399
|
+
return Array.isArray(entry) ? entry[0] : entry;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Name a zip entry is stored under. Defaults to the source path when no
|
|
403
|
+
* explicit entry name is given.
|
|
404
|
+
*/
|
|
405
|
+
zipEntryName(entry) {
|
|
406
|
+
return Array.isArray(entry) ? entry[1] : entry;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Fails fast with a single clear error listing every missing source, so a
|
|
410
|
+
* missing entry never yields a silently incomplete archive.
|
|
411
|
+
*/
|
|
412
|
+
async assertSourcesExist(paths) {
|
|
413
|
+
const missing = [];
|
|
414
|
+
for (const p of paths) {
|
|
415
|
+
const src = this.zipEntrySource(p);
|
|
416
|
+
if (!(await this.exists(src))) {
|
|
417
|
+
missing.push(src);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
if (missing.length > 0) {
|
|
421
|
+
throw new IOFail(`Cannot zip, source path(s) not found: ${missing.join(', ')}`);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Adds every source to the archive - a plain-path directory is added
|
|
426
|
+
* recursively, everything else as a single file stored under its entry name.
|
|
427
|
+
*/
|
|
428
|
+
async addZipEntries(archive, paths) {
|
|
429
|
+
for (const p of paths) {
|
|
430
|
+
if (!Array.isArray(p) && (await this.isDir(p))) {
|
|
431
|
+
archive.directory(this.resolvePath(p), false);
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
archive.file(this.resolvePath(this.zipEntrySource(p)), { name: basename(this.zipEntryName(p)) });
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Builds the {@link IZipResult} accessor object for a finished archive.
|
|
439
|
+
*
|
|
440
|
+
* The zip path is resolved against the DESTINATION fs ( outFile is relative
|
|
441
|
+
* to its base path ). Remote destinations may not support path resolving -
|
|
442
|
+
* fall back to the raw name so the accessors still work.
|
|
443
|
+
*/
|
|
444
|
+
buildZipResult(fs, outFile) {
|
|
445
|
+
let zipPath = outFile;
|
|
446
|
+
try {
|
|
447
|
+
zipPath = fs.resolvePath(outFile);
|
|
448
|
+
}
|
|
449
|
+
catch {
|
|
450
|
+
/* keep outFile as-is */
|
|
451
|
+
}
|
|
452
|
+
return {
|
|
453
|
+
fs,
|
|
454
|
+
asFilePath: () => zipPath,
|
|
455
|
+
asStream: (encoding) => createReadStream(zipPath, encoding ? { encoding } : {}),
|
|
456
|
+
asBase64: () => readFileSync(zipPath, { encoding: 'base64' }),
|
|
457
|
+
unlink: async () => await fs.rm(outFile),
|
|
458
|
+
};
|
|
459
|
+
}
|
|
308
460
|
resolvePath(path) {
|
|
309
|
-
if (!this.Options.basePath
|
|
461
|
+
if (!this.Options.basePath)
|
|
310
462
|
return path;
|
|
311
|
-
|
|
463
|
+
const base = this.Options.basePath;
|
|
464
|
+
if (isAbsolute(path)) {
|
|
465
|
+
// absolute path already inside basePath is returned as-is. Using
|
|
466
|
+
// path.relative instead of startsWith avoids false positives on sibling
|
|
467
|
+
// directories (eg. basePath `/data/files` and path `/data/files-2/x`)
|
|
468
|
+
// and is separator-safe across platforms.
|
|
469
|
+
const rel = relative(base, path);
|
|
470
|
+
if (rel === '' || (!rel.startsWith('..') && !isAbsolute(rel))) {
|
|
471
|
+
return path;
|
|
472
|
+
}
|
|
473
|
+
// fully-qualified paths ( drive letter / UNC on windows ) outside the
|
|
474
|
+
// sandbox are rejected. Rooted-but-driveless paths ( `/x`, `\x` ) are the
|
|
475
|
+
// established "fs root" idiom ( eg. list('/') ) and fall through to be
|
|
476
|
+
// resolved relative to basePath, exactly like join() always treated them.
|
|
477
|
+
const root = parse(path).root;
|
|
478
|
+
if (root !== '/' && root !== '\\') {
|
|
479
|
+
throw new IOFail(`Path ${path} is outside of filesystem base path ( ${base} ), fs: ${this.Options.name}`);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
// join normalizes `..` segments - verify the result still lives inside basePath
|
|
483
|
+
// so relative paths cannot escape the sandbox ( eg. ../../etc/passwd )
|
|
484
|
+
const joined = join(base, path);
|
|
485
|
+
const rel = relative(base, joined);
|
|
486
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
487
|
+
throw new IOFail(`Path ${path} escapes filesystem base path ( ${base} ), fs: ${this.Options.name}`);
|
|
488
|
+
}
|
|
489
|
+
return joined;
|
|
312
490
|
}
|
|
313
491
|
};
|
|
314
492
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"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"}
|