@lova/mem-vfs 0.1.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.
Files changed (58) hide show
  1. package/README.md +222 -0
  2. package/dist/core/vfs-directory.d.ts +35 -0
  3. package/dist/core/vfs-directory.d.ts.map +1 -0
  4. package/dist/core/vfs-directory.js +78 -0
  5. package/dist/core/vfs-directory.js.map +1 -0
  6. package/dist/core/vfs-file.d.ts +25 -0
  7. package/dist/core/vfs-file.d.ts.map +1 -0
  8. package/dist/core/vfs-file.js +60 -0
  9. package/dist/core/vfs-file.js.map +1 -0
  10. package/dist/core/vfs-node.d.ts +42 -0
  11. package/dist/core/vfs-node.d.ts.map +1 -0
  12. package/dist/core/vfs-node.js +69 -0
  13. package/dist/core/vfs-node.js.map +1 -0
  14. package/dist/core/vfs-symlink.d.ts +21 -0
  15. package/dist/core/vfs-symlink.d.ts.map +1 -0
  16. package/dist/core/vfs-symlink.js +41 -0
  17. package/dist/core/vfs-symlink.js.map +1 -0
  18. package/dist/core/vfs.d.ts +107 -0
  19. package/dist/core/vfs.d.ts.map +1 -0
  20. package/dist/core/vfs.js +775 -0
  21. package/dist/core/vfs.js.map +1 -0
  22. package/dist/errors/file-system-errors.d.ts +79 -0
  23. package/dist/errors/file-system-errors.d.ts.map +1 -0
  24. package/dist/errors/file-system-errors.js +127 -0
  25. package/dist/errors/file-system-errors.js.map +1 -0
  26. package/dist/index.d.ts +20 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +23 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/path/path-normalizer.d.ts +23 -0
  31. package/dist/path/path-normalizer.d.ts.map +1 -0
  32. package/dist/path/path-normalizer.js +159 -0
  33. package/dist/path/path-normalizer.js.map +1 -0
  34. package/dist/path/path-resolver.d.ts +31 -0
  35. package/dist/path/path-resolver.d.ts.map +1 -0
  36. package/dist/path/path-resolver.js +68 -0
  37. package/dist/path/path-resolver.js.map +1 -0
  38. package/dist/path/path-validator.d.ts +12 -0
  39. package/dist/path/path-validator.d.ts.map +1 -0
  40. package/dist/path/path-validator.js +87 -0
  41. package/dist/path/path-validator.js.map +1 -0
  42. package/dist/types/index.d.ts +171 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +29 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/watcher/debouncer.d.ts +31 -0
  47. package/dist/watcher/debouncer.d.ts.map +1 -0
  48. package/dist/watcher/debouncer.js +66 -0
  49. package/dist/watcher/debouncer.js.map +1 -0
  50. package/dist/watcher/watcher-events.d.ts +30 -0
  51. package/dist/watcher/watcher-events.d.ts.map +1 -0
  52. package/dist/watcher/watcher-events.js +52 -0
  53. package/dist/watcher/watcher-events.js.map +1 -0
  54. package/dist/watcher/watcher.d.ts +57 -0
  55. package/dist/watcher/watcher.d.ts.map +1 -0
  56. package/dist/watcher/watcher.js +194 -0
  57. package/dist/watcher/watcher.js.map +1 -0
  58. package/package.json +53 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * VirtualFileSystem 主類別
