swarm-deploy 0.1.0 → 0.3.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/CHANGELOG.md +60 -0
- package/README.md +780 -50
- package/RELEASING.md +2 -2
- package/SECURITY.md +2 -3
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +182 -25
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +32 -27
- package/dist/client.js +103 -54
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -1
- package/dist/files.d.ts +13 -28
- package/dist/files.js +13 -78
- package/dist/files.js.map +1 -1
- package/dist/hooks-module.d.ts +9 -0
- package/dist/hooks-module.js +118 -0
- package/dist/hooks-module.js.map +1 -0
- package/dist/hooks.d.ts +69 -0
- package/dist/hooks.js +88 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/release.d.ts +26 -0
- package/dist/release.js +419 -0
- package/dist/release.js.map +1 -0
- package/dist/server.d.ts +97 -0
- package/dist/server.js +527 -53
- package/dist/server.js.map +1 -1
- package/dist/storage/commit-journal.d.ts +39 -2
- package/dist/storage/commit-journal.js +140 -2
- package/dist/storage/commit-journal.js.map +1 -1
- package/dist/storage/commit-store.d.ts +69 -8
- package/dist/storage/commit-store.js +374 -22
- package/dist/storage/commit-store.js.map +1 -1
- package/dist/storage/layout.js +7 -1
- package/dist/storage/layout.js.map +1 -1
- package/dist/storage/link-store.d.ts +88 -0
- package/dist/storage/link-store.js +448 -0
- package/dist/storage/link-store.js.map +1 -0
- package/dist/storage/recovery.d.ts +2 -1
- package/dist/storage/recovery.js +8 -1
- package/dist/storage/recovery.js.map +1 -1
- package/dist/storage/retention.d.ts +41 -21
- package/dist/storage/retention.js +162 -8
- package/dist/storage/retention.js.map +1 -1
- package/dist/storage/tar-session-store.d.ts +36 -5
- package/dist/storage/tar-session-store.js +283 -55
- package/dist/storage/tar-session-store.js.map +1 -1
- package/dist/storage/tree-fs.d.ts +44 -0
- package/dist/storage/tree-fs.js +580 -0
- package/dist/storage/tree-fs.js.map +1 -0
- package/dist/storage/tree-staging.d.ts +9 -0
- package/dist/storage/tree-staging.js +64 -0
- package/dist/storage/tree-staging.js.map +1 -0
- package/dist/storage/types.d.ts +15 -0
- package/dist/symlinks.d.ts +44 -0
- package/dist/symlinks.js +153 -0
- package/dist/symlinks.js.map +1 -0
- package/dist/tar-protocol/controls.d.ts +52 -0
- package/dist/tar-protocol/controls.js +160 -2
- package/dist/tar-protocol/controls.js.map +1 -1
- package/dist/tar-protocol/direct-wire.d.ts +8 -3
- package/dist/tar-protocol/direct-wire.js +14 -3
- package/dist/tar-protocol/direct-wire.js.map +1 -1
- package/dist/tar-protocol/manifest.d.ts +13 -1
- package/dist/tar-protocol/manifest.js +26 -1
- package/dist/tar-protocol/manifest.js.map +1 -1
- package/dist/tar-protocol/tree-extract.d.ts +37 -0
- package/dist/tar-protocol/tree-extract.js +240 -0
- package/dist/tar-protocol/tree-extract.js.map +1 -0
- package/dist/tar-protocol/tree-manifest.d.ts +45 -0
- package/dist/tar-protocol/tree-manifest.js +277 -0
- package/dist/tar-protocol/tree-manifest.js.map +1 -0
- package/dist/tar-protocol/tree-path.d.ts +15 -0
- package/dist/tar-protocol/tree-path.js +68 -0
- package/dist/tar-protocol/tree-path.js.map +1 -0
- package/dist/tar-protocol/tree.d.ts +68 -0
- package/dist/tar-protocol/tree.js +269 -0
- package/dist/tar-protocol/tree.js.map +1 -0
- package/dist/tar-protocol/ustar.d.ts +14 -0
- package/dist/tar-protocol/ustar.js +81 -1
- package/dist/tar-protocol/ustar.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/package.json +3 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type AbortSignalLike } from '../abort.js';
|
|
2
2
|
import type { DirectDhtSocket } from '../direct-dht.js';
|
|
3
|
-
import { decodeAdmissionRecord, decodeFinalRecord,
|
|
3
|
+
import { decodeAdmissionRecord, decodeAnyMetadataRecord, decodeFinalRecord, decodeFirstControlRecord, decodeLinkRequestRecord, decodeLinkResultRecord, type AdmissionRecord, type AnyMetadataRecord, type FinalRecord, type LinkRequestRecord, type LinkResultRecord } from './controls.js';
|
|
4
4
|
import { type ProtocolWriteOptions } from './lifecycle.js';
|
|
5
5
|
/** Exact, bounded, phase-aware reader for a half-closed direct stream. */
|
|
6
6
|
export declare class DirectWireReader {
|
|
@@ -34,10 +34,15 @@ export declare class DirectWireReader {
|
|
|
34
34
|
closeReader(): void;
|
|
35
35
|
}
|
|
36
36
|
export declare function endWrite(socket: DirectDhtSocket): void;
|
|
37
|
-
export declare function writeMetadata(socket: DirectDhtSocket, metadata:
|
|
37
|
+
export declare function writeMetadata(socket: DirectDhtSocket, metadata: AnyMetadataRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
38
|
+
export declare function writeLinkRequest(socket: DirectDhtSocket, request: LinkRequestRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
38
39
|
export declare function writeAdmission(socket: DirectDhtSocket, value: AdmissionRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
39
40
|
export declare function writeFinal(socket: DirectDhtSocket, value: FinalRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
41
|
+
export declare function writeLinkResult(socket: DirectDhtSocket, value: LinkResultRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
40
42
|
export declare function writeTar(socket: DirectDhtSocket, value: Uint8Array, options?: ProtocolWriteOptions): Promise<void>;
|
|
41
|
-
export declare const decodeDirectMetadata: typeof
|
|
43
|
+
export declare const decodeDirectMetadata: typeof decodeAnyMetadataRecord;
|
|
44
|
+
export declare const decodeDirectFirstControl: typeof decodeFirstControlRecord;
|
|
45
|
+
export declare const decodeDirectLinkRequest: typeof decodeLinkRequestRecord;
|
|
42
46
|
export declare const decodeDirectAdmission: typeof decodeAdmissionRecord;
|
|
43
47
|
export declare const decodeDirectFinal: typeof decodeFinalRecord;
|
|
48
|
+
export declare const decodeDirectLinkResult: typeof decodeLinkResultRecord;
|
|
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.decodeDirectFinal = exports.decodeDirectAdmission = exports.decodeDirectMetadata = exports.DirectWireReader = void 0;
|
|
6
|
+
exports.decodeDirectLinkResult = exports.decodeDirectFinal = exports.decodeDirectAdmission = exports.decodeDirectLinkRequest = exports.decodeDirectFirstControl = exports.decodeDirectMetadata = exports.DirectWireReader = void 0;
|
|
7
7
|
exports.endWrite = endWrite;
|
|
8
8
|
exports.writeMetadata = writeMetadata;
|
|
9
|
+
exports.writeLinkRequest = writeLinkRequest;
|
|
9
10
|
exports.writeAdmission = writeAdmission;
|
|
10
11
|
exports.writeFinal = writeFinal;
|
|
12
|
+
exports.writeLinkResult = writeLinkResult;
|
|
11
13
|
exports.writeTar = writeTar;
|
|
12
14
|
const b4a_1 = __importDefault(require("b4a"));
|
|
13
15
|
const abort_js_1 = require("../abort.js");
|
|
@@ -177,7 +179,10 @@ function endWrite(socket) {
|
|
|
177
179
|
stream.end();
|
|
178
180
|
}
|
|
179
181
|
function writeMetadata(socket, metadata, options = {}) {
|
|
180
|
-
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.
|
|
182
|
+
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeAnyMetadataRecord)(metadata), options);
|
|
183
|
+
}
|
|
184
|
+
function writeLinkRequest(socket, request, options = {}) {
|
|
185
|
+
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeLinkRequestRecord)(request), options);
|
|
181
186
|
}
|
|
182
187
|
function writeAdmission(socket, value, options = {}) {
|
|
183
188
|
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeAdmissionRecord)(value), options);
|
|
@@ -185,10 +190,16 @@ function writeAdmission(socket, value, options = {}) {
|
|
|
185
190
|
function writeFinal(socket, value, options = {}) {
|
|
186
191
|
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeFinalRecord)(value), options);
|
|
187
192
|
}
|
|
193
|
+
function writeLinkResult(socket, value, options = {}) {
|
|
194
|
+
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeLinkResultRecord)(value), options);
|
|
195
|
+
}
|
|
188
196
|
function writeTar(socket, value, options = {}) {
|
|
189
197
|
return (0, lifecycle_js_1.writeProtocolBytes)(socket, value, options);
|
|
190
198
|
}
|
|
191
|
-
exports.decodeDirectMetadata = controls_js_1.
|
|
199
|
+
exports.decodeDirectMetadata = controls_js_1.decodeAnyMetadataRecord;
|
|
200
|
+
exports.decodeDirectFirstControl = controls_js_1.decodeFirstControlRecord;
|
|
201
|
+
exports.decodeDirectLinkRequest = controls_js_1.decodeLinkRequestRecord;
|
|
192
202
|
exports.decodeDirectAdmission = controls_js_1.decodeAdmissionRecord;
|
|
193
203
|
exports.decodeDirectFinal = controls_js_1.decodeFinalRecord;
|
|
204
|
+
exports.decodeDirectLinkResult = controls_js_1.decodeLinkResultRecord;
|
|
194
205
|
//# sourceMappingURL=direct-wire.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-wire.js","sourceRoot":"","sources":["../../src/tar-protocol/direct-wire.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"direct-wire.js","sourceRoot":"","sources":["../../src/tar-protocol/direct-wire.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export interface TarSourceIdentity {
|
|
|
11
11
|
export interface TarManifest {
|
|
12
12
|
path: string;
|
|
13
13
|
name: string;
|
|
14
|
+
sourceParent?: string;
|
|
14
15
|
fileSize: number;
|
|
15
16
|
fileSha256: Buffer;
|
|
16
17
|
tarSize: number;
|
|
@@ -21,6 +22,10 @@ export interface TarManifest {
|
|
|
21
22
|
export interface TarOperationOptions {
|
|
22
23
|
signal?: AbortSignalLike | null;
|
|
23
24
|
}
|
|
25
|
+
export interface TarManifestOptions extends TarOperationOptions {
|
|
26
|
+
/** Set to `false` to keep the legacy identity that names no source parent. */
|
|
27
|
+
includeSourceParent?: boolean;
|
|
28
|
+
}
|
|
24
29
|
export interface TarResumeOptions extends TarOperationOptions {
|
|
25
30
|
expectedPrefixSha256?: Uint8Array | null;
|
|
26
31
|
}
|
|
@@ -33,14 +38,21 @@ export type TarResumeResult = {
|
|
|
33
38
|
prefixSha256: Buffer;
|
|
34
39
|
bytesSent: 0;
|
|
35
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* The immediate parent directory name, only when it is a valid wire component.
|
|
43
|
+
* Unsafe or absent parents (spaces, dotfiles, filesystem root, overlong) are
|
|
44
|
+
* omitted so the upload keeps the legacy authenticated identity.
|
|
45
|
+
*/
|
|
46
|
+
export declare function deriveSourceParent(filePath: string): string | undefined;
|
|
36
47
|
export declare function computeTarTransferId(clientPublicKey: Uint8Array, immutable: {
|
|
37
48
|
name: string;
|
|
49
|
+
sourceParent?: string;
|
|
38
50
|
fileSize: number;
|
|
39
51
|
fileSha256: Uint8Array;
|
|
40
52
|
tarSize: number;
|
|
41
53
|
tarSha256: Uint8Array;
|
|
42
54
|
}): Buffer;
|
|
43
|
-
export declare function buildTarManifest(filePath: string, clientPublicKey: Uint8Array, { signal }?:
|
|
55
|
+
export declare function buildTarManifest(filePath: string, clientPublicKey: Uint8Array, { signal, includeSourceParent }?: TarManifestOptions): Promise<TarManifest>;
|
|
44
56
|
export declare function regenerateTarSuffix(manifest: TarManifest, offset: number, write: (chunk: Buffer) => void | Promise<void>, { signal, expectedPrefixSha256 }?: TarResumeOptions): Promise<TarResumeResult>;
|
|
45
57
|
export declare function metadataFromManifest(manifest: TarManifest, reset?: boolean): MetadataRecord;
|
|
46
58
|
export declare function assertMetadataTransferId(clientPublicKey: Uint8Array, offeredMetadata: MetadataRecord): void;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TAR_TRANSFER_DOMAIN = exports.TAR_UNAME = exports.TAR_UID = exports.TAR_MTIME_MS = exports.TAR_MODE = exports.TAR_GNAME = exports.TAR_GID = exports.TAR_BLOCK_BYTES = exports.deterministicTarSize = void 0;
|
|
7
|
+
exports.deriveSourceParent = deriveSourceParent;
|
|
7
8
|
exports.computeTarTransferId = computeTarTransferId;
|
|
8
9
|
exports.buildTarManifest = buildTarManifest;
|
|
9
10
|
exports.regenerateTarSuffix = regenerateTarSuffix;
|
|
@@ -48,6 +49,21 @@ function canonicalName(filePath) {
|
|
|
48
49
|
}
|
|
49
50
|
return name;
|
|
50
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The immediate parent directory name, only when it is a valid wire component.
|
|
54
|
+
* Unsafe or absent parents (spaces, dotfiles, filesystem root, overlong) are
|
|
55
|
+
* omitted so the upload keeps the legacy authenticated identity.
|
|
56
|
+
*/
|
|
57
|
+
function deriveSourceParent(filePath) {
|
|
58
|
+
const sourceParent = _path_1.default.basename(_path_1.default.dirname(_path_1.default.resolve(filePath)));
|
|
59
|
+
try {
|
|
60
|
+
(0, controls_js_1.assertSourceParent)(sourceParent);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
return sourceParent;
|
|
66
|
+
}
|
|
51
67
|
function identity(stat) {
|
|
52
68
|
return { dev: stat.dev, ino: stat.ino, size: stat.size, mtimeMs: stat.mtimeMs };
|
|
53
69
|
}
|
|
@@ -135,6 +151,10 @@ function computeTarTransferId(clientPublicKey, immutable) {
|
|
|
135
151
|
transferField(hash, 'domain', exports.TAR_TRANSFER_DOMAIN);
|
|
136
152
|
transferField(hash, 'clientPublicKey', clientPublicKey);
|
|
137
153
|
transferField(hash, 'name', immutable.name);
|
|
154
|
+
if (immutable.sourceParent !== undefined) {
|
|
155
|
+
(0, controls_js_1.assertSourceParent)(immutable.sourceParent);
|
|
156
|
+
transferField(hash, 'sourceParent', immutable.sourceParent);
|
|
157
|
+
}
|
|
138
158
|
transferField(hash, 'fileSize', immutable.fileSize);
|
|
139
159
|
transferField(hash, 'fileSha256', immutable.fileSha256);
|
|
140
160
|
transferField(hash, 'tarSize', immutable.tarSize);
|
|
@@ -149,9 +169,10 @@ function computeTarTransferId(clientPublicKey, immutable) {
|
|
|
149
169
|
transferField(hash, 'pax', 'none');
|
|
150
170
|
return hash.digest();
|
|
151
171
|
}
|
|
152
|
-
async function buildTarManifest(filePath, clientPublicKey, { signal = null } = {}) {
|
|
172
|
+
async function buildTarManifest(filePath, clientPublicKey, { signal = null, includeSourceParent = true } = {}) {
|
|
153
173
|
assertClientKey(clientPublicKey);
|
|
154
174
|
const name = canonicalName(filePath);
|
|
175
|
+
const sourceParent = includeSourceParent === false ? undefined : deriveSourceParent(filePath);
|
|
155
176
|
const opened = await openStableSource(filePath, null, signal);
|
|
156
177
|
assertSafeSize(opened.source.size);
|
|
157
178
|
const fileHash = new hash_js_1.SodiumSha256();
|
|
@@ -174,6 +195,7 @@ async function buildTarManifest(filePath, clientPublicKey, { signal = null } = {
|
|
|
174
195
|
const tarSha256 = tarHash.digest();
|
|
175
196
|
const transferId = computeTarTransferId(clientPublicKey, {
|
|
176
197
|
name,
|
|
198
|
+
...(sourceParent === undefined ? {} : { sourceParent }),
|
|
177
199
|
fileSize: opened.source.size,
|
|
178
200
|
fileSha256,
|
|
179
201
|
tarSize,
|
|
@@ -182,6 +204,7 @@ async function buildTarManifest(filePath, clientPublicKey, { signal = null } = {
|
|
|
182
204
|
return {
|
|
183
205
|
path: filePath,
|
|
184
206
|
name,
|
|
207
|
+
...(sourceParent === undefined ? {} : { sourceParent }),
|
|
185
208
|
fileSize: opened.source.size,
|
|
186
209
|
fileSha256,
|
|
187
210
|
tarSize,
|
|
@@ -263,6 +286,7 @@ function metadataFromManifest(manifest, reset = false) {
|
|
|
263
286
|
return {
|
|
264
287
|
v: controls_js_1.CONTROL_VERSION,
|
|
265
288
|
name: manifest.name,
|
|
289
|
+
...(manifest.sourceParent === undefined ? {} : { sourceParent: manifest.sourceParent }),
|
|
266
290
|
fileSize: manifest.fileSize,
|
|
267
291
|
fileSha256: b4a_1.default.toString(manifest.fileSha256, 'hex'),
|
|
268
292
|
tarSize: manifest.tarSize,
|
|
@@ -275,6 +299,7 @@ function assertMetadataTransferId(clientPublicKey, offeredMetadata) {
|
|
|
275
299
|
const metadata = (0, controls_js_1.decodeMetadataRecord)((0, controls_js_1.encodeMetadataRecord)(offeredMetadata));
|
|
276
300
|
const expected = computeTarTransferId(clientPublicKey, {
|
|
277
301
|
name: metadata.name,
|
|
302
|
+
...(metadata.sourceParent === undefined ? {} : { sourceParent: metadata.sourceParent }),
|
|
278
303
|
fileSize: metadata.fileSize,
|
|
279
304
|
fileSha256: b4a_1.default.from(metadata.fileSha256, 'hex'),
|
|
280
305
|
tarSize: metadata.tarSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/tar-protocol/manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/tar-protocol/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type AbortSignalLike } from '../abort.js';
|
|
2
|
+
import { type TreeMetadataRecord } from './controls.js';
|
|
3
|
+
import { type TreeEntry } from './tree.js';
|
|
4
|
+
export interface TreeFileSink {
|
|
5
|
+
write(chunk: Uint8Array): Promise<void>;
|
|
6
|
+
close(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export interface TreeExtractionTarget {
|
|
9
|
+
createDirectory(relativePath: string): Promise<void>;
|
|
10
|
+
createFile(relativePath: string, size: number): Promise<TreeFileSink>;
|
|
11
|
+
complete(): Promise<void>;
|
|
12
|
+
abort(error: unknown): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface TreeExtractionOptions {
|
|
15
|
+
signal?: AbortSignalLike | null;
|
|
16
|
+
}
|
|
17
|
+
export interface TreeExtractionResult {
|
|
18
|
+
entries: TreeEntry[];
|
|
19
|
+
entryCount: number;
|
|
20
|
+
payloadBytes: number;
|
|
21
|
+
treeSha256: Buffer;
|
|
22
|
+
tarSize: number;
|
|
23
|
+
tarSha256: Buffer;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validates and extracts a canonical multi-entry tree archive.
|
|
27
|
+
*
|
|
28
|
+
* Only the name, typeflag, and size fields are parsed. Every other field is
|
|
29
|
+
* proved by rebuilding the whole 512-byte canonical header and comparing it
|
|
30
|
+
* byte for byte, so mode, uid, gid, mtime, uname, gname, magic, checksum, and
|
|
31
|
+
* the USTAR prefix are all pinned by one comparison.
|
|
32
|
+
*
|
|
33
|
+
* The archive path is only ever handed to the target as a validated relative
|
|
34
|
+
* path; this reader never joins it to an absolute path and never touches the
|
|
35
|
+
* filesystem itself. Any failure aborts the target exactly once.
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateAndExtractTreeTar(source: Iterable<Uint8Array> | AsyncIterable<Uint8Array>, offeredMetadata: TreeMetadataRecord, target: TreeExtractionTarget, { signal }?: TreeExtractionOptions): Promise<TreeExtractionResult>;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateAndExtractTreeTar = validateAndExtractTreeTar;
|
|
7
|
+
const b4a_1 = __importDefault(require("b4a"));
|
|
8
|
+
const abort_js_1 = require("../abort.js");
|
|
9
|
+
const errors_js_1 = require("../errors.js");
|
|
10
|
+
const controls_js_1 = require("./controls.js");
|
|
11
|
+
const hash_js_1 = require("./hash.js");
|
|
12
|
+
const tree_js_1 = require("./tree.js");
|
|
13
|
+
const ustar_js_1 = require("./ustar.js");
|
|
14
|
+
function invalid(message, cause = null) {
|
|
15
|
+
return new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, message, cause);
|
|
16
|
+
}
|
|
17
|
+
function parseOctal(block, offset, length) {
|
|
18
|
+
let value = 0;
|
|
19
|
+
let digits = 0;
|
|
20
|
+
for (let index = offset; index < offset + length; index++) {
|
|
21
|
+
const byte = block[index];
|
|
22
|
+
if (byte === 0x20 || byte === 0)
|
|
23
|
+
break;
|
|
24
|
+
if (byte < 0x30 || byte > 0x37)
|
|
25
|
+
throw invalid('Noncanonical tree TAR header');
|
|
26
|
+
value = value * 8 + (byte - 0x30);
|
|
27
|
+
digits++;
|
|
28
|
+
if (!Number.isSafeInteger(value))
|
|
29
|
+
throw invalid('Noncanonical tree TAR header');
|
|
30
|
+
}
|
|
31
|
+
if (digits === 0)
|
|
32
|
+
throw invalid('Noncanonical tree TAR header');
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function parseStoredName(block) {
|
|
36
|
+
let end = 0;
|
|
37
|
+
while (end < 100 && block[end] !== 0)
|
|
38
|
+
end++;
|
|
39
|
+
for (let index = end; index < 100; index++) {
|
|
40
|
+
if (block[index] !== 0)
|
|
41
|
+
throw invalid('Noncanonical tree TAR header');
|
|
42
|
+
}
|
|
43
|
+
if (end === 0)
|
|
44
|
+
throw invalid('Noncanonical tree TAR header');
|
|
45
|
+
return b4a_1.default.toString(block.subarray(0, end), 'utf8');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validates and extracts a canonical multi-entry tree archive.
|
|
49
|
+
*
|
|
50
|
+
* Only the name, typeflag, and size fields are parsed. Every other field is
|
|
51
|
+
* proved by rebuilding the whole 512-byte canonical header and comparing it
|
|
52
|
+
* byte for byte, so mode, uid, gid, mtime, uname, gname, magic, checksum, and
|
|
53
|
+
* the USTAR prefix are all pinned by one comparison.
|
|
54
|
+
*
|
|
55
|
+
* The archive path is only ever handed to the target as a validated relative
|
|
56
|
+
* path; this reader never joins it to an absolute path and never touches the
|
|
57
|
+
* filesystem itself. Any failure aborts the target exactly once.
|
|
58
|
+
*/
|
|
59
|
+
async function validateAndExtractTreeTar(source, offeredMetadata, target, { signal = null } = {}) {
|
|
60
|
+
if (!target ||
|
|
61
|
+
typeof target !== 'object' ||
|
|
62
|
+
typeof target.createDirectory !== 'function' ||
|
|
63
|
+
typeof target.createFile !== 'function' ||
|
|
64
|
+
typeof target.complete !== 'function' ||
|
|
65
|
+
typeof target.abort !== 'function') {
|
|
66
|
+
throw invalid('Invalid tree extraction target');
|
|
67
|
+
}
|
|
68
|
+
const metadata = (0, controls_js_1.decodeTreeMetadataRecord)((0, controls_js_1.encodeTreeMetadataRecord)(offeredMetadata));
|
|
69
|
+
const tarHash = new hash_js_1.SodiumSha256();
|
|
70
|
+
const digests = [];
|
|
71
|
+
const directories = new Set();
|
|
72
|
+
const folded = new Set();
|
|
73
|
+
let position = 0;
|
|
74
|
+
let pending = b4a_1.default.alloc(0);
|
|
75
|
+
let payloadBytes = 0;
|
|
76
|
+
let previousPath = null;
|
|
77
|
+
let terminatorBlocks = 0;
|
|
78
|
+
let sink = null;
|
|
79
|
+
let sinkHash = null;
|
|
80
|
+
let sinkEntry = null;
|
|
81
|
+
let payloadRemaining = 0;
|
|
82
|
+
let paddingRemaining = 0;
|
|
83
|
+
const closeSink = async () => {
|
|
84
|
+
if (!sink || !sinkHash || !sinkEntry)
|
|
85
|
+
throw invalid('Tree extraction state is inconsistent');
|
|
86
|
+
const closing = sink;
|
|
87
|
+
const hash = sinkHash;
|
|
88
|
+
const entry = sinkEntry;
|
|
89
|
+
sink = null;
|
|
90
|
+
sinkHash = null;
|
|
91
|
+
sinkEntry = null;
|
|
92
|
+
await closing.close();
|
|
93
|
+
digests.push({ entry, sha256: hash.digest() });
|
|
94
|
+
};
|
|
95
|
+
const consumeHeader = async (block) => {
|
|
96
|
+
if (block.every((byte) => byte === 0)) {
|
|
97
|
+
terminatorBlocks++;
|
|
98
|
+
if (terminatorBlocks > 2)
|
|
99
|
+
throw invalid('Trailing tree TAR payload');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (terminatorBlocks > 0)
|
|
103
|
+
throw invalid('Tree TAR entry after terminator');
|
|
104
|
+
const storedName = parseStoredName(block);
|
|
105
|
+
const typeflag = block[156];
|
|
106
|
+
if (typeflag !== 48 && typeflag !== 53)
|
|
107
|
+
throw invalid('Unsupported tree TAR entry type');
|
|
108
|
+
const kind = typeflag === 53 ? 'directory' : 'file';
|
|
109
|
+
if (kind === 'directory' && !storedName.endsWith('/')) {
|
|
110
|
+
throw invalid('Noncanonical tree TAR header');
|
|
111
|
+
}
|
|
112
|
+
if (kind === 'file' && storedName.endsWith('/'))
|
|
113
|
+
throw invalid('Noncanonical tree TAR header');
|
|
114
|
+
const relativePath = kind === 'directory' ? storedName.slice(0, -1) : storedName;
|
|
115
|
+
(0, tree_js_1.assertTreeEntryPath)(relativePath, kind);
|
|
116
|
+
const size = parseOctal(block, 124, 12);
|
|
117
|
+
if (kind === 'directory' && size !== 0)
|
|
118
|
+
throw invalid('Invalid tree directory size');
|
|
119
|
+
if (!b4a_1.default.equals(block, (0, ustar_js_1.canonicalUstarTreeHeader)(storedName, kind, size))) {
|
|
120
|
+
throw invalid('Noncanonical tree TAR header');
|
|
121
|
+
}
|
|
122
|
+
if (digests.length >= Math.min(metadata.entryCount, tree_js_1.MAX_TREE_ENTRIES)) {
|
|
123
|
+
throw invalid('Tree TAR entry count exceeds the offer');
|
|
124
|
+
}
|
|
125
|
+
if (previousPath !== null && (0, tree_js_1.compareTreePaths)(previousPath, relativePath) >= 0) {
|
|
126
|
+
throw invalid('Noncanonical tree entry order');
|
|
127
|
+
}
|
|
128
|
+
const fold = relativePath.toLowerCase();
|
|
129
|
+
if (folded.has(fold))
|
|
130
|
+
throw invalid('Case-folded duplicate tree entry path');
|
|
131
|
+
folded.add(fold);
|
|
132
|
+
const separator = relativePath.lastIndexOf('/');
|
|
133
|
+
if (separator !== -1 && !directories.has(relativePath.slice(0, separator))) {
|
|
134
|
+
throw invalid('Tree entry has no parent directory entry');
|
|
135
|
+
}
|
|
136
|
+
previousPath = relativePath;
|
|
137
|
+
const entry = { kind, path: relativePath, size: kind === 'directory' ? 0 : size };
|
|
138
|
+
if (kind === 'directory') {
|
|
139
|
+
directories.add(relativePath);
|
|
140
|
+
digests.push({ entry });
|
|
141
|
+
await target.createDirectory(relativePath);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (payloadBytes > metadata.payloadBytes - size)
|
|
145
|
+
throw invalid('Tree payload exceeds the offer');
|
|
146
|
+
payloadBytes += size;
|
|
147
|
+
sinkEntry = entry;
|
|
148
|
+
sinkHash = new hash_js_1.SodiumSha256();
|
|
149
|
+
sink = await target.createFile(relativePath, size);
|
|
150
|
+
payloadRemaining = size;
|
|
151
|
+
paddingRemaining = (ustar_js_1.TAR_BLOCK_BYTES - (size % ustar_js_1.TAR_BLOCK_BYTES)) % ustar_js_1.TAR_BLOCK_BYTES;
|
|
152
|
+
if (payloadRemaining === 0)
|
|
153
|
+
await closeSink();
|
|
154
|
+
};
|
|
155
|
+
try {
|
|
156
|
+
(0, abort_js_1.throwIfAborted)(signal);
|
|
157
|
+
for await (const value of source) {
|
|
158
|
+
(0, abort_js_1.throwIfAborted)(signal);
|
|
159
|
+
if (!b4a_1.default.isBuffer(value))
|
|
160
|
+
throw invalid('Invalid TAR source bytes');
|
|
161
|
+
if (position > metadata.tarSize - value.byteLength)
|
|
162
|
+
throw invalid('Trailing tree TAR payload');
|
|
163
|
+
tarHash.update(value);
|
|
164
|
+
position += value.byteLength;
|
|
165
|
+
let offset = 0;
|
|
166
|
+
while (offset < value.byteLength) {
|
|
167
|
+
if (payloadRemaining > 0) {
|
|
168
|
+
const take = Math.min(payloadRemaining, value.byteLength - offset);
|
|
169
|
+
const chunk = value.subarray(offset, offset + take);
|
|
170
|
+
sinkHash.update(chunk);
|
|
171
|
+
await sink.write(chunk);
|
|
172
|
+
payloadRemaining -= take;
|
|
173
|
+
offset += take;
|
|
174
|
+
if (payloadRemaining === 0)
|
|
175
|
+
await closeSink();
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (paddingRemaining > 0) {
|
|
179
|
+
const take = Math.min(paddingRemaining, value.byteLength - offset);
|
|
180
|
+
for (let index = offset; index < offset + take; index++) {
|
|
181
|
+
if (value[index] !== 0)
|
|
182
|
+
throw invalid('Nonzero tree TAR padding');
|
|
183
|
+
}
|
|
184
|
+
paddingRemaining -= take;
|
|
185
|
+
offset += take;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const take = Math.min(ustar_js_1.TAR_BLOCK_BYTES - pending.byteLength, value.byteLength - offset);
|
|
189
|
+
pending = b4a_1.default.concat([pending, value.subarray(offset, offset + take)]);
|
|
190
|
+
offset += take;
|
|
191
|
+
if (pending.byteLength < ustar_js_1.TAR_BLOCK_BYTES)
|
|
192
|
+
continue;
|
|
193
|
+
const block = pending;
|
|
194
|
+
pending = b4a_1.default.alloc(0);
|
|
195
|
+
await consumeHeader(block);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (pending.byteLength !== 0 ||
|
|
199
|
+
payloadRemaining !== 0 ||
|
|
200
|
+
paddingRemaining !== 0 ||
|
|
201
|
+
sink !== null) {
|
|
202
|
+
throw invalid('Truncated tree TAR payload');
|
|
203
|
+
}
|
|
204
|
+
if (position !== metadata.tarSize)
|
|
205
|
+
throw invalid('Truncated tree TAR payload');
|
|
206
|
+
if (terminatorBlocks !== 2)
|
|
207
|
+
throw invalid('Missing tree TAR terminator');
|
|
208
|
+
if (digests.length !== metadata.entryCount)
|
|
209
|
+
throw invalid('Tree entry count mismatch');
|
|
210
|
+
if (payloadBytes !== metadata.payloadBytes)
|
|
211
|
+
throw invalid('Tree payload size mismatch');
|
|
212
|
+
const treeSha256 = (0, tree_js_1.treeDigest)(digests);
|
|
213
|
+
const tarSha256 = tarHash.digest();
|
|
214
|
+
if (!(0, hash_js_1.digestMatches)(treeSha256, b4a_1.default.from(metadata.treeSha256, 'hex'))) {
|
|
215
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.CHECKSUM_MISMATCH, 'Extracted tree digest mismatch');
|
|
216
|
+
}
|
|
217
|
+
if (!(0, hash_js_1.digestMatches)(tarSha256, b4a_1.default.from(metadata.tarSha256, 'hex'))) {
|
|
218
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.CHECKSUM_MISMATCH, 'TAR digest mismatch');
|
|
219
|
+
}
|
|
220
|
+
await target.complete();
|
|
221
|
+
return {
|
|
222
|
+
entries: digests.map((value) => value.entry),
|
|
223
|
+
entryCount: digests.length,
|
|
224
|
+
payloadBytes,
|
|
225
|
+
treeSha256,
|
|
226
|
+
tarSize: metadata.tarSize,
|
|
227
|
+
tarSha256
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
// A half-written file must release its handle before the target removes the tree.
|
|
232
|
+
if (sink)
|
|
233
|
+
await Promise.resolve(sink.close()).catch(() => { });
|
|
234
|
+
await Promise.resolve(target.abort(error)).catch(() => { });
|
|
235
|
+
if (error instanceof errors_js_1.SwarmDeployError)
|
|
236
|
+
throw error;
|
|
237
|
+
throw invalid('Tree extraction failed', error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=tree-extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-extract.js","sourceRoot":"","sources":["../../src/tar-protocol/tree-extract.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAqB;AACrB,0CAAkE;AAClE,4CAAuD;AACvD,+CAIsB;AACtB,uCAAuD;AACvD,uCAOkB;AAClB,yCAAsE;AA2BtE,SAAS,OAAO,CAAC,OAAe,EAAE,KAAK,GAAY,IAAI;IACrD,OAAO,IAAI,4BAAgB,CAAC,kBAAM,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,MAAc,EAAE,MAAc;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;YAAE,MAAK;QACtC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI;YAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;QAC7E,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;QACjC,MAAM,EAAE,CAAA;QACR,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,MAAM,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC/D,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,OAAO,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,CAAA;IAC3C,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IACvE,CAAC;IACD,IAAI,GAAG,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC5D,OAAO,aAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AACrD,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,oCACV,MAAwD,EACxD,eAAmC,EACnC,MAA4B,EAC5B,EAAE,MAAM,GAAG,IAAI,EAAE,GAA0B,EAAE;IAE7C,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU;QAC5C,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;QACvC,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU;QACrC,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAClC,CAAC;QACD,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAA;IACjD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,sCAAwB,EAAC,IAAA,sCAAwB,EAAC,eAAe,CAAC,CAAC,CAAA;IACpF,MAAM,OAAO,GAAG,IAAI,sBAAY,EAAE,CAAA;IAClC,MAAM,OAAO,GAAsB,EAAE,CAAA;IACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;IAEhC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,GAAW,aAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,YAAY,GAAkB,IAAI,CAAA;IACtC,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,IAAI,GAAwB,IAAI,CAAA;IACpC,IAAI,QAAQ,GAAwB,IAAI,CAAA;IACxC,IAAI,SAAS,GAAqB,IAAI,CAAA;IACtC,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,gBAAgB,GAAG,CAAC,CAAA;IAExB,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;QAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,MAAM,OAAO,CAAC,uCAAuC,CAAC,CAAA;QAC5F,MAAM,OAAO,GAAG,IAAI,CAAA;QACpB,MAAM,IAAI,GAAG,QAAQ,CAAA;QACrB,MAAM,KAAK,GAAG,SAAS,CAAA;QACvB,IAAI,GAAG,IAAI,CAAA;QACX,QAAQ,GAAG,IAAI,CAAA;QACf,SAAS,GAAG,IAAI,CAAA;QAChB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;QAC3D,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YACtC,gBAAgB,EAAE,CAAA;YAClB,IAAI,gBAAgB,GAAG,CAAC;gBAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;YACpE,OAAM;QACR,CAAC;QACD,IAAI,gBAAgB,GAAG,CAAC;YAAE,MAAM,OAAO,CAAC,iCAAiC,CAAC,CAAA;QAC1E,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,EAAE;YAAE,MAAM,OAAO,CAAC,iCAAiC,CAAC,CAAA;QACxF,MAAM,IAAI,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAA;QACnD,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;QAC/C,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;QAC9F,MAAM,YAAY,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QAChF,IAAA,6BAAmB,EAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QACvC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,CAAC;YAAE,MAAM,OAAO,CAAC,6BAA6B,CAAC,CAAA;QACpF,IAAI,CAAC,aAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAA,mCAAwB,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACzE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;QAC/C,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,0BAAgB,CAAC,EAAE,CAAC;YACtE,MAAM,OAAO,CAAC,wCAAwC,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,YAAY,KAAK,IAAI,IAAI,IAAA,0BAAgB,EAAC,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,MAAM,OAAO,CAAC,+BAA+B,CAAC,CAAA;QAChD,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,CAAA;QACvC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,OAAO,CAAC,uCAAuC,CAAC,CAAA;QAC5E,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC/C,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,OAAO,CAAC,0CAA0C,CAAC,CAAA;QAC3D,CAAC;QACD,YAAY,GAAG,YAAY,CAAA;QAC3B,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5F,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACvB,MAAM,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAC1C,OAAM;QACR,CAAC;QACD,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI;YAAE,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAA;QAChG,YAAY,IAAI,IAAI,CAAA;QACpB,SAAS,GAAG,KAAK,CAAA;QACjB,QAAQ,GAAG,IAAI,sBAAY,EAAE,CAAA;QAC7B,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QAClD,gBAAgB,GAAG,IAAI,CAAA;QACvB,gBAAgB,GAAG,CAAC,0BAAe,GAAG,CAAC,IAAI,GAAG,0BAAe,CAAC,CAAC,GAAG,0BAAe,CAAA;QACjF,IAAI,gBAAgB,KAAK,CAAC;YAAE,MAAM,SAAS,EAAE,CAAA;IAC/C,CAAC,CAAA;IAED,IAAI,CAAC;QACH,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;QACtB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;YACtB,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;YACnE,IAAI,QAAQ,GAAG,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU;gBAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;YAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrB,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAA;YAC5B,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;gBACjC,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;oBAClE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;oBACnD,QAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,MAAM,IAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;oBACxB,gBAAgB,IAAI,IAAI,CAAA;oBACxB,MAAM,IAAI,IAAI,CAAA;oBACd,IAAI,gBAAgB,KAAK,CAAC;wBAAE,MAAM,SAAS,EAAE,CAAA;oBAC7C,SAAQ;gBACV,CAAC;gBACD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;oBAClE,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;wBACxD,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;4BAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;oBACnE,CAAC;oBACD,gBAAgB,IAAI,IAAI,CAAA;oBACxB,MAAM,IAAI,IAAI,CAAA;oBACd,SAAQ;gBACV,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,0BAAe,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;gBACtF,OAAO,GAAG,aAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtE,MAAM,IAAI,IAAI,CAAA;gBACd,IAAI,OAAO,CAAC,UAAU,GAAG,0BAAe;oBAAE,SAAQ;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAA;gBACrB,OAAO,GAAG,aAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACtB,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,IACE,OAAO,CAAC,UAAU,KAAK,CAAC;YACxB,gBAAgB,KAAK,CAAC;YACtB,gBAAgB,KAAK,CAAC;YACtB,IAAI,KAAK,IAAI,EACb,CAAC;YACD,MAAM,OAAO,CAAC,4BAA4B,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO;YAAE,MAAM,OAAO,CAAC,4BAA4B,CAAC,CAAA;QAC9E,IAAI,gBAAgB,KAAK,CAAC;YAAE,MAAM,OAAO,CAAC,6BAA6B,CAAC,CAAA;QACxE,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU;YAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;QACtF,IAAI,YAAY,KAAK,QAAQ,CAAC,YAAY;YAAE,MAAM,OAAO,CAAC,4BAA4B,CAAC,CAAA;QACvF,MAAM,UAAU,GAAG,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;QAClC,IAAI,CAAC,IAAA,uBAAa,EAAC,UAAU,EAAE,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAAA;QACxF,CAAC;QACD,IAAI,CAAC,IAAA,uBAAa,EAAC,SAAS,EAAE,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAA;QAC7E,CAAC;QACD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QACvB,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,YAAY;YACZ,UAAU;YACV,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS;SACV,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kFAAkF;QAClF,IAAI,IAAI;YAAE,MAAM,OAAO,CAAC,OAAO,CAAE,IAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC/E,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC1D,IAAI,KAAK,YAAY,4BAAgB;YAAE,MAAM,KAAK,CAAA;QAClD,MAAM,OAAO,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type AbortSignalLike } from '../abort.js';
|
|
2
|
+
import { type TreeMetadataRecord } from './controls.js';
|
|
3
|
+
import { type TarResumeResult } from './manifest.js';
|
|
4
|
+
import { type TreeSnapshot } from './tree.js';
|
|
5
|
+
export declare const TREE_TRANSFER_DOMAIN = "swarm-deploy/direct-tree/v1";
|
|
6
|
+
export interface TreeManifest {
|
|
7
|
+
kind: 'directory';
|
|
8
|
+
path: string;
|
|
9
|
+
name: string;
|
|
10
|
+
sourceParent?: string;
|
|
11
|
+
entryCount: number;
|
|
12
|
+
payloadBytes: number;
|
|
13
|
+
treeSha256: Buffer;
|
|
14
|
+
tarSize: number;
|
|
15
|
+
tarSha256: Buffer;
|
|
16
|
+
transferId: Buffer;
|
|
17
|
+
snapshot: TreeSnapshot;
|
|
18
|
+
}
|
|
19
|
+
export interface TreeManifestOptions {
|
|
20
|
+
signal?: AbortSignalLike | null;
|
|
21
|
+
/** Set to `false` to keep an identity that names no source parent. */
|
|
22
|
+
includeSourceParent?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface TreeResumeOptions {
|
|
25
|
+
signal?: AbortSignalLike | null;
|
|
26
|
+
expectedPrefixSha256?: Uint8Array | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The authenticated identity of a directory offer. It is domain separated from
|
|
30
|
+
* the file transfer ID and commits to every metadata field plus the pinned USTAR
|
|
31
|
+
* constants and tree limits that shape the archive.
|
|
32
|
+
*/
|
|
33
|
+
export declare function computeTreeTransferId(clientPublicKey: Uint8Array, immutable: {
|
|
34
|
+
name: string;
|
|
35
|
+
sourceParent?: string;
|
|
36
|
+
entryCount: number;
|
|
37
|
+
payloadBytes: number;
|
|
38
|
+
treeSha256: Uint8Array;
|
|
39
|
+
tarSize: number;
|
|
40
|
+
tarSha256: Uint8Array;
|
|
41
|
+
}): Buffer;
|
|
42
|
+
export declare function buildTreeManifest(directoryPath: string, clientPublicKey: Uint8Array, { signal, includeSourceParent }?: TreeManifestOptions): Promise<TreeManifest>;
|
|
43
|
+
export declare function regenerateTreeTarSuffix(manifest: TreeManifest, offset: number, write: (chunk: Buffer) => void | Promise<void>, { signal, expectedPrefixSha256 }?: TreeResumeOptions): Promise<TarResumeResult>;
|
|
44
|
+
export declare function treeMetadataFromManifest(manifest: TreeManifest, reset?: boolean): TreeMetadataRecord;
|
|
45
|
+
export declare function assertTreeMetadataTransferId(clientPublicKey: Uint8Array, offeredMetadata: TreeMetadataRecord): void;
|