memfs 4.24.0 → 4.25.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 (46) hide show
  1. package/lib/constants.d.ts +4 -0
  2. package/lib/constants.js +2 -1
  3. package/lib/constants.js.map +1 -1
  4. package/lib/core/File.d.ts +7 -13
  5. package/lib/core/File.js +2 -0
  6. package/lib/core/File.js.map +1 -1
  7. package/lib/core/Link.d.ts +5 -6
  8. package/lib/core/Link.js +4 -13
  9. package/lib/core/Link.js.map +1 -1
  10. package/lib/core/Superblock.d.ts +89 -0
  11. package/lib/core/Superblock.js +653 -0
  12. package/lib/core/Superblock.js.map +1 -0
  13. package/lib/core/constants.d.ts +15 -0
  14. package/lib/core/constants.js +3 -0
  15. package/lib/core/constants.js.map +1 -0
  16. package/lib/core/index.d.ts +6 -0
  17. package/lib/core/index.js +15 -0
  18. package/lib/core/index.js.map +1 -0
  19. package/lib/core/json.d.ts +8 -0
  20. package/lib/core/json.js +32 -0
  21. package/lib/core/json.js.map +1 -0
  22. package/lib/core/types.d.ts +2 -0
  23. package/lib/core/types.js +3 -0
  24. package/lib/core/types.js.map +1 -0
  25. package/lib/core/util.d.ts +11 -0
  26. package/lib/core/util.js +72 -0
  27. package/lib/core/util.js.map +1 -0
  28. package/lib/fsa-to-node/FsaNodeCore.js +2 -1
  29. package/lib/fsa-to-node/FsaNodeCore.js.map +1 -1
  30. package/lib/fsa-to-node/FsaNodeFs.js +13 -12
  31. package/lib/fsa-to-node/FsaNodeFs.js.map +1 -1
  32. package/lib/index.d.ts +2 -1
  33. package/lib/index.js.map +1 -1
  34. package/lib/node/util.d.ts +2 -7
  35. package/lib/node/util.js +6 -53
  36. package/lib/node/util.js.map +1 -1
  37. package/lib/node.d.ts +1 -1
  38. package/lib/node.js +1 -2
  39. package/lib/node.js.map +1 -1
  40. package/lib/volume.d.ts +233 -255
  41. package/lib/volume.js +772 -1506
  42. package/lib/volume.js.map +1 -1
  43. package/package.json +1 -1
  44. package/lib/volume-localstorage.d.ts +0 -14
  45. package/lib/volume-localstorage.js +0 -74
  46. package/lib/volume-localstorage.js.map +0 -1
