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.
- package/lib/constants.d.ts +4 -0
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -1
- package/lib/core/File.d.ts +7 -13
- package/lib/core/File.js +2 -0
- package/lib/core/File.js.map +1 -1
- package/lib/core/Link.d.ts +5 -6
- package/lib/core/Link.js +4 -13
- package/lib/core/Link.js.map +1 -1
- package/lib/core/Superblock.d.ts +89 -0
- package/lib/core/Superblock.js +653 -0
- package/lib/core/Superblock.js.map +1 -0
- package/lib/core/constants.d.ts +15 -0
- package/lib/core/constants.js +3 -0
- package/lib/core/constants.js.map +1 -0
- package/lib/core/index.d.ts +6 -0
- package/lib/core/index.js +15 -0
- package/lib/core/index.js.map +1 -0
- package/lib/core/json.d.ts +8 -0
- package/lib/core/json.js +32 -0
- package/lib/core/json.js.map +1 -0
- package/lib/core/types.d.ts +2 -0
- package/lib/core/types.js +3 -0
- package/lib/core/types.js.map +1 -0
- package/lib/core/util.d.ts +11 -0
- package/lib/core/util.js +72 -0
- package/lib/core/util.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeCore.js +2 -1
- package/lib/fsa-to-node/FsaNodeCore.js.map +1 -1
- package/lib/fsa-to-node/FsaNodeFs.js +13 -12
- package/lib/fsa-to-node/FsaNodeFs.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js.map +1 -1
- package/lib/node/util.d.ts +2 -7
- package/lib/node/util.js +6 -53
- package/lib/node/util.js.map +1 -1
- package/lib/node.d.ts +1 -1
- package/lib/node.js +1 -2
- package/lib/node.js.map +1 -1
- package/lib/volume.d.ts +233 -255
- package/lib/volume.js +772 -1506
- package/lib/volume.js.map +1 -1
- package/package.json +1 -1
- package/lib/volume-localstorage.d.ts +0 -14
- package/lib/volume-localstorage.js +0 -74
- package/lib/volume-localstorage.js.map +0 -1
package/lib/constants.d.ts
CHANGED
package/lib/constants.js
CHANGED
package/lib/constants.js.map
CHANGED
|
@@ -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"}
|
package/lib/core/File.d.ts
CHANGED
|
@@ -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
package/lib/core/File.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../src/core/File.ts"],"names":[],"mappings":";;;
|
|
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"}
|
package/lib/core/Link.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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:
|
|
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:
|
|
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 =
|
|
3
|
+
exports.Link = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
|
-
const { S_IFREG
|
|
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(
|
|
84
|
+
return this.steps.join("/" /* PATH.SEP */);
|
|
86
85
|
}
|
|
87
86
|
getParentPath() {
|
|
88
|
-
return this.steps.slice(0, -1).join(
|
|
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,
|
package/lib/core/Link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/core/Link.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/core/Link.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AACtC,4CAA+C;AAI/C,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAS,CAAC;AAE9B;;GAEG;AACH,MAAa,IAAK,SAAQ,qBAAY;IAqBpC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,8DAA8D;IAC9D,IAAI,KAAK,CAAC,GAAG;QACX,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,YAAY,GAAe,EAAE,MAAwB,EAAE,IAAY;QACjE,KAAK,EAAE,CAAC;QAhCV,aAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;QAE/C,sDAAsD;QAC9C,WAAM,GAAa,EAAE,CAAC;QAK9B,+BAA+B;QAC/B,QAAG,GAAW,CAAC,CAAC;QAEhB,sBAAsB;QACtB,WAAM,GAAW,CAAC,CAAC;QAqBjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAU;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,OAAa,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAa,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,IAAU;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,oBAAU,CAAC;IACnC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAU,CAAC;IAChD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;CACF;AA7HD,oBA6HC"}
|
|
@@ -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
|
+
}
|