3
+ * 記憶體虛擬檔案系統實作
4
+ */
5
+ import type { DirectoryEntry, FileStats, GlobOptions, VFSOptions, AtomicWriteOptions, DirectoryJSON, SnapshotId, SnapshotInfo, FileDiff, WatchOptions } from '../types/index.js';
6
+ import { VFSWatcher } from '../watcher/watcher.js';
7
+ /** VirtualFileSystem 類別 */
8
+ export declare class VirtualFileSystem {
9
+ /** 根目錄 */
10
+ private readonly root;
11
+ /** 選項 */
12
+ private readonly options;
13
+ /** 快照儲存 */
14
+ private readonly snapshots;
15
+ /** 快照計數器 */
16
+ private snapshotCounter;
17
+ /** 監聽器列表 */
18
+ private readonly watchers;
19
+ constructor(options?: VFSOptions);
20
+ /** 讀取檔案 */
21
+ readFile(filePath: string, encoding?: BufferEncoding): Promise<string | Buffer>;
22
+ /** 寫入檔案 */
23
+ writeFile(filePath: string, content: string | Buffer, _options?: AtomicWriteOptions): Promise<void>;
24
+ /** 追加檔案內容 */
25
+ appendFile(filePath: string, content: string | Buffer): Promise<void>;
26
+ /** 刪除檔案 */
27
+ deleteFile(filePath: string): Promise<void>;
28
+ /** 建立目錄 */
29
+ createDirectory(dirPath: string, recursive?: boolean): Promise<void>;
30
+ /** 讀取目錄內容 */
31
+ readDirectory(dirPath: string): Promise<DirectoryEntry[]>;
32
+ /** 刪除目錄 */
33
+ deleteDirectory(dirPath: string, recursive?: boolean): Promise<void>;
34
+ /** 檢查路徑是否存在 */
35
+ exists(targetPath: string): Promise<boolean>;
36
+ /** 取得檔案統計 */
37
+ getStats(targetPath: string): Promise<FileStats>;
38
+ /** 取得符號連結統計(不跟隨連結) */
39
+ getLinkStats(targetPath: string): Promise<FileStats>;
40
+ /** 檢查是否為檔案 */
41
+ isFile(targetPath: string): Promise<boolean>;
42
+ /** 檢查是否為目錄 */
43
+ isDirectory(targetPath: string): Promise<boolean>;
44
+ /** 檢查是否為符號連結 */
45
+ isSymlink(targetPath: string): Promise<boolean>;
46
+ /** 複製檔案 */
47
+ copyFile(srcPath: string, destPath: string): Promise<void>;
48
+ /** 移動檔案 */
49
+ moveFile(srcPath: string, destPath: string): Promise<void>;
50
+ /** 建立符號連結 */
51
+ createSymlink(target: string, linkPath: string): Promise<void>;
52
+ /** 讀取符號連結目標 */
53
+ readSymlink(linkPath: string): Promise<string>;
54
+ /** Glob 搜尋 */
55
+ glob(pattern: string, options?: GlobOptions): Promise<string[]>;
56
+ /** 建立快照 */
57
+ createSnapshot(name?: string): SnapshotId;
58
+ /** 還原快照 */
59
+ restoreSnapshot(id: SnapshotId): void;
60
+ /** 取得快照資訊 */
61
+ getSnapshotInfo(id: SnapshotId): SnapshotInfo | undefined;
62
+ /** 列出所有快照 */
63
+ listSnapshots(): SnapshotInfo[];
64
+ /** 刪除快照 */
65
+ deleteSnapshot(id: SnapshotId): boolean;
66
+ /** 計算兩個快照之間的差異 */
67
+ diff(fromId?: SnapshotId, toId?: SnapshotId): FileDiff[];
68
+ /** 從 JSON 結構載入 */
69
+ fromJSON(structure: DirectoryJSON, basePath?: string): Promise<void>;
70
+ /** 從平面路徑 JSON 結構載入 */
71
+ private fromFlatJSON;
72
+ /** 從嵌套結構 JSON 載入 */
73
+ private fromNestedJSON;
74
+ /** 輸出為 JSON 結構 */
75
+ toJSON(basePath?: string, options?: {
76
+ flatten?: boolean;
77
+ }): DirectoryJSON;
78
+ /** 輸出為平面路徑 JSON 結構 */
79
+ private toFlatJSON;
80
+ /** 輸出為嵌套結構 JSON */
81
+ private toNestedJSON;
82
+ /** 重置檔案系統 */
83
+ reset(): void;
84
+ /** 監聽檔案變更 */
85
+ watch(watchPath: string, options?: WatchOptions): VFSWatcher;
86
+ /** 初始化 watcher 的已知路徑 */
87
+ private initializeWatcher;
88
+ /** 通知所有 watcher 檔案變更 */
89
+ private notifyWatchers;
90
+ /** 解析節點 */
91
+ private resolveNode;
92
+ /** 取得目錄節點 */
93
+ private getDirectory;
94
+ /** 取得目錄節點(可能為 null) */
95
+ private getDirectoryOrNull;
96
+ /** 將 glob pattern 轉換為正規表示式 */
97
+ private patternToRegex;
98
+ /** 檢查是否符合忽略規則 */
99
+ private matchesIgnore;
100
+ /** 計算節點數量 */
101
+ private countNodes;
102
+ /** 計算差異 */
103
+ private computeDiff;
104
+ }
105
+ /** 建立 VirtualFileSystem 實例 */
106
+ export declare function createVFS(options?: VFSOptions): VirtualFileSystem;
107
+ //# sourceMappingURL=vfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vfs.d.ts","sourceRoot":"","sources":["../../src/core/vfs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,YAAY,EACb,MAAM,mBAAmB,CAAC;AAa3B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAoBnD,2BAA2B;AAC3B,qBAAa,iBAAiB;IAC5B,UAAU;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IAEpC,SAAS;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAE/C,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0E;IAEpG,YAAY;IACZ,OAAO,CAAC,eAAe,CAAK;IAE5B,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAE3C,OAAO,CAAC,EAAE,UAAU;IAShC,WAAW;IACL,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAkBrF,WAAW;IACL,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCzG,aAAa;IACP,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3E,WAAW;IACL,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjD,WAAW;IACL,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CxE,aAAa;IACP,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsB/D,WAAW;IACL,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCxE,eAAe;IACT,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD,aAAa;IACP,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUtD,sBAAsB;IAChB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAU1D,cAAc;IACR,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD,cAAc;IACR,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASvD,gBAAgB;IACV,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarD,WAAW;IACL,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,WAAW;IACL,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,aAAa;IACP,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpE,eAAe;IACT,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBpD,cAAc;IACR,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0ErE,WAAW;IACX,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IAoBzC,WAAW;IACX,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,IAAI;IAmBrC,aAAa;IACb,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS;IAIzD,aAAa;IACb,aAAa,IAAI,YAAY,EAAE;IAI/B,WAAW;IACX,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAIvC,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,EAAE;IAsBxD,kBAAkB;IACZ,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvE,sBAAsB;YACR,YAAY;IAa1B,oBAAoB;YACN,cAAc;IAkB5B,kBAAkB;IAClB,MAAM,CAAC,QAAQ,SAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa;IAOtE,sBAAsB;IACtB,OAAO,CAAC,UAAU;IA0BlB,mBAAmB;IACnB,OAAO,CAAC,YAAY;IAwBpB,aAAa;IACb,KAAK,IAAI,IAAI;IAQb,aAAa;IACb,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU;IAsB5D,wBAAwB;YACV,iBAAiB;IAmB/B,wBAAwB;IACxB,OAAO,CAAC,cAAc;IA4BtB,WAAW;IACX,OAAO,CAAC,WAAW;IAyDnB,aAAa;IACb,OAAO,CAAC,YAAY;IAcpB,uBAAuB;IACvB,OAAO,CAAC,kBAAkB;IAQ1B,8BAA8B;IAC9B,OAAO,CAAC,cAAc;IAYtB,iBAAiB;IACjB,OAAO,CAAC,aAAa;IAUrB,aAAa;IACb,OAAO,CAAC,UAAU;IAqBlB,WAAW;IACX,OAAO,CAAC,WAAW;CA6EpB;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAEjE"}