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.
Files changed (87) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +680 -49
  3. package/RELEASING.md +2 -2
  4. package/SECURITY.md +2 -3
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.js +79 -22
  7. package/dist/cli.js.map +1 -1
  8. package/dist/client.d.ts +19 -29
  9. package/dist/client.js +46 -55
  10. package/dist/client.js.map +1 -1
  11. package/dist/errors.d.ts +4 -0
  12. package/dist/errors.js +4 -0
  13. package/dist/errors.js.map +1 -1
  14. package/dist/files.d.ts +13 -28
  15. package/dist/files.js +13 -78
  16. package/dist/files.js.map +1 -1
  17. package/dist/hooks-module.d.ts +9 -0
  18. package/dist/hooks-module.js +118 -0
  19. package/dist/hooks-module.js.map +1 -0
  20. package/dist/hooks.d.ts +69 -0
  21. package/dist/hooks.js +88 -0
  22. package/dist/hooks.js.map +1 -0
  23. package/dist/index.d.ts +7 -3
  24. package/dist/index.js +3 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/release.d.ts +26 -0
  27. package/dist/release.js +419 -0
  28. package/dist/release.js.map +1 -0
  29. package/dist/server.d.ts +86 -0
  30. package/dist/server.js +405 -53
  31. package/dist/server.js.map +1 -1
  32. package/dist/storage/commit-journal.d.ts +39 -2
  33. package/dist/storage/commit-journal.js +140 -2
  34. package/dist/storage/commit-journal.js.map +1 -1
  35. package/dist/storage/commit-store.d.ts +69 -8
  36. package/dist/storage/commit-store.js +374 -22
  37. package/dist/storage/commit-store.js.map +1 -1
  38. package/dist/storage/layout.js +7 -1
  39. package/dist/storage/layout.js.map +1 -1
  40. package/dist/storage/link-store.d.ts +70 -0
  41. package/dist/storage/link-store.js +363 -0
  42. package/dist/storage/link-store.js.map +1 -0
  43. package/dist/storage/recovery.d.ts +2 -1
  44. package/dist/storage/recovery.js +8 -1
  45. package/dist/storage/recovery.js.map +1 -1
  46. package/dist/storage/retention.d.ts +41 -21
  47. package/dist/storage/retention.js +162 -8
  48. package/dist/storage/retention.js.map +1 -1
  49. package/dist/storage/tar-session-store.d.ts +36 -5
  50. package/dist/storage/tar-session-store.js +283 -55
  51. package/dist/storage/tar-session-store.js.map +1 -1
  52. package/dist/storage/tree-fs.d.ts +44 -0
  53. package/dist/storage/tree-fs.js +580 -0
  54. package/dist/storage/tree-fs.js.map +1 -0
  55. package/dist/storage/tree-staging.d.ts +9 -0
  56. package/dist/storage/tree-staging.js +64 -0
  57. package/dist/storage/tree-staging.js.map +1 -0
  58. package/dist/storage/types.d.ts +15 -0
  59. package/dist/symlinks.d.ts +36 -0
  60. package/dist/symlinks.js +128 -0
  61. package/dist/symlinks.js.map +1 -0
  62. package/dist/tar-protocol/controls.d.ts +25 -0
  63. package/dist/tar-protocol/controls.js +108 -2
  64. package/dist/tar-protocol/controls.js.map +1 -1
  65. package/dist/tar-protocol/direct-wire.d.ts +3 -3
  66. package/dist/tar-protocol/direct-wire.js +2 -2
  67. package/dist/tar-protocol/direct-wire.js.map +1 -1
  68. package/dist/tar-protocol/manifest.d.ts +13 -1
  69. package/dist/tar-protocol/manifest.js +26 -1
  70. package/dist/tar-protocol/manifest.js.map +1 -1
  71. package/dist/tar-protocol/tree-extract.d.ts +37 -0
  72. package/dist/tar-protocol/tree-extract.js +240 -0
  73. package/dist/tar-protocol/tree-extract.js.map +1 -0
  74. package/dist/tar-protocol/tree-manifest.d.ts +45 -0
  75. package/dist/tar-protocol/tree-manifest.js +277 -0
  76. package/dist/tar-protocol/tree-manifest.js.map +1 -0
  77. package/dist/tar-protocol/tree-path.d.ts +15 -0
  78. package/dist/tar-protocol/tree-path.js +68 -0
  79. package/dist/tar-protocol/tree-path.js.map +1 -0
  80. package/dist/tar-protocol/tree.d.ts +68 -0
  81. package/dist/tar-protocol/tree.js +269 -0
  82. package/dist/tar-protocol/tree.js.map +1 -0
  83. package/dist/tar-protocol/ustar.d.ts +14 -0
  84. package/dist/tar-protocol/ustar.js +81 -1
  85. package/dist/tar-protocol/ustar.js.map +1 -1
  86. package/dist/types.d.ts +3 -0
  87. 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"}
@@ -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[];
@@ -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
- exactKeys(value, [
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":"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"}
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, decodeFinalRecord, decodeMetadataRecord, type AdmissionRecord, type FinalRecord, type MetadataRecord } from './controls.js';
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: MetadataRecord, options?: ProtocolWriteOptions): Promise<void>;
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 decodeMetadataRecord;
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.encodeMetadataRecord)(metadata), options);
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.decodeMetadataRecord;
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 }?: TarOperationOptions): Promise<TarManifest>;
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;