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
@@ -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":";;;;;;;;;;;AAAA,8CAAqB;AACrB,8CAAoB;AACpB,kDAAwB;AACxB,kEAAkC;AAClC,0CAAkE;AAClE,4CAAuD;AACvD,0CAAqE;AACrE,oDAAwD;AACxD,+CAKsB;AACtB,uCAAuD;AACvD,yCAWmB;AAEnB,uCASmB;AARjB,gHAAA,oBAAoB,OAAA;AACpB,2GAAA,eAAe,OAAA;AACf,mGAAA,OAAO,OAAA;AACP,qGAAA,SAAS,OAAA;AACT,oGAAA,QAAQ,OAAA;AACR,wGAAA,YAAY,OAAA;AACZ,mGAAA,OAAO,OAAA;AACP,qGAAA,SAAS,OAAA;AAEE,QAAA,mBAAmB,GAAG,4BAA4B,CAAA;AAC/D,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAA;AAgC5B,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,cAAc,CAAC,IAAa;IACnC,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,GAAe;IACtC,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC,eAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtD,IAAI,IAAA,gCAAqB,EAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CAAA;IAC5F,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc;IAC9B,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,QAA2B,EAAE,MAAgB;IACjE,OAAO,CACL,MAAM,CAAC,MAAM,EAAE;QACf,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QAC3B,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QAC3B,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAC7B,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CACpC,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAA2B,EAAE,MAAgB,EAAE,OAAe;IACpF,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC5F,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,QAAkC,EAClC,MAA0C;IAE1C,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,MAAM,QAAQ,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAClD,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,QAAQ;QAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,2CAA2C,CAAC,CAAA;IAE7F,IAAI,MAAM,GAAkC,IAAI,CAAA;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAClC,cAAc,CAAC,QAAQ,IAAI,QAAQ,EAAE,MAAM,EAAE,uCAAuC,CAAC,CAAA;QACrF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAChD,IAAI,KAAK,YAAY,4BAAgB;YAAE,MAAM,KAAK,CAAA;QAClD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,WAAW,CACzB,MAA8B,EAC9B,IAAY,EACZ,IAAY,EACZ,QAAsB,EACtB,MAA0C;IAE1C,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,MAAM,IAAA,+BAAoB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,OAAO,QAAQ,GAAG,IAAI,EAAE,CAAC;QACvB,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;QACtB,MAAM,KAAK,GAAG,aAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;QAC9D,IAAI,KAAK,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAA;QAC3E,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,QAAQ,IAAI,KAAK,CAAA;QACjB,MAAM,KAAK,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,0BAAe,GAAG,CAAC,IAAI,GAAG,0BAAe,CAAC,CAAC,GAAG,0BAAe,CAAA;IAC9E,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,aAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,aAAG,CAAC,KAAK,CAAC,CAAC,GAAG,0BAAe,CAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAAgB,EAChB,MAA8B,EAC9B,QAA2B,EAC3B,MAA0C;IAE1C,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,cAAc,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,2CAA2C,CAAC,CAAA;IAC1F,cAAc,CACZ,QAAQ,EACR,MAAM,aAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EACjC,2CAA2C,CAC5C,CAAA;IACD,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,aAAa,CACpB,IAAkB,EAClB,KAAa,EACb,KAAmC;IAEnC,MAAM,UAAU,GAAG,aAAG,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxF,IAAI;SACD,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,CAAC,aAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;SAC7C,MAAM,CAAC,UAAU,CAAC,CAAA;AACvB,CAAC;AAED,8BACE,eAA2B,EAC3B,SAMC;IAED,eAAe,CAAC,eAAe,CAAC,CAAA;IAChC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClC,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAClF,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtC,CAAC;IACD,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAChF,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,sBAAY,EAAE,CAAA;IAC/B,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAA,mBAAmB,CAAC,CAAA;IAClD,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAA;IACvD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IACnD,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IACvD,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IACjD,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAQ,CAAC,CAAA;IACrC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAO,CAAC,CAAA;IACnC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAO,CAAC,CAAA;IACnC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,uBAAY,CAAC,CAAA;IAC5C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAS,CAAC,CAAA;IACvC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAS,CAAC,CAAA;IACvC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;AACtB,CAAC;AAEM,KAAK,2BACV,QAAgB,EAChB,eAA2B,EAC3B,EAAE,MAAM,GAAG,IAAI,EAAE,GAAwB,EAAE;IAE3C,eAAe,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7D,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,IAAI,sBAAY,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,sBAAY,EAAE,CAAA;IAClC,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CACnC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,IAAI,EAClB,QAAQ,EACR,MAAM,CACP,EAAE,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrB,OAAO,IAAI,KAAK,CAAC,UAAU,CAAA;QAC7B,CAAC;QACD,MAAM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzE,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,IAAI,OAAO,KAAK,IAAA,+BAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,CAAC,uCAAuC,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,EAAE;QACvD,IAAI;QACJ,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAC5B,UAAU;QACV,OAAO;QACP,SAAS;KACV,CAAC,CAAA;IACF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAC5B,UAAU;QACV,OAAO;QACP,SAAS;QACT,UAAU;QACV,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAA;AACH,CAAC;AAEM,KAAK,8BACV,QAAqB,EACrB,MAAc,EACd,KAA8C,EAC9C,EAAE,MAAM,GAAG,IAAI,EAAE,oBAAoB,GAAG,IAAI,EAAE,GAAqB,EAAE;IAErE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC7E,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC3E,IACE,oBAAoB,KAAK,IAAI;QAC7B,CAAC,CAAC,aAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,CAAC,UAAU,KAAK,EAAE,CAAC,EAC/E,CAAC;QACD,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7E,MAAM,QAAQ,GAAG,IAAI,sBAAY,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,sBAAY,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,IAAI,sBAAY,EAAE,CAAA;IACrC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,YAAY,GAAkB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3E,IAAI,aAAa,GACf,YAAY,KAAK,IAAI;QACrB,oBAAoB,KAAK,IAAI;QAC7B,CAAC,uBAAM,CAAC,aAAa,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;IAC3D,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CACnC,MAAM,CAAC,MAAM,EACb,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,QAAQ,EACjB,QAAQ,EACR,MAAM,CACP,EAAE,CAAC;YACF,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrB,MAAM,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAA;YACvC,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAA;gBAC/D,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;gBAC/C,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;oBAClB,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA;oBAClC,IAAI,oBAAoB,IAAI,CAAC,uBAAM,CAAC,aAAa,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAE,CAAC;wBACtF,aAAa,GAAG,IAAI,CAAA;oBACtB,CAAC;oBACD,IAAI,CAAC,aAAa,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;wBACnD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;wBACxC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;wBACnB,SAAS,IAAI,MAAM,CAAC,UAAU,CAAA;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,KAAK,CAAC,CAAA;gBAClB,SAAS,IAAI,KAAK,CAAC,UAAU,CAAA;YAC/B,CAAC;YACD,QAAQ,GAAG,GAAG,CAAA;QAChB,CAAC;QACD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChF,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,IACE,QAAQ,KAAK,QAAQ,CAAC,OAAO;QAC7B,CAAC,CAAC,aAAa,IAAI,SAAS,KAAK,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,EAC3D,CAAC;QACD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAA;IAChF,CAAC;IACD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IACvC,IACE,CAAC,IAAA,uBAAa,EAAC,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC;QACpD,CAAC,IAAA,uBAAa,EAAC,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,EAClD,CAAC;QACD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,YAAY,KAAK,IAAI;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACrE,IAAI,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;IAClF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAA;AACrD,CAAC;AAED,8BAAqC,QAAqB,EAAE,KAAK,GAAG,KAAK;IACvE,OAAO;QACL,CAAC,EAAE,6BAAe;QAClB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,aAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QACpD,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,aAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;QAClD,UAAU,EAAE,aAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QACpD,KAAK;KACN,CAAA;AACH,CAAC;AAED,kCACE,eAA2B,EAC3B,eAA+B;IAE/B,MAAM,QAAQ,GAAG,IAAA,kCAAoB,EAAC,IAAA,kCAAoB,EAAC,eAAe,CAAC,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,EAAE;QACrD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QAChD,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;KAC/C,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IACpD,IAAI,CAAC,uBAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;AAC7F,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/tar-protocol/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAqB;AACrB,8CAAoB;AACpB,kDAAwB;AACxB,kEAAkC;AAClC,0CAAkE;AAClE,4CAAuD;AACvD,0CAAqE;AACrE,oDAAwD;AACxD,+CAMsB;AACtB,uCAAuD;AACvD,yCAWmB;AAEnB,uCASmB;AARjB,gHAAA,oBAAoB,OAAA;AACpB,2GAAA,eAAe,OAAA;AACf,mGAAA,OAAO,OAAA;AACP,qGAAA,SAAS,OAAA;AACT,oGAAA,QAAQ,OAAA;AACR,wGAAA,YAAY,OAAA;AACZ,mGAAA,OAAO,OAAA;AACP,qGAAA,SAAS,OAAA;AAEE,QAAA,mBAAmB,GAAG,4BAA4B,CAAA;AAC/D,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAA;AAsC5B,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,cAAc,CAAC,IAAa;IACnC,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,GAAe;IACtC,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC,eAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtD,IAAI,IAAA,gCAAqB,EAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CAAA;IAC5F,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,4BAAmC,QAAgB;IACjD,MAAM,YAAY,GAAG,eAAI,CAAC,QAAQ,CAAC,eAAI,CAAC,OAAO,CAAC,eAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACxE,IAAI,CAAC;QACH,IAAA,gCAAkB,EAAC,YAAY,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc;IAC9B,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,QAA2B,EAAE,MAAgB;IACjE,OAAO,CACL,MAAM,CAAC,MAAM,EAAE;QACf,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QAC3B,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QAC3B,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAC7B,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CACpC,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAA2B,EAAE,MAAgB,EAAE,OAAe;IACpF,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC5F,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,QAAkC,EAClC,MAA0C;IAE1C,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,MAAM,QAAQ,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAClD,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,QAAQ;QAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,2CAA2C,CAAC,CAAA;IAE7F,IAAI,MAAM,GAAkC,IAAI,CAAA;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAA,6BAAiB,EAAC,MAAM,CAAC,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAClC,cAAc,CAAC,QAAQ,IAAI,QAAQ,EAAE,MAAM,EAAE,uCAAuC,CAAC,CAAA;QACrF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAChD,IAAI,KAAK,YAAY,4BAAgB;YAAE,MAAM,KAAK,CAAA;QAClD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,WAAW,CACzB,MAA8B,EAC9B,IAAY,EACZ,IAAY,EACZ,QAAsB,EACtB,MAA0C;IAE1C,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,MAAM,IAAA,+BAAoB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,OAAO,QAAQ,GAAG,IAAI,EAAE,CAAC;QACvB,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;QACtB,MAAM,KAAK,GAAG,aAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;QAC9D,IAAI,KAAK,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAA;QAC3E,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtB,QAAQ,IAAI,KAAK,CAAA;QACjB,MAAM,KAAK,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,0BAAe,GAAG,CAAC,IAAI,GAAG,0BAAe,CAAC,CAAC,GAAG,0BAAe,CAAA;IAC9E,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,aAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,aAAG,CAAC,KAAK,CAAC,CAAC,GAAG,0BAAe,CAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAAgB,EAChB,MAA8B,EAC9B,QAA2B,EAC3B,MAA0C;IAE1C,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;IACtB,cAAc,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,2CAA2C,CAAC,CAAA;IAC1F,cAAc,CACZ,QAAQ,EACR,MAAM,aAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EACjC,2CAA2C,CAC5C,CAAA;IACD,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,aAAa,CACpB,IAAkB,EAClB,KAAa,EACb,KAAmC;IAEnC,MAAM,UAAU,GAAG,aAAG,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxF,IAAI;SACD,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,CAAC,aAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;SAC7C,MAAM,CAAC,UAAU,CAAC,CAAA;AACvB,CAAC;AAED,8BACE,eAA2B,EAC3B,SAOC;IAED,eAAe,CAAC,eAAe,CAAC,CAAA;IAChC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClC,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAClF,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACtC,CAAC;IACD,IAAI,CAAC,aAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;QAChF,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,sBAAY,EAAE,CAAA;IAC/B,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAA,mBAAmB,CAAC,CAAA;IAClD,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAA;IACvD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACzC,IAAA,gCAAkB,EAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAC1C,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,YAAY,CAAC,CAAA;IAC7D,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IACnD,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IACvD,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IACjD,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAQ,CAAC,CAAA;IACrC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAO,CAAC,CAAA;IACnC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAO,CAAC,CAAA;IACnC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,uBAAY,CAAC,CAAA;IAC5C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAS,CAAC,CAAA;IACvC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,oBAAS,CAAC,CAAA;IACvC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;AACtB,CAAC;AAEM,KAAK,2BACV,QAAgB,EAChB,eAA2B,EAC3B,EAAE,MAAM,GAAG,IAAI,EAAE,mBAAmB,GAAG,IAAI,EAAE,GAAuB,EAAE;IAEtE,eAAe,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,YAAY,GAAG,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC7F,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7D,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,IAAI,sBAAY,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,sBAAY,EAAE,CAAA;IAClC,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CACnC,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,IAAI,EAClB,QAAQ,EACR,MAAM,CACP,EAAE,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrB,OAAO,IAAI,KAAK,CAAC,UAAU,CAAA;QAC7B,CAAC;QACD,MAAM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzE,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,IAAI,OAAO,KAAK,IAAA,+BAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,CAAC,uCAAuC,CAAC,CAAA;IACxD,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,EAAE;QACvD,IAAI;QACJ,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAC5B,UAAU;QACV,OAAO;QACP,SAAS;KACV,CAAC,CAAA;IACF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAC5B,UAAU;QACV,OAAO;QACP,SAAS;QACT,UAAU;QACV,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAA;AACH,CAAC;AAEM,KAAK,8BACV,QAAqB,EACrB,MAAc,EACd,KAA8C,EAC9C,EAAE,MAAM,GAAG,IAAI,EAAE,oBAAoB,GAAG,IAAI,EAAE,GAAqB,EAAE;IAErE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC7E,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAC3E,IACE,oBAAoB,KAAK,IAAI;QAC7B,CAAC,CAAC,aAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,CAAC,UAAU,KAAK,EAAE,CAAC,EAC/E,CAAC;QACD,MAAM,OAAO,CAAC,gCAAgC,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7E,MAAM,QAAQ,GAAG,IAAI,sBAAY,EAAE,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,sBAAY,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,IAAI,sBAAY,EAAE,CAAA;IACrC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,YAAY,GAAkB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3E,IAAI,aAAa,GACf,YAAY,KAAK,IAAI;QACrB,oBAAoB,KAAK,IAAI;QAC7B,CAAC,uBAAM,CAAC,aAAa,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;IAC3D,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CACnC,MAAM,CAAC,MAAM,EACb,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,QAAQ,EACjB,QAAQ,EACR,MAAM,CACP,EAAE,CAAC;YACF,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAA;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrB,MAAM,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAA;YACvC,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAA;gBAC/D,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;gBAC/C,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;oBAClB,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA;oBAClC,IAAI,oBAAoB,IAAI,CAAC,uBAAM,CAAC,aAAa,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAE,CAAC;wBACtF,aAAa,GAAG,IAAI,CAAA;oBACtB,CAAC;oBACD,IAAI,CAAC,aAAa,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;wBACnD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;wBACxC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;wBACnB,SAAS,IAAI,MAAM,CAAC,UAAU,CAAA;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,KAAK,CAAC,CAAA;gBAClB,SAAS,IAAI,KAAK,CAAC,UAAU,CAAA;YAC/B,CAAC;YACD,QAAQ,GAAG,GAAG,CAAA;QAChB,CAAC;QACD,MAAM,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChF,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,IACE,QAAQ,KAAK,QAAQ,CAAC,OAAO;QAC7B,CAAC,CAAC,aAAa,IAAI,SAAS,KAAK,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,EAC3D,CAAC;QACD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAA;IAChF,CAAC;IACD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IACvC,IACE,CAAC,IAAA,uBAAa,EAAC,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC;QACpD,CAAC,IAAA,uBAAa,EAAC,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,EAClD,CAAC;QACD,MAAM,IAAI,4BAAgB,CAAC,kBAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,YAAY,KAAK,IAAI;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACrE,IAAI,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;IAClF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAA;AACrD,CAAC;AAED,8BAAqC,QAAqB,EAAE,KAAK,GAAG,KAAK;IACvE,OAAO;QACL,CAAC,EAAE,6BAAe;QAClB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;QACvF,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,aAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QACpD,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,aAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;QAClD,UAAU,EAAE,aAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QACpD,KAAK;KACN,CAAA;AACH,CAAC;AAED,kCACE,eAA2B,EAC3B,eAA+B;IAE/B,MAAM,QAAQ,GAAG,IAAA,kCAAoB,EAAC,IAAA,kCAAoB,EAAC,eAAe,CAAC,CAAC,CAAA;IAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,EAAE;QACrD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;QACvF,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QAChD,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;KAC/C,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,aAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IACpD,IAAI,CAAC,uBAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,MAAM,OAAO,CAAC,8BAA8B,CAAC,CAAA;AAC7F,CAAC"}
@@ -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":"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"}
@@ -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;