@aexhq/sdk 0.46.5-canary → 0.51.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 (346) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +38 -0
  3. package/README.md +54 -29
  4. package/dist/client/aex.d.ts +33 -0
  5. package/dist/client/aex.js +108 -0
  6. package/dist/client/aex.js.map +1 -0
  7. package/dist/client/credentials.d.ts +25 -0
  8. package/dist/client/credentials.js +97 -0
  9. package/dist/client/credentials.js.map +1 -0
  10. package/dist/client/routing.d.ts +7 -0
  11. package/dist/client/routing.js +29 -0
  12. package/dist/client/routing.js.map +1 -0
  13. package/dist/downloads/download.d.ts +18 -0
  14. package/dist/downloads/download.js +67 -0
  15. package/dist/downloads/download.js.map +1 -0
  16. package/dist/generated/errors.d.ts +12 -0
  17. package/dist/generated/errors.js +82 -0
  18. package/dist/generated/errors.js.map +1 -0
  19. package/dist/generated/models.d.ts +1392 -0
  20. package/dist/generated/models.js +62 -0
  21. package/dist/generated/models.js.map +1 -0
  22. package/dist/generated/resources.d.ts +710 -0
  23. package/dist/generated/resources.js +582 -0
  24. package/dist/generated/resources.js.map +1 -0
  25. package/dist/generated/routes.d.ts +44 -0
  26. package/dist/generated/routes.js +1905 -0
  27. package/dist/generated/routes.js.map +1 -0
  28. package/dist/index.d.ts +21 -50
  29. package/dist/index.js +14 -62
  30. package/dist/index.js.map +1 -1
  31. package/dist/node/session-file-limits.d.ts +4 -0
  32. package/dist/node/session-file-limits.js +7 -0
  33. package/dist/node/session-file-limits.js.map +1 -0
  34. package/dist/node/session-files.d.ts +80 -0
  35. package/dist/node/session-files.js +254 -0
  36. package/dist/node/session-files.js.map +1 -0
  37. package/dist/observations/stream.d.ts +1 -0
  38. package/dist/observations/stream.js +18 -0
  39. package/dist/observations/stream.js.map +1 -0
  40. package/dist/transport/errors.d.ts +60 -0
  41. package/dist/transport/errors.js +107 -0
  42. package/dist/transport/errors.js.map +1 -0
  43. package/dist/transport/pagination.d.ts +8 -0
  44. package/dist/transport/pagination.js +34 -0
  45. package/dist/transport/pagination.js.map +1 -0
  46. package/dist/transport/retry.d.ts +21 -0
  47. package/dist/transport/retry.js +37 -0
  48. package/dist/transport/retry.js.map +1 -0
  49. package/dist/transport/transport.d.ts +25 -0
  50. package/dist/transport/transport.js +33 -0
  51. package/dist/transport/transport.js.map +1 -0
  52. package/package.json +67 -30
  53. package/dist/_contracts/account-operations.d.ts +0 -101
  54. package/dist/_contracts/account-operations.js +0 -242
  55. package/dist/_contracts/account-types.d.ts +0 -461
  56. package/dist/_contracts/account-types.js +0 -1
  57. package/dist/_contracts/api-key.d.ts +0 -61
  58. package/dist/_contracts/api-key.js +0 -101
  59. package/dist/_contracts/api-routes.d.ts +0 -20
  60. package/dist/_contracts/api-routes.js +0 -109
  61. package/dist/_contracts/archive-limits.d.ts +0 -3
  62. package/dist/_contracts/archive-limits.js +0 -23
  63. package/dist/_contracts/asset-authoring.d.ts +0 -22
  64. package/dist/_contracts/asset-authoring.js +0 -106
  65. package/dist/_contracts/asset-bundle.d.ts +0 -64
  66. package/dist/_contracts/asset-bundle.js +0 -263
  67. package/dist/_contracts/asset-upload-helper.d.ts +0 -31
  68. package/dist/_contracts/asset-upload-helper.js +0 -84
  69. package/dist/_contracts/billing-admission.d.ts +0 -29
  70. package/dist/_contracts/billing-admission.js +0 -28
  71. package/dist/_contracts/bundle-manifest.d.ts +0 -89
  72. package/dist/_contracts/bundle-manifest.js +0 -158
  73. package/dist/_contracts/canonical-sha256.d.ts +0 -8
  74. package/dist/_contracts/canonical-sha256.js +0 -8
  75. package/dist/_contracts/connection-ticket.d.ts +0 -22
  76. package/dist/_contracts/connection-ticket.js +0 -54
  77. package/dist/_contracts/continuation-event.d.ts +0 -31
  78. package/dist/_contracts/continuation-event.js +0 -6
  79. package/dist/_contracts/contract-parse-error.d.ts +0 -12
  80. package/dist/_contracts/contract-parse-error.js +0 -51
  81. package/dist/_contracts/error-codes.d.ts +0 -26
  82. package/dist/_contracts/error-codes.js +0 -116
  83. package/dist/_contracts/error-factory.d.ts +0 -32
  84. package/dist/_contracts/error-factory.js +0 -174
  85. package/dist/_contracts/event-envelope.d.ts +0 -471
  86. package/dist/_contracts/event-envelope.js +0 -501
  87. package/dist/_contracts/event-stream-client.d.ts +0 -122
  88. package/dist/_contracts/event-stream-client.js +0 -445
  89. package/dist/_contracts/event-view.d.ts +0 -44
  90. package/dist/_contracts/event-view.js +0 -69
  91. package/dist/_contracts/failure-class.d.ts +0 -29
  92. package/dist/_contracts/failure-class.js +0 -73
  93. package/dist/_contracts/http.d.ts +0 -135
  94. package/dist/_contracts/http.js +0 -434
  95. package/dist/_contracts/ids.d.ts +0 -66
  96. package/dist/_contracts/ids.js +0 -119
  97. package/dist/_contracts/index.d.ts +0 -42
  98. package/dist/_contracts/index.js +0 -52
  99. package/dist/_contracts/internal.d.ts +0 -55
  100. package/dist/_contracts/internal.js +0 -113
  101. package/dist/_contracts/models.d.ts +0 -30
  102. package/dist/_contracts/models.js +0 -28
  103. package/dist/_contracts/operation-core.d.ts +0 -36
  104. package/dist/_contracts/operation-core.js +0 -70
  105. package/dist/_contracts/operations.d.ts +0 -218
  106. package/dist/_contracts/operations.js +0 -1496
  107. package/dist/_contracts/otlp-projection.d.ts +0 -78
  108. package/dist/_contracts/otlp-projection.js +0 -171
  109. package/dist/_contracts/post-hook.d.ts +0 -31
  110. package/dist/_contracts/post-hook.js +0 -61
  111. package/dist/_contracts/provider-fault.d.ts +0 -34
  112. package/dist/_contracts/provider-fault.js +0 -68
  113. package/dist/_contracts/retry-core.d.ts +0 -29
  114. package/dist/_contracts/retry-core.js +0 -79
  115. package/dist/_contracts/runner-event.d.ts +0 -117
  116. package/dist/_contracts/runner-event.js +0 -172
  117. package/dist/_contracts/runtime-kind.d.ts +0 -60
  118. package/dist/_contracts/runtime-kind.js +0 -70
  119. package/dist/_contracts/runtime-manifest.d.ts +0 -121
  120. package/dist/_contracts/runtime-manifest.js +0 -83
  121. package/dist/_contracts/runtime-security-profile.d.ts +0 -26
  122. package/dist/_contracts/runtime-security-profile.js +0 -73
  123. package/dist/_contracts/runtime-sizes.d.ts +0 -104
  124. package/dist/_contracts/runtime-sizes.js +0 -111
  125. package/dist/_contracts/runtime-types.d.ts +0 -618
  126. package/dist/_contracts/runtime-types.js +0 -58
  127. package/dist/_contracts/schemas/asset-bundle.d.ts +0 -70
  128. package/dist/_contracts/schemas/asset-bundle.js +0 -107
  129. package/dist/_contracts/schemas/asset-ref.d.ts +0 -61
  130. package/dist/_contracts/schemas/asset-ref.js +0 -118
  131. package/dist/_contracts/schemas/bundle-manifest.d.ts +0 -66
  132. package/dist/_contracts/schemas/bundle-manifest.js +0 -77
  133. package/dist/_contracts/schemas/index.d.ts +0 -32
  134. package/dist/_contracts/schemas/index.js +0 -30
  135. package/dist/_contracts/schemas/mcp-server.d.ts +0 -99
  136. package/dist/_contracts/schemas/mcp-server.js +0 -209
  137. package/dist/_contracts/schemas/models.d.ts +0 -29
  138. package/dist/_contracts/schemas/models.js +0 -51
  139. package/dist/_contracts/schemas/numeric.d.ts +0 -18
  140. package/dist/_contracts/schemas/numeric.js +0 -28
  141. package/dist/_contracts/schemas/post-hook.d.ts +0 -45
  142. package/dist/_contracts/schemas/post-hook.js +0 -68
  143. package/dist/_contracts/schemas/response-assets.d.ts +0 -75
  144. package/dist/_contracts/schemas/response-assets.js +0 -81
  145. package/dist/_contracts/schemas/response-billing.d.ts +0 -208
  146. package/dist/_contracts/schemas/response-billing.js +0 -139
  147. package/dist/_contracts/schemas/response-common.d.ts +0 -132
  148. package/dist/_contracts/schemas/response-common.js +0 -162
  149. package/dist/_contracts/schemas/response-identity.d.ts +0 -648
  150. package/dist/_contracts/schemas/response-identity.js +0 -131
  151. package/dist/_contracts/schemas/response-mcp-servers.d.ts +0 -51
  152. package/dist/_contracts/schemas/response-mcp-servers.js +0 -32
  153. package/dist/_contracts/schemas/response-secrets.d.ts +0 -50
  154. package/dist/_contracts/schemas/response-secrets.js +0 -32
  155. package/dist/_contracts/schemas/response-sessions-internal.d.ts +0 -200
  156. package/dist/_contracts/schemas/response-sessions-internal.js +0 -142
  157. package/dist/_contracts/schemas/response-sessions.d.ts +0 -1598
  158. package/dist/_contracts/schemas/response-sessions.js +0 -377
  159. package/dist/_contracts/schemas/response-webhooks.d.ts +0 -76
  160. package/dist/_contracts/schemas/response-webhooks.js +0 -42
  161. package/dist/_contracts/schemas/response-workspace.d.ts +0 -225
  162. package/dist/_contracts/schemas/response-workspace.js +0 -99
  163. package/dist/_contracts/schemas/runtime-kind.d.ts +0 -31
  164. package/dist/_contracts/schemas/runtime-kind.js +0 -29
  165. package/dist/_contracts/schemas/runtime-security-profile.d.ts +0 -28
  166. package/dist/_contracts/schemas/runtime-security-profile.js +0 -26
  167. package/dist/_contracts/schemas/runtime-sizes.d.ts +0 -70
  168. package/dist/_contracts/schemas/runtime-sizes.js +0 -127
  169. package/dist/_contracts/schemas/session-limits.d.ts +0 -34
  170. package/dist/_contracts/schemas/session-limits.js +0 -39
  171. package/dist/_contracts/schemas/session-machine.d.ts +0 -23
  172. package/dist/_contracts/schemas/session-machine.js +0 -24
  173. package/dist/_contracts/schemas/session-request-config.d.ts +0 -58
  174. package/dist/_contracts/schemas/session-request-config.js +0 -134
  175. package/dist/_contracts/schemas/session-webhook.d.ts +0 -11
  176. package/dist/_contracts/schemas/session-webhook.js +0 -38
  177. package/dist/_contracts/schemas/side-effect-audit.d.ts +0 -98
  178. package/dist/_contracts/schemas/side-effect-audit.js +0 -102
  179. package/dist/_contracts/schemas/submission-assets.d.ts +0 -117
  180. package/dist/_contracts/schemas/submission-assets.js +0 -147
  181. package/dist/_contracts/schemas/submission-body.d.ts +0 -251
  182. package/dist/_contracts/schemas/submission-body.js +0 -378
  183. package/dist/_contracts/schemas/submission-environment.d.ts +0 -79
  184. package/dist/_contracts/schemas/submission-environment.js +0 -179
  185. package/dist/_contracts/schemas/submission-request.d.ts +0 -158
  186. package/dist/_contracts/schemas/submission-request.js +0 -49
  187. package/dist/_contracts/schemas/submission-secrets.d.ts +0 -47
  188. package/dist/_contracts/schemas/submission-secrets.js +0 -108
  189. package/dist/_contracts/schemas/wire.d.ts +0 -118
  190. package/dist/_contracts/schemas/wire.js +0 -171
  191. package/dist/_contracts/schemas/workspace-resources.d.ts +0 -50
  192. package/dist/_contracts/schemas/workspace-resources.js +0 -87
  193. package/dist/_contracts/sdk-errors.d.ts +0 -212
  194. package/dist/_contracts/sdk-errors.js +0 -313
  195. package/dist/_contracts/sdk-secrets.d.ts +0 -67
  196. package/dist/_contracts/sdk-secrets.js +0 -427
  197. package/dist/_contracts/session-archive.d.ts +0 -16
  198. package/dist/_contracts/session-archive.js +0 -92
  199. package/dist/_contracts/session-artifacts.d.ts +0 -189
  200. package/dist/_contracts/session-artifacts.js +0 -264
  201. package/dist/_contracts/session-config.d.ts +0 -373
  202. package/dist/_contracts/session-config.js +0 -562
  203. package/dist/_contracts/session-cost-types.d.ts +0 -211
  204. package/dist/_contracts/session-cost-types.js +0 -69
  205. package/dist/_contracts/session-cost.d.ts +0 -8
  206. package/dist/_contracts/session-cost.js +0 -582
  207. package/dist/_contracts/session-custody.d.ts +0 -165
  208. package/dist/_contracts/session-custody.js +0 -345
  209. package/dist/_contracts/session-file-query.d.ts +0 -14
  210. package/dist/_contracts/session-file-query.js +0 -178
  211. package/dist/_contracts/session-record.d.ts +0 -112
  212. package/dist/_contracts/session-record.js +0 -165
  213. package/dist/_contracts/session-retention.d.ts +0 -201
  214. package/dist/_contracts/session-retention.js +0 -450
  215. package/dist/_contracts/side-effect-audit.d.ts +0 -126
  216. package/dist/_contracts/side-effect-audit.js +0 -520
  217. package/dist/_contracts/sse.d.ts +0 -74
  218. package/dist/_contracts/sse.js +0 -227
  219. package/dist/_contracts/stable.d.ts +0 -45
  220. package/dist/_contracts/stable.js +0 -62
  221. package/dist/_contracts/status.d.ts +0 -25
  222. package/dist/_contracts/status.js +0 -57
  223. package/dist/_contracts/submission-limits.d.ts +0 -61
  224. package/dist/_contracts/submission-limits.js +0 -60
  225. package/dist/_contracts/submission.d.ts +0 -547
  226. package/dist/_contracts/submission.js +0 -812
  227. package/dist/_contracts/suggest.d.ts +0 -15
  228. package/dist/_contracts/suggest.js +0 -53
  229. package/dist/_contracts/testing/response-bindings.d.ts +0 -45
  230. package/dist/_contracts/testing/response-bindings.js +0 -256
  231. package/dist/_contracts/testing/wire-conformance-entry.d.ts +0 -10
  232. package/dist/_contracts/testing/wire-conformance-entry.js +0 -8
  233. package/dist/_contracts/testing/wire-conformance.d.ts +0 -169
  234. package/dist/_contracts/testing/wire-conformance.js +0 -276
  235. package/dist/_contracts/turn-trace.d.ts +0 -28
  236. package/dist/_contracts/turn-trace.js +0 -1
  237. package/dist/_contracts/unknown-field-error.d.ts +0 -13
  238. package/dist/_contracts/unknown-field-error.js +0 -21
  239. package/dist/_contracts/value-guards.d.ts +0 -20
  240. package/dist/_contracts/value-guards.js +0 -34
  241. package/dist/_contracts/webhook-verify.d.ts +0 -34
  242. package/dist/_contracts/webhook-verify.js +0 -93
  243. package/dist/_contracts/wire-observer.d.ts +0 -49
  244. package/dist/_contracts/wire-observer.js +0 -34
  245. package/dist/_contracts/workflow-status.d.ts +0 -7
  246. package/dist/_contracts/workflow-status.js +0 -43
  247. package/dist/_contracts/workspace-resources.d.ts +0 -98
  248. package/dist/_contracts/workspace-resources.js +0 -39
  249. package/dist/archive-limits.d.ts +0 -1
  250. package/dist/archive-limits.js +0 -2
  251. package/dist/archive-limits.js.map +0 -1
  252. package/dist/asset-upload.d.ts +0 -47
  253. package/dist/asset-upload.js +0 -269
  254. package/dist/asset-upload.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -9
  256. package/dist/bundle.js +0 -20
  257. package/dist/bundle.js.map +0 -1
  258. package/dist/canonical-zip.d.ts +0 -68
  259. package/dist/canonical-zip.js +0 -355
  260. package/dist/canonical-zip.js.map +0 -1
  261. package/dist/cli.mjs +0 -12048
  262. package/dist/cli.mjs.sha256 +0 -1
  263. package/dist/client-types.d.ts +0 -192
  264. package/dist/client-types.js +0 -2
  265. package/dist/client-types.js.map +0 -1
  266. package/dist/client.d.ts +0 -464
  267. package/dist/client.js +0 -1207
  268. package/dist/client.js.map +0 -1
  269. package/dist/event-projection.d.ts +0 -22
  270. package/dist/event-projection.js +0 -380
  271. package/dist/event-projection.js.map +0 -1
  272. package/dist/fetch-archive.d.ts +0 -16
  273. package/dist/fetch-archive.js +0 -252
  274. package/dist/fetch-archive.js.map +0 -1
  275. package/dist/file.d.ts +0 -96
  276. package/dist/file.js +0 -272
  277. package/dist/file.js.map +0 -1
  278. package/dist/instructions.d.ts +0 -20
  279. package/dist/instructions.js +0 -40
  280. package/dist/instructions.js.map +0 -1
  281. package/dist/legacy-session-provider-fault.d.ts +0 -7
  282. package/dist/legacy-session-provider-fault.js +0 -38
  283. package/dist/legacy-session-provider-fault.js.map +0 -1
  284. package/dist/mcp-server.d.ts +0 -84
  285. package/dist/mcp-server.js +0 -117
  286. package/dist/mcp-server.js.map +0 -1
  287. package/dist/node-fs.d.ts +0 -29
  288. package/dist/node-fs.js +0 -19
  289. package/dist/node-fs.js.map +0 -1
  290. package/dist/node-walk.d.ts +0 -69
  291. package/dist/node-walk.js +0 -151
  292. package/dist/node-walk.js.map +0 -1
  293. package/dist/path-basename.d.ts +0 -5
  294. package/dist/path-basename.js +0 -9
  295. package/dist/path-basename.js.map +0 -1
  296. package/dist/retry.d.ts +0 -70
  297. package/dist/retry.js +0 -155
  298. package/dist/retry.js.map +0 -1
  299. package/dist/secret.d.ts +0 -65
  300. package/dist/secret.js +0 -110
  301. package/dist/secret.js.map +0 -1
  302. package/dist/session-validate.d.ts +0 -100
  303. package/dist/session-validate.js +0 -303
  304. package/dist/session-validate.js.map +0 -1
  305. package/dist/skill.d.ts +0 -99
  306. package/dist/skill.js +0 -169
  307. package/dist/skill.js.map +0 -1
  308. package/dist/submission-wire.d.ts +0 -13
  309. package/dist/submission-wire.js +0 -69
  310. package/dist/submission-wire.js.map +0 -1
  311. package/dist/tool.d.ts +0 -41
  312. package/dist/tool.js +0 -76
  313. package/dist/tool.js.map +0 -1
  314. package/dist/version.d.ts +0 -9
  315. package/dist/version.js +0 -10
  316. package/dist/version.js.map +0 -1
  317. package/docs/authentication.md +0 -125
  318. package/docs/billing.md +0 -164
  319. package/docs/cleanup.md +0 -27
  320. package/docs/concepts/agent-tools.md +0 -47
  321. package/docs/concepts/composition.md +0 -60
  322. package/docs/concepts/providers-and-runtimes.md +0 -121
  323. package/docs/concepts/sessions.md +0 -51
  324. package/docs/concepts/subagents.md +0 -35
  325. package/docs/credentials.md +0 -116
  326. package/docs/defaults.md +0 -51
  327. package/docs/errors.md +0 -258
  328. package/docs/events.md +0 -143
  329. package/docs/files.md +0 -130
  330. package/docs/limits-and-quotas.md +0 -114
  331. package/docs/limits.md +0 -51
  332. package/docs/mcp.md +0 -47
  333. package/docs/networking.md +0 -114
  334. package/docs/provider-runtime-capabilities.md +0 -32
  335. package/docs/public-surface.json +0 -73
  336. package/docs/quickstart.md +0 -135
  337. package/docs/release.md +0 -44
  338. package/docs/retries.md +0 -108
  339. package/docs/secrets.md +0 -141
  340. package/docs/session-config.md +0 -51
  341. package/docs/session-record.md +0 -58
  342. package/docs/skills.md +0 -65
  343. package/docs/telemetry.md +0 -66
  344. package/docs/testing.md +0 -35
  345. package/docs/vision-skills.md +0 -94
  346. package/docs/webhooks.md +0 -143