@@ -1,3 +1,7 @@
1
+ export declare const SEP = "/";
2
+ export declare const enum PATH {
3
+ SEP = "/"
4
+ }
1
5
  export declare const constants: {
2
6
  O_RDONLY: number;
3
7
  O_WRONLY: number;
package/lib/constants.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.constants = void 0;
3
+ exports.constants = exports.SEP = void 0;
4
+ exports.SEP = '/';
4
5
  exports.constants = {
5
6
  O_RDONLY: 0,
6
7
  O_WRONLY: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG;IACvB,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IAEV,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IAEP,iBAAiB,EAAE,CAAC;IACpB,sBAAsB,EAAE,CAAC;IAEzB,mBAAmB,EAAE,CAAC;IACtB,sBAAsB,EAAE,CAAC;IACzB,4BAA4B,EAAE,CAAC;IAC/B,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,sBAAsB,EAAE,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG,GAAG,CAAC;AAMV,QAAA,SAAS,GAAG;IACvB,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IAEV,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IAEP,iBAAiB,EAAE,CAAC;IACpB,sBAAsB,EAAE,CAAC;IAEzB,mBAAmB,EAAE,CAAC;IACtB,sBAAsB,EAAE,CAAC;IACzB,4BAA4B,EAAE,CAAC;IAC/B,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,sBAAsB,EAAE,CAAC;CAC1B,CAAC"}
@@ -1,27 +1,21 @@
1
1
  import Stats from '../Stats';
2
- import { Link } from './Link';
3
- import { Node } from './Node';
2
+ import type { Link } from './Link';
3
+ import type { Node } from './Node';
4
4
  /**
5
5
  * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.
6
+ *
7
+ * @todo Rename to `OpenFile`.
6
8
  */
7
9
  export declare class File {
10
+ readonly link: Link;
11
+ readonly node: Node;
12
+ flags: number;
8
13
  fd: number;
9
- /**
10
- * Hard link that this file opened.
11
- * @type {any}
12
- */
13
- link: Link;
14
- /**
15
- * Reference to a `Node`.
16
- * @type {Node}
17
- */
18
- node: Node;
19
14
  /**
20
15
  * A cursor/offset position in a file, where data will be written on write.
21
16
  * User can "seek" this position.
22
17
  */
23
18
  position: number;
24
- flags: number;
25
19
  /**
26
20
  * Open a Link-Node pair. `node` is provided separately as that might be a different node
27
21
  * rather the one `link` points to, because it might be a symlink.
package/lib/core/File.js CHANGED
@@ -6,6 +6,8 @@ const Stats_1 = require("../Stats");
6
6
  const { O_APPEND } = constants_1.constants;
7
7
  /**
8
8
  * Represents an open file (file descriptor) that points to a `Link` (Hard-link) and a `Node`.
9
+ *
10
+ * @todo Rename to `OpenFile`.
9
11
  */
10
12
  class File {
11
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/core/File.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AACzC,oCAA6B;AAI7B,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAS,CAAC;AAE/B;;GAEG;AACH,MAAa,IAAI;IAwBf;;;;;;;OAOG;IACH,YAAY,IAAU,EAAE,IAAU,EAAE,KAAa,EAAE,EAAU;QAC3D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,QAAQ,GAAG,MAAM;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,GAAY;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,OAAO,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,SAAiB,CAAC,EAAE,SAAiB,GAAG,CAAC,MAAM,EAAE,QAAwB;QAC1F,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CACF,GAAwC,EACxC,SAAiB,CAAC,EAClB,SAAiB,GAAG,CAAC,UAAU,EAC/B,QAAiB;QAEjB,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAnGD,oBAmGC"}
1
+ {"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/core/File.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AACzC,oCAA6B;AAI7B,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAS,CAAC;AAE/B;;;;GAIG;AACH,MAAa,IAAI;IAOf;;;;;;;OAOG;IACH,YACkB,IAAU,EACV,IAAU,EACnB,KAAa,EACb,EAAU;QAHD,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAM;QACnB,UAAK,GAAL,KAAK,CAAQ;QACb,OAAE,GAAF,EAAE,CAAQ;QAEjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,QAAQ,GAAG,MAAM;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,GAAY;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,OAAO,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAkB,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,SAAiB,CAAC,EAAE,SAAiB,GAAG,CAAC,MAAM,EAAE,QAAwB;QAC1F,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CACF,GAAwC,EACxC,SAAiB,CAAC,EAClB,SAAiB,GAAG,CAAC,UAAU,EAC/B,QAAiB;QAEjB,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAnFD,oBAmFC"}
@@ -1,13 +1,12 @@
1
1
  import { EventEmitter } from 'events';
2
- import { Volume } from '../volume';
3
- import { Node } from './Node';
4
- export declare const SEP = "/";
2
+ import type { Node } from './Node';
3
+ import type { Superblock } from './Superblock';
5
4
  /**
6
5
  * Represents a hard link that points to an i-node `node`.
7
6
  */
8
7
  export declare class Link extends EventEmitter {
9
- vol: Volume;
10
- parent: Link;
8
+ vol: Superblock;
9
+ parent: Link | undefined;
11
10
  children: Map<string, Link | undefined>;
12
11
  private _steps;
13
12
  node: Node;
@@ -16,7 +15,7 @@ export declare class Link extends EventEmitter {
16
15
  name: string;
17
16
  get steps(): string[];
18
17
  set steps(val: string[]);
19
- constructor(vol: Volume, parent: Link, name: string);
18
+ constructor(vol: Superblock, parent: Link | undefined, name: string);
20
19
  setNode(node: Node): void;
21
20
  getNode(): Node;
22
21
  createChild(name: string, node?: Node): Link;
package/lib/core/Link.js CHANGED
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Link = exports.SEP = void 0;
3
+ exports.Link = void 0;
4
4
  const events_1 = require("events");
5
5
  const constants_1 = require("../constants");
6
- const { S_IFREG, S_IFDIR } = constants_1.constants;
7
- exports.SEP = '/';
6
+ const { S_IFREG } = constants_1.constants;
8
7
  /**
9
8
  * Represents a hard link that points to an i-node `node`.
10
9
  */
@@ -82,22 +81,14 @@ class Link extends events_1.EventEmitter {
82
81
  return this.children.get(name);
83
82
  }
84
83
  getPath() {
85
- return this.steps.join(exports.SEP);
84
+ return this.steps.join("/" /* PATH.SEP */);
86
85
  }
87
86
  getParentPath() {
88
- return this.steps.slice(0, -1).join(exports.SEP);
87
+ return this.steps.slice(0, -1).join("/" /* PATH.SEP */);
89
88
  }
90
89
  getName() {
91
90
  return this.steps[this.steps.length - 1];
92
91
  }
93
- // del() {
94
- // const parent = this.parent;
95
- // if(parent) {
96
- // parent.deleteChild(link);
97
- // }
98
- // this.parent = null;
99
- // this.vol = null;
100
- // }
101
92
  toJSON() {
102
93
  return {
103
94
  steps: this.steps,
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/core/Link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/core/Link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { Node } from './Node';
2
+ import { Link } from './Link';
3
+ import { File } from './File';
4
+ import { DirectoryJSON, NestedDirectoryJSON } from './json';
5
+ import type { PathLike } from '../node/types/misc';
6
+ import { TFileId } from './types';
7
+ /**
8
+ * Represents a filesystem superblock, which is the root of a virtual
9
+ * filesystem in Linux.
10
+ * @see https://lxr.linux.no/linux+v3.11.2/include/linux/fs.h#L1242
11
+ */
12
+ export declare class Superblock {
13
+ static fromJSON(json: DirectoryJSON, cwd?: string): Superblock;
14
+ static fromNestedJSON(json: NestedDirectoryJSON, cwd?: string): Superblock;
15
+ /**
16
+ * Global file descriptor counter. UNIX file descriptors start from 0 and go sequentially
17
+ * up, so here, in order not to conflict with them, we choose some big number and descrease
18
+ * the file descriptor of every new opened file.
19
+ * @type {number}
20
+ * @todo This should not be static, right?
21
+ */
22
+ static fd: number;
23
+ root: Link;
24
+ ino: number;
25
+ inodes: {
26
+ [ino: number]: Node;
27
+ };
28
+ releasedInos: number[];
29
+ fds: {
30
+ [fd: number]: File;
31
+ };
32
+ releasedFds: number[];
33
+ maxFiles: number;
34
+ openFiles: number;
35
+ constructor(props?: {});
36
+ createLink(): Link;
37
+ createLink(parent: Link, name: string, isDirectory?: boolean, mode?: number): Link;
38
+ deleteLink(link: Link): boolean;
39
+ private newInoNumber;
40
+ private newFdNumber;
41
+ createNode(mode: number): Node;
42
+ deleteNode(node: Node): void;
43
+ walk(steps: string[], resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
44
+ walk(filename: string, resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
45
+ walk(link: Link, resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
46
+ walk(stepsOrFilenameOrLink: string[] | string | Link, resolveSymlinks: boolean, checkExistence: boolean, checkAccess: boolean, funcName?: string): Link | null;
47
+ getLink(steps: string[]): Link | null;
48
+ getLinkOrThrow(filename: string, funcName?: string): Link;
49
+ getResolvedLink(filenameOrSteps: string | string[]): Link | null;
50
+ /**
51
+ * Just like `getLinkOrThrow`, but also dereference/resolves symbolic links.
52
+ */
53
+ getResolvedLinkOrThrow(filename: string, funcName?: string): Link;
54
+ resolveSymlinks(link: Link): Link | null;
55
+ /**
56
+ * Just like `getLinkOrThrow`, but also verifies that the link is a directory.
57
+ */
58
+ getLinkAsDirOrThrow(filename: string, funcName?: string): Link;
59
+ getLinkParent(steps: string[]): Link | null;
60
+ getLinkParentAsDirOrThrow(filenameOrSteps: string | string[], funcName?: string): Link;
61
+ getFileByFd(fd: number): File;
62
+ getFileByFdOrThrow(fd: number, funcName?: string): File;
63
+ _toJSON(link?: Link, json?: {}, path?: string, asBuffer?: boolean): DirectoryJSON<string | null>;
64
+ toJSON(paths?: PathLike | PathLike[], json?: {}, isRelative?: boolean, asBuffer?: boolean): DirectoryJSON<string | null>;
65
+ fromJSON(json: DirectoryJSON, cwd?: string): void;
66
+ fromNestedJSON(json: NestedDirectoryJSON, cwd?: string): void;
67
+ reset(): void;
68
+ mountSync(mountpoint: string, json: DirectoryJSON): void;
69
+ openLink(link: Link, flagsNum: number, resolveSymlinks?: boolean): File;
70
+ protected openFile(filename: string, flagsNum: number, modeNum: number | undefined, resolveSymlinks?: boolean): File;
71
+ readonly open: (filename: string, flagsNum: number, modeNum: number, resolveSymlinks?: boolean) => number;
72
+ readonly writeFile: (id: TFileId, buf: Buffer, flagsNum: number, modeNum: number) => void;
73
+ readonly read: (fd: number, buffer: Buffer | ArrayBufferView | DataView, offset: number, length: number, position: number | null) => number;
74
+ readonly readv: (fd: number, buffers: ArrayBufferView[], position: number | null) => number;
75
+ readonly link: (filename1: string, filename2: string) => void;
76
+ readonly unlink: (filename: string) => void;
77
+ readonly symlink: (targetFilename: string, pathFilename: string) => Link;
78
+ readonly rename: (oldPathFilename: string, newPathFilename: string) => void;
79
+ readonly mkdir: (filename: string, modeNum: number) => void;
80
+ /**
81
+ * Creates directory tree recursively.
82
+ */
83
+ readonly mkdirp: (filename: string, modeNum: number) => string | undefined;
84
+ readonly rmdir: (filename: string, recursive?: boolean) => void;
85
+ readonly rm: (filename: string, force?: boolean, recursive?: boolean) => void;
86
+ protected closeFile(file: File): void;
87
+ readonly close: (fd: number) => void;
88
+ write(fd: number, buf: Buffer, offset?: number, length?: number, position?: number | null): number;
89
+ }