@effect-vfs/core 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- 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 +107 -66
- package/dist/Caller.d.ts.map +1 -1
- package/dist/Caller.js +16 -86
- package/dist/LiveVolume.d.ts +75 -2
- package/dist/LiveVolume.d.ts.map +1 -1
- package/dist/LiveVolume.js +87 -3
- package/dist/Search.d.ts +32 -8
- package/dist/Search.d.ts.map +1 -1
- package/dist/Search.js +19 -10
- 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 +5 -2
- package/dist/Testing.d.ts.map +1 -1
- package/dist/Testing.js +2 -1
- package/dist/VfsError.d.ts +4 -2
- package/dist/VfsError.d.ts.map +1 -1
- package/dist/VfsError.js +3 -1
- package/dist/VirtualFileSystem.d.ts +151 -44
- package/dist/VirtualFileSystem.d.ts.map +1 -1
- package/dist/VirtualFileSystem.js +31 -21
- package/dist/Volume.d.ts +6 -1
- package/dist/Volume.d.ts.map +1 -1
- package/dist/Volume.js +6 -2
- package/dist/Watch.d.ts +18 -0
- package/dist/Watch.d.ts.map +1 -1
- package/dist/Watch.js +12 -0
- 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 +36 -0
- package/dist/internal/callerWatch.d.ts.map +1 -0
- package/dist/internal/callerWatch.js +185 -0
- 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 +2 -1
- package/dist/internal/fixture.d.ts.map +1 -1
- package/dist/internal/fixture.js +8 -4
- 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 +7 -4
- package/dist/internal/merkle.d.ts.map +1 -1
- package/dist/internal/merkle.js +6 -4
- 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 +11 -7
- 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 +20 -49
- package/dist/internal/virtualFileSystem.d.ts.map +1 -1
- package/dist/internal/virtualFileSystem.js +85 -1927
- 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 +9 -5
- package/dist/internal/watchHub.d.ts.map +1 -1
- package/dist/internal/watchHub.js +35 -8
- package/package.json +16 -9
- 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 -135
- package/dist/internal/resolution.d.ts.map +0 -1
- package/dist/internal/resolution.js +0 -277
- 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 -77
- package/dist/internal/tokenRegistry.d.ts.map +0 -1
- package/dist/internal/tokenRegistry.js +0 -128
- 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;
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+MAiLvB,CAAA"}
|
package/dist/internal/fixture.js
CHANGED
|
@@ -3,14 +3,18 @@ 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 */
|
|
13
|
-
export const fromFixture = Effect.
|
|
17
|
+
export const fromFixture = Effect.fnUntraced(function* (fixture, options) {
|
|
14
18
|
const config = yield* Effect.fromResult(decodeConfiguration(VolumeOptionsSchema, options ?? {}, "fromFixture"));
|
|
15
19
|
const source = yield* Schema.decodeEffect(FixtureSchema, { onExcessProperty: "error" })(fixture).pipe(Effect.mapError((cause) => imageFailure("fromFixture", "InvalidStructure", { field: "fixture", cause })));
|
|
16
20
|
if (source.entries.some((entry) => FixtureEntry.match(entry, {
|
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 */
|
|
@@ -3,7 +3,9 @@ import * as Crypto from "effect/Crypto";
|
|
|
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, Crypto.Crypto>;
|
|
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, Crypto.Crypto>;
|
|
43
45
|
/** @internal */
|
|
44
|
-
export declare const identify: (state: VolumeState, budget: WalkBudget) => Effect.Effect<Identity, PlatformError.PlatformError | ImageFailure, Crypto.Crypto>;
|
|
46
|
+
export declare const identify: (state: State.VolumeState, budget: WalkBudget) => Effect.Effect<Identity, PlatformError.PlatformError | ImageFailure, Crypto.Crypto>;
|
|
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,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
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,eAAe,CAAA;AACvC,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,0FAQrG,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,cAAc,wLAsB1B,CAAA;AAGD,gBAAgB;AAChB,eAAO,MAAM,QAAQ,sIAmGpB,CAAA"}
|
package/dist/internal/merkle.js
CHANGED
|
@@ -4,9 +4,10 @@ import * as ByteSize from "effect/ByteSize";
|
|
|
4
4
|
import * as Crypto from "effect/Crypto";
|
|
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,11 +74,12 @@ export const meter = (budget) => {
|
|
|
73
74
|
};
|
|
74
75
|
/** @internal */
|
|
75
76
|
export const nodeDigest = Effect.fnUntraced(function* (node, childDigest, meter) {
|
|
77
|
+
// TODO: (#304) Use Digest.sha256 once released; preserve the exact digest framing.
|
|
76
78
|
const crypto = yield* Crypto.Crypto;
|
|
77
79
|
const planned = layout(node);
|
|
78
80
|
// Reject oversized nodes before allocating their preimage.
|
|
79
81
|
yield* meter.charge(planned.length);
|
|
80
|
-
return yield* crypto.digest("SHA-256", preimage(node, planned, childDigest));
|
|
82
|
+
return yield* crypto.digest("SHA-256", preimage(node, planned, childDigest)).pipe(Effect.orDie);
|
|
81
83
|
});
|
|
82
84
|
/** @internal */
|
|
83
85
|
export const identityDigest = Effect.fnUntraced(function* (root, groups, meter) {
|
|
@@ -95,7 +97,7 @@ export const identityDigest = Effect.fnUntraced(function* (root, groups, meter)
|
|
|
95
97
|
for (const path of group)
|
|
96
98
|
offset = frame(out, offset, path);
|
|
97
99
|
}
|
|
98
|
-
return yield* crypto.digest("SHA-256", out);
|
|
100
|
+
return yield* crypto.digest("SHA-256", out).pipe(Effect.orDie);
|
|
99
101
|
});
|
|
100
102
|
// Digest leaves first and directories in reverse walk order so every child digest exists before its parent.
|
|
101
103
|
/** @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").Crypto>;
|
|
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").Crypto>;
|
|
475
479
|
/** @internal */
|
|
476
480
|
export declare const diffSnapshots: (base: Snapshot, target: Snapshot, limits: {
|
|
477
481
|
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").Crypto>;
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oHAkD9B,CAAA"}
|
|
@@ -7,13 +7,16 @@ import { MergeSideChange } from "../SnapshotDelta.js";
|
|
|
7
7
|
import { getBytes, make as makeBytePath } from "./bytePath.js";
|
|
8
8
|
import { bytesOrder, sameBytes } from "./bytes.js";
|
|
9
9
|
import { CanonicalBase64 } from "./canonicalBase64.js";
|
|
10
|
-
import {
|
|
10
|
+
import { Errors, State } from "./engine.js";
|
|
11
|
+
import { imageFailure } from "./errors.js";
|
|
11
12
|
import * as Image from "./image.js";
|
|
12
13
|
import * as Merkle from "./merkle.js";
|
|
13
14
|
import * as Delta from "./snapshotDelta.js";
|
|
14
15
|
import * as SnapshotDeltaModel from "./snapshotDeltaModel.js";
|
|
15
16
|
import { UNCHECKED } from "./tree.js";
|
|
16
|
-
import {
|
|
17
|
+
import { storedMetadata } from "./volumeState.js";
|
|
18
|
+
const argumentFailure = Errors.argumentFailure;
|
|
19
|
+
const { getNode, payloadOf } = State;
|
|
17
20
|
const OPERATION = "mergeSnapshotDeltas";
|
|
18
21
|
const SIDES = ["ours", "theirs"];
|
|
19
22
|
const other = (side) => (side === "ours" ? "theirs" : "ours");
|
package/dist/internal/tree.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import * as Stream from "effect/Stream";
|
|
|
5
5
|
import type { ImageFailure } from "../VfsError.js";
|
|
6
6
|
import type { Budget } from "./budget.js";
|
|
7
7
|
import { type FrameMeter, type LineFold } from "./lines.js";
|
|
8
|
-
import {
|
|
8
|
+
import { State } from "./engine.js";
|
|
9
|
+
import { type NodeSpec } from "./volumeState.js";
|
|
10
|
+
type Node = State.Node;
|
|
9
11
|
/** @internal */
|
|
10
12
|
export declare const TreeNode: Schema.TaggedUnion<{
|
|
11
13
|
readonly directory: Schema.TaggedStruct<"directory", {
|
|
@@ -205,7 +207,7 @@ export declare const UNCHECKED: {
|
|
|
205
207
|
/** @internal */
|
|
206
208
|
export declare const treeNode: (node: Node) => TreeNode;
|
|
207
209
|
/** @internal */
|
|
208
|
-
export declare const treeNodes: (value: VolumeState, extra?: readonly Node[] | undefined) => Effect.Effect<Node[], never, never>;
|
|
210
|
+
export declare const treeNodes: (value: State.VolumeState, extra?: readonly State.Node[] | undefined) => Effect.Effect<State.Node[], never, never>;
|
|
209
211
|
/** @internal */
|
|
210
212
|
export interface Writer<N extends TreeNode> {
|
|
211
213
|
readonly operation: string;
|