@effect-vfs/core 0.9.0 → 0.11.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/dist/BytePath.d.ts +4 -1
- package/dist/BytePath.d.ts.map +1 -1
- package/dist/BytePath.js +6 -4
- package/dist/Caller.d.ts +105 -66
- package/dist/Caller.d.ts.map +1 -1
- package/dist/Caller.js +15 -87
- package/dist/LiveVolume.d.ts +14 -8
- package/dist/LiveVolume.d.ts.map +1 -1
- package/dist/LiveVolume.js +10 -3
- package/dist/Search.d.ts +32 -8
- package/dist/Search.d.ts.map +1 -1
- package/dist/Search.js +14 -13
- package/dist/SynchronousAdapter.d.ts +58 -0
- package/dist/SynchronousAdapter.d.ts.map +1 -0
- package/dist/SynchronousAdapter.js +116 -0
- package/dist/Target.d.ts +7 -91
- package/dist/Target.d.ts.map +1 -1
- package/dist/Target.js +7 -47
- package/dist/Testing.d.ts +9 -5
- package/dist/Testing.d.ts.map +1 -1
- package/dist/Testing.js +3 -2
- package/dist/VfsError.d.ts +1 -1
- package/dist/VfsError.d.ts.map +1 -1
- package/dist/VirtualFileSystem.d.ts +143 -59
- package/dist/VirtualFileSystem.d.ts.map +1 -1
- package/dist/VirtualFileSystem.js +37 -33
- package/dist/Volume.d.ts +6 -1
- package/dist/Volume.d.ts.map +1 -1
- package/dist/Volume.js +6 -2
- package/dist/internal/adapterBinding.d.ts +13 -0
- package/dist/internal/adapterBinding.d.ts.map +1 -0
- package/dist/internal/adapterBinding.js +13 -0
- package/dist/internal/bytePath.d.ts +6 -1
- package/dist/internal/bytePath.d.ts.map +1 -1
- package/dist/internal/callerWatch.d.ts +5 -1
- package/dist/internal/callerWatch.d.ts.map +1 -1
- package/dist/internal/callerWatch.js +4 -3
- package/dist/internal/engine.d.ts +1305 -0
- package/dist/internal/engine.d.ts.map +1 -0
- package/dist/internal/engine.js +3458 -0
- package/dist/internal/errors.d.ts +1 -33
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +1 -45
- package/dist/internal/fixture.d.ts +3 -2
- package/dist/internal/fixture.d.ts.map +1 -1
- package/dist/internal/fixture.js +7 -3
- package/dist/internal/image.d.ts +4 -1
- package/dist/internal/image.d.ts.map +1 -1
- package/dist/internal/image.js +6 -3
- package/dist/internal/lines.d.ts.map +1 -1
- package/dist/internal/lines.js +3 -2
- package/dist/internal/liveImage.d.ts +4 -2
- package/dist/internal/liveImage.d.ts.map +1 -1
- package/dist/internal/liveImage.js +3 -1
- package/dist/internal/merkle.d.ts +8 -5
- package/dist/internal/merkle.d.ts.map +1 -1
- package/dist/internal/merkle.js +8 -7
- package/dist/internal/search.d.ts +3 -1
- package/dist/internal/search.d.ts.map +1 -1
- package/dist/internal/search.js +4 -3
- package/dist/internal/snapshotDelta.d.ts +14 -10
- package/dist/internal/snapshotDelta.d.ts.map +1 -1
- package/dist/internal/snapshotDelta.js +15 -9
- package/dist/internal/snapshotMerge.d.ts +1 -1
- package/dist/internal/snapshotMerge.d.ts.map +1 -1
- package/dist/internal/snapshotMerge.js +5 -2
- package/dist/internal/tree.d.ts +4 -2
- package/dist/internal/tree.d.ts.map +1 -1
- package/dist/internal/tree.js +4 -2
- package/dist/internal/virtualFileSystem.d.ts +27 -56
- package/dist/internal/virtualFileSystem.d.ts.map +1 -1
- package/dist/internal/virtualFileSystem.js +77 -2085
- package/dist/internal/volumeLimits.d.ts +1 -0
- package/dist/internal/volumeLimits.d.ts.map +1 -1
- package/dist/internal/volumeLimits.js +3 -2
- package/dist/internal/volumeState.d.ts +10 -79
- package/dist/internal/volumeState.d.ts.map +1 -1
- package/dist/internal/volumeState.js +9 -79
- package/dist/internal/watchHub.d.ts +3 -3
- package/dist/internal/watchHub.d.ts.map +1 -1
- package/dist/internal/watchHub.js +4 -2
- package/package.json +14 -9
- package/dist/internal/confinement.d.ts +0 -16
- package/dist/internal/confinement.d.ts.map +0 -1
- package/dist/internal/confinement.js +0 -79
- package/dist/internal/directoryEntries.d.ts +0 -6
- package/dist/internal/directoryEntries.d.ts.map +0 -1
- package/dist/internal/directoryEntries.js +0 -79
- package/dist/internal/inodeTable.d.ts +0 -20
- package/dist/internal/inodeTable.d.ts.map +0 -1
- package/dist/internal/inodeTable.js +0 -48
- package/dist/internal/path.d.ts +0 -56
- package/dist/internal/path.d.ts.map +0 -1
- package/dist/internal/path.js +0 -141
- package/dist/internal/resolution.d.ts +0 -139
- package/dist/internal/resolution.d.ts.map +0 -1
- package/dist/internal/resolution.js +0 -332
- package/dist/internal/testSeams.d.ts +0 -17
- package/dist/internal/testSeams.d.ts.map +0 -1
- package/dist/internal/testSeams.js +0 -20
- package/dist/internal/tokenRegistry.d.ts +0 -83
- package/dist/internal/tokenRegistry.d.ts.map +0 -1
- package/dist/internal/tokenRegistry.js +0 -146
- package/dist/internal/turnstile.d.ts +0 -8
- package/dist/internal/turnstile.d.ts.map +0 -1
- package/dist/internal/turnstile.js +0 -43
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
import * as Result from "effect/Result";
|
|
2
|
-
import * as Schema from "effect/Schema";
|
|
3
1
|
import type * as SchemaAST from "effect/SchemaAST";
|
|
4
2
|
import type * as SchemaIssue from "effect/SchemaIssue";
|
|
5
|
-
import type
|
|
6
|
-
import { type ArgumentFailure, type FsCode, type FsFailure, type ImageCode, type ImageFailure, VfsError } from "../VfsError.js";
|
|
7
|
-
import type { PathInput } from "../VirtualFileSystem.js";
|
|
8
|
-
/** @internal */
|
|
9
|
-
export { VfsError };
|
|
10
|
-
/** @internal */
|
|
11
|
-
export declare const errorPath: (input: PathInput) => BytePath | undefined;
|
|
12
|
-
interface Details {
|
|
13
|
-
readonly path?: PathInput;
|
|
14
|
-
readonly field?: string;
|
|
15
|
-
readonly cause?: unknown;
|
|
16
|
-
}
|
|
17
|
-
/** @internal */
|
|
18
|
-
export declare const argumentFailure: (operation: string, field: string, cause?: unknown) => ArgumentFailure;
|
|
19
|
-
/** @internal */
|
|
20
|
-
export declare const decodeConfiguration: <A, I>(schema: Schema.Codec<A, I>, value: typeof Schema.Unknown.Type, operation: string) => Result.Result<A, ArgumentFailure>;
|
|
3
|
+
import { type ImageCode, type ImageFailure } from "../VfsError.js";
|
|
21
4
|
/** @internal */
|
|
22
5
|
export declare const ENCODING_CHECK = "@effect-vfs/core/encodingCheck";
|
|
23
6
|
/** @internal */
|
|
@@ -30,25 +13,10 @@ export declare const issueSite: (issue: SchemaIssue.Issue) => IssueSite;
|
|
|
30
13
|
/** @internal */
|
|
31
14
|
export declare const isEncodingIssue: (site: IssueSite) => boolean;
|
|
32
15
|
/** @internal */
|
|
33
|
-
export declare const fsFailure: (code: FsCode, operation: string, details?: Details) => FsFailure;
|
|
34
|
-
/** @internal */
|
|
35
16
|
export declare const imageFailure: (operation: string, code: ImageCode, details?: {
|
|
36
17
|
readonly field?: string;
|
|
37
18
|
readonly cause?: unknown;
|
|
38
19
|
}) => ImageFailure;
|
|
39
20
|
/** @internal */
|
|
40
21
|
export declare const retargetFailure: <E>(operation: string, error: E) => E;
|
|
41
|
-
/** @internal */
|
|
42
|
-
export interface OpContext {
|
|
43
|
-
readonly operation: string;
|
|
44
|
-
readonly fail: (code: FsCode, details?: {
|
|
45
|
-
readonly cause?: unknown;
|
|
46
|
-
readonly field?: string;
|
|
47
|
-
}) => FsFailure;
|
|
48
|
-
readonly at: (path: PathInput) => OpContext;
|
|
49
|
-
}
|
|
50
|
-
/** @internal */
|
|
51
|
-
export declare const OpContext: {
|
|
52
|
-
make: (operation: string) => OpContext;
|
|
53
|
-
};
|
|
54
22
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/internal/errors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAA+B,MAAM,gBAAgB,CAAA;AAG/F,gBAAgB;AAChB,eAAO,MAAM,cAAc,mCAAmC,CAAA;AAE9D,gBAAgB;AAChB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACzC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;CAC1D;AAGD,gBAAgB;AAChB,eAAO,MAAM,SAAS,UAAW,WAAW,CAAC,KAAK,KAAG,SAmBpD,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,eAAe,SAAU,SAAS,KAAG,OACyB,CAAA;AAE3E,gBAAgB;AAChB,eAAO,MAAM,YAAY,cACZ,MAAM,QACX,SAAS,YACL;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KAC9D,YAA6G,CAAA;AAQhH,gBAAgB;AAChB,eAAO,MAAM,eAAe,GAAI,CAAC,aAAa,MAAM,SAAS,CAAC,KAAG,CAMhE,CAAA"}
|
package/dist/internal/errors.js
CHANGED
|
@@ -1,39 +1,6 @@
|
|
|
1
1
|
import * as Predicate from "effect/Predicate";
|
|
2
|
-
import * as Result from "effect/Result";
|
|
3
2
|
import * as Schema from "effect/Schema";
|
|
4
3
|
import { make as makeError, VfsError } from "../VfsError.js";
|
|
5
|
-
import { getBytes, isBytePath, isPathBytes, make } from "./bytePath.js";
|
|
6
|
-
/** @internal */
|
|
7
|
-
export { VfsError };
|
|
8
|
-
const encoder = new TextEncoder();
|
|
9
|
-
// Omit invalid paths rather than attach a BytePath that breaks its invariant.
|
|
10
|
-
/** @internal */
|
|
11
|
-
export const errorPath = (input) => {
|
|
12
|
-
const bytes = Predicate.isString(input) ? encoder.encode(input) : isBytePath(input) ? getBytes(input) : undefined;
|
|
13
|
-
if (bytes === undefined || !isPathBytes(bytes))
|
|
14
|
-
return undefined;
|
|
15
|
-
return isBytePath(input) ? input : make(bytes);
|
|
16
|
-
};
|
|
17
|
-
const configurationField = (issue) => {
|
|
18
|
-
if (Predicate.isTagged("Pointer")(issue))
|
|
19
|
-
return issue.path.map(String).join(".");
|
|
20
|
-
if (Predicate.isTagged("Composite")(issue))
|
|
21
|
-
return configurationField(issue.issues[0]);
|
|
22
|
-
if (Predicate.isTagged("Encoding")(issue))
|
|
23
|
-
return configurationField(issue.issue);
|
|
24
|
-
return "options";
|
|
25
|
-
};
|
|
26
|
-
const build = (code, operation, details) => makeError({
|
|
27
|
-
code,
|
|
28
|
-
operation,
|
|
29
|
-
field: details?.field,
|
|
30
|
-
path: details?.path === undefined ? undefined : errorPath(details.path),
|
|
31
|
-
cause: details?.cause
|
|
32
|
-
});
|
|
33
|
-
/** @internal */
|
|
34
|
-
export const argumentFailure = (operation, field, cause) => build("InvalidArgument", operation, { field, cause });
|
|
35
|
-
/** @internal */
|
|
36
|
-
export const decodeConfiguration = (schema, value, operation) => Schema.decodeUnknownResult(schema, { onExcessProperty: "error" })(value).pipe(Result.mapError((error) => argumentFailure(operation, configurationField(error.issue), error)));
|
|
37
4
|
// Distinguishes invalid value encoding from invalid structure.
|
|
38
5
|
/** @internal */
|
|
39
6
|
export const ENCODING_CHECK = "@effect-vfs/core/encodingCheck";
|
|
@@ -65,9 +32,7 @@ export const issueSite = (issue) => {
|
|
|
65
32
|
/** @internal */
|
|
66
33
|
export const isEncodingIssue = (site) => site.checks.some((check) => check.annotations?.[ENCODING_CHECK] === true);
|
|
67
34
|
/** @internal */
|
|
68
|
-
export const
|
|
69
|
-
/** @internal */
|
|
70
|
-
export const imageFailure = (operation, code, details) => build(code, operation, details);
|
|
35
|
+
export const imageFailure = (operation, code, details) => makeError({ code, operation, field: details?.field, path: undefined, cause: details?.cause });
|
|
71
36
|
/** @internal */
|
|
72
37
|
const retarget = (operation, error) => error.operation === operation
|
|
73
38
|
? error
|
|
@@ -80,12 +45,3 @@ export const retargetFailure = (operation, error) => {
|
|
|
80
45
|
// oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- see the invariant above.
|
|
81
46
|
return retarget(operation, error);
|
|
82
47
|
};
|
|
83
|
-
const makeOpContext = (operation, located) => ({
|
|
84
|
-
operation,
|
|
85
|
-
fail: (code, details) => fsFailure(code, operation, located === undefined ? details : { ...details, path: located }),
|
|
86
|
-
at: (path) => makeOpContext(operation, Predicate.isString(path) || isBytePath(path) ? path : undefined)
|
|
87
|
-
});
|
|
88
|
-
/** @internal */
|
|
89
|
-
export const OpContext = {
|
|
90
|
-
make: (operation) => makeOpContext(operation)
|
|
91
|
-
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import { VfsError } from "
|
|
2
|
+
import { VfsError } from "../VfsError.js";
|
|
3
3
|
/** @internal */
|
|
4
4
|
export declare const fromFixture: (fixture: {
|
|
5
5
|
readonly rootMetadata?: {
|
|
@@ -55,6 +55,7 @@ export declare const fromFixture: (fixture: {
|
|
|
55
55
|
readonly target: string | import("../BytePath.js").BytePath;
|
|
56
56
|
})[];
|
|
57
57
|
}, options?: {
|
|
58
|
+
readonly execution?: "cooperative" | "sync";
|
|
58
59
|
readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
|
|
59
60
|
readonly maxEntries?: number;
|
|
60
61
|
readonly maxPendingOperations?: number;
|
|
@@ -62,5 +63,5 @@ export declare const fromFixture: (fixture: {
|
|
|
62
63
|
readonly maxBytes?: import("effect/ByteSize").ByteSize;
|
|
63
64
|
readonly maxFileBytes?: import("effect/ByteSize").ByteSize;
|
|
64
65
|
readonly maxPathBytes?: import("effect/ByteSize").ByteSize;
|
|
65
|
-
} | undefined) => Effect.Effect<import("../VirtualFileSystem.js").Volume, import("../VfsError.js").ArgumentFailure | import("../VfsError.js").ImageFailure | (void & VfsError), import("effect/
|
|
66
|
+
} | undefined) => Effect.Effect<import("../VirtualFileSystem.js").Volume, import("../VfsError.js").ArgumentFailure | import("../VfsError.js").ImageFailure | (void & VfsError), import("effect/crypto/SecureRandom").SecureRandom>;
|
|
66
67
|
//# sourceMappingURL=fixture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../src/internal/fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../src/internal/fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AASvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAyBzC,gBAAgB;AAChB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kOAiLvB,CAAA"}
|
package/dist/internal/fixture.js
CHANGED
|
@@ -3,10 +3,14 @@ import * as Result from "effect/Result";
|
|
|
3
3
|
import * as Schema from "effect/Schema";
|
|
4
4
|
import { Fixture as FixtureSchema, FixtureEntry } from "../Fixture.js";
|
|
5
5
|
import { VolumeIdentity, VolumeOptions as VolumeOptionsSchema } from "../Volume.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { imageFailure } from "./errors.js";
|
|
7
|
+
import { VfsError } from "../VfsError.js";
|
|
8
|
+
import { Errors, Paths, State } from "./engine.js";
|
|
8
9
|
import { makeVolume, memoryCommitProvider, VolumeSource } from "./virtualFileSystem.js";
|
|
9
|
-
import { assemble
|
|
10
|
+
import { assemble } from "./volumeState.js";
|
|
11
|
+
const { decodeConfiguration, OpContext } = Errors;
|
|
12
|
+
const { inputBytes, isAttachedBytes, isDotComponent, preparePath } = Paths;
|
|
13
|
+
const { Ino, ROOT_INO } = State;
|
|
10
14
|
const DEFAULT_MODE = { directory: 0o755, file: 0o644, symlink: 0o777 };
|
|
11
15
|
const EPOCH_NS = 0n;
|
|
12
16
|
/** @internal */
|
package/dist/internal/image.d.ts
CHANGED
|
@@ -7,7 +7,9 @@ import { type Snapshot } from "../Snapshot.js";
|
|
|
7
7
|
import type { FsFailure, ImageFailure } from "../VfsError.js";
|
|
8
8
|
import type { PathInput } from "../VirtualFileSystem.js";
|
|
9
9
|
import type { Budget } from "./budget.js";
|
|
10
|
-
import {
|
|
10
|
+
import { State } from "./engine.js";
|
|
11
|
+
type Node = State.Node;
|
|
12
|
+
type VolumeState = State.VolumeState;
|
|
11
13
|
/** @internal */
|
|
12
14
|
export declare const make: (value: VolumeState) => Snapshot;
|
|
13
15
|
/** @internal */
|
|
@@ -25,4 +27,5 @@ export declare const resolve: (value: VolumeState, input: PathInput, options: {
|
|
|
25
27
|
}) => Result.Result<Node, FsFailure>;
|
|
26
28
|
/** @internal */
|
|
27
29
|
export declare const snapshotEntries: (snapshot: Snapshot, root: PathInput) => Stream.Stream<FixtureEntry, FsFailure | ImageFailure>;
|
|
30
|
+
export {};
|
|
28
31
|
//# sourceMappingURL=image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/internal/image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,gBAAgB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/internal/image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,gBAAgB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKzC,OAAO,EAAiB,KAAK,EAAE,MAAM,aAAa,CAAA;AAclD,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AAEtB,KAAK,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;AAgBpC,gBAAgB;AAChB,eAAO,MAAM,IAAI,UAAW,WAAW,KAAG,QAAkD,CAAA;AAE5F,gBAAgB;AAChB,eAAO,MAAM,OAAO,aAAc,QAAQ,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAOhF,CAAA;AAOJ,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,aACrB,QAAQ,WACT,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAapC,CAAA;AAEL,gBAAgB;AAChB,eAAO,MAAM,cAAc,aAAc,QAAQ,WAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CACpD,CAAA;AAEvD,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAYtG,CAAA;AAOD,gBAAgB;AAChB,eAAO,MAAM,OAAO,UACX,WAAW,SACX,SAAS,WACP;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;CAAE,KAC5E,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAmD/B,CAAA;AAmDD,gBAAgB;AAChB,eAAO,MAAM,eAAe,aAChB,QAAQ,QACZ,SAAS,KACd,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,GAAG,YAAY,CAOlD,CAAA"}
|
package/dist/internal/image.js
CHANGED
|
@@ -7,11 +7,14 @@ import * as Stream from "effect/Stream";
|
|
|
7
7
|
import { decodeOption } from "../BytePath.js";
|
|
8
8
|
import { SnapshotTypeId } from "../Snapshot.js";
|
|
9
9
|
import { make as makeBytePath } from "./bytePath.js";
|
|
10
|
-
import {
|
|
10
|
+
import { imageFailure } from "./errors.js";
|
|
11
11
|
import * as Lines from "./lines.js";
|
|
12
|
-
import {
|
|
12
|
+
import { Errors, Paths, State } from "./engine.js";
|
|
13
13
|
import * as Tree from "./tree.js";
|
|
14
|
-
import { assemble,
|
|
14
|
+
import { assemble, storedMetadata } from "./volumeState.js";
|
|
15
|
+
const fsFailure = Errors.fsFailure;
|
|
16
|
+
const { DOT_DOT_HEX, DOT_HEX, joinPath, MAX_SYMLINK_TRAVERSALS, nameBytes, ownedPath, preparePath } = Paths;
|
|
17
|
+
const { byEntryName, getNode, ROOT_INO } = State;
|
|
15
18
|
// Volume values are immutable, so snapshots share them without exposing their state.
|
|
16
19
|
class SnapshotImpl {
|
|
17
20
|
[SnapshotTypeId] = SnapshotTypeId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../../src/internal/lines.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../../src/internal/lines.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAWlD,gBAAgB;AAChB,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;CACpF;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACtG,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;CACnD;AAED,gBAAgB;AAChB,eAAO,MAAM,SAAS,UAAW,QAAQ,CAAC,QAAQ,KAAG,MAIpD,CAAA;AAkGD,gBAAgB;AAChB,eAAO,MAAM,IAAI,GAAI,CAAC,WACX,OAAO,SACT,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;CAAE,KACtE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAUsB,CAAA;AAIrE,gBAAgB;AAChB,eAAO,MAAM,KAAK,UAAW,aAAa,CAAC,UAAU,CAAC,KAAG,UAWxD,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,UAAkC,CAAA;AAE5E,gBAAgB;AAChB,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAInG,CAAA"}
|
package/dist/internal/lines.js
CHANGED
|
@@ -5,9 +5,10 @@ import * as Effect from "effect/Effect";
|
|
|
5
5
|
import * as Result from "effect/Result";
|
|
6
6
|
import * as Sink from "effect/Sink";
|
|
7
7
|
import * as Stream from "effect/Stream";
|
|
8
|
+
import { Paths, State } from "./engine.js";
|
|
8
9
|
import { imageFailure } from "./errors.js";
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const isAttachedBytes = Paths.isAttachedBytes;
|
|
11
|
+
const WALK_YIELD_INTERVAL = State.WALK_YIELD_INTERVAL;
|
|
11
12
|
const NEWLINE = 0x0a;
|
|
12
13
|
const CARRIAGE_RETURN = 0x0d;
|
|
13
14
|
/** @internal */
|
|
@@ -2,9 +2,11 @@ import type * as ByteSize from "effect/ByteSize";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import type { VolumeLimits } from "../VirtualFileSystem.js";
|
|
4
4
|
import type { VolumeIdentity } from "../Volume.js";
|
|
5
|
+
import { State } from "./engine.js";
|
|
5
6
|
import type { KeySecret, VolumeEpoch } from "./hex128.js";
|
|
6
7
|
import * as Tree from "./tree.js";
|
|
7
|
-
|
|
8
|
+
type RegularFile = State.RegularFile;
|
|
9
|
+
type VolumeState = State.VolumeState;
|
|
8
10
|
/** @internal */
|
|
9
11
|
export declare const retainedFiles: (state: VolumeState) => Array<RegularFile>;
|
|
10
12
|
type StoredLimits = Tree.Runtime["limits"];
|
|
@@ -20,7 +22,7 @@ export interface Restored extends Naming {
|
|
|
20
22
|
readonly limits: StoredLimits;
|
|
21
23
|
}
|
|
22
24
|
/** @internal */
|
|
23
|
-
export declare const encode: (state: VolumeState, args_1: Naming, limits: VolumeLimits) => Effect.Effect<Uint8Array<ArrayBufferLike>, import("../VfsError.js").ImageFailure, never>;
|
|
25
|
+
export declare const encode: (state: State.VolumeState, args_1: Naming, limits: VolumeLimits) => Effect.Effect<Uint8Array<ArrayBufferLike>, import("../VfsError.js").ImageFailure, never>;
|
|
24
26
|
/** @internal */
|
|
25
27
|
export declare const decode: (bytes: Uint8Array, maxEncodedBytes: ByteSize.ByteSize) => Effect.Effect<Restored, import("../VfsError.js").ImageFailure, never>;
|
|
26
28
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveImage.d.ts","sourceRoot":"","sources":["../../src/internal/liveImage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"liveImage.d.ts","sourceRoot":"","sources":["../../src/internal/liveImage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAQjC,KAAK,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;AAEpC,KAAK,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;AAKpC,gBAAgB;AAChB,eAAO,MAAM,aAAa,UAAW,WAAW,KAAG,KAAK,CAAC,WAAW,CAUnE,CAAA;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE1C,gBAAgB;AAChB,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAC9B;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAS,SAAQ,MAAM;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC9B;AAQD,gBAAgB;AAChB,eAAO,MAAM,MAAM,8JAgCjB,CAAA;AAWF,gBAAgB;AAChB,eAAO,MAAM,MAAM,UAAW,UAAU,mBAAmB,QAAQ,CAAC,QAAQ,0EAyBzE,CAAA"}
|
|
@@ -2,10 +2,12 @@ import * as Effect from "effect/Effect";
|
|
|
2
2
|
import * as Result from "effect/Result";
|
|
3
3
|
import * as Schema from "effect/Schema";
|
|
4
4
|
import * as Stream from "effect/Stream";
|
|
5
|
+
import { State } from "./engine.js";
|
|
5
6
|
import * as Lines from "./lines.js";
|
|
6
7
|
import * as Tree from "./tree.js";
|
|
7
8
|
import * as Limits from "./volumeLimits.js";
|
|
8
|
-
import { assemble
|
|
9
|
+
import { assemble } from "./volumeState.js";
|
|
10
|
+
const { getNode, Ino } = State;
|
|
9
11
|
const OPERATION = "openImage";
|
|
10
12
|
const DOCUMENT_FIELD = "liveImage";
|
|
11
13
|
/** @internal */
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as ByteSize from "effect/ByteSize";
|
|
2
|
-
import * as
|
|
2
|
+
import * as Digest from "effect/crypto/Digest";
|
|
3
3
|
import * as Effect from "effect/Effect";
|
|
4
4
|
import type * as PlatformError from "effect/PlatformError";
|
|
5
5
|
import type { ImageFailure } from "../VfsError.js";
|
|
6
|
-
import {
|
|
6
|
+
import { State } from "./engine.js";
|
|
7
|
+
type Ino = State.Ino;
|
|
8
|
+
type Node = State.Node;
|
|
7
9
|
/** @internal */
|
|
8
10
|
export declare const DIGEST_BYTES = 32;
|
|
9
11
|
/** @internal */
|
|
@@ -37,9 +39,10 @@ export interface Meter {
|
|
|
37
39
|
/** @internal */
|
|
38
40
|
export declare const meter: (budget: WalkBudget) => Meter;
|
|
39
41
|
/** @internal */
|
|
40
|
-
export declare const nodeDigest: (node: Node, childDigest: (ino: Ino) => Uint8Array, meter: Meter) => Effect.Effect<Uint8Array<ArrayBufferLike>,
|
|
42
|
+
export declare const nodeDigest: (node: State.Node, childDigest: (ino: Ino) => Uint8Array, meter: Meter) => Effect.Effect<Uint8Array<ArrayBufferLike>, ImageFailure, Digest.Digest>;
|
|
41
43
|
/** @internal */
|
|
42
|
-
export declare const identityDigest: (root: Uint8Array<ArrayBufferLike>, groups: Iterable<readonly Uint8Array<ArrayBufferLike>[]>, meter: Meter) => Effect.Effect<Uint8Array<ArrayBufferLike>,
|
|
44
|
+
export declare const identityDigest: (root: Uint8Array<ArrayBufferLike>, groups: Iterable<readonly Uint8Array<ArrayBufferLike>[]>, meter: Meter) => Effect.Effect<Uint8Array<ArrayBufferLike>, ImageFailure, Digest.Digest>;
|
|
43
45
|
/** @internal */
|
|
44
|
-
export declare const identify: (state: VolumeState, budget: WalkBudget) => Effect.Effect<Identity, PlatformError.PlatformError | ImageFailure,
|
|
46
|
+
export declare const identify: (state: State.VolumeState, budget: WalkBudget) => Effect.Effect<Identity, PlatformError.PlatformError | ImageFailure, Digest.Digest>;
|
|
47
|
+
export {};
|
|
45
48
|
//# sourceMappingURL=merkle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/internal/merkle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/internal/merkle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAS,KAAK,EAAE,MAAM,aAAa,CAAA;AAO1C,KAAK,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;AAEpB,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AAKtB,gBAAgB;AAChB,eAAO,MAAM,YAAY,KAAK,CAAA;AAQ9B,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAEzC,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CACtF;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AA4CD,gBAAgB;AAChB,eAAO,MAAM,SAAS,SAAU,IAAI,KAAG,MAA6B,CAAA;AAyBpE,gBAAgB;AAChB,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,CAAA;CAC7B;AAED,gBAAgB;AAChB,eAAO,MAAM,KAAK,WAAY,UAAU,KAAG,KAc1C,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,wCAA8D,GAAG,KAAK,UAAU,0FAOrG,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,cAAc,wLAsB1B,CAAA;AAGD,gBAAgB;AAChB,eAAO,MAAM,QAAQ,sIAmGpB,CAAA"}
|
package/dist/internal/merkle.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// This versioned digest covers namespace content and hard-link groups, independent of inode numbers. Framing,
|
|
2
2
|
// byte order, and domain prefix are part of the persisted delta contract.
|
|
3
3
|
import * as ByteSize from "effect/ByteSize";
|
|
4
|
-
import * as
|
|
4
|
+
import * as Digest from "effect/crypto/Digest";
|
|
5
5
|
import * as Effect from "effect/Effect";
|
|
6
6
|
import { bytesOrder } from "./bytes.js";
|
|
7
|
+
import { Paths, State } from "./engine.js";
|
|
7
8
|
import { imageFailure } from "./errors.js";
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const { joinPath, nameBytes, ROOT_PATH } = Paths;
|
|
10
|
+
const { byEntryName, getNode, payloadOf, ROOT_INO } = State;
|
|
10
11
|
const ALGORITHM = "effect-vfs-semantic-sha256-v1";
|
|
11
12
|
/** @internal */
|
|
12
13
|
export const DIGEST_BYTES = 32;
|
|
@@ -73,15 +74,15 @@ export const meter = (budget) => {
|
|
|
73
74
|
};
|
|
74
75
|
/** @internal */
|
|
75
76
|
export const nodeDigest = Effect.fnUntraced(function* (node, childDigest, meter) {
|
|
76
|
-
const crypto = yield*
|
|
77
|
+
const crypto = yield* Digest.Digest;
|
|
77
78
|
const planned = layout(node);
|
|
78
79
|
// Reject oversized nodes before allocating their preimage.
|
|
79
80
|
yield* meter.charge(planned.length);
|
|
80
|
-
return yield* crypto.digest(
|
|
81
|
+
return yield* crypto.digest(Digest.sha256, preimage(node, planned, childDigest));
|
|
81
82
|
});
|
|
82
83
|
/** @internal */
|
|
83
84
|
export const identityDigest = Effect.fnUntraced(function* (root, groups, meter) {
|
|
84
|
-
const crypto = yield*
|
|
85
|
+
const crypto = yield* Digest.Digest;
|
|
85
86
|
const sorted = [...groups].sort((a, b) => bytesOrder(a[0], b[0]));
|
|
86
87
|
const length = IDENTITY_PREFIX.length + DIGEST_BYTES + U64_BYTES +
|
|
87
88
|
sorted.reduce((sum, group) => group.reduce((inner, path) => inner + U64_BYTES + path.length, sum + U64_BYTES), 0);
|
|
@@ -95,7 +96,7 @@ export const identityDigest = Effect.fnUntraced(function* (root, groups, meter)
|
|
|
95
96
|
for (const path of group)
|
|
96
97
|
offset = frame(out, offset, path);
|
|
97
98
|
}
|
|
98
|
-
return yield* crypto.digest(
|
|
99
|
+
return yield* crypto.digest(Digest.sha256, out);
|
|
99
100
|
});
|
|
100
101
|
// Digest leaves first and directories in reverse walk order so every child digest exists before its parent.
|
|
101
102
|
/** @internal */
|
|
@@ -2,8 +2,9 @@ import * as Effect from "effect/Effect";
|
|
|
2
2
|
import type { Snapshot } from "../Snapshot.js";
|
|
3
3
|
import type { FsFailure, ImageFailure } from "../VfsError.js";
|
|
4
4
|
import type { PathInput } from "../VirtualFileSystem.js";
|
|
5
|
+
import { State } from "./engine.js";
|
|
5
6
|
import { BudgetExceeded, type Kind, type Meter } from "./searchModel.js";
|
|
6
|
-
|
|
7
|
+
type Node = State.Node;
|
|
7
8
|
/** @internal */
|
|
8
9
|
export interface Entry {
|
|
9
10
|
readonly path: string;
|
|
@@ -21,4 +22,5 @@ export interface Visitor {
|
|
|
21
22
|
}
|
|
22
23
|
/** @internal */
|
|
23
24
|
export declare const makeVisitor: (snapshot: Snapshot, root: PathInput, meter: Meter) => Effect.Effect<Visitor, FsFailure | ImageFailure, never>;
|
|
25
|
+
export {};
|
|
24
26
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/internal/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/internal/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,OAAO,EAAiB,KAAK,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAYxE,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AAEtB,gBAAgB;AAChB,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED,gBAAgB;AAChB,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,CACb,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,cAAc,CAAC,KAC7G,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,cAAc,CAAC,CAAA;CACtD;AAeD,gBAAgB;AAChB,eAAO,MAAM,WAAW,gHAyFtB,CAAA"}
|
package/dist/internal/search.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Option from "effect/Option";
|
|
3
3
|
import { decodeOption } from "../BytePath.js";
|
|
4
|
-
import { fsFailure } from "./errors.js";
|
|
5
4
|
import * as Image from "./image.js";
|
|
6
|
-
import {
|
|
5
|
+
import { Errors, Paths, State } from "./engine.js";
|
|
7
6
|
import { BudgetExceeded } from "./searchModel.js";
|
|
8
|
-
|
|
7
|
+
const fsFailure = Errors.fsFailure;
|
|
8
|
+
const nameBytes = Paths.nameBytes;
|
|
9
|
+
const { byEntryName, getNode } = State;
|
|
9
10
|
/** @internal */
|
|
10
11
|
export const makeVisitor = Effect.fnUntraced(function* (snapshot, root, meter) {
|
|
11
12
|
const value = yield* Image.valueOf(snapshot);
|
|
@@ -6,9 +6,13 @@ import type { Snapshot } from "../Snapshot.js";
|
|
|
6
6
|
import { type SnapshotDelta, SnapshotDifference, SnapshotNodeKind } from "../SnapshotDelta.js";
|
|
7
7
|
import type { ImageFailure } from "../VfsError.js";
|
|
8
8
|
import type { DeltaBudget } from "./budget.js";
|
|
9
|
-
import { VfsError } from "./errors.js";
|
|
10
9
|
import * as Merkle from "./merkle.js";
|
|
11
|
-
import {
|
|
10
|
+
import { VfsError } from "../VfsError.js";
|
|
11
|
+
import { State } from "./engine.js";
|
|
12
|
+
declare const Ino: import("effect/Brand").Constructor<State.Ino>;
|
|
13
|
+
type Ino = State.Ino;
|
|
14
|
+
type Node = State.Node;
|
|
15
|
+
type VolumeState = State.VolumeState;
|
|
12
16
|
/** @internal */
|
|
13
17
|
export declare const FORMAT = "effect-vfs-delta";
|
|
14
18
|
/** @internal */
|
|
@@ -330,7 +334,7 @@ export type DirectoryNode = Node & {
|
|
|
330
334
|
/** @internal */
|
|
331
335
|
export declare const lookup: (get: (ino: Ino) => Node | undefined, entriesOf: (directory: DirectoryNode) => ReadonlyMap<string, Ino>, path: Uint8Array) => Found | undefined;
|
|
332
336
|
/** @internal */
|
|
333
|
-
export declare const valueEntries: (directory: DirectoryNode) => ReadonlyMap<string, Ino>;
|
|
337
|
+
export declare const valueEntries: (directory: DirectoryNode) => ReadonlyMap<string, State.Ino>;
|
|
334
338
|
/** @internal */
|
|
335
339
|
export declare const getDocument: (delta: SnapshotDelta) => Effect.Effect<Document, ImageFailure>;
|
|
336
340
|
/** @internal */
|
|
@@ -343,7 +347,7 @@ export interface Folded extends Output {
|
|
|
343
347
|
/** @internal */
|
|
344
348
|
export declare const fold: (base: VolumeState, identity: Merkle.Identity, document: Document) => Result.Result<Folded, ImageFailure>;
|
|
345
349
|
/** @internal */
|
|
346
|
-
export declare const foldedIdentity: (base: VolumeState, folded: Folded, identity: Merkle.Identity, limits: {
|
|
350
|
+
export declare const foldedIdentity: (base: State.VolumeState, folded: Folded, identity: Merkle.Identity, limits: {
|
|
347
351
|
readonly encodedBytes: ByteSize.ByteSize;
|
|
348
352
|
readonly records: number;
|
|
349
353
|
readonly entries: number;
|
|
@@ -354,9 +358,9 @@ export declare const foldedIdentity: (base: VolumeState, folded: Folded, identit
|
|
|
354
358
|
readonly outputRecords: number;
|
|
355
359
|
readonly outputBytes: ByteSize.ByteSize;
|
|
356
360
|
readonly inheritedRecords: number;
|
|
357
|
-
}) => Effect.Effect<Uint8Array<ArrayBufferLike>,
|
|
361
|
+
}) => Effect.Effect<Uint8Array<ArrayBufferLike>, ImageFailure, import("effect/crypto/Digest").Digest>;
|
|
358
362
|
/** @internal */
|
|
359
|
-
export declare const verifyWith: (value: VolumeState, identity: Merkle.Identity, document: {
|
|
363
|
+
export declare const verifyWith: (value: State.VolumeState, identity: Merkle.Identity, document: {
|
|
360
364
|
readonly format: "effect-vfs-delta";
|
|
361
365
|
readonly version: 1;
|
|
362
366
|
readonly base: string & import("effect/Brand").Brand<"CanonicalBase64">;
|
|
@@ -471,7 +475,7 @@ export declare const verifyWith: (value: VolumeState, identity: Merkle.Identity,
|
|
|
471
475
|
readonly outputRecords: number;
|
|
472
476
|
readonly outputBytes: ByteSize.ByteSize;
|
|
473
477
|
readonly inheritedRecords: number;
|
|
474
|
-
}) => Effect.Effect<VolumeState,
|
|
478
|
+
}) => Effect.Effect<State.VolumeState, VfsError, import("effect/crypto/Digest").Digest>;
|
|
475
479
|
/** @internal */
|
|
476
480
|
export declare const diffSnapshots: (base: Snapshot, target: Snapshot, limits: {
|
|
477
481
|
readonly encodedBytes: ByteSize.ByteSize;
|
|
@@ -484,7 +488,7 @@ export declare const diffSnapshots: (base: Snapshot, target: Snapshot, limits: {
|
|
|
484
488
|
readonly outputRecords: number;
|
|
485
489
|
readonly outputBytes: ByteSize.ByteSize;
|
|
486
490
|
readonly inheritedRecords: number;
|
|
487
|
-
}) => Effect.Effect<SnapshotDelta, import("effect/PlatformError").PlatformError | ImageFailure, import("effect/
|
|
491
|
+
}) => Effect.Effect<SnapshotDelta, import("effect/PlatformError").PlatformError | ImageFailure, import("effect/crypto/Digest").Digest>;
|
|
488
492
|
/** @internal */
|
|
489
493
|
export declare const inspectSnapshotDelta: (base: Snapshot, delta: SnapshotDelta, options: {
|
|
490
494
|
readonly includeTimestamps?: boolean;
|
|
@@ -513,7 +517,7 @@ export declare const inspectSnapshotDelta: (base: Snapshot, delta: SnapshotDelta
|
|
|
513
517
|
readonly beforeKind: "directory" | "file" | "symlink";
|
|
514
518
|
readonly afterKind: "directory" | "file" | "symlink";
|
|
515
519
|
readonly differences: readonly ("atimeNs" | "birthtimeNs" | "content" | "ctimeNs" | "gid" | "hardLinks" | "kind" | "mode" | "mtimeNs" | "target" | "uid")[];
|
|
516
|
-
})[], import("effect/PlatformError").PlatformError | VfsError, import("effect/
|
|
520
|
+
})[], import("effect/PlatformError").PlatformError | VfsError, import("effect/crypto/Digest").Digest>;
|
|
517
521
|
/** @internal */
|
|
518
522
|
export declare const applySnapshotDelta: (base: Snapshot, delta: SnapshotDelta, limits: {
|
|
519
523
|
readonly encodedBytes: ByteSize.ByteSize;
|
|
@@ -526,7 +530,7 @@ export declare const applySnapshotDelta: (base: Snapshot, delta: SnapshotDelta,
|
|
|
526
530
|
readonly outputRecords: number;
|
|
527
531
|
readonly outputBytes: ByteSize.ByteSize;
|
|
528
532
|
readonly inheritedRecords: number;
|
|
529
|
-
}) => Effect.Effect<Snapshot, import("effect/PlatformError").PlatformError | VfsError, import("effect/
|
|
533
|
+
}) => Effect.Effect<Snapshot, import("effect/PlatformError").PlatformError | VfsError, import("effect/crypto/Digest").Digest>;
|
|
530
534
|
/** @internal */
|
|
531
535
|
export declare const encodeSnapshotDelta: (delta: SnapshotDelta, limits: {
|
|
532
536
|
readonly encodedBytes: ByteSize.ByteSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshotDelta.d.ts","sourceRoot":"","sources":["../../src/internal/snapshotDelta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshotDelta.d.ts","sourceRoot":"","sources":["../../src/internal/snapshotDelta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as ByteSize from "effect/ByteSize";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import * as Hex from "effect/encoding/Hex";
|
|
4
|
+
import * as HashMap from "effect/HashMap";
|
|
4
5
|
import * as Match from "effect/Match";
|
|
6
|
+
import * as Option from "effect/Option";
|
|
5
7
|
import * as Order from "effect/Order";
|
|
6
8
|
import * as Result from "effect/Result";
|
|
7
9
|
import * as Schema from "effect/Schema";
|
|
@@ -9,15 +11,17 @@ import { SnapshotChange, SnapshotDifference, SnapshotNodeKind } from "../Snapsho
|
|
|
9
11
|
import { make as makeBytePath } from "./bytePath.js";
|
|
10
12
|
import { bytesOrder, decodeUtf8, sameBytes } from "./bytes.js";
|
|
11
13
|
import { CanonicalBase64 } from "./canonicalBase64.js";
|
|
12
|
-
import { imageFailure, isEncodingIssue, issueSite
|
|
14
|
+
import { imageFailure, isEncodingIssue, issueSite } from "./errors.js";
|
|
13
15
|
import * as Image from "./image.js";
|
|
14
|
-
import * as InodeTable from "./inodeTable.js";
|
|
15
16
|
import * as Merkle from "./merkle.js";
|
|
16
17
|
import { StoredMetadata } from "./metadata.js";
|
|
17
|
-
import {
|
|
18
|
+
import { VfsError } from "../VfsError.js";
|
|
19
|
+
import { Paths, State } from "./engine.js";
|
|
18
20
|
import * as SnapshotDeltaModel from "./snapshotDeltaModel.js";
|
|
19
21
|
import { UNCHECKED } from "./tree.js";
|
|
20
|
-
import {
|
|
22
|
+
import { storedMetadata } from "./volumeState.js";
|
|
23
|
+
const { isAttachedBytes, isNameBytes, joinPath, nameBytes, NUL_BYTE, ROOT_PATH, SLASH_BYTE } = Paths;
|
|
24
|
+
const { byEntryName, getNode, Ino, MAX_INO, payloadOf, ROOT_INO, setNode } = State;
|
|
21
25
|
/** @internal */
|
|
22
26
|
export const FORMAT = "effect-vfs-delta";
|
|
23
27
|
/** @internal */
|
|
@@ -397,9 +401,8 @@ export const fold = (base, identity, document) => {
|
|
|
397
401
|
const fail = (index, field) => Result.fail(imageFailure(OPERATION, "InvalidStructure", {
|
|
398
402
|
field: field === undefined ? `changes.${index}` : `changes.${index}.${field}`
|
|
399
403
|
}));
|
|
400
|
-
const owner = Symbol();
|
|
401
404
|
const revision = base.revision + 1n;
|
|
402
|
-
|
|
405
|
+
const inodes = HashMap.beginMutation(base.inodes);
|
|
403
406
|
let nextInode = base.nextInode;
|
|
404
407
|
let entries = base.entries;
|
|
405
408
|
let usedBytes = base.usedBytes;
|
|
@@ -410,9 +413,12 @@ export const fold = (base, identity, document) => {
|
|
|
410
413
|
const dirty = new Set();
|
|
411
414
|
const removed = new Set();
|
|
412
415
|
const created = new Map();
|
|
413
|
-
const get = (ino) =>
|
|
416
|
+
const get = (ino) => Option.getOrUndefined(HashMap.get(inodes, ino));
|
|
414
417
|
const put = (ino, node) => {
|
|
415
|
-
|
|
418
|
+
if (node === undefined)
|
|
419
|
+
HashMap.remove(inodes, ino);
|
|
420
|
+
else
|
|
421
|
+
setNode(inodes, node);
|
|
416
422
|
};
|
|
417
423
|
const entriesOf = (directory) => drafts.get(directory.ino) ?? directory.entries;
|
|
418
424
|
const editable = (directory) => {
|
|
@@ -601,7 +607,7 @@ export const fold = (base, identity, document) => {
|
|
|
601
607
|
if (paths.length > 1)
|
|
602
608
|
groups.set(ino, [...paths].sort(bytesOrder));
|
|
603
609
|
const value = {
|
|
604
|
-
inodes,
|
|
610
|
+
inodes: HashMap.endMutation(inodes),
|
|
605
611
|
open: new Map(),
|
|
606
612
|
nextInode,
|
|
607
613
|
revision: placed.length === 0 ? base.revision : revision,
|
|
@@ -50,5 +50,5 @@ export declare const mergeSnapshotDeltas: (base: Snapshot, ours: SnapshotDelta,
|
|
|
50
50
|
readonly differences: readonly ("atimeNs" | "birthtimeNs" | "content" | "ctimeNs" | "gid" | "hardLinks" | "kind" | "mode" | "mtimeNs" | "target" | "uid")[];
|
|
51
51
|
};
|
|
52
52
|
}[];
|
|
53
|
-
}, import("effect/PlatformError").PlatformError | import("
|
|
53
|
+
}, import("effect/PlatformError").PlatformError | import("../VfsError.js").VfsError, import("effect/crypto/Digest").Digest>;
|
|
54
54
|
//# sourceMappingURL=snapshotMerge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshotMerge.d.ts","sourceRoot":"","sources":["../../src/internal/snapshotMerge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAML,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshotMerge.d.ts","sourceRoot":"","sources":["../../src/internal/snapshotMerge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAML,KAAK,aAAa,EAGnB,MAAM,qBAAqB,CAAA;AAyuC5B,gBAAgB;AAChB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2HAkD9B,CAAA"}
|