swarm-deploy 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/CHANGELOG.md +44 -0
- package/README.md +680 -49
- package/RELEASING.md +2 -2
- package/SECURITY.md +2 -3
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +79 -22
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +19 -29
- package/dist/client.js +46 -55
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +4 -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 +7 -3
- 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 +86 -0
- package/dist/server.js +405 -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 +70 -0
- package/dist/storage/link-store.js +363 -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 +36 -0
- package/dist/symlinks.js +128 -0
- package/dist/symlinks.js.map +1 -0
- package/dist/tar-protocol/controls.d.ts +25 -0
- package/dist/tar-protocol/controls.js +108 -2
- package/dist/tar-protocol/controls.js.map +1 -1
- package/dist/tar-protocol/direct-wire.d.ts +3 -3
- package/dist/tar-protocol/direct-wire.js +2 -2
- 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
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTreeStagingTarget = createTreeStagingTarget;
|
|
4
|
+
const errors_js_1 = require("../errors.js");
|
|
5
|
+
const tree_fs_js_1 = require("./tree-fs.js");
|
|
6
|
+
/**
|
|
7
|
+
* Writes an extracted tree into `treePath`, which must live directly under
|
|
8
|
+
* `parent`. Every path is created exclusively, with no-follow opens, from
|
|
9
|
+
* validated components only, and every call carries the storage layout so the
|
|
10
|
+
* protected directories are refused by identity.
|
|
11
|
+
*/
|
|
12
|
+
function createTreeStagingTarget(treePath, parent, storage, layout) {
|
|
13
|
+
const options = { layout };
|
|
14
|
+
let created = false;
|
|
15
|
+
const ensureRoot = async () => {
|
|
16
|
+
if (created)
|
|
17
|
+
return;
|
|
18
|
+
await (0, tree_fs_js_1.createTreeRoot)(treePath, parent, storage, options);
|
|
19
|
+
created = true;
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
async createDirectory(relativePath) {
|
|
23
|
+
await ensureRoot();
|
|
24
|
+
await (0, tree_fs_js_1.createTreeSubdirectory)(treePath, relativePath, storage, options);
|
|
25
|
+
},
|
|
26
|
+
async createFile(relativePath) {
|
|
27
|
+
await ensureRoot();
|
|
28
|
+
const handle = await (0, tree_fs_js_1.openTreeFile)(treePath, relativePath, storage, options);
|
|
29
|
+
let position = 0;
|
|
30
|
+
return {
|
|
31
|
+
async write(chunk) {
|
|
32
|
+
let offset = 0;
|
|
33
|
+
while (offset < chunk.byteLength) {
|
|
34
|
+
const written = await handle.write(chunk, offset, chunk.byteLength - offset, position + offset);
|
|
35
|
+
const count = typeof written === 'number' ? written : written.bytesWritten;
|
|
36
|
+
if (!Number.isSafeInteger(count) || count <= 0) {
|
|
37
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, 'Unable to write staged tree file');
|
|
38
|
+
}
|
|
39
|
+
offset += count;
|
|
40
|
+
}
|
|
41
|
+
position += chunk.byteLength;
|
|
42
|
+
},
|
|
43
|
+
async close() {
|
|
44
|
+
try {
|
|
45
|
+
await handle.sync();
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
await handle.close();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
async complete() {
|
|
54
|
+
await ensureRoot();
|
|
55
|
+
await (0, tree_fs_js_1.syncTreeDirectories)(treePath, storage);
|
|
56
|
+
},
|
|
57
|
+
async abort() {
|
|
58
|
+
if (!created)
|
|
59
|
+
return;
|
|
60
|
+
await (0, tree_fs_js_1.removeTree)(treePath, parent, storage, options).catch(() => { });
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=tree-staging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-staging.js","sourceRoot":"","sources":["../../src/storage/tree-staging.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AAEvD,6CAMqB;AAGrB;;;;;GAKG;AACH,iCACE,QAAgB,EAChB,MAAc,EACd,OAAuB,EACvB,MAAqB;IAErB,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,CAAA;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI,OAAO;YAAE,OAAM;QACnB,MAAM,IAAA,2BAAc,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACxD,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC,CAAA;IACD,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,YAAoB;YACxC,MAAM,UAAU,EAAE,CAAA;YAClB,MAAM,IAAA,mCAAsB,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACxE,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,YAAoB;YACnC,MAAM,UAAU,EAAE,CAAA;YAClB,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAY,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3E,IAAI,QAAQ,GAAG,CAAC,CAAA;YAChB,OAAO;gBACL,KAAK,CAAC,KAAK,CAAC,KAAiB;oBAC3B,IAAI,MAAM,GAAG,CAAC,CAAA;oBACd,OAAO,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;wBACjC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAChC,KAAK,EACL,MAAM,EACN,KAAK,CAAC,UAAU,GAAG,MAAM,EACzB,QAAQ,GAAG,MAAM,CAClB,CAAA;wBACD,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAA;wBAC1E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;4BAC/C,MAAM,IAAI,4BAAgB,CACxB,kBAAM,CAAC,gBAAgB,EACvB,kCAAkC,CACnC,CAAA;wBACH,CAAC;wBACD,MAAM,IAAI,KAAK,CAAA;oBACjB,CAAC;oBACD,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAA;gBAC9B,CAAC;gBACD,KAAK,CAAC,KAAK;oBACT,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;oBACrB,CAAC;4BAAS,CAAC;wBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;oBACtB,CAAC;gBACH,CAAC;aACF,CAAA;QACH,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,MAAM,UAAU,EAAE,CAAA;YAClB,MAAM,IAAA,gCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC9C,CAAC;QACD,KAAK,CAAC,KAAK;YACT,IAAI,CAAC,OAAO;gBAAE,OAAM;YACpB,MAAM,IAAA,uBAAU,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtE,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/storage/types.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ export interface StorageStats {
|
|
|
2
2
|
dev: number | bigint;
|
|
3
3
|
ino: number | bigint;
|
|
4
4
|
size: number;
|
|
5
|
+
/** Hard-link count; tree primitives reject any file reporting more than one. */
|
|
6
|
+
nlink?: number;
|
|
7
|
+
/** Modification time, compared across hashing when the adapter reports it. */
|
|
8
|
+
mtimeMs?: number;
|
|
5
9
|
isSymbolicLink(): boolean;
|
|
6
10
|
isDirectory(): boolean;
|
|
7
11
|
isFile(): boolean;
|
|
@@ -44,7 +48,14 @@ export interface StorageAdapter {
|
|
|
44
48
|
rmdir(path: string): Promise<void>;
|
|
45
49
|
readdir(path: string): Promise<string[]>;
|
|
46
50
|
statfs?(path: string): Promise<StorageStatFs>;
|
|
51
|
+
/** Required only when symlink rules are configured. */
|
|
52
|
+
symlink?(target: string, path: string): Promise<void>;
|
|
53
|
+
readlink?(path: string): Promise<string>;
|
|
47
54
|
}
|
|
55
|
+
export type SymlinkCapableStorage = StorageAdapter & {
|
|
56
|
+
symlink(target: string, path: string): Promise<void>;
|
|
57
|
+
readlink(path: string): Promise<string>;
|
|
58
|
+
};
|
|
48
59
|
export interface StorageLayout {
|
|
49
60
|
root: string;
|
|
50
61
|
internal: string;
|
|
@@ -54,6 +65,10 @@ export interface StorageLayout {
|
|
|
54
65
|
journals: string;
|
|
55
66
|
/** Private destinations for replacement publications before they are visible. */
|
|
56
67
|
publications: string;
|
|
68
|
+
/** Private managed-symlink ownership records. */
|
|
69
|
+
links: string;
|
|
70
|
+
/** Private destination a managed directory is renamed into before deletion. */
|
|
71
|
+
trash: string;
|
|
57
72
|
lock: string;
|
|
58
73
|
}
|
|
59
74
|
export interface StorageIdentity {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type CommitRecord } from './storage/commit-journal.js';
|
|
2
|
+
import type { ArtifactKind } from './types.js';
|
|
3
|
+
export declare const MAX_SYMLINK_SELECTOR_BYTES = 200;
|
|
4
|
+
export interface SymlinkRule {
|
|
5
|
+
/** An exact managed artifact basename, or `/pattern/` with no flags. */
|
|
6
|
+
selector: string;
|
|
7
|
+
/** The safe basename of the managed link, a sibling of its target. */
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CompiledSymlinkRule {
|
|
11
|
+
readonly selector: string;
|
|
12
|
+
readonly name: string;
|
|
13
|
+
/** The exact target basename, or `null` for a regular-expression selector. */
|
|
14
|
+
readonly exact: string | null;
|
|
15
|
+
matches(name: string): boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface DesiredLink {
|
|
18
|
+
name: string;
|
|
19
|
+
/** Always exactly the selected record's basename. */
|
|
20
|
+
target: string;
|
|
21
|
+
transferId: string;
|
|
22
|
+
targetKind: ArtifactKind;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validates and snapshots operator symlink rules. The regex source is bounded,
|
|
26
|
+
* has no flags, and runs only against validated 100-byte artifact basenames; it
|
|
27
|
+
* is trusted operator configuration, and an invalid one is a startup error.
|
|
28
|
+
*/
|
|
29
|
+
export declare function compileSymlinkRules(rules: Iterable<SymlinkRule> | null | undefined): readonly CompiledSymlinkRule[];
|
|
30
|
+
export declare function symlinkRuleNames(rules: readonly CompiledSymlinkRule[]): ReadonlySet<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Computes the desired links from validated commit records only. A rule with no
|
|
33
|
+
* match is dormant. Replacement history names never match, and a candidate
|
|
34
|
+
* whose name equals its own link name is skipped.
|
|
35
|
+
*/
|
|
36
|
+
export declare function selectDesiredLinks(rules: readonly CompiledSymlinkRule[], records: readonly CommitRecord[]): DesiredLink[];
|
package/dist/symlinks.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
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.MAX_SYMLINK_SELECTOR_BYTES = void 0;
|
|
7
|
+
exports.compileSymlinkRules = compileSymlinkRules;
|
|
8
|
+
exports.symlinkRuleNames = symlinkRuleNames;
|
|
9
|
+
exports.selectDesiredLinks = selectDesiredLinks;
|
|
10
|
+
const b4a_1 = __importDefault(require("b4a"));
|
|
11
|
+
const errors_js_1 = require("./errors.js");
|
|
12
|
+
const files_js_1 = require("./files.js");
|
|
13
|
+
const commit_journal_js_1 = require("./storage/commit-journal.js");
|
|
14
|
+
exports.MAX_SYMLINK_SELECTOR_BYTES = 200;
|
|
15
|
+
function invalid(message, cause = null) {
|
|
16
|
+
return new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, message, cause);
|
|
17
|
+
}
|
|
18
|
+
function assertLinkName(value) {
|
|
19
|
+
if (typeof value !== 'string') {
|
|
20
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Invalid symlink name');
|
|
21
|
+
}
|
|
22
|
+
const name = (0, files_js_1.validateBasename)(value);
|
|
23
|
+
if ((0, files_js_1.isReservedHistoryName)(name)) {
|
|
24
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Reserved symlink name');
|
|
25
|
+
}
|
|
26
|
+
return name;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validates and snapshots operator symlink rules. The regex source is bounded,
|
|
30
|
+
* has no flags, and runs only against validated 100-byte artifact basenames; it
|
|
31
|
+
* is trusted operator configuration, and an invalid one is a startup error.
|
|
32
|
+
*/
|
|
33
|
+
function compileSymlinkRules(rules) {
|
|
34
|
+
if (rules === null || rules === undefined)
|
|
35
|
+
return Object.freeze([]);
|
|
36
|
+
if (typeof rules === 'string' ||
|
|
37
|
+
typeof rules !== 'object' ||
|
|
38
|
+
typeof rules[Symbol.iterator] !== 'function') {
|
|
39
|
+
throw invalid('Invalid symlink rules');
|
|
40
|
+
}
|
|
41
|
+
const compiled = [];
|
|
42
|
+
const names = new Set();
|
|
43
|
+
for (const rule of rules) {
|
|
44
|
+
if (!rule || typeof rule !== 'object' || Array.isArray(rule)) {
|
|
45
|
+
throw invalid('Invalid symlink rule');
|
|
46
|
+
}
|
|
47
|
+
const keys = Object.keys(rule).sort();
|
|
48
|
+
if (keys.length !== 2 || keys[0] !== 'name' || keys[1] !== 'selector') {
|
|
49
|
+
throw invalid('Invalid symlink rule');
|
|
50
|
+
}
|
|
51
|
+
const { selector, name: rawName } = rule;
|
|
52
|
+
const name = assertLinkName(rawName);
|
|
53
|
+
if (names.has(name))
|
|
54
|
+
throw invalid('Duplicate symlink name');
|
|
55
|
+
names.add(name);
|
|
56
|
+
if (typeof selector !== 'string' || selector.length === 0) {
|
|
57
|
+
throw invalid('Invalid symlink selector');
|
|
58
|
+
}
|
|
59
|
+
if (b4a_1.default.from(selector).byteLength > exports.MAX_SYMLINK_SELECTOR_BYTES) {
|
|
60
|
+
throw invalid('Invalid symlink selector');
|
|
61
|
+
}
|
|
62
|
+
if (selector.length >= 2 && selector.startsWith('/') && selector.endsWith('/')) {
|
|
63
|
+
const source = selector.slice(1, -1);
|
|
64
|
+
if (source.length === 0)
|
|
65
|
+
throw invalid('Invalid symlink selector');
|
|
66
|
+
let pattern;
|
|
67
|
+
try {
|
|
68
|
+
pattern = new RegExp(source);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw invalid('Invalid symlink selector', error);
|
|
72
|
+
}
|
|
73
|
+
compiled.push(Object.freeze({
|
|
74
|
+
selector,
|
|
75
|
+
name,
|
|
76
|
+
exact: null,
|
|
77
|
+
matches: (candidate) => pattern.test(candidate)
|
|
78
|
+
}));
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const exact = (0, files_js_1.validateBasename)(selector);
|
|
82
|
+
if ((0, files_js_1.isReservedHistoryName)(exact))
|
|
83
|
+
throw invalid('Reserved symlink selector');
|
|
84
|
+
if (exact === name)
|
|
85
|
+
throw invalid('Symlink selector equals its own name');
|
|
86
|
+
compiled.push(Object.freeze({
|
|
87
|
+
selector,
|
|
88
|
+
name,
|
|
89
|
+
exact,
|
|
90
|
+
matches: (candidate) => candidate === exact
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
return Object.freeze(compiled);
|
|
94
|
+
}
|
|
95
|
+
function symlinkRuleNames(rules) {
|
|
96
|
+
return new Set(rules.map((rule) => rule.name));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Computes the desired links from validated commit records only. A rule with no
|
|
100
|
+
* match is dormant. Replacement history names never match, and a candidate
|
|
101
|
+
* whose name equals its own link name is skipped.
|
|
102
|
+
*/
|
|
103
|
+
function selectDesiredLinks(rules, records) {
|
|
104
|
+
const desired = [];
|
|
105
|
+
for (const rule of rules) {
|
|
106
|
+
let selected = null;
|
|
107
|
+
for (const record of records) {
|
|
108
|
+
if ((0, files_js_1.isReservedHistoryName)(record.name))
|
|
109
|
+
continue;
|
|
110
|
+
if (record.name === rule.name)
|
|
111
|
+
continue;
|
|
112
|
+
if (!rule.matches(record.name))
|
|
113
|
+
continue;
|
|
114
|
+
if (selected === null || (0, commit_journal_js_1.compareCommitOrder)(record, selected) < 0)
|
|
115
|
+
selected = record;
|
|
116
|
+
}
|
|
117
|
+
if (selected === null)
|
|
118
|
+
continue;
|
|
119
|
+
desired.push({
|
|
120
|
+
name: rule.name,
|
|
121
|
+
target: selected.name,
|
|
122
|
+
transferId: selected.transferId,
|
|
123
|
+
targetKind: (0, commit_journal_js_1.commitRecordKind)(selected)
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return desired;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=symlinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symlinks.js","sourceRoot":"","sources":["../src/symlinks.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export declare const MAX_CONTROL_RECORD_BYTES: number;
|
|
|
4
4
|
export interface MetadataRecord {
|
|
5
5
|
v: typeof CONTROL_VERSION;
|
|
6
6
|
name: string;
|
|
7
|
+
sourceParent?: string;
|
|
7
8
|
fileSize: number;
|
|
8
9
|
fileSha256: string;
|
|
9
10
|
tarSize: number;
|
|
@@ -11,6 +12,25 @@ export interface MetadataRecord {
|
|
|
11
12
|
transferId: string;
|
|
12
13
|
reset: boolean;
|
|
13
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* A recursive directory offer. The key set is disjoint from the file record's,
|
|
17
|
+
* so an older server's `exactKeys()` check rejects it before touching storage.
|
|
18
|
+
*/
|
|
19
|
+
export interface TreeMetadataRecord {
|
|
20
|
+
v: typeof CONTROL_VERSION;
|
|
21
|
+
kind: 'directory';
|
|
22
|
+
name: string;
|
|
23
|
+
sourceParent?: string;
|
|
24
|
+
entryCount: number;
|
|
25
|
+
payloadBytes: number;
|
|
26
|
+
treeSha256: string;
|
|
27
|
+
tarSize: number;
|
|
28
|
+
tarSha256: string;
|
|
29
|
+
transferId: string;
|
|
30
|
+
reset: boolean;
|
|
31
|
+
}
|
|
32
|
+
export type AnyMetadataRecord = MetadataRecord | TreeMetadataRecord;
|
|
33
|
+
export declare function isTreeMetadata(value: AnyMetadataRecord): value is TreeMetadataRecord;
|
|
14
34
|
export type AdmissionRecord = {
|
|
15
35
|
v: typeof CONTROL_VERSION;
|
|
16
36
|
status: 'ACCEPT';
|
|
@@ -39,8 +59,13 @@ export type FinalRecord = {
|
|
|
39
59
|
status: 'FAILED';
|
|
40
60
|
code: ErrorCode;
|
|
41
61
|
};
|
|
62
|
+
export declare function assertSourceParent(value: unknown): asserts value is string;
|
|
42
63
|
export declare function encodeMetadataRecord(value: MetadataRecord): Buffer;
|
|
43
64
|
export declare function decodeMetadataRecord(bytes: Uint8Array): MetadataRecord;
|
|
65
|
+
export declare function encodeTreeMetadataRecord(value: TreeMetadataRecord): Buffer;
|
|
66
|
+
export declare function decodeTreeMetadataRecord(bytes: Uint8Array): TreeMetadataRecord;
|
|
67
|
+
export declare function encodeAnyMetadataRecord(value: AnyMetadataRecord): Buffer;
|
|
68
|
+
export declare function decodeAnyMetadataRecord(bytes: Uint8Array): AnyMetadataRecord;
|
|
44
69
|
export declare function encodeAdmissionRecord(value: AdmissionRecord): Buffer;
|
|
45
70
|
export declare function decodeAdmissionRecord(bytes: Uint8Array): AdmissionRecord;
|
|
46
71
|
export declare function encodeFinalRecord(value: FinalRecord): Buffer;
|
|
@@ -4,8 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.MAX_CONTROL_RECORD_BYTES = exports.CONTROL_VERSION = void 0;
|
|
7
|
+
exports.isTreeMetadata = isTreeMetadata;
|
|
8
|
+
exports.assertSourceParent = assertSourceParent;
|
|
7
9
|
exports.encodeMetadataRecord = encodeMetadataRecord;
|
|
8
10
|
exports.decodeMetadataRecord = decodeMetadataRecord;
|
|
11
|
+
exports.encodeTreeMetadataRecord = encodeTreeMetadataRecord;
|
|
12
|
+
exports.decodeTreeMetadataRecord = decodeTreeMetadataRecord;
|
|
13
|
+
exports.encodeAnyMetadataRecord = encodeAnyMetadataRecord;
|
|
14
|
+
exports.decodeAnyMetadataRecord = decodeAnyMetadataRecord;
|
|
9
15
|
exports.encodeAdmissionRecord = encodeAdmissionRecord;
|
|
10
16
|
exports.decodeAdmissionRecord = decodeAdmissionRecord;
|
|
11
17
|
exports.encodeFinalRecord = encodeFinalRecord;
|
|
@@ -13,13 +19,18 @@ exports.decodeFinalRecord = decodeFinalRecord;
|
|
|
13
19
|
exports.encodeControlFrame = encodeControlFrame;
|
|
14
20
|
const b4a_1 = __importDefault(require("b4a"));
|
|
15
21
|
const errors_js_1 = require("../errors.js");
|
|
22
|
+
const tree_path_js_1 = require("./tree-path.js");
|
|
16
23
|
const ustar_js_1 = require("./ustar.js");
|
|
17
24
|
exports.CONTROL_VERSION = 1;
|
|
18
25
|
exports.MAX_CONTROL_RECORD_BYTES = 4 * 1024;
|
|
19
26
|
const HEX_32 = /^[0-9a-f]{64}$/;
|
|
20
27
|
const SAFE_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$/;
|
|
28
|
+
const SAFE_SOURCE_PARENT = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,199}$/;
|
|
21
29
|
const HISTORY_PREFIX = 'history-';
|
|
22
30
|
const STABLE_CODES = new Set(Object.values(errors_js_1.ERRORS));
|
|
31
|
+
function isTreeMetadata(value) {
|
|
32
|
+
return value.kind === 'directory';
|
|
33
|
+
}
|
|
23
34
|
function invalid(message, cause = null) {
|
|
24
35
|
return new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.PROTOCOL_INVALID, message, cause);
|
|
25
36
|
}
|
|
@@ -54,6 +65,13 @@ function assertName(value) {
|
|
|
54
65
|
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Invalid TAR filename');
|
|
55
66
|
}
|
|
56
67
|
}
|
|
68
|
+
function assertSourceParent(value) {
|
|
69
|
+
if (typeof value !== 'string' ||
|
|
70
|
+
!SAFE_SOURCE_PARENT.test(value) ||
|
|
71
|
+
b4a_1.default.from(value).byteLength > 100) {
|
|
72
|
+
throw new errors_js_1.SwarmDeployError(errors_js_1.ERRORS.INVALID_FILENAME, 'Invalid source parent');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
57
75
|
function assertStableCode(value) {
|
|
58
76
|
if (typeof value !== 'string' || !STABLE_CODES.has(value))
|
|
59
77
|
throw invalid('Invalid error code');
|
|
@@ -84,7 +102,7 @@ function encodeRecord(value, validate) {
|
|
|
84
102
|
function validateMetadata(value) {
|
|
85
103
|
if (!isRecord(value))
|
|
86
104
|
throw invalid('Metadata record must be an object');
|
|
87
|
-
|
|
105
|
+
const expected = [
|
|
88
106
|
'v',
|
|
89
107
|
'name',
|
|
90
108
|
'fileSize',
|
|
@@ -93,9 +111,16 @@ function validateMetadata(value) {
|
|
|
93
111
|
'tarSha256',
|
|
94
112
|
'transferId',
|
|
95
113
|
'reset'
|
|
96
|
-
]
|
|
114
|
+
];
|
|
115
|
+
if (Object.prototype.hasOwnProperty.call(value, 'sourceParent')) {
|
|
116
|
+
expected.push('sourceParent');
|
|
117
|
+
}
|
|
118
|
+
exactKeys(value, expected);
|
|
97
119
|
assertVersion(value.v);
|
|
98
120
|
assertName(value.name);
|
|
121
|
+
if (Object.prototype.hasOwnProperty.call(value, 'sourceParent')) {
|
|
122
|
+
assertSourceParent(value.sourceParent);
|
|
123
|
+
}
|
|
99
124
|
assertSafeUint(value.fileSize, 'file size');
|
|
100
125
|
assertHex32(value.fileSha256, 'file digest');
|
|
101
126
|
assertSafeUint(value.tarSize, 'TAR size');
|
|
@@ -107,6 +132,75 @@ function validateMetadata(value) {
|
|
|
107
132
|
throw invalid('Invalid reset flag');
|
|
108
133
|
return value;
|
|
109
134
|
}
|
|
135
|
+
const TAR_END_BLOCKS = 2 * ustar_js_1.TAR_BLOCK_BYTES;
|
|
136
|
+
/**
|
|
137
|
+
* The exact set of TAR sizes a canonical generator can produce for these counts.
|
|
138
|
+
*
|
|
139
|
+
* Every entry owns one header block and the archive ends with two zero blocks. Only files carry
|
|
140
|
+
* payload, and each non-empty file pads to a block boundary with at most 511 bytes. At least one
|
|
141
|
+
* file exists when there is any payload, so the unpadded total is `minimum`, and at most
|
|
142
|
+
* `min(entryCount, payloadBytes)` files can each hold a padded tail. Real archives are whole blocks,
|
|
143
|
+
* so the window is the whole-block sizes from `minimum` rounded up to `maximum` rounded down.
|
|
144
|
+
*/
|
|
145
|
+
function assertTreeTarSize(entryCount, payloadBytes, tarSize) {
|
|
146
|
+
if (payloadBytes > entryCount * ustar_js_1.MAX_USTAR_FILE_BYTES)
|
|
147
|
+
throw invalid('Invalid tree payload size');
|
|
148
|
+
if (payloadBytes > 0 && entryCount === 0)
|
|
149
|
+
throw invalid('Invalid tree payload size');
|
|
150
|
+
const base = TAR_END_BLOCKS + ustar_js_1.TAR_BLOCK_BYTES * entryCount;
|
|
151
|
+
const minimum = base + payloadBytes;
|
|
152
|
+
const maximum = minimum + (ustar_js_1.TAR_BLOCK_BYTES - 1) * Math.min(entryCount, payloadBytes);
|
|
153
|
+
const lowest = Math.ceil(minimum / ustar_js_1.TAR_BLOCK_BYTES) * ustar_js_1.TAR_BLOCK_BYTES;
|
|
154
|
+
const highest = Math.floor(maximum / ustar_js_1.TAR_BLOCK_BYTES) * ustar_js_1.TAR_BLOCK_BYTES;
|
|
155
|
+
if (tarSize % ustar_js_1.TAR_BLOCK_BYTES !== 0 || tarSize < lowest || tarSize > highest) {
|
|
156
|
+
throw invalid('Noncanonical TAR size');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function validateTreeMetadata(value) {
|
|
160
|
+
if (!isRecord(value))
|
|
161
|
+
throw invalid('Metadata record must be an object');
|
|
162
|
+
const expected = [
|
|
163
|
+
'v',
|
|
164
|
+
'kind',
|
|
165
|
+
'name',
|
|
166
|
+
'entryCount',
|
|
167
|
+
'payloadBytes',
|
|
168
|
+
'treeSha256',
|
|
169
|
+
'tarSize',
|
|
170
|
+
'tarSha256',
|
|
171
|
+
'transferId',
|
|
172
|
+
'reset'
|
|
173
|
+
];
|
|
174
|
+
if (Object.prototype.hasOwnProperty.call(value, 'sourceParent'))
|
|
175
|
+
expected.push('sourceParent');
|
|
176
|
+
exactKeys(value, expected);
|
|
177
|
+
assertVersion(value.v);
|
|
178
|
+
if (value.kind !== 'directory')
|
|
179
|
+
throw invalid('Invalid artifact kind');
|
|
180
|
+
assertName(value.name);
|
|
181
|
+
if (Object.prototype.hasOwnProperty.call(value, 'sourceParent')) {
|
|
182
|
+
assertSourceParent(value.sourceParent);
|
|
183
|
+
}
|
|
184
|
+
assertSafeUint(value.entryCount, 'tree entry count');
|
|
185
|
+
if (value.entryCount > tree_path_js_1.MAX_TREE_ENTRIES)
|
|
186
|
+
throw invalid('Invalid tree entry count');
|
|
187
|
+
assertSafeUint(value.payloadBytes, 'tree payload size');
|
|
188
|
+
assertHex32(value.treeSha256, 'tree digest');
|
|
189
|
+
assertSafeUint(value.tarSize, 'TAR size');
|
|
190
|
+
assertHex32(value.tarSha256, 'TAR digest');
|
|
191
|
+
assertHex32(value.transferId, 'transfer ID');
|
|
192
|
+
if (typeof value.reset !== 'boolean')
|
|
193
|
+
throw invalid('Invalid reset flag');
|
|
194
|
+
assertTreeTarSize(value.entryCount, value.payloadBytes, value.tarSize);
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
function validateAnyMetadata(value) {
|
|
198
|
+
if (!isRecord(value))
|
|
199
|
+
throw invalid('Metadata record must be an object');
|
|
200
|
+
return Object.prototype.hasOwnProperty.call(value, 'kind')
|
|
201
|
+
? validateTreeMetadata(value)
|
|
202
|
+
: validateMetadata(value);
|
|
203
|
+
}
|
|
110
204
|
function validateAdmission(value) {
|
|
111
205
|
if (!isRecord(value))
|
|
112
206
|
throw invalid('Admission record must be an object');
|
|
@@ -157,6 +251,18 @@ function encodeMetadataRecord(value) {
|
|
|
157
251
|
function decodeMetadataRecord(bytes) {
|
|
158
252
|
return validateMetadata(parseRecord(bytes));
|
|
159
253
|
}
|
|
254
|
+
function encodeTreeMetadataRecord(value) {
|
|
255
|
+
return encodeRecord(value, validateTreeMetadata);
|
|
256
|
+
}
|
|
257
|
+
function decodeTreeMetadataRecord(bytes) {
|
|
258
|
+
return validateTreeMetadata(parseRecord(bytes));
|
|
259
|
+
}
|
|
260
|
+
function encodeAnyMetadataRecord(value) {
|
|
261
|
+
return encodeRecord(value, validateAnyMetadata);
|
|
262
|
+
}
|
|
263
|
+
function decodeAnyMetadataRecord(bytes) {
|
|
264
|
+
return validateAnyMetadata(parseRecord(bytes));
|
|
265
|
+
}
|
|
160
266
|
function encodeAdmissionRecord(value) {
|
|
161
267
|
return encodeRecord(value, validateAdmission);
|
|
162
268
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/tar-protocol/controls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/tar-protocol/controls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type AbortSignalLike } from '../abort.js';
|
|
2
2
|
import type { DirectDhtSocket } from '../direct-dht.js';
|
|
3
|
-
import { decodeAdmissionRecord,
|
|
3
|
+
import { decodeAdmissionRecord, decodeAnyMetadataRecord, decodeFinalRecord, type AdmissionRecord, type AnyMetadataRecord, type FinalRecord } 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,10 @@ 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
38
|
export declare function writeAdmission(socket: DirectDhtSocket, value: AdmissionRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
39
39
|
export declare function writeFinal(socket: DirectDhtSocket, value: FinalRecord, options?: ProtocolWriteOptions): Promise<void>;
|
|
40
40
|
export declare function writeTar(socket: DirectDhtSocket, value: Uint8Array, options?: ProtocolWriteOptions): Promise<void>;
|
|
41
|
-
export declare const decodeDirectMetadata: typeof
|
|
41
|
+
export declare const decodeDirectMetadata: typeof decodeAnyMetadataRecord;
|
|
42
42
|
export declare const decodeDirectAdmission: typeof decodeAdmissionRecord;
|
|
43
43
|
export declare const decodeDirectFinal: typeof decodeFinalRecord;
|
|
@@ -177,7 +177,7 @@ function endWrite(socket) {
|
|
|
177
177
|
stream.end();
|
|
178
178
|
}
|
|
179
179
|
function writeMetadata(socket, metadata, options = {}) {
|
|
180
|
-
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.
|
|
180
|
+
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeAnyMetadataRecord)(metadata), options);
|
|
181
181
|
}
|
|
182
182
|
function writeAdmission(socket, value, options = {}) {
|
|
183
183
|
return (0, lifecycle_js_1.writeFramedProtocolRecord)(socket, (0, controls_js_1.encodeAdmissionRecord)(value), options);
|
|
@@ -188,7 +188,7 @@ function writeFinal(socket, value, options = {}) {
|
|
|
188
188
|
function writeTar(socket, value, options = {}) {
|
|
189
189
|
return (0, lifecycle_js_1.writeProtocolBytes)(socket, value, options);
|
|
190
190
|
}
|
|
191
|
-
exports.decodeDirectMetadata = controls_js_1.
|
|
191
|
+
exports.decodeDirectMetadata = controls_js_1.decodeAnyMetadataRecord;
|
|
192
192
|
exports.decodeDirectAdmission = controls_js_1.decodeAdmissionRecord;
|
|
193
193
|
exports.decodeDirectFinal = controls_js_1.decodeFinalRecord;
|
|
194
194
|
//# sourceMappingURL=direct-wire.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-wire.js","sourceRoot":"","sources":["../../src/tar-protocol/direct-wire.ts"],"names":[],"mappings":"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
|
|
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;
|