@effect-vfs/core 0.1.0 → 0.2.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 +97 -8
- package/dist/BytePath.d.ts +21 -0
- package/dist/BytePath.d.ts.map +1 -0
- package/dist/BytePath.js +16 -0
- package/dist/Snapshot.d.ts +2 -2
- package/dist/Snapshot.js +2 -2
- package/dist/SnapshotDelta.d.ts +126 -0
- package/dist/SnapshotDelta.d.ts.map +1 -0
- package/dist/SnapshotDelta.js +112 -0
- package/dist/VirtualFileSystem.d.ts +105 -32
- package/dist/VirtualFileSystem.d.ts.map +1 -1
- package/dist/VirtualFileSystem.js +95 -45
- package/dist/internal/canonicalBase64.d.ts +7 -0
- package/dist/internal/canonicalBase64.d.ts.map +1 -0
- package/dist/internal/canonicalBase64.js +11 -0
- package/dist/internal/image.d.ts +7 -5
- package/dist/internal/image.d.ts.map +1 -1
- package/dist/internal/image.js +10 -14
- package/dist/internal/overlayChanges.d.ts.map +1 -1
- package/dist/internal/overlayChanges.js +4 -15
- package/dist/internal/snapshotDelta.d.ts +88 -0
- package/dist/internal/snapshotDelta.d.ts.map +1 -0
- package/dist/internal/snapshotDelta.js +589 -0
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualFileSystem.d.ts","sourceRoot":"","sources":["../src/VirtualFileSystem.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VirtualFileSystem.d.ts","sourceRoot":"","sources":["../src/VirtualFileSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @since 0.1.0
|
|
10
10
|
*/
|
|
11
|
+
import * as ByteSize from "effect/ByteSize";
|
|
11
12
|
import * as Clock from "effect/Clock";
|
|
12
13
|
import * as Context from "effect/Context";
|
|
13
14
|
import { DecodeLimits, ImageError } from "./Snapshot.js";
|
|
@@ -18,26 +19,24 @@ import * as Encoding from "effect/Encoding";
|
|
|
18
19
|
import * as PubSub from "effect/PubSub";
|
|
19
20
|
import * as Result from "effect/Result";
|
|
20
21
|
import * as Schema from "effect/Schema";
|
|
22
|
+
import * as SchemaIssue from "effect/SchemaIssue";
|
|
23
|
+
import * as SchemaTransformation from "effect/SchemaTransformation";
|
|
21
24
|
import * as Scope from "effect/Scope";
|
|
22
25
|
import * as Semaphore from "effect/Semaphore";
|
|
23
26
|
import * as Stream from "effect/Stream";
|
|
27
|
+
import { BytePath, getBytes as getBytePathBytes, make as makeBytePath } from "./BytePath.js";
|
|
28
|
+
export { BytePath } from "./BytePath.js";
|
|
24
29
|
import * as Content from "./internal/content.js";
|
|
25
30
|
import * as Image from "./internal/image.js";
|
|
26
31
|
import { compareOverlay } from "./internal/overlayChanges.js";
|
|
27
32
|
import * as OverlayTesting from "./internal/overlayTesting.js";
|
|
28
|
-
|
|
33
|
+
import * as SnapshotDeltaInternal from "./internal/snapshotDelta.js";
|
|
34
|
+
import * as SnapshotDeltaModel from "./SnapshotDelta.js";
|
|
35
|
+
export { SnapshotChange, SnapshotChangesOptions, SnapshotDeltaError, SnapshotDeltaLimits, SnapshotDeltaTypeId, SnapshotDifference, SnapshotNodeKind } from "./SnapshotDelta.js";
|
|
29
36
|
const VolumeId = Symbol("@effect-vfs/core/Volume");
|
|
30
37
|
const CallerId = Symbol("@effect-vfs/core/Caller");
|
|
31
38
|
const FileHandleId = Symbol("@effect-vfs/core/FileHandle");
|
|
32
39
|
const DirectoryHandleId = Symbol("@effect-vfs/core/DirectoryHandle");
|
|
33
|
-
const bytePaths = new WeakMap();
|
|
34
|
-
/**
|
|
35
|
-
* Schema for an opaque byte-preserving filesystem path.
|
|
36
|
-
*
|
|
37
|
-
* @category schemas
|
|
38
|
-
* @since 0.1.0
|
|
39
|
-
*/
|
|
40
|
-
export const BytePath = Schema.declare((value) => typeof value === "object" && value !== null && bytePaths.has(value));
|
|
41
40
|
/**
|
|
42
41
|
* Schema for portable virtual filesystem error codes.
|
|
43
42
|
*
|
|
@@ -119,11 +118,11 @@ export const VolumeOptions = Schema.Struct({
|
|
|
119
118
|
/** Maximum number of filesystem nodes. Omission leaves the count unbounded. */
|
|
120
119
|
maxEntries: Schema.optionalKey(Natural),
|
|
121
120
|
/** Maximum combined regular-file content in bytes. */
|
|
122
|
-
maxBytes: Schema.optionalKey(
|
|
121
|
+
maxBytes: Schema.optionalKey(Schema.ByteSize),
|
|
123
122
|
/** Maximum content size of one regular file in bytes. */
|
|
124
|
-
maxFileBytes: Schema.optionalKey(
|
|
123
|
+
maxFileBytes: Schema.optionalKey(Schema.ByteSize.check(Schema.makeFilter((size) => ByteSize.isLessThanOrEqualTo(size, ByteSize.bytes(0xffffffff)) ? undefined : "must be at most 4294967295 bytes"))),
|
|
125
124
|
/** Maximum encoded byte length of an absolute or relative path. */
|
|
126
|
-
maxPathBytes: Schema.optionalKey(
|
|
125
|
+
maxPathBytes: Schema.optionalKey(Schema.ByteSize.check(Schema.makeFilter((size) => ByteSize.isGreaterThanOrEqualTo(size, ByteSize.bytes(1)) ? undefined : "must be at least 1 byte")))
|
|
127
126
|
});
|
|
128
127
|
// Match snapshot v1's canonical signed decimal timestamp domain.
|
|
129
128
|
const timestampLimit = 10n ** 128n - 1n;
|
|
@@ -291,21 +290,66 @@ export const encodeSnapshot = Image.encodeSnapshot;
|
|
|
291
290
|
* @since 0.1.0
|
|
292
291
|
*/
|
|
293
292
|
export const decodeSnapshot = Image.decodeSnapshot;
|
|
293
|
+
const deltaLimits = (limits) => {
|
|
294
|
+
const decoded = decodeConfiguration(SnapshotDeltaModel.SnapshotDeltaLimits, limits ?? SnapshotDeltaModel.SnapshotDeltaLimits.default);
|
|
295
|
+
return Result.isFailure(decoded) ? Effect.fail(decoded.failure) : Effect.succeed(decoded.success);
|
|
296
|
+
};
|
|
297
|
+
/**
|
|
298
|
+
* Computes an exact portable delta between two immutable snapshots.
|
|
299
|
+
* Requires the platform-neutral `Crypto.Crypto` service for base identity.
|
|
300
|
+
*
|
|
301
|
+
* @category snapshots
|
|
302
|
+
* @since 0.1.0
|
|
303
|
+
*/
|
|
304
|
+
export const diffSnapshots = Effect.fn("VirtualFileSystem.diffSnapshots")(function* (base, target, limits) {
|
|
305
|
+
return yield* SnapshotDeltaInternal.diffSnapshots(base, target, yield* deltaLimits(limits));
|
|
306
|
+
});
|
|
307
|
+
/**
|
|
308
|
+
* Verifies an exact snapshot delta against its base and derives an owned path-oriented summary.
|
|
309
|
+
* Requires the platform-neutral `Crypto.Crypto` service for base identity.
|
|
310
|
+
*/
|
|
311
|
+
export const inspectSnapshotDelta = Effect.fn("VirtualFileSystem.inspectSnapshotDelta")(function* (base, delta, options, limits) {
|
|
312
|
+
const decoded = decodeConfiguration(SnapshotDeltaModel.SnapshotChangesOptions, options ?? {});
|
|
313
|
+
if (Result.isFailure(decoded))
|
|
314
|
+
return yield* decoded.failure;
|
|
315
|
+
return yield* SnapshotDeltaInternal.inspectSnapshotDelta(base, delta, decoded.success, yield* deltaLimits(limits));
|
|
316
|
+
});
|
|
317
|
+
/**
|
|
318
|
+
* Applies an exact delta to its semantically matching base and returns a new snapshot.
|
|
319
|
+
* Requires the platform-neutral `Crypto.Crypto` service for base identity.
|
|
320
|
+
*
|
|
321
|
+
* @category snapshots
|
|
322
|
+
* @since 0.1.0
|
|
323
|
+
*/
|
|
324
|
+
export const applySnapshotDelta = Effect.fn("VirtualFileSystem.applySnapshotDelta")(function* (base, delta, limits) {
|
|
325
|
+
return yield* SnapshotDeltaInternal.applySnapshotDelta(base, delta, yield* deltaLimits(limits));
|
|
326
|
+
});
|
|
327
|
+
const deltaSchemaIssue = (cause, input, options) => new SchemaIssue.InvalidValue({ message: `Snapshot delta ${cause.code}${cause.field === undefined ? "" : ` at ${cause.field}`}` }, input, options);
|
|
328
|
+
/**
|
|
329
|
+
* Creates an Effect Schema codec between owned bytes and opaque snapshot deltas.
|
|
330
|
+
* Omission uses `SnapshotDeltaLimits.default`.
|
|
331
|
+
*/
|
|
332
|
+
export const SnapshotDeltaFromBytes = (limits) => {
|
|
333
|
+
const selected = Schema.decodeResult(SnapshotDeltaModel.SnapshotDeltaLimits, { onExcessProperty: "error" })(limits ?? SnapshotDeltaModel.SnapshotDeltaLimits.default);
|
|
334
|
+
return Schema.Uint8Array.pipe(Schema.decodeTo(SnapshotDeltaModel.SnapshotDelta, SchemaTransformation.transformEffect({
|
|
335
|
+
decode: (input, options) => Result.isFailure(selected)
|
|
336
|
+
? Effect.fail(new SchemaIssue.InvalidValue({ message: "Invalid snapshot delta limits" }, limits, options))
|
|
337
|
+
: SnapshotDeltaInternal.decodeSnapshotDelta(input, selected.success).pipe(Effect.mapError((cause) => deltaSchemaIssue(cause, input, options))),
|
|
338
|
+
encode: (delta, options) => Result.isFailure(selected)
|
|
339
|
+
? Effect.fail(new SchemaIssue.InvalidValue({ message: "Invalid snapshot delta limits" }, limits, options))
|
|
340
|
+
: SnapshotDeltaInternal.encodeSnapshotDelta(delta, selected.success).pipe(Effect.mapError((cause) => deltaSchemaIssue(cause, delta, options)))
|
|
341
|
+
})));
|
|
342
|
+
};
|
|
294
343
|
const failure = (code, operation, path) => new FsError({ code, operation, ...(path === undefined ? {} : { path }) });
|
|
295
344
|
const ownedPath = (bytes) => {
|
|
296
|
-
|
|
297
|
-
bytePaths.set(path, bytes);
|
|
298
|
-
return path;
|
|
345
|
+
return makeBytePath(bytes);
|
|
299
346
|
};
|
|
300
347
|
const strictString = (bytes, operation) => Effect.try({
|
|
301
348
|
try: () => new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes),
|
|
302
349
|
catch: () => failure("UnrepresentableName", operation)
|
|
303
350
|
});
|
|
304
351
|
const nameBytes = (name) => {
|
|
305
|
-
|
|
306
|
-
for (let i = 0; i < bytes.length; i++)
|
|
307
|
-
bytes[i] = Number.parseInt(name.slice(i * 2, i * 2 + 2), 16);
|
|
308
|
-
return bytes;
|
|
352
|
+
return Result.getOrThrow(Encoding.decodeHex(name));
|
|
309
353
|
};
|
|
310
354
|
// A zero-length view distinguishes a detached buffer from a valid empty buffer.
|
|
311
355
|
const attachedBuffer = (bytes) => {
|
|
@@ -338,9 +382,7 @@ export const pathFromBytes = Effect.fn("VirtualFileSystem.pathFromBytes")(functi
|
|
|
338
382
|
const owned = new Uint8Array(bytes);
|
|
339
383
|
if (owned.length === 0 || owned.includes(0))
|
|
340
384
|
return yield* failure("InvalidArgument", "pathFromBytes");
|
|
341
|
-
|
|
342
|
-
bytePaths.set(path, owned);
|
|
343
|
-
return path;
|
|
385
|
+
return makeBytePath(owned);
|
|
344
386
|
});
|
|
345
387
|
/**
|
|
346
388
|
* Copies the bytes held by an opaque byte path.
|
|
@@ -349,7 +391,7 @@ export const pathFromBytes = Effect.fn("VirtualFileSystem.pathFromBytes")(functi
|
|
|
349
391
|
* @since 0.1.0
|
|
350
392
|
*/
|
|
351
393
|
export const pathToBytes = Effect.fn("VirtualFileSystem.pathToBytes")(function* (path) {
|
|
352
|
-
const bytes =
|
|
394
|
+
const bytes = getBytePathBytes(path);
|
|
353
395
|
if (bytes === undefined)
|
|
354
396
|
return yield* failure("InvalidArgument", "pathToBytes");
|
|
355
397
|
return new Uint8Array(bytes);
|
|
@@ -377,7 +419,7 @@ const preparePath = (input, operation, maxPathBytes) => {
|
|
|
377
419
|
bytes = new TextEncoder().encode(input);
|
|
378
420
|
}
|
|
379
421
|
else if (typeof input === "object" && input !== null) {
|
|
380
|
-
bytes =
|
|
422
|
+
bytes = getBytePathBytes(input);
|
|
381
423
|
}
|
|
382
424
|
if (bytes === undefined)
|
|
383
425
|
return Result.fail(failure("InvalidArgument", operation));
|
|
@@ -385,7 +427,7 @@ const preparePath = (input, operation, maxPathBytes) => {
|
|
|
385
427
|
return Result.fail(failure("NotFound", operation, input));
|
|
386
428
|
if (bytes.includes(0))
|
|
387
429
|
return Result.fail(failure("InvalidArgument", operation, input));
|
|
388
|
-
if (maxPathBytes !== undefined && bytes.length
|
|
430
|
+
if (maxPathBytes !== undefined && ByteSize.isGreaterThan(ByteSize.bytes(bytes.length), maxPathBytes)) {
|
|
389
431
|
return Result.fail(failure("PathTooLong", operation, input));
|
|
390
432
|
}
|
|
391
433
|
const components = [];
|
|
@@ -469,11 +511,12 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
469
511
|
};
|
|
470
512
|
let nextInode = 2n;
|
|
471
513
|
let entries = 0;
|
|
472
|
-
let usedBytes =
|
|
473
|
-
|
|
514
|
+
let usedBytes = 0n;
|
|
515
|
+
// The schema caps this value at uint32, so this boundary conversion is exact.
|
|
516
|
+
const maxFileBytes = Number(ByteSize.toBigInt(settings.maxFileBytes ?? ByteSize.bytes(0xffffffff)));
|
|
474
517
|
if (image !== undefined) {
|
|
475
518
|
const incoming = new Map();
|
|
476
|
-
let content =
|
|
519
|
+
let content = 0n;
|
|
477
520
|
let count = 0;
|
|
478
521
|
for (const record of image.records) {
|
|
479
522
|
if (record.kind === "directory")
|
|
@@ -483,11 +526,11 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
483
526
|
if (record.kind === "file" && length > maxFileBytes) {
|
|
484
527
|
return yield* new ImageError({ code: "LimitExceeded", field: "maxFileBytes" });
|
|
485
528
|
}
|
|
486
|
-
content += length;
|
|
529
|
+
content += BigInt(length);
|
|
487
530
|
}
|
|
488
531
|
}
|
|
489
532
|
if ((settings.maxEntries !== undefined && count > settings.maxEntries) ||
|
|
490
|
-
(settings.maxBytes !== undefined && content > settings.maxBytes)) {
|
|
533
|
+
(settings.maxBytes !== undefined && content > ByteSize.toBigInt(settings.maxBytes))) {
|
|
491
534
|
return yield* new ImageError({ code: "LimitExceeded", field: "volume" });
|
|
492
535
|
}
|
|
493
536
|
const baseContents = source._tag === "Overlay" ? Content.forOverlay(source.base, image) : undefined;
|
|
@@ -685,7 +728,7 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
685
728
|
};
|
|
686
729
|
const reclaim = (file) => {
|
|
687
730
|
if (file.metadata.nlink === 0 && file.openCount === 0) {
|
|
688
|
-
usedBytes -= file.data.bytes.length;
|
|
731
|
+
usedBytes -= BigInt(file.data.bytes.length);
|
|
689
732
|
file.data = Content.empty();
|
|
690
733
|
}
|
|
691
734
|
};
|
|
@@ -699,7 +742,7 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
699
742
|
if (node.kind === "file")
|
|
700
743
|
reclaim(node);
|
|
701
744
|
else if (node.metadata.nlink === 0)
|
|
702
|
-
usedBytes -= node.target.length;
|
|
745
|
+
usedBytes -= BigInt(node.target.length);
|
|
703
746
|
}
|
|
704
747
|
};
|
|
705
748
|
const releaseFile = (ref) => {
|
|
@@ -716,13 +759,14 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
716
759
|
if (length > BigInt(maxFileBytes))
|
|
717
760
|
return yield* failure("FileTooLarge", operation);
|
|
718
761
|
const size = Number(length);
|
|
719
|
-
if (
|
|
762
|
+
if (settings.maxBytes !== undefined &&
|
|
763
|
+
BigInt(size - file.data.bytes.length) > ByteSize.toBigInt(settings.maxBytes) - usedBytes) {
|
|
720
764
|
return yield* failure("NoSpace", operation);
|
|
721
765
|
}
|
|
722
766
|
const data = new Uint8Array(size);
|
|
723
767
|
data.set(file.data.bytes.subarray(0, size));
|
|
724
768
|
const now = yield* timestamp(operation);
|
|
725
|
-
usedBytes += size - file.data.bytes.length;
|
|
769
|
+
usedBytes += BigInt(size - file.data.bytes.length);
|
|
726
770
|
file.data = Content.make(data);
|
|
727
771
|
file.metadata = {
|
|
728
772
|
...file.metadata,
|
|
@@ -772,8 +816,11 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
772
816
|
if (offset >= BigInt(maxFileBytes))
|
|
773
817
|
return yield* failure("FileTooLarge", "write");
|
|
774
818
|
const start = Number(offset);
|
|
775
|
-
const free =
|
|
776
|
-
|
|
819
|
+
const free = settings.maxBytes === undefined
|
|
820
|
+
? BigInt(maxFileBytes)
|
|
821
|
+
: ByteSize.toBigInt(settings.maxBytes) - usedBytes;
|
|
822
|
+
const maximumEnd = BigInt(file.data.bytes.length) + free;
|
|
823
|
+
const end = Number(BigInt(maxFileBytes) < maximumEnd ? BigInt(maxFileBytes) : maximumEnd);
|
|
777
824
|
const count = Math.min(bytes.length, Math.max(0, end - start));
|
|
778
825
|
if (count === 0)
|
|
779
826
|
return yield* failure("NoSpace", "write");
|
|
@@ -784,7 +831,7 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
784
831
|
data.set(file.data.bytes);
|
|
785
832
|
const now = yield* timestamp("write");
|
|
786
833
|
data.set(bytes.subarray(0, count), start);
|
|
787
|
-
usedBytes += size - file.data.bytes.length;
|
|
834
|
+
usedBytes += BigInt(size - file.data.bytes.length);
|
|
788
835
|
file.data = Content.make(data);
|
|
789
836
|
file.metadata = {
|
|
790
837
|
...file.metadata,
|
|
@@ -902,7 +949,8 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
902
949
|
if (++traversals > 40)
|
|
903
950
|
return yield* failure("SymlinkLoop", operation, path.input);
|
|
904
951
|
const suffix = work.suffixes[index] ?? new Uint8Array(0);
|
|
905
|
-
if (settings.maxPathBytes !== undefined &&
|
|
952
|
+
if (settings.maxPathBytes !== undefined &&
|
|
953
|
+
ByteSize.isGreaterThan(ByteSize.bytes(child.target.length + suffix.length), settings.maxPathBytes)) {
|
|
906
954
|
return yield* failure("PathTooLong", operation, path.input);
|
|
907
955
|
}
|
|
908
956
|
const expansion = new Uint8Array(child.target.length + suffix.length);
|
|
@@ -1168,7 +1216,8 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
1168
1216
|
if (size > maxFileBytes)
|
|
1169
1217
|
return yield* failure("FileTooLarge", "writeFile", input);
|
|
1170
1218
|
const reclaimed = replaced !== undefined && replaced.metadata.nlink === 1 ? replaced.target.length : 0;
|
|
1171
|
-
if (
|
|
1219
|
+
if (settings.maxBytes !== undefined &&
|
|
1220
|
+
BigInt(size - previous) > ByteSize.toBigInt(settings.maxBytes) - usedBytes + BigInt(reclaimed)) {
|
|
1172
1221
|
return yield* failure("NoSpace", "writeFile", input);
|
|
1173
1222
|
}
|
|
1174
1223
|
if (file !== undefined && !chosen.truncate && captured.length === 0 && chosen.finalMode === undefined) {
|
|
@@ -1202,7 +1251,7 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
1202
1251
|
mtimeNs: now,
|
|
1203
1252
|
ctimeNs: now
|
|
1204
1253
|
};
|
|
1205
|
-
usedBytes += size - previous;
|
|
1254
|
+
usedBytes += BigInt(size - previous);
|
|
1206
1255
|
if (file === undefined) {
|
|
1207
1256
|
if (replaced !== undefined)
|
|
1208
1257
|
detach(replaced, now);
|
|
@@ -1305,7 +1354,7 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
1305
1354
|
if (typeof target === "string" && !wellFormed(target)) {
|
|
1306
1355
|
return yield* failure("InvalidPathEncoding", "symlink", target);
|
|
1307
1356
|
}
|
|
1308
|
-
const rawTarget = typeof target === "string" ? new TextEncoder().encode(target) :
|
|
1357
|
+
const rawTarget = typeof target === "string" ? new TextEncoder().encode(target) : getBytePathBytes(target);
|
|
1309
1358
|
if (rawTarget === undefined || rawTarget.includes(0)) {
|
|
1310
1359
|
return yield* failure("InvalidArgument", "symlink", target);
|
|
1311
1360
|
}
|
|
@@ -1323,7 +1372,8 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
1323
1372
|
if (path.trailingSlash)
|
|
1324
1373
|
return yield* failure("NotDirectory", "symlink", input);
|
|
1325
1374
|
if ((settings.maxEntries !== undefined && entries >= settings.maxEntries) ||
|
|
1326
|
-
|
|
1375
|
+
(settings.maxBytes !== undefined &&
|
|
1376
|
+
BigInt(bytes.length) > ByteSize.toBigInt(settings.maxBytes) - usedBytes))
|
|
1327
1377
|
return yield* failure("NoSpace", "symlink", input);
|
|
1328
1378
|
const now = yield* timestamp("symlink");
|
|
1329
1379
|
const node = {
|
|
@@ -1341,7 +1391,7 @@ const makeVolume = Effect.fn("VirtualFileSystem.makeVolume")(function* (source,
|
|
|
1341
1391
|
parent.metadata = { ...parent.metadata, mtimeNs: now, ctimeNs: now };
|
|
1342
1392
|
nextInode += 1n;
|
|
1343
1393
|
entries += 1;
|
|
1344
|
-
usedBytes += bytes.length;
|
|
1394
|
+
usedBytes += BigInt(bytes.length);
|
|
1345
1395
|
publishEntry("Create", parent, name);
|
|
1346
1396
|
}));
|
|
1347
1397
|
}),
|
|
@@ -1790,7 +1840,7 @@ const FixtureMetadata = Schema.Struct({
|
|
|
1790
1840
|
});
|
|
1791
1841
|
const FixturePath = Schema.Union([
|
|
1792
1842
|
Schema.String,
|
|
1793
|
-
|
|
1843
|
+
BytePath
|
|
1794
1844
|
]);
|
|
1795
1845
|
/**
|
|
1796
1846
|
* Schema for a complete fixture namespace with optional metadata and forward hard links.
|
|
@@ -1908,7 +1958,7 @@ export const fromFixture = Effect.fn("VirtualFileSystem.fromFixture")(function*
|
|
|
1908
1958
|
}
|
|
1909
1959
|
const target = typeof entry.target === "string"
|
|
1910
1960
|
? new TextEncoder().encode(entry.target)
|
|
1911
|
-
:
|
|
1961
|
+
: getBytePathBytes(entry.target);
|
|
1912
1962
|
if (target === undefined || target.includes(0)) {
|
|
1913
1963
|
return yield* new ImageError({
|
|
1914
1964
|
code: "InvalidStructure",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Strict padded base64 check, including canonical unused pad bits and no ignored whitespace. */
|
|
2
|
+
export declare const isCanonical: (value: string) => boolean;
|
|
3
|
+
/** Decoded length for an already canonical base64 string, without allocating its payload. */
|
|
4
|
+
export declare const decodedLength: (value: string) => number;
|
|
5
|
+
/** Decodes base64 previously accepted by `isCanonical`. */
|
|
6
|
+
export declare const decodeTrusted: (value: string) => Uint8Array;
|
|
7
|
+
//# sourceMappingURL=canonicalBase64.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalBase64.d.ts","sourceRoot":"","sources":["../../src/internal/canonicalBase64.ts"],"names":[],"mappings":"AAKA,iGAAiG;AACjG,eAAO,MAAM,WAAW,UAAW,MAAM,KAAG,OAGP,CAAA;AAErC,6FAA6F;AAC7F,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MACmC,CAAA;AAEjF,2DAA2D;AAC3D,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,UAC4D,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as Encoding from "effect/Encoding";
|
|
2
|
+
import * as Result from "effect/Result";
|
|
3
|
+
const canonicalTail = /^(?:[A-Za-z0-9+/]{4}|[A-Za-z0-9+/][AQgw]==|[A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=)?(?![\s\S])/;
|
|
4
|
+
/** Strict padded base64 check, including canonical unused pad bits and no ignored whitespace. */
|
|
5
|
+
export const isCanonical = (value) => value.length % 4 === 0 &&
|
|
6
|
+
!/[^A-Za-z0-9+/]/.test(value.slice(0, -4)) &&
|
|
7
|
+
canonicalTail.test(value.slice(-4));
|
|
8
|
+
/** Decoded length for an already canonical base64 string, without allocating its payload. */
|
|
9
|
+
export const decodedLength = (value) => value.length / 4 * 3 - (value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0);
|
|
10
|
+
/** Decodes base64 previously accepted by `isCanonical`. */
|
|
11
|
+
export const decodeTrusted = (value) => Result.getOrThrowWith(Encoding.decodeBase64(value), () => new Error("Invalid trusted canonical base64"));
|
package/dist/internal/image.d.ts
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
6
|
+
import * as ByteSize from "effect/ByteSize";
|
|
6
7
|
import * as Effect from "effect/Effect";
|
|
7
8
|
import * as Schema from "effect/Schema";
|
|
8
9
|
import { ImageError, type Snapshot } from "../Snapshot.js";
|
|
10
|
+
import * as CanonicalBase64 from "./canonicalBase64.js";
|
|
9
11
|
/** @internal */
|
|
10
12
|
export declare const StoredMetadata: Schema.Struct<{
|
|
11
13
|
readonly uid: Schema.Finite;
|
|
@@ -116,7 +118,7 @@ export declare const Document: Schema.Struct<{
|
|
|
116
118
|
/** @internal */
|
|
117
119
|
export type Document = typeof Document.Type;
|
|
118
120
|
/** @internal */
|
|
119
|
-
export declare const decodedLength:
|
|
121
|
+
export declare const decodedLength: typeof CanonicalBase64.decodedLength;
|
|
120
122
|
/** @internal */
|
|
121
123
|
export declare const base64: (input: Uint8Array) => string;
|
|
122
124
|
/** @internal */
|
|
@@ -125,18 +127,18 @@ export declare const bytes: (value: string) => Uint8Array;
|
|
|
125
127
|
export declare const inspect: (snapshot: Snapshot) => Effect.Effect<Document, ImageError>;
|
|
126
128
|
/** @internal */
|
|
127
129
|
export declare const capture: (input: unknown, limits?: {
|
|
128
|
-
readonly maxEncodedBytes:
|
|
130
|
+
readonly maxEncodedBytes: ByteSize.ByteSize;
|
|
129
131
|
readonly maxRecords: number;
|
|
130
132
|
readonly maxEntries: number;
|
|
131
|
-
readonly maxDecodedBytes:
|
|
133
|
+
readonly maxDecodedBytes: ByteSize.ByteSize;
|
|
132
134
|
} | undefined) => Effect.Effect<Snapshot, ImageError, never>;
|
|
133
135
|
/** @internal */
|
|
134
136
|
export declare const encodeSnapshot: (snapshot: Snapshot) => Effect.Effect<Uint8Array<ArrayBuffer>, ImageError, never>;
|
|
135
137
|
/** @internal */
|
|
136
138
|
export declare const decodeSnapshot: (input: Uint8Array<ArrayBufferLike>, limits: {
|
|
137
|
-
readonly maxEncodedBytes:
|
|
139
|
+
readonly maxEncodedBytes: ByteSize.ByteSize;
|
|
138
140
|
readonly maxRecords: number;
|
|
139
141
|
readonly maxEntries: number;
|
|
140
|
-
readonly maxDecodedBytes:
|
|
142
|
+
readonly maxDecodedBytes: ByteSize.ByteSize;
|
|
141
143
|
}) => Effect.Effect<Snapshot, ImageError, never>;
|
|
142
144
|
//# sourceMappingURL=image.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/internal/image.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAgB,UAAU,EAAE,KAAK,QAAQ,EAAkB,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/internal/image.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAgB,UAAU,EAAE,KAAK,QAAQ,EAAkB,MAAM,gBAAgB,CAAA;AACxF,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAavD,gBAAgB;AAChB,eAAO,MAAM,cAAc;;;;;;;;EAQzB,CAAA;AACF,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,gBAAgB;AAChB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASjB,CAAA;AACF,gBAAgB;AAChB,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AACvC,gBAAgB;AAChB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnB,CAAA;AACF,gBAAgB;AAChB,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;AAE3C,gBAAgB;AAChB,eAAO,MAAM,aAAa,sCAAgC,CAAA;AAC1D,gBAAgB;AAChB,eAAO,MAAM,MAAM,UAAW,UAAU,KAAG,MAU1C,CAAA;AAGD,gBAAgB;AAChB,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,UAErC,CAAA;AACD,gBAAgB;AAChB,eAAO,MAAM,OAAO,aAAc,QAAQ,KAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAI3E,CAAA;AAEJ,gBAAgB;AAChB,eAAO,MAAM,OAAO;;;;;4DAwElB,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,cAAc,mFAKzB,CAAA;AACF,gBAAgB;AAChB,eAAO,MAAM,cAAc;;;;;gDAqB1B,CAAA"}
|
package/dist/internal/image.js
CHANGED
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
6
|
+
import * as ByteSize from "effect/ByteSize";
|
|
6
7
|
import * as Effect from "effect/Effect";
|
|
7
8
|
import * as Encoding from "effect/Encoding";
|
|
8
9
|
import * as Result from "effect/Result";
|
|
9
10
|
import * as Schema from "effect/Schema";
|
|
10
11
|
import { DecodeLimits, ImageError, SnapshotTypeId } from "../Snapshot.js";
|
|
12
|
+
import * as CanonicalBase64 from "./canonicalBase64.js";
|
|
11
13
|
const natural = Schema.Finite.check(Schema.isInt(), Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER));
|
|
12
14
|
class SnapshotImpl {
|
|
13
15
|
[SnapshotTypeId] = SnapshotTypeId;
|
|
@@ -43,12 +45,8 @@ export const Document = Schema.Struct({
|
|
|
43
45
|
records: Schema.Array(Record)
|
|
44
46
|
});
|
|
45
47
|
const snapshots = new WeakMap();
|
|
46
|
-
const canonicalBase64Tail = /^(?:[A-Za-z0-9+/]{4}|[A-Za-z0-9+/][AQgw]==|[A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=)?(?![\s\S])/;
|
|
47
|
-
// Only the final quartet can contain padding. Scanning the alphabet separately avoids
|
|
48
|
-
// the regexp stack growth caused by repeating a four-character group over large files.
|
|
49
|
-
const canonicalBase64 = (value) => value.length % 4 === 0 && !/[^A-Za-z0-9+/]/.test(value.slice(0, -4)) && canonicalBase64Tail.test(value.slice(-4));
|
|
50
48
|
/** @internal */
|
|
51
|
-
export const decodedLength =
|
|
49
|
+
export const decodedLength = CanonicalBase64.decodedLength;
|
|
52
50
|
/** @internal */
|
|
53
51
|
export const base64 = (input) => {
|
|
54
52
|
// Effect's encoder concatenates individual characters. Join bounded chunks so snapshots
|
|
@@ -64,10 +62,7 @@ export const base64 = (input) => {
|
|
|
64
62
|
const error = (code, field) => new ImageError({ code, ...(field === undefined ? {} : { field }) });
|
|
65
63
|
/** @internal */
|
|
66
64
|
export const bytes = (value) => {
|
|
67
|
-
|
|
68
|
-
if (Result.isFailure(result))
|
|
69
|
-
throw new Error("Invalid trusted snapshot base64");
|
|
70
|
-
return result.success;
|
|
65
|
+
return CanonicalBase64.decodeTrusted(value);
|
|
71
66
|
};
|
|
72
67
|
/** @internal */
|
|
73
68
|
export const inspect = (snapshot) => Effect.suspend(() => {
|
|
@@ -82,7 +77,7 @@ export const capture = Effect.fnUntraced(function* (input, limits) {
|
|
|
82
77
|
const document = decoded.success;
|
|
83
78
|
const records = new Map();
|
|
84
79
|
let entries = 0;
|
|
85
|
-
let payload =
|
|
80
|
+
let payload = ByteSize.zero;
|
|
86
81
|
if (limits !== undefined && document.records.length > limits.maxRecords) {
|
|
87
82
|
return yield* error("LimitExceeded", "records");
|
|
88
83
|
}
|
|
@@ -101,10 +96,10 @@ export const capture = Effect.fnUntraced(function* (input, limits) {
|
|
|
101
96
|
? record.entries.map((entry) => entry.name)
|
|
102
97
|
: [record.kind === "file" ? record.data : record.target];
|
|
103
98
|
for (const value of values) {
|
|
104
|
-
if (!
|
|
99
|
+
if (!CanonicalBase64.isCanonical(value))
|
|
105
100
|
return yield* error("InvalidEncoding", record.id);
|
|
106
|
-
payload
|
|
107
|
-
if (
|
|
101
|
+
payload = ByteSize.sum(payload, ByteSize.bytes(decodedLength(value)));
|
|
102
|
+
if (limits !== undefined && ByteSize.isGreaterThan(payload, limits.maxDecodedBytes)) {
|
|
108
103
|
return yield* error("LimitExceeded", "bytes");
|
|
109
104
|
}
|
|
110
105
|
}
|
|
@@ -173,8 +168,9 @@ export const decodeSnapshot = Effect.fn("VirtualFileSystem.decodeSnapshot")(func
|
|
|
173
168
|
return yield* error("InvalidStructure", "limits");
|
|
174
169
|
if (!(input instanceof Uint8Array) || !(input.buffer instanceof ArrayBuffer))
|
|
175
170
|
return yield* error("InvalidEncoding");
|
|
176
|
-
if (input.byteLength
|
|
171
|
+
if (ByteSize.isGreaterThan(ByteSize.bytes(input.byteLength), checked.success.maxEncodedBytes)) {
|
|
177
172
|
return yield* error("LimitExceeded", "encodedBytes");
|
|
173
|
+
}
|
|
178
174
|
const text = yield* Effect.try({
|
|
179
175
|
try: () => new TextDecoder("utf-8", { fatal: true }).decode(new Uint8Array(input)),
|
|
180
176
|
catch: () => error("InvalidEncoding")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlayChanges.d.ts","sourceRoot":"","sources":["../../src/internal/overlayChanges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"overlayChanges.d.ts","sourceRoot":"","sources":["../../src/internal/overlayChanges.ts"],"names":[],"mappings":"AAGA,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;CACvC;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;AAEtH,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAAE,GAC9F;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAAE,GAChG;IACA,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACvD,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACvD,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACvD,CAAA;AA4EH,gBAAgB;AAChB,eAAO,MAAM,cAAc,SACnB,aAAa,CAAC,gBAAgB,CAAC,WAC5B,aAAa,CAAC,gBAAgB,CAAC,kCAEvC,aAAa,CAAC,gBAAgB,CAoEhC,CAAA"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as Encoding from "effect/Encoding";
|
|
2
|
+
import * as Equal from "effect/Equal";
|
|
1
3
|
const timestampFields = new Set(["atimeNs", "mtimeNs", "ctimeNs", "birthtimeNs"]);
|
|
2
4
|
const differenceOrder = [
|
|
3
5
|
"content",
|
|
@@ -16,12 +18,7 @@ const tagOrder = {
|
|
|
16
18
|
Renamed: 3,
|
|
17
19
|
Updated: 4
|
|
18
20
|
};
|
|
19
|
-
const key =
|
|
20
|
-
let result = "";
|
|
21
|
-
for (const byte of path)
|
|
22
|
-
result += byte.toString(16).padStart(2, "0");
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
21
|
+
const key = Encoding.encodeHex;
|
|
25
22
|
const comparePaths = (left, right) => {
|
|
26
23
|
const length = Math.min(left.length, right.length);
|
|
27
24
|
for (let index = 0; index < length; index++) {
|
|
@@ -32,15 +29,7 @@ const comparePaths = (left, right) => {
|
|
|
32
29
|
return left.length - right.length;
|
|
33
30
|
};
|
|
34
31
|
const sameBytes = (left, right) => {
|
|
35
|
-
|
|
36
|
-
return true;
|
|
37
|
-
if (left === undefined || right === undefined || left.length !== right.length)
|
|
38
|
-
return false;
|
|
39
|
-
for (let index = 0; index < left.length; index++) {
|
|
40
|
-
if (left[index] !== right[index])
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
return true;
|
|
32
|
+
return Equal.equals(left, right);
|
|
44
33
|
};
|
|
45
34
|
const differences = (before, after, includeTimestamps) => differenceOrder.filter((field) => {
|
|
46
35
|
if (!includeTimestamps && timestampFields.has(field))
|