@auto-engineer/file-store 0.1.2 → 0.2.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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-format.log +15 -0
- package/.turbo/turbo-lint.log +5 -0
- package/.turbo/turbo-test.log +28 -19
- package/.turbo/turbo-type-check.log +5 -4
- package/CHANGELOG.md +12 -0
- package/dist/src/InMemoryFileStore.d.ts +15 -0
- package/dist/src/InMemoryFileStore.d.ts.map +1 -0
- package/dist/src/InMemoryFileStore.js +60 -0
- package/dist/src/InMemoryFileStore.js.map +1 -0
- package/dist/src/NodeFileStore.d.ts +12 -2
- package/dist/src/NodeFileStore.d.ts.map +1 -1
- package/dist/src/NodeFileStore.js +37 -6
- package/dist/src/NodeFileStore.js.map +1 -1
- package/dist/src/index.d.ts +0 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/path.d.ts +0 -2
- package/dist/src/path.d.ts.map +1 -1
- package/dist/src/path.js +0 -13
- package/dist/src/path.js.map +1 -1
- package/dist/src/types.d.ts +12 -8
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -30
- package/src/InMemoryFileStore.ts +68 -0
- package/src/NodeFileStore.ts +46 -14
- package/src/index.ts +0 -2
- package/src/path.ts +0 -14
- package/src/types.ts +9 -10
- package/tsconfig.json +1 -1
- package/src/FileWatcher.ts +0 -83
- package/src/LightningFileStore.specs.ts +0 -109
- package/src/LightningFileStore.ts +0 -126
- package/src/text-helpers.ts +0 -16
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @auto-engineer/file-store@0.
|
|
2
|
+
> @auto-engineer/file-store@0.2.0 build /Users/sam/WebstormProjects/top/auto-engineer/packages/file-store
|
|
3
3
|
> tsc && tsx ../../scripts/fix-esm-imports.ts
|
|
4
4
|
|
|
5
5
|
Fixed ESM imports in dist/
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
> @auto-engineer/file-store@0.2.0 format /Users/sam/WebstormProjects/top/auto-engineer/packages/file-store
|
|
4
|
+
> prettier --write "**/*.{js,ts,json,md,yml,yaml}" --ignore-path ../../.prettierignore
|
|
5
|
+
|
|
6
|
+
CHANGELOG.md[2K[1G[90mCHANGELOG.md[39m 18ms (unchanged)
|
|
7
|
+
package.json[2K[1G[90mpackage.json[39m 17ms (unchanged)
|
|
8
|
+
src/index.ts[2K[1G[90msrc/index.ts[39m 22ms (unchanged)
|
|
9
|
+
src/InMemoryFileStore.ts[2K[1G[90msrc/InMemoryFileStore.ts[39m 28ms (unchanged)
|
|
10
|
+
src/NodeFileStore.specs.ts[2K[1G[90msrc/NodeFileStore.specs.ts[39m 14ms (unchanged)
|
|
11
|
+
src/NodeFileStore.ts[2K[1G[90msrc/NodeFileStore.ts[39m 10ms (unchanged)
|
|
12
|
+
src/path.ts[2K[1G[90msrc/path.ts[39m 2ms (unchanged)
|
|
13
|
+
src/types.ts[2K[1G[90msrc/types.ts[39m 3ms (unchanged)
|
|
14
|
+
tsconfig.json[2K[1G[90mtsconfig.json[39m 2ms (unchanged)
|
|
15
|
+
tsconfig.test.json[2K[1G[90mtsconfig.test.json[39m 2ms (unchanged)
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
[2m
|
|
16
|
-
[
|
|
17
|
-
[2m
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
> @auto-engineer/file-store@0.2.0 test /Users/sam/WebstormProjects/top/auto-engineer/packages/file-store
|
|
4
|
+
> vitest run
|
|
5
|
+
|
|
6
|
+
[?25l
|
|
7
|
+
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/Users/sam/WebstormProjects/top/auto-engineer/packages/file-store[39m
|
|
8
|
+
|
|
9
|
+
[?2026h
|
|
10
|
+
[1m[33m ❯ [39m[22msrc/NodeFileStore.specs.ts[2m [queued][22m
|
|
11
|
+
|
|
12
|
+
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
13
|
+
[2m Tests [22m[1m[32m0 passed[39m[22m[90m (0)[39m
|
|
14
|
+
[2m Start at [22m17:54:35
|
|
15
|
+
[2m Duration [22m204ms
|
|
16
|
+
[?2026l[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m src/NodeFileStore.specs.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 32[2mms[22m[39m
|
|
17
|
+
[32m✓[39m NodeFileStore[2m > [22mwrites and reads a file (binary API)[32m 1[2mms[22m[39m
|
|
18
|
+
[32m✓[39m NodeFileStore[2m > [22mchecks file existence[32m 1[2mms[22m[39m
|
|
19
|
+
[32m✓[39m NodeFileStore[2m > [22msupports nested directories (mkdir -p style) for write/read[32m 10[2mms[22m[39m
|
|
20
|
+
[32m✓[39m NodeFileStore[2m > [22mlists directory tree[32m 11[2mms[22m[39m
|
|
21
|
+
[32m✓[39m NodeFileStore[2m > [22mnon-existent file yields read() = null and exists() = false[32m 1[2mms[22m[39m
|
|
22
|
+
|
|
23
|
+
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
24
|
+
[2m Tests [22m [1m[32m5 passed[39m[22m[90m (5)[39m
|
|
25
|
+
[2m Start at [22m 17:54:35
|
|
26
|
+
[2m Duration [22m 363ms[2m (transform 69ms, setup 0ms, collect 51ms, tests 32ms, environment 0ms, prepare 65ms)[22m
|
|
27
|
+
|
|
28
|
+
[?25h
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
> @auto-engineer/file-store@0.2.0 type-check /Users/sam/WebstormProjects/top/auto-engineer/packages/file-store
|
|
4
|
+
> tsc --noEmit
|
|
5
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IFileStore } from './types';
|
|
2
|
+
export declare class InMemoryFileStore implements IFileStore {
|
|
3
|
+
private files;
|
|
4
|
+
private norm;
|
|
5
|
+
write(path: string, data: Uint8Array): Promise<void>;
|
|
6
|
+
read(path: string): Promise<Uint8Array | null>;
|
|
7
|
+
remove(path: string): Promise<void>;
|
|
8
|
+
exists(path: string): Promise<boolean>;
|
|
9
|
+
listTree(root?: string): Promise<Array<{
|
|
10
|
+
path: string;
|
|
11
|
+
type: 'file' | 'dir';
|
|
12
|
+
size: number;
|
|
13
|
+
}>>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=InMemoryFileStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryFileStore.d.ts","sourceRoot":"","sources":["../../src/InMemoryFileStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,KAAK,CAAiC;IAE9C,OAAO,CAAC,IAAI;IAKN,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAK9C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStC,QAAQ,CAAC,IAAI,GAAE,MAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CA8BzG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export class InMemoryFileStore {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.files = new Map();
|
|
4
|
+
}
|
|
5
|
+
norm(p) {
|
|
6
|
+
if (!p)
|
|
7
|
+
return '/';
|
|
8
|
+
return p.startsWith('/') ? p : `/${p}`;
|
|
9
|
+
}
|
|
10
|
+
async write(path, data) {
|
|
11
|
+
this.files.set(this.norm(path), new Uint8Array(data));
|
|
12
|
+
}
|
|
13
|
+
async read(path) {
|
|
14
|
+
const buf = this.files.get(this.norm(path));
|
|
15
|
+
return buf ? new Uint8Array(buf) : null;
|
|
16
|
+
}
|
|
17
|
+
async remove(path) {
|
|
18
|
+
const prefix = this.norm(path);
|
|
19
|
+
for (const key of Array.from(this.files.keys())) {
|
|
20
|
+
if (key === prefix || key.startsWith(prefix.endsWith('/') ? prefix : prefix + '/')) {
|
|
21
|
+
this.files.delete(key);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async exists(path) {
|
|
26
|
+
const p = this.norm(path);
|
|
27
|
+
if (this.files.has(p))
|
|
28
|
+
return true;
|
|
29
|
+
for (const key of this.files.keys()) {
|
|
30
|
+
if (key.startsWith(p.endsWith('/') ? p : p + '/'))
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
async listTree(root = '/') {
|
|
36
|
+
const r = this.norm(root);
|
|
37
|
+
const files = Array.from(this.files.entries()).filter(([p]) => p === r || p.startsWith(r.endsWith('/') ? r : r + '/'));
|
|
38
|
+
const dirs = new Set(['/']);
|
|
39
|
+
for (const [p] of files) {
|
|
40
|
+
const parts = p.split('/').filter(Boolean);
|
|
41
|
+
let cur = '';
|
|
42
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
43
|
+
cur += '/' + parts[i];
|
|
44
|
+
dirs.add(cur || '/');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const d of Array.from(dirs)) {
|
|
49
|
+
if (d === '/' || d.startsWith(r.endsWith('/') ? r : r + '/')) {
|
|
50
|
+
out.push({ path: d, type: 'dir', size: 0 });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (const [p, buf] of files) {
|
|
54
|
+
out.push({ path: p, type: 'file', size: buf.byteLength });
|
|
55
|
+
}
|
|
56
|
+
out.sort((a, b) => (a.type === b.type ? a.path.localeCompare(b.path) : a.type === 'dir' ? -1 : 1));
|
|
57
|
+
return out;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=InMemoryFileStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryFileStore.js","sourceRoot":"","sources":["../../src/InMemoryFileStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare class NodeFileStore implements
|
|
1
|
+
import type { IExtendedFileStore } from './types';
|
|
2
|
+
export declare class NodeFileStore implements IExtendedFileStore {
|
|
3
3
|
write(p: string, data: Uint8Array): Promise<void>;
|
|
4
4
|
read(p: string): Promise<Uint8Array | null>;
|
|
5
5
|
remove(p: string): Promise<void>;
|
|
@@ -9,5 +9,15 @@ export declare class NodeFileStore implements IFileStore {
|
|
|
9
9
|
type: 'file' | 'dir';
|
|
10
10
|
size: number;
|
|
11
11
|
}>>;
|
|
12
|
+
ensureDir(p: string): Promise<void>;
|
|
13
|
+
readdir(p: string): Promise<Array<{
|
|
14
|
+
name: string;
|
|
15
|
+
type: 'file' | 'dir';
|
|
16
|
+
}>>;
|
|
17
|
+
readText(p: string): Promise<string | null>;
|
|
18
|
+
writeText(p: string, text: string): Promise<void>;
|
|
19
|
+
join(...parts: string[]): string;
|
|
20
|
+
dirname(p: string): string;
|
|
21
|
+
fromHere(relative: string, base?: string): string;
|
|
12
22
|
}
|
|
13
23
|
//# sourceMappingURL=NodeFileStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeFileStore.d.ts","sourceRoot":"","sources":["../../src/NodeFileStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NodeFileStore.d.ts","sourceRoot":"","sources":["../../src/NodeFileStore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAQlD,qBAAa,aAAc,YAAW,kBAAkB;IAChD,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAU3C,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnC,QAAQ,CAAC,IAAI,GAAE,MAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA0BlG,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC,CAAC;IAM1E,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS3C,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvD,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAKhC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAK1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;CAIlD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { toPosix } from './path.js';
|
|
2
1
|
import * as fsp from 'fs/promises';
|
|
3
2
|
import * as path from 'path';
|
|
4
3
|
import * as url from 'url';
|
|
4
|
+
import { toPosix } from './path.js';
|
|
5
5
|
const toAbs = (p) => {
|
|
6
6
|
if (!p)
|
|
7
7
|
return process.cwd();
|
|
@@ -56,11 +56,7 @@ export class NodeFileStore {
|
|
|
56
56
|
}
|
|
57
57
|
else {
|
|
58
58
|
const st = await fsp.stat(abs).catch(() => null);
|
|
59
|
-
out.push({
|
|
60
|
-
path: toPosix(abs),
|
|
61
|
-
type: 'file',
|
|
62
|
-
size: st?.size ?? 0,
|
|
63
|
-
});
|
|
59
|
+
out.push({ path: toPosix(abs), type: 'file', size: st?.size ?? 0 });
|
|
64
60
|
}
|
|
65
61
|
}
|
|
66
62
|
};
|
|
@@ -69,5 +65,40 @@ export class NodeFileStore {
|
|
|
69
65
|
out.sort((a, b) => (a.type === b.type ? a.path.localeCompare(b.path) : a.type === 'dir' ? -1 : 1));
|
|
70
66
|
return out;
|
|
71
67
|
}
|
|
68
|
+
async ensureDir(p) {
|
|
69
|
+
const abs = toAbs(p);
|
|
70
|
+
await fsp.mkdir(abs, { recursive: true });
|
|
71
|
+
}
|
|
72
|
+
async readdir(p) {
|
|
73
|
+
const abs = toAbs(p);
|
|
74
|
+
const entries = await fsp.readdir(abs, { withFileTypes: true });
|
|
75
|
+
return entries.map((e) => ({ name: e.name, type: e.isDirectory() ? 'dir' : 'file' }));
|
|
76
|
+
}
|
|
77
|
+
async readText(p) {
|
|
78
|
+
const abs = toAbs(p);
|
|
79
|
+
try {
|
|
80
|
+
return await fsp.readFile(abs, 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async writeText(p, text) {
|
|
87
|
+
const abs = toAbs(p);
|
|
88
|
+
await fsp.mkdir(path.dirname(abs), { recursive: true });
|
|
89
|
+
await fsp.writeFile(abs, text, 'utf-8');
|
|
90
|
+
}
|
|
91
|
+
join(...parts) {
|
|
92
|
+
const joined = path.join(...parts.map((p) => (p.startsWith('file://') ? url.fileURLToPath(p) : p)));
|
|
93
|
+
return toPosix(joined);
|
|
94
|
+
}
|
|
95
|
+
dirname(p) {
|
|
96
|
+
const abs = toAbs(p);
|
|
97
|
+
return toPosix(path.dirname(abs));
|
|
98
|
+
}
|
|
99
|
+
fromHere(relative, base) {
|
|
100
|
+
const b = base?.startsWith('file://') === true ? url.fileURLToPath(base) : (base ?? __dirname);
|
|
101
|
+
return toPosix(path.resolve(b, relative));
|
|
102
|
+
}
|
|
72
103
|
}
|
|
73
104
|
//# sourceMappingURL=NodeFileStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeFileStore.js","sourceRoot":"","sources":["../../src/NodeFileStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NodeFileStore.js","sourceRoot":"","sources":["../../src/NodeFileStore.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/src/path.d.ts
CHANGED
package/dist/src/path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,MAAO,MAAM,WAA0B,CAAC
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,MAAO,MAAM,WAA0B,CAAC"}
|
package/dist/src/path.js
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
1
|
export const toPosix = (p) => p.replace(/\\/g, '/');
|
|
2
|
-
export const dirname = (p) => {
|
|
3
|
-
const n = toPosix(p);
|
|
4
|
-
const i = n.lastIndexOf('/');
|
|
5
|
-
return i <= 0 ? '/' : n.slice(0, i);
|
|
6
|
-
};
|
|
7
|
-
export const join = (...parts) => {
|
|
8
|
-
const filtered = parts.filter(Boolean);
|
|
9
|
-
if (!filtered.length)
|
|
10
|
-
return '/';
|
|
11
|
-
const absolute = filtered[0].startsWith('/');
|
|
12
|
-
const joined = toPosix(filtered.map((s) => s.replace(/^\/+|\/+$/g, '')).join('/'));
|
|
13
|
-
return absolute ? `/${joined}` : joined;
|
|
14
|
-
};
|
|
15
2
|
//# sourceMappingURL=path.js.map
|
package/dist/src/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -9,12 +9,16 @@ export interface IFileStore {
|
|
|
9
9
|
}>>;
|
|
10
10
|
remove(path: string): Promise<void>;
|
|
11
11
|
}
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
export interface IExtendedFileStore extends IFileStore {
|
|
13
|
+
ensureDir(path: string): Promise<void>;
|
|
14
|
+
readdir(path: string): Promise<Array<{
|
|
15
|
+
name: string;
|
|
16
|
+
type: 'file' | 'dir';
|
|
17
|
+
}>>;
|
|
18
|
+
readText(path: string): Promise<string | null>;
|
|
19
|
+
writeText(path: string, text: string): Promise<void>;
|
|
20
|
+
join(...parts: string[]): string;
|
|
21
|
+
dirname(p: string): string;
|
|
22
|
+
fromHere(relative: string, base?: string): string;
|
|
23
|
+
}
|
|
20
24
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnD"}
|