@@ -1,355 +0,0 @@
1
- /**
2
- * Canonical zip framer — the deterministic, content-addressed zip layer the
3
- * asset upload path dedups on. Two canonical forms, both byte-stable:
4
- *
5
- * Canonical A (the ~99% case: every entry ≤ {@link ENTRY_RAM_CAP}) — a custom
6
- * per-entry framer that reproduces fflate's `zipSync(..., {level:6})` output
7
- * BYTE-FOR-BYTE (sorted entries, epoch mtime, per-entry crc32, per-entry
8
- * one-shot `deflateSync` level 6, real sizes in a flag-0 local header) while
9
- * holding only ONE entry in memory at a time. Because it equals `zipSync`, a
10
- * streamed large bundle dedups against a small in-memory bundle of the same
11
- * content — no dedup seam. Pinned forever by a golden byte-identity test.
12
- *
13
- * Canonical B (a bundle containing ANY entry > {@link ENTRY_RAM_CAP}, e.g. a
14
- * lone multi-GB dataset file) — fflate's streaming `Zip`/`ZipDeflate` driven
15
- * with a PINNED {@link CANONICAL_B_PUSH_BYTES} push size. It does NOT equal
16
- * `zipSync` (it emits streaming data descriptors, GP-flag bit 3), but it IS
17
- * internally deterministic: same input → same bytes every time (pinned chunk
18
- * size + pinned fflate version). Its own second canonical / dedup namespace,
19
- * pinned by its own golden determinism test. A single giant entry cannot be
20
- * both `zipSync`-identical AND framed in O(part) memory, so this is the
21
- * accepted tradeoff (such a file has no small twin to dedup against).
22
- *
23
- * Browser-safe: this module imports ONLY fflate (no `node:*`). The node-only
24
- * streaming SHA-256 + multipart sink live in the callers (file.ts / asset-upload).
25
- */
26
- import { deflateSync, strToU8, Zip, ZipDeflate } from "fflate";
27
- /** Epoch every entry mtime is pinned to (matches the pre-streaming `zipSync` path). */
28
- export const ZIP_EPOCH = new Date(Date.UTC(1980, 0, 1));
29
- /**
30
- * Per-entry raw-byte ceiling for Canonical A. A single entry above this cannot be
31
- * one-shot `deflateSync`-ed within a bounded memory budget, so a bundle carrying
32
- * any such entry falls to Canonical B. A memory-budget knob, NOT a correctness
33
- * boundary (the golden tests pin both forms).
34
- */
35
- export const ENTRY_RAM_CAP = 512 * 1024 * 1024;
36
- /** Pinned push size for Canonical B's streaming deflate. LOAD-BEARING for determinism. */
37
- export const CANONICAL_B_PUSH_BYTES = 1024 * 1024;
38
- const CLASSIC_ZIP_MAX_U16 = 0xffff;
39
- const CLASSIC_ZIP_MAX_U32 = 0xffffffff;
40
- function classicZipLimitError(detail) {
41
- return new Error(`canonical-zip: ${detail}; ZIP64 is not supported`);
42
- }
43
- /** Reject inputs that cannot be represented by the classic ZIP fields we emit. */
44
- function assertClassicZipInputs(entries) {
45
- if (entries.length > CLASSIC_ZIP_MAX_U16) {
46
- throw classicZipLimitError("archive exceeds the 65,535-entry classic ZIP limit");
47
- }
48
- let declaredBytes = 0;
49
- let directoryBytes = 0;
50
- for (const entry of entries) {
51
- if (!Number.isSafeInteger(entry.size) || entry.size < 0) {
52
- throw new Error(`canonical-zip: entry ${JSON.stringify(entry.name)} has invalid size ${entry.size}`);
53
- }
54
- if (entry.size > CLASSIC_ZIP_MAX_U32) {
55
- throw classicZipLimitError(`entry ${JSON.stringify(entry.name)} exceeds the 4 GiB classic ZIP limit`);
56
- }
57
- const nameBytes = strToU8(entry.name).length;
58
- if (nameBytes > CLASSIC_ZIP_MAX_U16) {
59
- throw classicZipLimitError(`entry ${JSON.stringify(entry.name)} has a filename longer than 65,535 bytes`);
60
- }
61
- declaredBytes += entry.size;
62
- directoryBytes += 46 + nameBytes;
63
- if (declaredBytes > CLASSIC_ZIP_MAX_U32 || directoryBytes > CLASSIC_ZIP_MAX_U32) {
64
- throw classicZipLimitError("archive exceeds the 4 GiB classic ZIP limit");
65
- }
66
- }
67
- }
68
- function assertClassicZipU32(value, field) {
69
- if (!Number.isSafeInteger(value) || value < 0 || value > CLASSIC_ZIP_MAX_U32) {
70
- throw classicZipLimitError(`${field} exceeds the 4 GiB classic ZIP limit`);
71
- }
72
- }
73
- // ---------------------------------------------------------------------------
74
- // CRC-32 (IEEE, poly 0xEDB88320) — matches zlib/fflate, verified byte-identical.
75
- // ---------------------------------------------------------------------------
76
- const CRC_TABLE = (() => {
77
- const table = new Uint32Array(256);
78
- for (let n = 0; n < 256; n++) {
79
- let c = n;
80
- for (let k = 0; k < 8; k++)
81
- c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
82
- table[n] = c >>> 0;
83
- }
84
- return table;
85
- })();
86
- /** One-shot CRC-32 over `bytes`. */
87
- export function crc32(bytes) {
88
- let c = 0xffffffff;
89
- for (let i = 0; i < bytes.length; i++)
90
- c = (CRC_TABLE[(c ^ bytes[i]) & 0xff] ^ (c >>> 8)) >>> 0;
91
- return (c ^ 0xffffffff) >>> 0;
92
- }
93
- /** True when the bundle must use Canonical B (some entry exceeds the RAM cap). */
94
- export function bundleNeedsCanonicalB(entries) {
95
- return entries.some((e) => e.size > ENTRY_RAM_CAP);
96
- }
97
- /**
98
- * Reorder entries into the EXACT order `zipSync` emits them. `zipSync` iterates
99
- * its input object with `for..in`, so integer-index-like keys (e.g. a file
100
- * literally named `"1"`) enumerate FIRST in ascending numeric order, then the
101
- * rest in insertion order. Delegating to `Object.keys` reproduces that engine
102
- * rule verbatim, so the framer stays byte-identical for every input (the callers
103
- * pass entries already sorted, which becomes the insertion order for non-integer
104
- * keys). Duplicate names collapse to the last occurrence, matching object build.
105
- */
106
- function canonicalOrder(entries) {
107
- const marker = {};
108
- const byName = new Map();
109
- for (const e of entries) {
110
- marker[e.name] = true;
111
- byName.set(e.name, e);
112
- }
113
- return Object.keys(marker).map((name) => byName.get(name));
114
- }
115
- // ---------------------------------------------------------------------------
116
- // Little-endian header writers.
117
- // ---------------------------------------------------------------------------
118
- function pushU16(out, v) {
119
- out.push(v & 0xff, (v >>> 8) & 0xff);
120
- }
121
- function pushU32(out, v) {
122
- const u = v >>> 0;
123
- out.push(u & 0xff, (u >>> 8) & 0xff, (u >>> 16) & 0xff, (u >>> 24) & 0xff);
124
- }
125
- /** DOS mod-time / mod-date words for a UTC Date (matches fflate's encoding). */
126
- function dosTimeDate(dt) {
127
- const time = (dt.getUTCHours() << 11) | (dt.getUTCMinutes() << 5) | (dt.getUTCSeconds() >> 1);
128
- const date = ((dt.getUTCFullYear() - 1980) << 9) | ((dt.getUTCMonth() + 1) << 5) | dt.getUTCDate();
129
- return { time: time & 0xffff, date: date & 0xffff };
130
- }
131
- const { time: DOS_TIME, date: DOS_DATE } = dosTimeDate(ZIP_EPOCH);
132
- /** Frame one Canonical-A entry: local header (flag 0, real sizes) + deflate-L6 payload. */
133
- function frameEntryA(name, raw, offset) {
134
- // Encode the name with fflate's OWN `strToU8` (what `zipSync` uses) so the
135
- // filename bytes are byte-identical to `zipSync` for every input, including
136
- // edge unicode (lone surrogates etc.) where TextEncoder would diverge.
137
- const nameBytes = strToU8(name);
138
- const payload = deflateSync(raw, { level: 6 });
139
- assertClassicZipU32(raw.length, `entry ${JSON.stringify(name)} uncompressed size`);
140
- assertClassicZipU32(payload.length, `entry ${JSON.stringify(name)} compressed size`);
141
- assertClassicZipU32(offset, `entry ${JSON.stringify(name)} local-header offset`);
142
- const crc = crc32(raw);
143
- // GP flag: low byte = dbf(level 6) << 1 = 0; high byte = 0x08 (bit 11, UTF-8)
144
- // when the name is non-ASCII — fflate sets it iff the encoded byte length
145
- // differs from the JS string length. Matching it keeps unicode names identical.
146
- const gpFlag = nameBytes.length !== name.length ? 0x0800 : 0;
147
- const local = [];
148
- pushU32(local, 0x04034b50);
149
- pushU16(local, 20); // version needed
150
- pushU16(local, gpFlag); // GP flag
151
- pushU16(local, 8); // method: deflate
152
- pushU16(local, DOS_TIME);
153
- pushU16(local, DOS_DATE);
154
- pushU32(local, crc);
155
- pushU32(local, payload.length);
156
- pushU32(local, raw.length);
157
- pushU16(local, nameBytes.length);
158
- pushU16(local, 0); // extra len
159
- const header = Uint8Array.from(local);
160
- const localBytes = new Uint8Array(header.length + nameBytes.length + payload.length);
161
- localBytes.set(header, 0);
162
- localBytes.set(nameBytes, header.length);
163
- localBytes.set(payload, header.length + nameBytes.length);
164
- const central = [];
165
- pushU32(central, 0x02014b50);
166
- pushU16(central, 20); // version made by
167
- pushU16(central, 20); // version needed
168
- pushU16(central, gpFlag); // GP flag
169
- pushU16(central, 8); // method
170
- pushU16(central, DOS_TIME);
171
- pushU16(central, DOS_DATE);
172
- pushU32(central, crc);
173
- pushU32(central, payload.length);
174
- pushU32(central, raw.length);
175
- pushU16(central, nameBytes.length);
176
- pushU16(central, 0); // extra len
177
- pushU16(central, 0); // comment len
178
- pushU16(central, 0); // disk number
179
- pushU16(central, 0); // internal attrs
180
- pushU32(central, 0); // external attrs
181
- pushU32(central, offset); // local header offset
182
- const centralHeader = Uint8Array.from(central);
183
- const centralBytes = new Uint8Array(centralHeader.length + nameBytes.length);
184
- centralBytes.set(centralHeader, 0);
185
- centralBytes.set(nameBytes, centralHeader.length);
186
- return { local: localBytes, central: centralBytes, length: localBytes.length };
187
- }
188
- function eocd(recordCount, cdSize, cdOffset) {
189
- const out = [];
190
- pushU32(out, 0x06054b50);
191
- pushU16(out, 0); // this disk
192
- pushU16(out, 0); // cd start disk
193
- pushU16(out, recordCount);
194
- pushU16(out, recordCount);
195
- pushU32(out, cdSize);
196
- pushU32(out, cdOffset);
197
- pushU16(out, 0); // comment len
198
- return Uint8Array.from(out);
199
- }
200
- /**
201
- * Stream a Canonical-A zip of `entries` (in FINAL canonical order) into `sink`,
202
- * holding only one entry's raw + compressed bytes in memory at a time. Output is
203
- * byte-identical to `zipSync(<same ordered entries>, {level:6})`.
204
- */
205
- async function streamBundleZipA(entries, sink) {
206
- const centrals = [];
207
- let offset = 0;
208
- for (const entry of entries) {
209
- const raw = await entry.read();
210
- if (raw.length !== entry.size) {
211
- throw new Error(`canonical-zip: entry ${JSON.stringify(entry.name)} changed while being archived ` +
212
- `(expected ${entry.size} bytes, read ${raw.length})`);
213
- }
214
- const framed = frameEntryA(entry.name, raw, offset);
215
- await sink(framed.local);
216
- centrals.push(framed.central);
217
- offset += framed.length;
218
- assertClassicZipU32(offset, "central-directory offset");
219
- }
220
- let cdSize = 0;
221
- for (const c of centrals)
222
- cdSize += c.length;
223
- assertClassicZipU32(cdSize, "central-directory size");
224
- for (const c of centrals)
225
- await sink(c);
226
- await sink(eocd(centrals.length, cdSize, offset));
227
- }
228
- // ---------------------------------------------------------------------------
229
- // Canonical B — fflate streaming Zip with pinned push size (giant single entry).
230
- // ---------------------------------------------------------------------------
231
- /**
232
- * Stream a Canonical-B zip into `sink` using fflate's streaming `Zip`, pushing
233
- * each entry in fixed {@link CANONICAL_B_PUSH_BYTES} chunks. Deterministic for a
234
- * given input + fflate version. Entries are added in the given (canonical) order.
235
- */
236
- async function streamBundleZipB(entries, sink) {
237
- const pending = [];
238
- const zip = new Zip();
239
- zip.ondata = (err, chunk) => {
240
- if (err)
241
- throw err;
242
- if (chunk && chunk.length) {
243
- // Copy: fflate may reuse the chunk buffer after ondata returns.
244
- const copy = new Uint8Array(chunk.length);
245
- copy.set(chunk);
246
- pending.push(copy);
247
- }
248
- };
249
- const drain = async () => {
250
- while (pending.length > 0) {
251
- const chunk = pending.shift();
252
- await sink(chunk);
253
- }
254
- };
255
- for (const entry of entries) {
256
- const file = new ZipDeflate(entry.name, { level: 6 });
257
- file.mtime = ZIP_EPOCH; // pin mtime (not a constructor option in the fflate types)
258
- zip.add(file);
259
- if (entry.size === 0 || entry.size <= ENTRY_RAM_CAP) {
260
- // Small entry inside a Canonical-B bundle: one push (still deterministic).
261
- const raw = await entry.read();
262
- file.push(raw, true);
263
- await drain();
264
- continue;
265
- }
266
- // Giant entry: pinned-chunk streaming from its byte stream. Buffer incoming
267
- // chunks in a queue and assemble EXACTLY-`CANONICAL_B_PUSH_BYTES` pushes
268
- // (last push carries the remainder) — O(total) copying regardless of the
269
- // source's chunk sizes, and byte-identical push boundaries → deterministic.
270
- const openStream = entry.openStream;
271
- if (!openStream) {
272
- throw new Error(`canonical-zip: entry ${JSON.stringify(entry.name)} exceeds ENTRY_RAM_CAP but has no openStream()`);
273
- }
274
- const queue = [];
275
- let buffered = 0;
276
- const emitPush = (size, last) => {
277
- const buf = new Uint8Array(size);
278
- let off = 0;
279
- while (off < size) {
280
- const head = queue[0];
281
- const take = Math.min(head.length, size - off);
282
- buf.set(head.subarray(0, take), off);
283
- off += take;
284
- if (take === head.length)
285
- queue.shift();
286
- else
287
- queue[0] = head.subarray(take);
288
- }
289
- buffered -= size;
290
- file.push(buf, last);
291
- };
292
- for await (const raw of openStream()) {
293
- if (raw.length === 0)
294
- continue;
295
- queue.push(raw);
296
- buffered += raw.length;
297
- while (buffered >= CANONICAL_B_PUSH_BYTES) {
298
- emitPush(CANONICAL_B_PUSH_BYTES, false);
299
- await drain();
300
- }
301
- }
302
- // Final push carries the (< push size) remainder, and flags stream end.
303
- emitPush(buffered, true);
304
- await drain();
305
- }
306
- zip.end();
307
- await drain();
308
- }
309
- /**
310
- * Stream the canonical zip of `entries` (FINAL canonical order) into `sink`.
311
- * Picks Canonical A (byte-identical to `zipSync`) unless an entry exceeds
312
- * {@link ENTRY_RAM_CAP}, in which case the whole bundle uses Canonical B.
313
- */
314
- export async function streamBundleZip(entries, sink) {
315
- const ordered = canonicalOrder(entries);
316
- assertClassicZipInputs(ordered);
317
- return bundleNeedsCanonicalB(ordered) ? streamBundleZipB(ordered, sink) : streamBundleZipA(ordered, sink);
318
- }
319
- /**
320
- * Synchronous Canonical-A convenience — frame an ordered `[name, bytes]` list to
321
- * a single buffer. Used by the golden byte-identity test (`=== zipSync`) and by
322
- * callers that already hold all bytes in memory. NOT for giant entries.
323
- */
324
- export function frameCanonicalZipSync(entries) {
325
- const ordered = canonicalOrder(entries.map(([name, bytes]) => ({ name, bytes })));
326
- assertClassicZipInputs(ordered.map(({ name, bytes }) => ({ name, size: bytes.length, read: () => bytes })));
327
- const chunks = [];
328
- const centrals = [];
329
- let offset = 0;
330
- for (const { name, bytes: raw } of ordered) {
331
- const framed = frameEntryA(name, raw, offset);
332
- chunks.push(framed.local);
333
- centrals.push(framed.central);
334
- offset += framed.length;
335
- assertClassicZipU32(offset, "central-directory offset");
336
- }
337
- let cdSize = 0;
338
- for (const c of centrals) {
339
- cdSize += c.length;
340
- chunks.push(c);
341
- }
342
- assertClassicZipU32(cdSize, "central-directory size");
343
- chunks.push(eocd(centrals.length, cdSize, offset));
344
- let total = 0;
345
- for (const c of chunks)
346
- total += c.length;
347
- const out = new Uint8Array(total);
348
- let o = 0;
349
- for (const c of chunks) {
350
- out.set(c, o);
351
- o += c.length;
352
- }
353
- return out;
354
- }
355
- //# sourceMappingURL=canonical-zip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canonical-zip.js","sourceRoot":"","sources":["../src/canonical-zip.ts"],"names":[],"mappings":"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"}