@mrts/common-node 0.4.6 → 0.4.8

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.
@@ -0,0 +1,18 @@
1
+ import { Path, type PathArgument } from "@mrts/common-node/paths";
2
+ import { PathWalker } from "./PathWalker.js";
3
+ export type IterPathOptions = {
4
+ onlyFiles: boolean;
5
+ recursive: boolean;
6
+ filterPath: (p: Path) => boolean;
7
+ excludeDirectory?: (dirPath: Path) => boolean;
8
+ };
9
+ export declare const IterPathOptions_default: IterPathOptions;
10
+ export declare class IterPath implements AsyncIterable<Path>, Iterable<Path> {
11
+ base: Path;
12
+ options: IterPathOptions;
13
+ walker: PathWalker;
14
+ constructor(base: PathArgument, options: Partial<IterPathOptions>);
15
+ [Symbol.iterator](): Iterator<Path>;
16
+ [Symbol.asyncIterator](): AsyncIterator<Path, any, any>;
17
+ }
18
+ //# sourceMappingURL=IterPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IterPath.d.ts","sourceRoot":"","sources":["../../src/paths/IterPath.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,IAAI,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAKrC,CAAC;AAEF,qBAAa,QAAS,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;IAClE,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC;gBAEP,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;IAShE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IAe7B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;CAc/D"}
@@ -0,0 +1,51 @@
1
+ import { ensurePath, Path } from "@mrts/common-node/paths";
2
+ import { PathWalker } from "./PathWalker.js";
3
+ export const IterPathOptions_default = {
4
+ onlyFiles: true,
5
+ recursive: true,
6
+ filterPath: (_p) => true,
7
+ };
8
+ export class IterPath {
9
+ base;
10
+ options;
11
+ walker;
12
+ constructor(base, options) {
13
+ this.base = ensurePath(base);
14
+ this.options = { ...IterPathOptions_default, ...options };
15
+ this.walker = new PathWalker(this.base, {
16
+ excludeDirectory: this.options.excludeDirectory,
17
+ recursive: this.options.recursive,
18
+ });
19
+ }
20
+ *[Symbol.iterator]() {
21
+ console.log("iterator");
22
+ for (const e of this.walker) {
23
+ if (e.kind == "file") {
24
+ if (this.options.filterPath(e.path)) {
25
+ yield e.path;
26
+ }
27
+ }
28
+ else if (e.kind == "dirStart") {
29
+ if (!this.options.onlyFiles && this.options.filterPath(e.path)) {
30
+ yield e.path;
31
+ }
32
+ }
33
+ }
34
+ }
35
+ async *[Symbol.asyncIterator]() {
36
+ console.log("asyncIterator");
37
+ for await (const e of this.walker) {
38
+ if (e.kind == "file") {
39
+ if (this.options.filterPath(e.path)) {
40
+ yield e.path;
41
+ }
42
+ }
43
+ else if (e.kind == "dirStart") {
44
+ if (!this.options.onlyFiles && this.options.filterPath(e.path)) {
45
+ yield e.path;
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=IterPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IterPath.js","sourceRoot":"","sources":["../../src/paths/IterPath.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAqB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAS7C,MAAM,CAAC,MAAM,uBAAuB,GAAoB;IACtD,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI;CAEzB,CAAC;AAEF,MAAM,OAAO,QAAQ;IACnB,IAAI,CAAO;IACX,OAAO,CAAkB;IACzB,MAAM,CAAa;IAEnB,YAAY,IAAkB,EAAE,OAAiC;QAC/D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;YACtC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC/C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC,CAAC;IACL,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/D,MAAM,CAAC,CAAC,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/D,MAAM,CAAC,CAAC,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { Path, type PathArgument } from "./Path.js";
2
+ export type PathEvent = {
3
+ kind: "dirStart" | "dirEnd" | "file";
4
+ path: Path;
5
+ };
6
+ export type PathWalkerOptions = {
7
+ recursive: boolean;
8
+ excludeDirectory: (dirPath: Path) => boolean;
9
+ };
10
+ export declare class PathWalker implements AsyncIterable<PathEvent>, Iterable<PathEvent> {
11
+ private options;
12
+ private base;
13
+ constructor(base: PathArgument, options?: Partial<PathWalkerOptions>);
14
+ [Symbol.iterator](): Iterator<PathEvent, any, any>;
15
+ [Symbol.asyncIterator](): AsyncIterator<PathEvent, any, any>;
16
+ _walkSync(item: Path): Generator<PathEvent>;
17
+ _walk(item: Path): AsyncGenerator<PathEvent>;
18
+ }
19
+ //# sourceMappingURL=PathWalker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathWalker.d.ts","sourceRoot":"","sources":["../../src/paths/PathWalker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,IAAI,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEhE,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC;CAC9C,CAAC;AAEF,qBAAa,UACX,YAAW,aAAa,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC;IAExD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,IAAI,CAAO;gBAEP,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAQvE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;IAM5C,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;IAMlE,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;IAsBrC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC;CAsBpD"}
@@ -0,0 +1,70 @@
1
+ import fsp from "node:fs/promises";
2
+ import fs from "node:fs";
3
+ import { ensurePath, Path } from "./Path.js";
4
+ export class PathWalker {
5
+ options;
6
+ base;
7
+ constructor(base, options = {}) {
8
+ this.base = ensurePath(base);
9
+ this.options = {
10
+ recursive: options.recursive ?? true,
11
+ excludeDirectory: options.excludeDirectory ?? ((_p) => false),
12
+ };
13
+ }
14
+ *[Symbol.iterator]() {
15
+ for (const event of this._walkSync(this.base)) {
16
+ yield event;
17
+ }
18
+ }
19
+ async *[Symbol.asyncIterator]() {
20
+ for await (const event of this._walk(this.base)) {
21
+ yield event;
22
+ }
23
+ }
24
+ *_walkSync(item) {
25
+ const stats = item.statsSync();
26
+ if (stats == undefined) {
27
+ return;
28
+ }
29
+ if (stats.isFile()) {
30
+ yield { kind: "file", path: item };
31
+ }
32
+ else if (stats.isDirectory() && !this.options.excludeDirectory(item)) {
33
+ yield { kind: "dirStart", path: item };
34
+ if (this.options.recursive || item === this.base) {
35
+ for (const entry of fs.readdirSync(item.toString(), {
36
+ withFileTypes: true,
37
+ })) {
38
+ for (const e of this._walkSync(item.join(entry.name))) {
39
+ yield e;
40
+ }
41
+ }
42
+ }
43
+ yield { kind: "dirEnd", path: item };
44
+ }
45
+ }
46
+ async *_walk(item) {
47
+ const stats = await item.stats();
48
+ if (stats == undefined) {
49
+ return;
50
+ }
51
+ if (stats.isFile()) {
52
+ yield { kind: "file", path: item };
53
+ }
54
+ else if (stats.isDirectory() && !this.options.excludeDirectory(item)) {
55
+ yield { kind: "dirStart", path: item };
56
+ if (this.options.recursive || item === this.base) {
57
+ const entries = await fsp.readdir(item.toString(), {
58
+ withFileTypes: true,
59
+ });
60
+ for await (const entry of entries) {
61
+ for await (const e of this._walk(item.join(entry.name))) {
62
+ yield e;
63
+ }
64
+ }
65
+ }
66
+ yield { kind: "dirEnd", path: item };
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=PathWalker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathWalker.js","sourceRoot":"","sources":["../../src/paths/PathWalker.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export * from "./Path.js";
2
2
  export * from "./updateNeeded.js";
3
3
  export * from "./DataBuilder.js";
4
+ export * from "./PathWalker.js";
5
+ export * from "./IterPath.js";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from "./Path.js";
2
2
  export * from "./updateNeeded.js";
3
3
  export * from "./DataBuilder.js";
4
+ export * from "./PathWalker.js";
5
+ export * from "./IterPath.js";
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/paths/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrts/common-node",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "MRTS - common-node",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,8 +37,8 @@
37
37
  "publishConfig": {
38
38
  "access": "public"
39
39
  },
40
- "gitHead": "24f71dd0f729f8909740b58ce3c96ed16f54bb6d",
40
+ "gitHead": "079892120103ddb9c6ef6c6e939f75d023cdce62",
41
41
  "dependencies": {
42
- "@mrts/common": "^0.4.6"
42
+ "@mrts/common": "^0.4.7"
43
43
  }
44
44
  }