@depup/jsonjoy.com__fs-node-to-fsa 4.57.1-depup.0 → 4.66.0-depup.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/README.md CHANGED
@@ -13,8 +13,8 @@ npm install @depup/jsonjoy.com__fs-node-to-fsa
13
13
 
14
14
  | Field | Value |
15
15
  |-------|-------|
16
- | Original | [@jsonjoy.com/fs-node-to-fsa](https://www.npmjs.com/package/@jsonjoy.com/fs-node-to-fsa) @ 4.57.1 |
17
- | Processed | 2026-03-21 |
16
+ | Original | [@jsonjoy.com/fs-node-to-fsa](https://www.npmjs.com/package/@jsonjoy.com/fs-node-to-fsa) @ 4.66.0 |
17
+ | Processed | 2026-08-03 |
18
18
  | Smoke test | passed |
19
19
  | Deps updated | 0 |
20
20
 
package/changes.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "bumped": {},
3
- "timestamp": "2026-03-21T20:08:05.779Z",
3
+ "timestamp": "2026-08-03T16:49:39.441Z",
4
4
  "totalUpdated": 0
5
5
  }
@@ -0,0 +1,31 @@
1
+ import type { IFileSystemChangeRecord, IFileSystemDirectoryHandle, IFileSystemFileHandle, IFileSystemHandle, IFileSystemObserver, IFileSystemObserverObserveOptions, IFileSystemSyncAccessHandle } from '@jsonjoy.com/fs-fsa';
2
+ import type { FsCallbackApi } from '@jsonjoy.com/fs-node-utils';
3
+ import type * as misc from '@jsonjoy.com/fs-node-utils/lib/types/misc';
4
+ import type { NodeFsaContext, NodeFsaFs } from './types';
5
+ export type NodeFsaWatchFs = NodeFsaFs & Pick<FsCallbackApi, 'watch'>;
6
+ /**
7
+ * A `FileSystemObserver` implementation backed by the underlying Node.js-like
8
+ * `fs.watch`. This is a best-effort profile, per the File System Observer
9
+ * proposal's allowance for local file systems: `rename` events are classified
10
+ * into `"appeared"`/`"disappeared"` records by stat-ing the path, no
11
+ * `"moved"` records are ever produced (pairing renames is unreliable — same
12
+ * as Chrome on Windows), and a backend watcher error surfaces as a terminal
13
+ * `"errored"` record for that observation.
14
+ *
15
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemObserver
16
+ */
17
+ export declare class NodeFileSystemObserver implements IFileSystemObserver {
18
+ protected readonly fs: NodeFsaWatchFs;
19
+ protected readonly callback: (records: IFileSystemChangeRecord[], observer: IFileSystemObserver) => void;
20
+ protected readonly _observations: Map<IFileSystemSyncAccessHandle | IFileSystemFileHandle | IFileSystemDirectoryHandle, misc.IFSWatcher>;
21
+ protected _records: IFileSystemChangeRecord[];
22
+ protected _flushScheduled: boolean;
23
+ constructor(fs: NodeFsaWatchFs, callback: (records: IFileSystemChangeRecord[], observer: IFileSystemObserver) => void);
24
+ observe(handle: IFileSystemFileHandle | IFileSystemDirectoryHandle | IFileSystemSyncAccessHandle, options?: IFileSystemObserverObserveOptions): Promise<void>;
25
+ unobserve(handle: IFileSystemFileHandle | IFileSystemDirectoryHandle | IFileSystemSyncAccessHandle): void;
26
+ /** Disconnect and stop all observations. */
27
+ disconnect(): void;
28
+ protected onEvent(root: IFileSystemFileHandle | IFileSystemDirectoryHandle | IFileSystemSyncAccessHandle, watcher: misc.IFSWatcher, rootPath: string, isDirectory: boolean, ctx: NodeFsaContext, eventType: string, filename: string): Promise<void>;
29
+ protected _handle(absolute: string, stats: misc.IStats, ctx: NodeFsaContext): IFileSystemHandle;
30
+ protected _enqueue(record: IFileSystemChangeRecord): void;
31
+ }
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeFileSystemObserver = void 0;
4
+ const fs_fsa_1 = require("@jsonjoy.com/fs-fsa");
5
+ const NodeFileSystemDirectoryHandle_1 = require("./NodeFileSystemDirectoryHandle");
6
+ const NodeFileSystemFileHandle_1 = require("./NodeFileSystemFileHandle");
7
+ const util_1 = require("./util");
8
+ /**
9
+ * A `FileSystemObserver` implementation backed by the underlying Node.js-like
10
+ * `fs.watch`. This is a best-effort profile, per the File System Observer
11
+ * proposal's allowance for local file systems: `rename` events are classified
12
+ * into `"appeared"`/`"disappeared"` records by stat-ing the path, no
13
+ * `"moved"` records are ever produced (pairing renames is unreliable — same
14
+ * as Chrome on Windows), and a backend watcher error surfaces as a terminal
15
+ * `"errored"` record for that observation.
16
+ *
17
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemObserver
18
+ */
19
+ class NodeFileSystemObserver {
20
+ constructor(fs, callback) {
21
+ this.fs = fs;
22
+ this.callback = callback;
23
+ this._observations = new Map();
24
+ this._records = [];
25
+ this._flushScheduled = false;
26
+ }
27
+ async observe(handle, options) {
28
+ const path = handle.__path;
29
+ const ctx = (handle.ctx ?? handle._ctx);
30
+ if (typeof path !== 'string' || !ctx || (ctx.separator !== '/' && ctx.separator !== '\\'))
31
+ throw new TypeError("Failed to execute 'observe' on 'FileSystemObserver': Invalid handle.");
32
+ const isDirectory = handle.kind === 'directory';
33
+ const last = path[path.length - 1];
34
+ const isTrimmableSeparator = path.length > 1 && (last === '/' || last === '\\') && path[path.length - 2] !== ':';
35
+ const target = isTrimmableSeparator ? path.slice(0, -1) : path;
36
+ try {
37
+ await this.fs.promises.stat(target);
38
+ }
39
+ catch (error) {
40
+ if (error && typeof error === 'object') {
41
+ switch (error.code) {
42
+ case 'ENOENT':
43
+ throw (0, util_1.newNotFoundError)();
44
+ case 'EACCES':
45
+ case 'EPERM':
46
+ throw (0, util_1.newNotAllowedError)();
47
+ }
48
+ }
49
+ throw error;
50
+ }
51
+ const recursive = isDirectory && !!options?.recursive;
52
+ const watcher = this.fs.watch(target, { recursive }, (eventType, filename) => {
53
+ void this.onEvent(handle, watcher, target, isDirectory, ctx, eventType, filename ? String(filename) : '');
54
+ });
55
+ watcher.on('error', () => {
56
+ if (this._observations.get(handle) !== watcher)
57
+ return;
58
+ this._observations.delete(handle);
59
+ watcher.close();
60
+ this._enqueue(new fs_fsa_1.FileSystemChangeRecord(handle, 'errored', null, []));
61
+ });
62
+ this._observations.get(handle)?.close();
63
+ this._observations.set(handle, watcher);
64
+ }
65
+ unobserve(handle) {
66
+ const watcher = this._observations.get(handle);
67
+ if (!watcher)
68
+ return;
69
+ watcher.close();
70
+ this._observations.delete(handle);
71
+ }
72
+ /** Disconnect and stop all observations. */
73
+ disconnect() {
74
+ for (const watcher of this._observations.values())
75
+ watcher.close();
76
+ this._observations.clear();
77
+ this._records = [];
78
+ }
79
+ async onEvent(root, watcher, rootPath, isDirectory, ctx, eventType, filename) {
80
+ const sep = ctx.separator;
81
+ const steps = isDirectory && filename ? filename.split(sep) : [];
82
+ const absolute = isDirectory ? (rootPath === sep ? rootPath + filename : rootPath + sep + filename) : rootPath;
83
+ let stats = null;
84
+ try {
85
+ stats = (await this.fs.promises.stat(absolute));
86
+ }
87
+ catch {
88
+ stats = null;
89
+ }
90
+ if (this._observations.get(root) !== watcher)
91
+ return;
92
+ if (eventType === 'rename') {
93
+ if (stats) {
94
+ this._enqueue(new fs_fsa_1.FileSystemChangeRecord(root, 'appeared', this._handle(absolute, stats, ctx), steps));
95
+ }
96
+ else {
97
+ this._enqueue(new fs_fsa_1.FileSystemChangeRecord(root, 'disappeared', null, steps));
98
+ }
99
+ }
100
+ else if (stats) {
101
+ this._enqueue(new fs_fsa_1.FileSystemChangeRecord(root, 'modified', this._handle(absolute, stats, ctx), steps));
102
+ }
103
+ }
104
+ _handle(absolute, stats, ctx) {
105
+ return stats.isDirectory()
106
+ ? new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(this.fs, absolute, ctx)
107
+ : new NodeFileSystemFileHandle_1.NodeFileSystemFileHandle(this.fs, absolute, ctx);
108
+ }
109
+ _enqueue(record) {
110
+ this._records.push(record);
111
+ if (this._flushScheduled)
112
+ return;
113
+ this._flushScheduled = true;
114
+ queueMicrotask(() => {
115
+ this._flushScheduled = false;
116
+ const records = this._records;
117
+ this._records = [];
118
+ if (records.length)
119
+ this.callback(records, this);
120
+ });
121
+ }
122
+ }
123
+ exports.NodeFileSystemObserver = NodeFileSystemObserver;
124
+ //# sourceMappingURL=NodeFileSystemObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFileSystemObserver.js","sourceRoot":"","sources":["../src/NodeFileSystemObserver.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,10 @@ import type { NodeFsaContext, NodeFsaFs } from './types';
5
5
  */
6
6
  export declare class NodeFileSystemSyncAccessHandle implements IFileSystemSyncAccessHandle {
7
7
  protected readonly fs: NodeFsaFs;
8
- protected readonly path: string;
8
+ readonly __path: string;
9
9
  protected readonly ctx: NodeFsaContext;
10
10
  protected readonly fd: number;
11
- constructor(fs: NodeFsaFs, path: string, ctx: NodeFsaContext);
11
+ constructor(fs: NodeFsaFs, __path: string, ctx: NodeFsaContext);
12
12
  /**
13
13
  * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle/close
14
14
  */
@@ -7,12 +7,12 @@ const buffer_1 = require("@jsonjoy.com/fs-node-builtins/lib/internal/buffer");
7
7
  * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle
8
8
  */
9
9
  class NodeFileSystemSyncAccessHandle {
10
- constructor(fs, path, ctx) {
10
+ constructor(fs, __path, ctx) {
11
11
  this.fs = fs;
12
- this.path = path;
12
+ this.__path = __path;
13
13
  this.ctx = ctx;
14
- this.fd = fs.openSync(path, 'r+');
15
- this.ctx.locks.acquireLock(this.path);
14
+ this.fd = fs.openSync(__path, 'r+');
15
+ this.ctx.locks.acquireLock(this.__path);
16
16
  }
17
17
  /**
18
18
  * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle/close
@@ -20,7 +20,7 @@ class NodeFileSystemSyncAccessHandle {
20
20
  async close() {
21
21
  (0, util_1.assertCanWrite)(this.ctx.mode);
22
22
  this.fs.closeSync(this.fd);
23
- this.ctx.locks.releaseLock(this.path);
23
+ this.ctx.locks.releaseLock(this.__path);
24
24
  }
25
25
  /**
26
26
  * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle/flush
@@ -33,7 +33,7 @@ class NodeFileSystemSyncAccessHandle {
33
33
  * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle/getSize
34
34
  */
35
35
  async getSize() {
36
- return this.fs.statSync(this.path).size;
36
+ return this.fs.statSync(this.__path).size;
37
37
  }
38
38
  /**
39
39
  * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle/read
@@ -1 +1 @@
1
- {"version":3,"file":"NodeFileSystemSyncAccessHandle.js","sourceRoot":"","sources":["../src/NodeFileSystemSyncAccessHandle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NodeFileSystemSyncAccessHandle.js","sourceRoot":"","sources":["../src/NodeFileSystemSyncAccessHandle.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export * from './types';
4
4
  export * from './NodeFileSystemHandle';
5
5
  export * from './NodeFileSystemDirectoryHandle';
6
6
  export * from './NodeFileSystemFileHandle';
7
+ export * from './NodeFileSystemObserver';
7
8
  export declare const nodeToFsa: (fs: NodeFsaFs, dirPath: string, ctx?: Partial<NodeFsaContext>) => NodeFileSystemDirectoryHandle;
package/lib/index.js CHANGED
@@ -7,6 +7,7 @@ tslib_1.__exportStar(require("./types"), exports);
7
7
  tslib_1.__exportStar(require("./NodeFileSystemHandle"), exports);
8
8
  tslib_1.__exportStar(require("./NodeFileSystemDirectoryHandle"), exports);
9
9
  tslib_1.__exportStar(require("./NodeFileSystemFileHandle"), exports);
10
+ tslib_1.__exportStar(require("./NodeFileSystemObserver"), exports);
10
11
  const nodeToFsa = (fs, dirPath, ctx) => {
11
12
  return new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, dirPath, ctx);
12
13
  };
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,mFAAgF;AAGhF,kDAAwB;AACxB,iEAAuC;AACvC,0EAAgD;AAChD,qEAA2C;AAEpC,MAAM,SAAS,GAAG,CACvB,EAAa,EACb,OAAe,EACf,GAA6B,EACE,EAAE;IACjC,OAAO,IAAI,6DAA6B,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,mFAAgF;AAGhF,kDAAwB;AACxB,iEAAuC;AACvC,0EAAgD;AAChD,qEAA2C;AAC3C,mEAAyC;AAElC,MAAM,SAAS,GAAG,CACvB,EAAa,EACb,OAAe,EACf,GAA6B,EACE,EAAE;IACjC,OAAO,IAAI,6DAA6B,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@depup/jsonjoy.com__fs-node-to-fsa",
3
- "version": "4.57.1-depup.0",
3
+ "version": "4.66.0-depup.0",
4
4
  "description": "Adapter to convert Node.js fs API to File System Access API (with updated dependencies)",
5
5
  "author": {
6
6
  "name": "streamich",
@@ -70,11 +70,11 @@
70
70
  ]
71
71
  },
72
72
  "devDependencies": {
73
- "@jsonjoy.com/fs-node": "4.57.1",
73
+ "@jsonjoy.com/fs-node": "4.66.0",
74
74
  "@types/jest": "^29.0.0",
75
75
  "@types/node": "^20.0.0",
76
76
  "jest": "^29.0.0",
77
- "memfs": "4.57.1",
77
+ "memfs": "4.66.0",
78
78
  "rimraf": "^5.0.0",
79
79
  "ts-jest": "^29.4.2",
80
80
  "ts-node": "^10.9.2",
@@ -84,16 +84,16 @@
84
84
  "tslib": "2"
85
85
  },
86
86
  "dependencies": {
87
- "@jsonjoy.com/fs-fsa": "4.57.1",
88
- "@jsonjoy.com/fs-node-builtins": "4.57.1",
89
- "@jsonjoy.com/fs-node-utils": "4.57.1"
87
+ "@jsonjoy.com/fs-fsa": "4.66.0",
88
+ "@jsonjoy.com/fs-node-builtins": "4.66.0",
89
+ "@jsonjoy.com/fs-node-utils": "4.66.0"
90
90
  },
91
91
  "depup": {
92
92
  "changes": {},
93
93
  "depsUpdated": 0,
94
94
  "originalPackage": "@jsonjoy.com/fs-node-to-fsa",
95
- "originalVersion": "4.57.1",
96
- "processedAt": "2026-03-21T20:08:13.297Z",
95
+ "originalVersion": "4.66.0",
96
+ "processedAt": "2026-08-03T16:49:48.228Z",
97
97
  "smokeTest": "passed"
98
98
  }
99
99
  }