first commit

This commit is contained in:
Stefan Hacker
2026-04-03 09:38:48 +02:00
commit 37ad745546
47450 changed files with 3120798 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
import type { AsyncSnapshotOptions, SnapshotNode } from './types';
export declare const toSnapshot: ({ fs, path, separator }: AsyncSnapshotOptions) => Promise<SnapshotNode>;
export declare const fromSnapshot: (snapshot: SnapshotNode, { fs, path, separator }: AsyncSnapshotOptions) => Promise<void>;
+59
View File
@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromSnapshot = exports.toSnapshot = void 0;
const toSnapshot = async ({ fs, path = '/', separator = '/' }) => {
const stats = await fs.lstat(path);
if (stats.isDirectory()) {
const list = await fs.readdir(path);
const entries = {};
const dir = path.endsWith(separator) ? path : path + separator;
const snapshots = await Promise.all(list.map(child => (0, exports.toSnapshot)({ fs, path: `${dir}${child}`, separator })));
for (let i = 0; i < list.length; i++) {
if (snapshots[i])
entries['' + list[i]] = snapshots[i];
}
return [0 /* SnapshotNodeType.Folder */, {}, entries];
}
else if (stats.isFile()) {
const buf = (await fs.readFile(path));
const uint8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
return [1 /* SnapshotNodeType.File */, {}, uint8];
}
else if (stats.isSymbolicLink()) {
return [
2 /* SnapshotNodeType.Symlink */,
{
target: (await fs.readlink(path, { encoding: 'utf8' })),
},
];
}
return null;
};
exports.toSnapshot = toSnapshot;
const fromSnapshot = async (snapshot, { fs, path = '/', separator = '/' }) => {
if (!snapshot)
return;
switch (snapshot[0]) {
case 0 /* SnapshotNodeType.Folder */: {
if (!path.endsWith(separator))
path = path + separator;
const [, , entries] = snapshot;
await fs.mkdir(path, { recursive: true });
for (const [name, child] of Object.entries(entries))
await (0, exports.fromSnapshot)(child, { fs, path: `${path}${name}`, separator });
break;
}
case 1 /* SnapshotNodeType.File */: {
const [, , data] = snapshot;
await fs.writeFile(path, data);
break;
}
case 2 /* SnapshotNodeType.Symlink */: {
const [, { target }] = snapshot;
await fs.symlink(target, path);
break;
}
}
};
exports.fromSnapshot = fromSnapshot;
//# sourceMappingURL=async.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"async.js","sourceRoot":"","sources":["../src/async.ts"],"names":[],"mappings":"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"}
+6
View File
@@ -0,0 +1,6 @@
import type { CborUint8Array } from '@jsonjoy.com/json-pack/lib/cbor/types';
import type { AsyncSnapshotOptions, SnapshotNode, SnapshotOptions } from './types';
export declare const toBinarySnapshotSync: (options: SnapshotOptions) => CborUint8Array<SnapshotNode>;
export declare const fromBinarySnapshotSync: (uint8: CborUint8Array<SnapshotNode>, options: SnapshotOptions) => void;
export declare const toBinarySnapshot: (options: AsyncSnapshotOptions) => Promise<CborUint8Array<SnapshotNode>>;
export declare const fromBinarySnapshot: (uint8: CborUint8Array<SnapshotNode>, options: AsyncSnapshotOptions) => Promise<void>;
+31
View File
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromBinarySnapshot = exports.toBinarySnapshot = exports.fromBinarySnapshotSync = exports.toBinarySnapshotSync = void 0;
const CborEncoder_1 = require("@jsonjoy.com/json-pack/lib/cbor/CborEncoder");
const CborDecoder_1 = require("@jsonjoy.com/json-pack/lib/cbor/CborDecoder");
const sync_1 = require("./sync");
const async_1 = require("./async");
const shared_1 = require("./shared");
const encoder = new CborEncoder_1.CborEncoder(shared_1.writer);
const decoder = new CborDecoder_1.CborDecoder();
const toBinarySnapshotSync = (options) => {
const snapshot = (0, sync_1.toSnapshotSync)(options);
return encoder.encode(snapshot);
};
exports.toBinarySnapshotSync = toBinarySnapshotSync;
const fromBinarySnapshotSync = (uint8, options) => {
const snapshot = decoder.decode(uint8);
(0, sync_1.fromSnapshotSync)(snapshot, options);
};
exports.fromBinarySnapshotSync = fromBinarySnapshotSync;
const toBinarySnapshot = async (options) => {
const snapshot = await (0, async_1.toSnapshot)(options);
return encoder.encode(snapshot);
};
exports.toBinarySnapshot = toBinarySnapshot;
const fromBinarySnapshot = async (uint8, options) => {
const snapshot = decoder.decode(uint8);
await (0, async_1.fromSnapshot)(snapshot, options);
};
exports.fromBinarySnapshot = fromBinarySnapshot;
//# sourceMappingURL=binary.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,6EAA0E;AAC1E,iCAA0D;AAC1D,mCAAmD;AACnD,qCAAkC;AAIlC,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,eAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE3B,MAAM,oBAAoB,GAAG,CAAC,OAAwB,EAAgC,EAAE;IAC7F,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,sBAAsB,GAAG,CAAC,KAAmC,EAAE,OAAwB,EAAQ,EAAE;IAC5G,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAC;IACvD,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,sBAAsB,0BAGjC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAA6B,EAAyC,EAAE;IAC7G,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,gBAAgB,oBAG3B;AAEK,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAAmC,EACnC,OAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiB,CAAC;IACvD,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B"}
+5
View File
@@ -0,0 +1,5 @@
export declare const enum SnapshotNodeType {
Folder = 0,
File = 1,
Symlink = 2
}
+3
View File
@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=constants.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":""}
+5
View File
@@ -0,0 +1,5 @@
export type * from './types';
export * from './constants';
export * from './sync';
export * from './binary';
export * from './json';
+8
View File
@@ -0,0 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./constants"), exports);
tslib_1.__exportStar(require("./sync"), exports);
tslib_1.__exportStar(require("./binary"), exports);
tslib_1.__exportStar(require("./json"), exports);
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,sDAA4B;AAC5B,iDAAuB;AACvB,mDAAyB;AACzB,iDAAuB"}
+10
View File
@@ -0,0 +1,10 @@
import type { AsyncSnapshotOptions, SnapshotNode, SnapshotOptions } from './types';
/** @todo Import this type from `json-joy` once it is available. */
export type JsonUint8Array<T> = Uint8Array & {
__BRAND__: 'json';
__TYPE__: T;
};
export declare const toJsonSnapshotSync: (options: SnapshotOptions) => JsonUint8Array<SnapshotNode>;
export declare const fromJsonSnapshotSync: (uint8: JsonUint8Array<SnapshotNode>, options: SnapshotOptions) => void;
export declare const toJsonSnapshot: (options: AsyncSnapshotOptions) => Promise<JsonUint8Array<SnapshotNode>>;
export declare const fromJsonSnapshot: (uint8: JsonUint8Array<SnapshotNode>, options: AsyncSnapshotOptions) => Promise<void>;
+31
View File
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromJsonSnapshot = exports.toJsonSnapshot = exports.fromJsonSnapshotSync = exports.toJsonSnapshotSync = void 0;
const JsonEncoder_1 = require("@jsonjoy.com/json-pack/lib/json/JsonEncoder");
const JsonDecoder_1 = require("@jsonjoy.com/json-pack/lib/json/JsonDecoder");
const sync_1 = require("./sync");
const async_1 = require("./async");
const shared_1 = require("./shared");
const encoder = new JsonEncoder_1.JsonEncoder(shared_1.writer);
const decoder = new JsonDecoder_1.JsonDecoder();
const toJsonSnapshotSync = (options) => {
const snapshot = (0, sync_1.toSnapshotSync)(options);
return encoder.encode(snapshot);
};
exports.toJsonSnapshotSync = toJsonSnapshotSync;
const fromJsonSnapshotSync = (uint8, options) => {
const snapshot = decoder.read(uint8);
(0, sync_1.fromSnapshotSync)(snapshot, options);
};
exports.fromJsonSnapshotSync = fromJsonSnapshotSync;
const toJsonSnapshot = async (options) => {
const snapshot = await (0, async_1.toSnapshot)(options);
return encoder.encode(snapshot);
};
exports.toJsonSnapshot = toJsonSnapshot;
const fromJsonSnapshot = async (uint8, options) => {
const snapshot = decoder.read(uint8);
await (0, async_1.fromSnapshot)(snapshot, options);
};
exports.fromJsonSnapshot = fromJsonSnapshot;
//# sourceMappingURL=json.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,6EAA0E;AAC1E,iCAA0D;AAC1D,mCAAmD;AACnD,qCAAkC;AAMlC,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,eAAM,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC;AAE3B,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAgC,EAAE;IAC3F,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEK,MAAM,oBAAoB,GAAG,CAAC,KAAmC,EAAE,OAAwB,EAAQ,EAAE;IAC1G,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAiB,CAAC;IACrD,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,cAAc,GAAG,KAAK,EAAE,OAA6B,EAAyC,EAAE;IAC3G,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC,CAAC;AAClE,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEK,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAmC,EACnC,OAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAiB,CAAC;IACrD,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B"}
+2
View File
@@ -0,0 +1,2 @@
import { Writer } from '@jsonjoy.com/buffers/lib/Writer';
export declare const writer: Writer;
+6
View File
@@ -0,0 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.writer = void 0;
const Writer_1 = require("@jsonjoy.com/buffers/lib/Writer");
exports.writer = new Writer_1.Writer(1024 * 32);
//# sourceMappingURL=shared.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":";;;AAAA,4DAAyD;AAE5C,QAAA,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC"}
+3
View File
@@ -0,0 +1,3 @@
import type { SnapshotNode, SnapshotOptions } from './types';
export declare const toSnapshotSync: ({ fs, path, separator }: SnapshotOptions) => SnapshotNode;
export declare const fromSnapshotSync: (snapshot: SnapshotNode, { fs, path, separator }: SnapshotOptions) => void;
+59
View File
@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromSnapshotSync = exports.toSnapshotSync = void 0;
const toSnapshotSync = ({ fs, path = '/', separator = '/' }) => {
const stats = fs.lstatSync(path);
if (stats.isDirectory()) {
const list = fs.readdirSync(path);
const entries = {};
const dir = path.endsWith(separator) ? path : path + separator;
for (const child of list) {
const childSnapshot = (0, exports.toSnapshotSync)({ fs, path: `${dir}${child}`, separator });
if (childSnapshot)
entries['' + child] = childSnapshot;
}
return [0 /* SnapshotNodeType.Folder */, {}, entries];
}
else if (stats.isFile()) {
const buf = fs.readFileSync(path);
const uint8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
return [1 /* SnapshotNodeType.File */, {}, uint8];
}
else if (stats.isSymbolicLink()) {
return [
2 /* SnapshotNodeType.Symlink */,
{
target: fs.readlinkSync(path).toString(),
},
];
}
return null;
};
exports.toSnapshotSync = toSnapshotSync;
const fromSnapshotSync = (snapshot, { fs, path = '/', separator = '/' }) => {
if (!snapshot)
return;
switch (snapshot[0]) {
case 0 /* SnapshotNodeType.Folder */: {
if (!path.endsWith(separator))
path = path + separator;
const [, , entries] = snapshot;
fs.mkdirSync(path, { recursive: true });
for (const [name, child] of Object.entries(entries))
(0, exports.fromSnapshotSync)(child, { fs, path: `${path}${name}`, separator });
break;
}
case 1 /* SnapshotNodeType.File */: {
const [, , data] = snapshot;
fs.writeFileSync(path, data);
break;
}
case 2 /* SnapshotNodeType.Symlink */: {
const [, { target }] = snapshot;
fs.symlinkSync(target, path);
break;
}
}
};
exports.fromSnapshotSync = fromSnapshotSync;
//# sourceMappingURL=sync.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
+30
View File
@@ -0,0 +1,30 @@
import type { FsPromisesApi, FsSynchronousApi } from '@jsonjoy.com/fs-node-utils';
import type { SnapshotNodeType } from './constants';
export interface SnapshotOptions {
fs: FsSynchronousApi;
path?: string;
separator?: '/' | '\\';
}
export interface AsyncSnapshotOptions {
fs: FsPromisesApi;
path?: string;
separator?: '/' | '\\';
}
export type SnapshotNode = FolderNode | FileNode | SymlinkNode | UnknownNode;
export type FolderNode = [
type: SnapshotNodeType.Folder,
meta: FolderMetadata,
entries: {
[child: string]: SnapshotNode;
}
];
export interface FolderMetadata {
}
export type FileNode = [type: SnapshotNodeType.File, meta: FileMetadata, data: Uint8Array];
export interface FileMetadata {
}
export type SymlinkNode = [type: SnapshotNodeType.Symlink, meta: SymlinkMetadata];
export interface SymlinkMetadata {
target: string;
}
export type UnknownNode = null;
+3
View File
@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}