@runeditrun/rer 0.0.0-stage → 0.1.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 (526) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -2
  3. package/bin/rer.mjs +3 -0
  4. package/cli/README.md +243 -0
  5. package/cli/adapter.mjs +10 -0
  6. package/cli/ai-local.mjs +65 -0
  7. package/cli/archive-path.mjs +52 -0
  8. package/cli/archive-vite.mjs +55 -0
  9. package/cli/archive.mjs +8 -0
  10. package/cli/auth-copy.mjs +80 -0
  11. package/cli/bounded.mjs +70 -0
  12. package/cli/cache-doctor.mjs +63 -0
  13. package/cli/container-transfer.mjs +35 -0
  14. package/cli/container.mjs +62 -0
  15. package/cli/contract.mjs +25 -0
  16. package/cli/dependencies.mjs +45 -0
  17. package/cli/dependency-approval.mjs +33 -0
  18. package/cli/dependency-doctor.mjs +34 -0
  19. package/cli/dependency-input.mjs +43 -0
  20. package/cli/deploy-config.mjs +118 -0
  21. package/cli/deploy.mjs +37 -0
  22. package/cli/dev-identity.mjs +80 -0
  23. package/cli/errors.mjs +14 -0
  24. package/cli/export.mjs +42 -0
  25. package/cli/font-cache.mjs +29 -0
  26. package/cli/hosted-output.mjs +110 -0
  27. package/cli/independent.mjs +29 -0
  28. package/cli/inspect.mjs +174 -0
  29. package/cli/jsonc.mjs +111 -0
  30. package/cli/lifecycle.mjs +148 -0
  31. package/cli/local.mjs +100 -0
  32. package/cli/main.mjs +57 -0
  33. package/cli/managed-server.mjs +143 -0
  34. package/cli/node-runtime-cache.mjs +68 -0
  35. package/cli/node-runtime-discovery.mjs +56 -0
  36. package/cli/node-runtime-download.mjs +59 -0
  37. package/cli/node-runtime.mjs +50 -0
  38. package/cli/output.mjs +22 -0
  39. package/cli/parse.mjs +77 -0
  40. package/cli/port.mjs +52 -0
  41. package/cli/portability-worker.mjs +56 -0
  42. package/cli/portability.mjs +66 -0
  43. package/cli/preview-cache.mjs +99 -0
  44. package/cli/project.mjs +48 -0
  45. package/cli/release.mjs +24 -0
  46. package/cli/runtime-front-door.mjs +46 -0
  47. package/cli/scheduled.mjs +81 -0
  48. package/cli/server-activity.mjs +12 -0
  49. package/cli/server-proxy.mjs +93 -0
  50. package/cli/server-registry.mjs +177 -0
  51. package/cli/server-resources.mjs +22 -0
  52. package/cli/settings.mjs +15 -0
  53. package/cli/setup-answers.mjs +29 -0
  54. package/cli/setup-input.mjs +113 -0
  55. package/cli/shared.mjs +7 -0
  56. package/cli/transfers.mjs +33 -0
  57. package/cli/version.mjs +36 -0
  58. package/composition/git-source.mjs +111 -0
  59. package/edition-authoring/files.mjs +81 -0
  60. package/edition-authoring/manifest.mjs +65 -0
  61. package/global/README.md +155 -0
  62. package/global/checkout.mjs +72 -0
  63. package/global/cli/command.mjs +13 -0
  64. package/global/cli/install.mjs +75 -0
  65. package/global/cli/layout.mjs +45 -0
  66. package/global/cli/status.mjs +54 -0
  67. package/global/cli/uninstall.mjs +36 -0
  68. package/global/delegate.mjs +13 -0
  69. package/global/launch/capacity.mjs +72 -0
  70. package/global/launch/dev.mjs +129 -0
  71. package/global/launch/facts.mjs +93 -0
  72. package/global/launch/failure.mjs +5 -0
  73. package/global/launch/local-defaults.mjs +4 -0
  74. package/global/launch/prepare.mjs +61 -0
  75. package/global/launch/render.mjs +44 -0
  76. package/global/launch/state.mjs +97 -0
  77. package/global/launch/steps.mjs +81 -0
  78. package/global/launch/worker.mjs +43 -0
  79. package/global/list.mjs +59 -0
  80. package/global/main.mjs +53 -0
  81. package/global/package-info.mjs +38 -0
  82. package/global/registry.mjs +24 -0
  83. package/global/rer.mjs +29 -0
  84. package/global/update/archive.mjs +89 -0
  85. package/global/update/command.mjs +90 -0
  86. package/global/update/latest.mjs +6 -0
  87. package/global/update/notice.mjs +58 -0
  88. package/global/update/registry.mjs +47 -0
  89. package/global/version.mjs +29 -0
  90. package/install.sh +144 -0
  91. package/modules/ai/LICENSE +21 -0
  92. package/modules/ai/README.md +90 -0
  93. package/modules/ai/client.mjs +71 -0
  94. package/modules/ai/config.mjs +39 -0
  95. package/modules/ai/dev/index.d.mts +6 -0
  96. package/modules/ai/dev/index.mjs +64 -0
  97. package/modules/ai/dev/outbox.mjs +33 -0
  98. package/modules/ai/errors.mjs +28 -0
  99. package/modules/ai/fake/index.d.mts +3 -0
  100. package/modules/ai/fake/index.mjs +82 -0
  101. package/modules/ai/index.d.mts +10 -0
  102. package/modules/ai/index.mjs +3 -0
  103. package/modules/ai/package.json +6 -0
  104. package/modules/container/README.md +156 -0
  105. package/modules/container/adapters/d1.mjs +34 -0
  106. package/modules/container/adapters/egress.mjs +40 -0
  107. package/modules/container/adapters/jobs.mjs +47 -0
  108. package/modules/container/adapters/objects.mjs +84 -0
  109. package/modules/container/adapters/retained.mjs +14 -0
  110. package/modules/container/adapters/sqlite-error.mjs +7 -0
  111. package/modules/container/adapters/sqlite-worker.mjs +26 -0
  112. package/modules/container/assets.mjs +14 -0
  113. package/modules/container/bindings.mjs +1 -0
  114. package/modules/container/boundary.mjs +38 -0
  115. package/modules/container/build.mjs +65 -0
  116. package/modules/container/deploy-input.mjs +17 -0
  117. package/modules/container/entrypoint.sh +5 -0
  118. package/modules/container/host.mjs +43 -0
  119. package/modules/container/ingress.mjs +23 -0
  120. package/modules/container/lock.mjs +11 -0
  121. package/modules/container/migrations.mjs +16 -0
  122. package/modules/container/node-engine.mjs +39 -0
  123. package/modules/container/portability-schema.mjs +14 -0
  124. package/modules/container/remote/deploy.py +76 -0
  125. package/modules/container/remote/files.py +275 -0
  126. package/modules/container/remote/resources.py +157 -0
  127. package/modules/container/runner.mjs +10 -0
  128. package/modules/container/ssh-plan.mjs +44 -0
  129. package/modules/container/ssh.mjs +63 -0
  130. package/modules/container/transfer.mjs +27 -0
  131. package/modules/container/worker-engine.mjs +32 -0
  132. package/modules/dependencies/README.md +211 -0
  133. package/modules/dependencies/approval.mjs +51 -0
  134. package/modules/dependencies/auth.mjs +40 -0
  135. package/modules/dependencies/authority.mjs +14 -0
  136. package/modules/dependencies/crypto.mjs +13 -0
  137. package/modules/dependencies/index.d.mts +23 -0
  138. package/modules/dependencies/index.mjs +113 -0
  139. package/modules/dependencies/logout.mjs +42 -0
  140. package/modules/dependencies/native.mjs +9 -0
  141. package/modules/dependencies/protocol.mjs +23 -0
  142. package/modules/dependencies/schema/approval-attempt.sql +3 -0
  143. package/modules/dependencies/schema/dependencies.sql +15 -0
  144. package/modules/dependencies/store.mjs +19 -0
  145. package/modules/deploy-kit/README.md +308 -0
  146. package/modules/deploy-kit/artifact.mjs +47 -0
  147. package/modules/deploy-kit/build-modules.mjs +21 -0
  148. package/modules/deploy-kit/check.mjs +13 -0
  149. package/modules/deploy-kit/cli.mjs +50 -0
  150. package/modules/deploy-kit/container-config.mjs +8 -0
  151. package/modules/deploy-kit/default-stage.mjs +14 -0
  152. package/modules/deploy-kit/deploy.mjs +80 -0
  153. package/modules/deploy-kit/health-request.mjs +86 -0
  154. package/modules/deploy-kit/health.mjs +99 -0
  155. package/modules/deploy-kit/index.mjs +12 -0
  156. package/modules/deploy-kit/local-only.mjs +10 -0
  157. package/modules/deploy-kit/migrations.mjs +48 -0
  158. package/modules/deploy-kit/owner-cli.mjs +63 -0
  159. package/modules/deploy-kit/owner.mjs +297 -0
  160. package/modules/deploy-kit/prepare.mjs +62 -0
  161. package/modules/deploy-kit/provider.mjs +99 -0
  162. package/modules/deploy-kit/queue-consumer.mjs +10 -0
  163. package/modules/deploy-kit/receipt.mjs +16 -0
  164. package/modules/deploy-kit/render.mjs +47 -0
  165. package/modules/deploy-kit/resources.mjs +106 -0
  166. package/modules/deploy-kit/service-grants.mjs +25 -0
  167. package/modules/deploy-kit/sql-safety.mjs +94 -0
  168. package/modules/deploy-kit/sql-tokens.mjs +49 -0
  169. package/modules/deploy-kit/teardown.mjs +100 -0
  170. package/modules/deploy-kit/templates.mjs +31 -0
  171. package/modules/deploy-kit/validation.mjs +58 -0
  172. package/modules/deploy-kit/worker.mjs +105 -0
  173. package/modules/erasure/CONTRACT.md +90 -0
  174. package/modules/erasure/README.md +221 -0
  175. package/modules/erasure/audit.mjs +23 -0
  176. package/modules/erasure/blobs.mjs +45 -0
  177. package/modules/erasure/cascade.mjs +91 -0
  178. package/modules/erasure/completion.mjs +62 -0
  179. package/modules/erasure/declaration.mjs +51 -0
  180. package/modules/erasure/fence.mjs +19 -0
  181. package/modules/erasure/index.d.mts +62 -0
  182. package/modules/erasure/index.mjs +85 -0
  183. package/modules/erasure/order.mjs +56 -0
  184. package/modules/erasure/plan.mjs +121 -0
  185. package/modules/erasure/rate.mjs +57 -0
  186. package/modules/erasure/receipt.mjs +32 -0
  187. package/modules/erasure/root.mjs +21 -0
  188. package/modules/erasure/schema/erasure-rates.sql +5 -0
  189. package/modules/erasure/schema/erasure.sql +27 -0
  190. package/modules/erasure/scope.mjs +29 -0
  191. package/modules/erasure/sql.mjs +23 -0
  192. package/modules/erasure/verification.mjs +69 -0
  193. package/modules/integrations/core/CONTRACT.md +50 -0
  194. package/modules/integrations/core/README.md +27 -0
  195. package/modules/integrations/core/crypto.ts +19 -0
  196. package/modules/integrations/core/database.ts +21 -0
  197. package/modules/integrations/core/delivery.ts +97 -0
  198. package/modules/integrations/core/destination.ts +13 -0
  199. package/modules/integrations/core/index.ts +7 -0
  200. package/modules/integrations/core/node-transport.ts +72 -0
  201. package/modules/integrations/core/public-address.ts +57 -0
  202. package/modules/integrations/core/repository.ts +74 -0
  203. package/modules/integrations/core/schema.sql +36 -0
  204. package/modules/integrations/core/sqlite.ts +20 -0
  205. package/modules/integrations/core/timestamped-body-signature.ts +38 -0
  206. package/modules/integrations/core/tokens.ts +71 -0
  207. package/modules/integrations/core/types.ts +52 -0
  208. package/modules/integrations/core/upgrade-token-usage-context.sql +5 -0
  209. package/modules/integrations/core/webhook.ts +73 -0
  210. package/modules/job-queue/README.md +173 -0
  211. package/modules/job-queue/cli.mjs +64 -0
  212. package/modules/job-queue/command.mjs +64 -0
  213. package/modules/job-queue/config.mjs +48 -0
  214. package/modules/job-queue/identity.mjs +48 -0
  215. package/modules/job-queue/index.mjs +135 -0
  216. package/modules/job-queue/membership.mjs +30 -0
  217. package/modules/job-queue/module.json +10 -0
  218. package/modules/job-queue/policy.mjs +29 -0
  219. package/modules/job-queue/processes.mjs +80 -0
  220. package/modules/job-queue/resources.mjs +37 -0
  221. package/modules/job-queue/storage.mjs +64 -0
  222. package/modules/job-queue/supervisor.mjs +30 -0
  223. package/modules/job-queue/waiting.mjs +16 -0
  224. package/modules/mail/LICENSE +21 -0
  225. package/modules/mail/README.md +336 -0
  226. package/modules/mail/doctor.mjs +81 -0
  227. package/modules/mail/index.mjs +8 -0
  228. package/modules/mail/live-proof/README.md +113 -0
  229. package/modules/mail/live-proof/run.mjs +55 -0
  230. package/modules/mail/package.json +19 -0
  231. package/modules/mail/pnpm-lock.yaml +537 -0
  232. package/modules/mail/src/adapters/cloudflare/README.md +84 -0
  233. package/modules/mail/src/adapters/cloudflare/headers.mjs +63 -0
  234. package/modules/mail/src/adapters/cloudflare/index.mjs +47 -0
  235. package/modules/mail/src/adapters/cloudflare/response.mjs +99 -0
  236. package/modules/mail/src/adapters/messaging/README.md +92 -0
  237. package/modules/mail/src/adapters/messaging/contract.mjs +66 -0
  238. package/modules/mail/src/adapters/messaging/event-schema.mjs +28 -0
  239. package/modules/mail/src/adapters/messaging/index.mjs +61 -0
  240. package/modules/mail/src/adapters/messaging/jws.mjs +68 -0
  241. package/modules/mail/src/adapters/messaging/request.mjs +52 -0
  242. package/modules/mail/src/adapters/messaging/serialize.mjs +21 -0
  243. package/modules/mail/src/adapters/resend/README.md +120 -0
  244. package/modules/mail/src/adapters/resend/index.mjs +22 -0
  245. package/modules/mail/src/adapters/resend/response.mjs +54 -0
  246. package/modules/mail/src/adapters/resend/serialize.mjs +46 -0
  247. package/modules/mail/src/adapters/resend/size.mjs +99 -0
  248. package/modules/mail/src/adapters/sendgrid/README.md +75 -0
  249. package/modules/mail/src/adapters/sendgrid/index.mjs +35 -0
  250. package/modules/mail/src/adapters/sendgrid/serialize.mjs +104 -0
  251. package/modules/mail/src/core/errors.mjs +9 -0
  252. package/modules/mail/src/core/transport.mjs +33 -0
  253. package/modules/mail/src/core/validation.mjs +172 -0
  254. package/modules/mail/src/development/index.d.mts +37 -0
  255. package/modules/mail/src/development/index.mjs +35 -0
  256. package/modules/mail/src/development/outbox.mjs +78 -0
  257. package/modules/mail/src/development/schema.sql +9 -0
  258. package/modules/mail/src/development/viewer-html.mjs +42 -0
  259. package/modules/mail/src/development/viewer.mjs +65 -0
  260. package/modules/mail/src/doctor/README.md +107 -0
  261. package/modules/mail/src/doctor/common.mjs +64 -0
  262. package/modules/mail/src/doctor/dns.mjs +102 -0
  263. package/modules/mail/src/doctor/index.mjs +28 -0
  264. package/modules/mail/src/doctor/probe.mjs +66 -0
  265. package/modules/mail/src/doctor/receive.mjs +81 -0
  266. package/modules/mail/src/doctor/records.mjs +45 -0
  267. package/modules/mail/src/events/README.md +268 -0
  268. package/modules/mail/src/events/d1-schema.sql +25 -0
  269. package/modules/mail/src/events/d1-storage.mjs +76 -0
  270. package/modules/mail/src/events/index.mjs +3 -0
  271. package/modules/mail/src/events/intake.mjs +201 -0
  272. package/modules/mail/src/events/storage.mjs +52 -0
  273. package/modules/mail/src/events/verify.mjs +92 -0
  274. package/modules/mail/src/inbound/README.md +137 -0
  275. package/modules/mail/src/inbound/bytes.mjs +91 -0
  276. package/modules/mail/src/inbound/headers.mjs +143 -0
  277. package/modules/mail/src/inbound/index.mjs +29 -0
  278. package/modules/mail/src/inbound/mime.mjs +36 -0
  279. package/modules/mail/src/inbound/multipart.mjs +27 -0
  280. package/modules/mail/src/inbound/resend-attachment.mjs +43 -0
  281. package/modules/mail/src/inbound/resend.mjs +54 -0
  282. package/modules/mail/src/inbound/sendgrid.mjs +60 -0
  283. package/modules/mail/src/sender.mjs +33 -0
  284. package/modules/mail/src/sendgrid-email/index.d.mts +33 -0
  285. package/modules/mail/src/sendgrid-email/index.mjs +86 -0
  286. package/modules/mail/src/unsubscribe/index.mjs +142 -0
  287. package/modules/operator-auth/README.md +599 -0
  288. package/modules/operator-auth/accounts/adapter.mjs +41 -0
  289. package/modules/operator-auth/accounts/admin.mjs +159 -0
  290. package/modules/operator-auth/accounts/credentials.mjs +27 -0
  291. package/modules/operator-auth/accounts/editor-owner.mjs +13 -0
  292. package/modules/operator-auth/accounts/index.d.mts +9 -0
  293. package/modules/operator-auth/accounts/index.mjs +9 -0
  294. package/modules/operator-auth/accounts/native.d.mts +38 -0
  295. package/modules/operator-auth/accounts/native.mjs +171 -0
  296. package/modules/operator-auth/accounts/oa.mjs +90 -0
  297. package/modules/operator-auth/accounts/provider-control.mjs +50 -0
  298. package/modules/operator-auth/accounts/provider-pin.mjs +14 -0
  299. package/modules/operator-auth/accounts/roles.mjs +26 -0
  300. package/modules/operator-auth/accounts/schema/dependency-setup.sql +17 -0
  301. package/modules/operator-auth/accounts/schema/dev-sessions.sql +22 -0
  302. package/modules/operator-auth/accounts/schema/domain-rules-step-up.sql +20 -0
  303. package/modules/operator-auth/accounts/schema/invitation-cancellation.sql +17 -0
  304. package/modules/operator-auth/accounts/schema/operator-auth.sql +142 -0
  305. package/modules/operator-auth/accounts/schema/provider-control.sql +30 -0
  306. package/modules/operator-auth/accounts/schema/provider-pins.sql +6 -0
  307. package/modules/operator-auth/accounts/settings-page.mjs +4 -0
  308. package/modules/operator-auth/accounts/store.mjs +246 -0
  309. package/modules/operator-auth/branding.mjs +66 -0
  310. package/modules/operator-auth/config.mjs +35 -0
  311. package/modules/operator-auth/conformance/README.md +81 -0
  312. package/modules/operator-auth/conformance/index.d.mts +43 -0
  313. package/modules/operator-auth/conformance/index.mjs +300 -0
  314. package/modules/operator-auth/conformance/presentation.mjs +57 -0
  315. package/modules/operator-auth/crypto.mjs +17 -0
  316. package/modules/operator-auth/dev/badge.mjs +62 -0
  317. package/modules/operator-auth/dev/index.d.mts +14 -0
  318. package/modules/operator-auth/dev/index.mjs +137 -0
  319. package/modules/operator-auth/dev/personas.mjs +17 -0
  320. package/modules/operator-auth/dev/sign-in-as.d.mts +3 -0
  321. package/modules/operator-auth/dev/sign-in-as.mjs +25 -0
  322. package/modules/operator-auth/dev-admission.d.mts +4 -0
  323. package/modules/operator-auth/dev-admission.mjs +10 -0
  324. package/modules/operator-auth/dev-gate.mjs +86 -0
  325. package/modules/operator-auth/docs/README.md +78 -0
  326. package/modules/operator-auth/docs/native-accounts.md +313 -0
  327. package/modules/operator-auth/docs/tanstack-start.md +218 -0
  328. package/modules/operator-auth/docs/vite-spa.md +144 -0
  329. package/modules/operator-auth/errors.mjs +9 -0
  330. package/modules/operator-auth/http.mjs +42 -0
  331. package/modules/operator-auth/identity/admission.mjs +105 -0
  332. package/modules/operator-auth/identity/after-confirm.mjs +18 -0
  333. package/modules/operator-auth/identity/email-link/confirmation.mjs +14 -0
  334. package/modules/operator-auth/identity/email-link/index.d.mts +48 -0
  335. package/modules/operator-auth/identity/email-link/index.mjs +128 -0
  336. package/modules/operator-auth/identity/email-link/message.mjs +16 -0
  337. package/modules/operator-auth/identity/index.d.mts +7 -0
  338. package/modules/operator-auth/identity/index.mjs +5 -0
  339. package/modules/operator-auth/identity/oidc/README.md +171 -0
  340. package/modules/operator-auth/identity/oidc/client-auth.mjs +16 -0
  341. package/modules/operator-auth/identity/oidc/config.mjs +102 -0
  342. package/modules/operator-auth/identity/oidc/crypto.mjs +29 -0
  343. package/modules/operator-auth/identity/oidc/errors.mjs +5 -0
  344. package/modules/operator-auth/identity/oidc/index.d.mts +33 -0
  345. package/modules/operator-auth/identity/oidc/index.mjs +287 -0
  346. package/modules/operator-auth/identity/oidc/jwt.mjs +102 -0
  347. package/modules/operator-auth/identity/oidc/network.mjs +93 -0
  348. package/modules/operator-auth/identity/oidc/presets.mjs +26 -0
  349. package/modules/operator-auth/identity/oidc/schema/oidc.sql +50 -0
  350. package/modules/operator-auth/identity/oidc/store.mjs +68 -0
  351. package/modules/operator-auth/identity/principal.mjs +28 -0
  352. package/modules/operator-auth/index.d.mts +223 -0
  353. package/modules/operator-auth/index.mjs +11 -0
  354. package/modules/operator-auth/input.mjs +55 -0
  355. package/modules/operator-auth/local-cli.mjs +16 -0
  356. package/modules/operator-auth/page.mjs +34 -0
  357. package/modules/operator-auth/policy.mjs +20 -0
  358. package/modules/operator-auth/routes.mjs +91 -0
  359. package/modules/operator-auth/service.mjs +152 -0
  360. package/modules/operator-auth/signin/index.mjs +67 -0
  361. package/modules/owner-claim/README.md +137 -0
  362. package/modules/owner-claim/idp.mjs +40 -0
  363. package/modules/owner-claim/index.d.mts +27 -0
  364. package/modules/owner-claim/index.mjs +39 -0
  365. package/modules/owner-claim/page.mjs +11 -0
  366. package/modules/owner-claim/schema/idp.sql +4 -0
  367. package/modules/owner-claim/schema/owner-claim.sql +18 -0
  368. package/modules/owner-claim/transaction.mjs +87 -0
  369. package/modules/owner-claim/verify.mjs +80 -0
  370. package/modules/portability/README.md +444 -0
  371. package/modules/portability/bridge.mjs +102 -0
  372. package/modules/portability/catalogue.mjs +118 -0
  373. package/modules/portability/cli-options.mjs +38 -0
  374. package/modules/portability/cli.mjs +56 -0
  375. package/modules/portability/copies.mjs +68 -0
  376. package/modules/portability/dev-data.mjs +32 -0
  377. package/modules/portability/diff.mjs +33 -0
  378. package/modules/portability/export.mjs +129 -0
  379. package/modules/portability/files.mjs +65 -0
  380. package/modules/portability/format.mjs +122 -0
  381. package/modules/portability/generated.mjs +60 -0
  382. package/modules/portability/hash.mjs +79 -0
  383. package/modules/portability/http.mjs +42 -0
  384. package/modules/portability/import.mjs +185 -0
  385. package/modules/portability/index.d.mts +58 -0
  386. package/modules/portability/index.mjs +22 -0
  387. package/modules/portability/journal.mjs +49 -0
  388. package/modules/portability/legacy-files.mjs +43 -0
  389. package/modules/portability/legacy-safety.mjs +27 -0
  390. package/modules/portability/lines.mjs +36 -0
  391. package/modules/portability/migration-history.mjs +18 -0
  392. package/modules/portability/migration-statements.mjs +23 -0
  393. package/modules/portability/payloads.mjs +52 -0
  394. package/modules/portability/provider-data.mjs +25 -0
  395. package/modules/portability/restore-safety.mjs +30 -0
  396. package/modules/portability/schema/portability.sql +25 -0
  397. package/modules/portability/storage.mjs +49 -0
  398. package/modules/release/README.md +212 -0
  399. package/modules/release/catalogue.mjs +79 -0
  400. package/modules/release/export.mjs +51 -0
  401. package/modules/release/produce.mjs +136 -0
  402. package/modules/release/public-child-transport-state.cjs +29 -0
  403. package/modules/release/public-child.mjs +71 -0
  404. package/modules/release/public-git.mjs +21 -0
  405. package/modules/release/publication-scan.mjs +22 -0
  406. package/modules/release/publish-handoff.mjs +37 -0
  407. package/modules/release/source.mjs +71 -0
  408. package/modules/release/test-summary.mjs +50 -0
  409. package/onboarding/README.md +163 -0
  410. package/onboarding/activity.mjs +31 -0
  411. package/onboarding/adapter-auth.mjs +88 -0
  412. package/onboarding/adapter-hosting.mjs +35 -0
  413. package/onboarding/adapter-labels.mjs +13 -0
  414. package/onboarding/adapter-settings.mjs +129 -0
  415. package/onboarding/adapter.mjs +238 -0
  416. package/onboarding/agent-handoff.mjs +9 -0
  417. package/onboarding/app-processes.mjs +21 -0
  418. package/onboarding/archive-output.d.mts +3 -0
  419. package/onboarding/archive-output.mjs +54 -0
  420. package/onboarding/command-custody.mjs +24 -0
  421. package/onboarding/command-recovery.mjs +8 -0
  422. package/onboarding/commands.mjs +166 -0
  423. package/onboarding/dependency-approval.mjs +36 -0
  424. package/onboarding/dev-identity.mjs +23 -0
  425. package/onboarding/email.mjs +24 -0
  426. package/onboarding/failures.mjs +42 -0
  427. package/onboarding/input-limits.mjs +7 -0
  428. package/onboarding/installer-inputs.mjs +24 -0
  429. package/onboarding/launcher.mjs +34 -0
  430. package/onboarding/local/build-files.mjs +64 -0
  431. package/onboarding/local/build.mjs +49 -0
  432. package/onboarding/local/environment.mjs +30 -0
  433. package/onboarding/local/files.mjs +35 -0
  434. package/onboarding/local/operation.mjs +166 -0
  435. package/onboarding/local/owner.mjs +34 -0
  436. package/onboarding/local/process-table.mjs +114 -0
  437. package/onboarding/local/recovery.mjs +79 -0
  438. package/onboarding/local/state.mjs +31 -0
  439. package/onboarding/metadata.mjs +7 -0
  440. package/onboarding/operator-install.mjs +45 -0
  441. package/onboarding/operator-installer.mjs +39 -0
  442. package/onboarding/operator-prerequisites.mjs +27 -0
  443. package/onboarding/package.json +6 -0
  444. package/onboarding/prefill.mjs +16 -0
  445. package/onboarding/private-files.mjs +97 -0
  446. package/onboarding/private.mjs +35 -0
  447. package/onboarding/process-cleanup.mjs +134 -0
  448. package/onboarding/process-diagnostics.mjs +91 -0
  449. package/onboarding/process-scope.mjs +118 -0
  450. package/onboarding/process-table.mjs +118 -0
  451. package/onboarding/process-tree.mjs +36 -0
  452. package/onboarding/production-modules.mjs +22 -0
  453. package/onboarding/production-options.mjs +40 -0
  454. package/onboarding/production-plan.mjs +8 -0
  455. package/onboarding/production-runtime.mjs +30 -0
  456. package/onboarding/project-vite.mjs +14 -0
  457. package/onboarding/providers.mjs +289 -0
  458. package/onboarding/queue.mjs +53 -0
  459. package/onboarding/queued-entry.mjs +34 -0
  460. package/onboarding/readiness.mjs +59 -0
  461. package/onboarding/redaction-jwt.mjs +32 -0
  462. package/onboarding/redaction.mjs +298 -0
  463. package/onboarding/schema/SETUP.schema.json +514 -0
  464. package/onboarding/schema/dependencies.mjs +35 -0
  465. package/onboarding/schema/json-schema.mjs +202 -0
  466. package/onboarding/schema/setup-validation.mjs +325 -0
  467. package/onboarding/secrets.mjs +21 -0
  468. package/onboarding/server.mjs +188 -0
  469. package/onboarding/setup-manifest.mjs +116 -0
  470. package/onboarding/state.mjs +46 -0
  471. package/onboarding/theme-files.mjs +37 -0
  472. package/onboarding/theme.mjs +118 -0
  473. package/onboarding/ui/activity.js +98 -0
  474. package/onboarding/ui/address-client.mjs +33 -0
  475. package/onboarding/ui/app.js +377 -0
  476. package/onboarding/ui/index.html +1 -0
  477. package/onboarding/ui/model-core.mjs +127 -0
  478. package/onboarding/ui/model.mjs +5 -0
  479. package/onboarding/ui/style.css +63 -0
  480. package/onboarding/ui/theme.css +37 -0
  481. package/onboarding/ui/workspace-art.js +30 -0
  482. package/onboarding/wrangler-auth.mjs +43 -0
  483. package/operations/README.md +246 -0
  484. package/operations/operations.mjs +168 -0
  485. package/operations/project-operations.mjs +157 -0
  486. package/package.json +11 -4
  487. package/scripts/publish-check/README.md +72 -0
  488. package/scripts/publish-check/checksum_maps.py +52 -0
  489. package/scripts/publish-check/cli.py +34 -0
  490. package/scripts/publish-check/command_arguments.py +51 -0
  491. package/scripts/publish-check/command_shell_quotes.py +41 -0
  492. package/scripts/publish-check/command_source_quotes.py +120 -0
  493. package/scripts/publish-check/content_identities.py +250 -0
  494. package/scripts/publish-check/copy_identities.py +41 -0
  495. package/scripts/publish-check/der.py +61 -0
  496. package/scripts/publish-check/destination.py +117 -0
  497. package/scripts/publish-check/env_values.py +74 -0
  498. package/scripts/publish-check/font_licence.py +23 -0
  499. package/scripts/publish-check/git_history.py +115 -0
  500. package/scripts/publish-check/github_refs.py +217 -0
  501. package/scripts/publish-check/gitleaks.py +72 -0
  502. package/scripts/publish-check/gitleaks.toml +40 -0
  503. package/scripts/publish-check/history_scan.py +176 -0
  504. package/scripts/publish-check/hit_location.py +18 -0
  505. package/scripts/publish-check/hygiene_config.py +42 -0
  506. package/scripts/publish-check/hygiene_text.py +11 -0
  507. package/scripts/publish-check/identity-recipe.mjs +54 -0
  508. package/scripts/publish-check/json_identity.py +79 -0
  509. package/scripts/publish-check/license-exceptions.json +11 -0
  510. package/scripts/publish-check/licenses.py +49 -0
  511. package/scripts/publish-check/policy.py +18 -0
  512. package/scripts/publish-check/project_identity.py +89 -0
  513. package/scripts/publish-check/provenance.py +91 -0
  514. package/scripts/publish-check/provenance_pins.py +33 -0
  515. package/scripts/publish-check/public_base.py +63 -0
  516. package/scripts/publish-check/public_hygiene.py +80 -0
  517. package/scripts/publish-check/publication-config.json +12 -0
  518. package/scripts/publish-check/publication_config.py +34 -0
  519. package/scripts/publish-check/report.py +52 -0
  520. package/scripts/publish-check/repository_commands.py +75 -0
  521. package/scripts/publish-check/repository_intent.py +52 -0
  522. package/scripts/publish-check/reviewed.py +41 -0
  523. package/scripts/publish-check/source_hashes.mjs +6 -0
  524. package/scripts/publish-check/tree_scan.py +88 -0
  525. package/scripts/publish-check/trust_bundle.py +87 -0
  526. package/scripts/publish-check.mjs +58 -0
@@ -0,0 +1,537 @@
1
+ lockfileVersion: '9.0'
2
+
3
+ settings:
4
+ autoInstallPeers: true
5
+ excludeLinksFromLockfile: false
6
+
7
+ overrides:
8
+ sharp: 0.35.5
9
+ undici: 7.29.1
10
+
11
+ importers:
12
+
13
+ .:
14
+ devDependencies:
15
+ miniflare:
16
+ specifier: 5.20260907.0-alpha
17
+ version: 5.20260907.0-alpha
18
+
19
+ packages:
20
+
21
+ '@cloudflare/workerd-darwin-64@1.20260907.1':
22
+ resolution: {integrity: sha512-Xaum46kviN8xixl0axXm7mfLTf2GAG+baotnEIv8M5EbvyHxHagvS5Z8bU5B/WJlTWwwvGzItFfKZvga78o3ew==}
23
+ engines: {node: '>=16'}
24
+ cpu: [x64]
25
+ os: [darwin]
26
+
27
+ '@cloudflare/workerd-darwin-arm64@1.20260907.1':
28
+ resolution: {integrity: sha512-P2o7xpZbxvoES9xY5uHqJPXvsWBWi0w1STCGoYLqxI1rh1gSUdlr4HruMiWq/TA94PPoQCg0eUfoshyQxMdGpA==}
29
+ engines: {node: '>=16'}
30
+ cpu: [arm64]
31
+ os: [darwin]
32
+
33
+ '@cloudflare/workerd-linux-64@1.20260907.1':
34
+ resolution: {integrity: sha512-4aXjFMtD76FgVmDm7vUtl96LWNmFScfrYZ9lA6JpP5+svRfUQOYaJKcYK4g9IVmAxemItJizTTIA8jhEZaw0vg==}
35
+ engines: {node: '>=16'}
36
+ cpu: [x64]
37
+ os: [linux]
38
+
39
+ '@cloudflare/workerd-linux-arm64@1.20260907.1':
40
+ resolution: {integrity: sha512-nex+emDfyOYnQlhfPoCfLYQN6L+Ng0fVg5f3+8Ot4XRZaKJUzpiBFiRkgpoUuEN47U8Pm8BwhhOK2dQwtKwivQ==}
41
+ engines: {node: '>=16'}
42
+ cpu: [arm64]
43
+ os: [linux]
44
+
45
+ '@cloudflare/workerd-windows-64@1.20260907.1':
46
+ resolution: {integrity: sha512-/ZHtEmpdSUKZyQCBUSqmGp+I7GwWVR2eUaGE5NzFJIu31HBsoQEakXaDpTrbwXydpBzpI9N0DC83W7qekkGPMQ==}
47
+ engines: {node: '>=16'}
48
+ cpu: [x64]
49
+ os: [win32]
50
+
51
+ '@cspotcode/source-map-support@0.8.1':
52
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
53
+ engines: {node: '>=12'}
54
+
55
+ '@emnapi/runtime@1.11.3':
56
+ resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==}
57
+
58
+ '@img/colour@1.1.0':
59
+ resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
60
+ engines: {node: '>=18'}
61
+
62
+ '@img/sharp-darwin-arm64@0.35.5':
63
+ resolution: {integrity: sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==}
64
+ engines: {node: '>=20.9.0'}
65
+ cpu: [arm64]
66
+ os: [darwin]
67
+
68
+ '@img/sharp-darwin-x64@0.35.5':
69
+ resolution: {integrity: sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==}
70
+ engines: {node: '>=20.9.0'}
71
+ cpu: [x64]
72
+ os: [darwin]
73
+
74
+ '@img/sharp-freebsd-wasm32@0.35.5':
75
+ resolution: {integrity: sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==}
76
+ engines: {node: '>=20.9.0'}
77
+ os: [freebsd]
78
+
79
+ '@img/sharp-libvips-darwin-arm64@1.3.4':
80
+ resolution: {integrity: sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==}
81
+ cpu: [arm64]
82
+ os: [darwin]
83
+
84
+ '@img/sharp-libvips-darwin-x64@1.3.4':
85
+ resolution: {integrity: sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==}
86
+ cpu: [x64]
87
+ os: [darwin]
88
+
89
+ '@img/sharp-libvips-linux-arm64@1.3.4':
90
+ resolution: {integrity: sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==}
91
+ cpu: [arm64]
92
+ os: [linux]
93
+
94
+ '@img/sharp-libvips-linux-arm@1.3.4':
95
+ resolution: {integrity: sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==}
96
+ cpu: [arm]
97
+ os: [linux]
98
+
99
+ '@img/sharp-libvips-linux-ppc64@1.3.4':
100
+ resolution: {integrity: sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==}
101
+ cpu: [ppc64]
102
+ os: [linux]
103
+
104
+ '@img/sharp-libvips-linux-riscv64@1.3.4':
105
+ resolution: {integrity: sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==}
106
+ cpu: [riscv64]
107
+ os: [linux]
108
+
109
+ '@img/sharp-libvips-linux-s390x@1.3.4':
110
+ resolution: {integrity: sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==}
111
+ cpu: [s390x]
112
+ os: [linux]
113
+
114
+ '@img/sharp-libvips-linux-x64@1.3.4':
115
+ resolution: {integrity: sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==}
116
+ cpu: [x64]
117
+ os: [linux]
118
+
119
+ '@img/sharp-libvips-linuxmusl-arm64@1.3.4':
120
+ resolution: {integrity: sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==}
121
+ cpu: [arm64]
122
+ os: [linux]
123
+
124
+ '@img/sharp-libvips-linuxmusl-x64@1.3.4':
125
+ resolution: {integrity: sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==}
126
+ cpu: [x64]
127
+ os: [linux]
128
+
129
+ '@img/sharp-linux-arm64@0.35.5':
130
+ resolution: {integrity: sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==}
131
+ engines: {node: '>=20.9.0'}
132
+ cpu: [arm64]
133
+ os: [linux]
134
+
135
+ '@img/sharp-linux-arm@0.35.5':
136
+ resolution: {integrity: sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==}
137
+ engines: {node: '>=20.9.0'}
138
+ cpu: [arm]
139
+ os: [linux]
140
+
141
+ '@img/sharp-linux-ppc64@0.35.5':
142
+ resolution: {integrity: sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==}
143
+ engines: {node: '>=20.9.0'}
144
+ cpu: [ppc64]
145
+ os: [linux]
146
+
147
+ '@img/sharp-linux-riscv64@0.35.5':
148
+ resolution: {integrity: sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==}
149
+ engines: {node: '>=20.9.0'}
150
+ cpu: [riscv64]
151
+ os: [linux]
152
+
153
+ '@img/sharp-linux-s390x@0.35.5':
154
+ resolution: {integrity: sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==}
155
+ engines: {node: '>=20.9.0'}
156
+ cpu: [s390x]
157
+ os: [linux]
158
+
159
+ '@img/sharp-linux-x64@0.35.5':
160
+ resolution: {integrity: sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==}
161
+ engines: {node: '>=20.9.0'}
162
+ cpu: [x64]
163
+ os: [linux]
164
+
165
+ '@img/sharp-linuxmusl-arm64@0.35.5':
166
+ resolution: {integrity: sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==}
167
+ engines: {node: '>=20.9.0'}
168
+ cpu: [arm64]
169
+ os: [linux]
170
+
171
+ '@img/sharp-linuxmusl-x64@0.35.5':
172
+ resolution: {integrity: sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==}
173
+ engines: {node: '>=20.9.0'}
174
+ cpu: [x64]
175
+ os: [linux]
176
+
177
+ '@img/sharp-wasm32@0.35.5':
178
+ resolution: {integrity: sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==}
179
+ engines: {node: '>=20.9.0'}
180
+
181
+ '@img/sharp-webcontainers-wasm32@0.35.5':
182
+ resolution: {integrity: sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==}
183
+ engines: {node: '>=20.9.0'}
184
+ cpu: [wasm32]
185
+
186
+ '@img/sharp-win32-arm64@0.35.5':
187
+ resolution: {integrity: sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==}
188
+ engines: {node: '>=20.9.0'}
189
+ cpu: [arm64]
190
+ os: [win32]
191
+
192
+ '@img/sharp-win32-ia32@0.35.5':
193
+ resolution: {integrity: sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==}
194
+ engines: {node: ^20.9.0}
195
+ cpu: [ia32]
196
+ os: [win32]
197
+
198
+ '@img/sharp-win32-x64@0.35.5':
199
+ resolution: {integrity: sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==}
200
+ engines: {node: '>=20.9.0'}
201
+ cpu: [x64]
202
+ os: [win32]
203
+
204
+ '@jridgewell/resolve-uri@3.1.2':
205
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
206
+ engines: {node: '>=6.0.0'}
207
+
208
+ '@jridgewell/sourcemap-codec@1.6.0':
209
+ resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
210
+
211
+ '@jridgewell/trace-mapping@0.3.9':
212
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
213
+
214
+ '@poppinss/colors@4.1.6':
215
+ resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==}
216
+
217
+ '@poppinss/dumper@0.6.5':
218
+ resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==}
219
+
220
+ '@poppinss/exception@1.2.3':
221
+ resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==}
222
+
223
+ '@sindresorhus/is@7.2.0':
224
+ resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==}
225
+ engines: {node: '>=18'}
226
+
227
+ '@speed-highlight/core@1.2.24':
228
+ resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==}
229
+
230
+ cookie@1.1.1:
231
+ resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
232
+ engines: {node: '>=18'}
233
+
234
+ detect-libc@2.1.2:
235
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
236
+ engines: {node: '>=8'}
237
+
238
+ error-stack-parser-es@1.0.5:
239
+ resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
240
+
241
+ kleur@4.1.5:
242
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
243
+ engines: {node: '>=6'}
244
+
245
+ miniflare@5.20260907.0-alpha:
246
+ resolution: {integrity: sha512-56F13BeJQuDbTxcoGGN4MGxN8oNNIH3pK48VyJ1JGmjbzE9MMu6S2kxoON3nOBHlLdNjXyzg1Rz3jdHx+JpuZA==}
247
+ engines: {node: '>=22.0.0'}
248
+
249
+ semver@7.8.5:
250
+ resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
251
+ engines: {node: '>=10'}
252
+ hasBin: true
253
+
254
+ sharp@0.35.5:
255
+ resolution: {integrity: sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==}
256
+ engines: {node: '>=20.9.0'}
257
+ peerDependencies:
258
+ '@types/node': '*'
259
+ peerDependenciesMeta:
260
+ '@types/node':
261
+ optional: true
262
+
263
+ supports-color@10.2.2:
264
+ resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
265
+ engines: {node: '>=18'}
266
+
267
+ tslib@2.8.1:
268
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
269
+
270
+ undici@7.29.1:
271
+ resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==}
272
+ engines: {node: '>=20.18.1'}
273
+
274
+ workerd@1.20260907.1:
275
+ resolution: {integrity: sha512-MN/jgZkg2y9ZOOXdN9ecYynRFaqTCRkmpt3jS6LQNPoSx8HxTgcG947SduxJEB38YisB7RJ3Gu/y7fpd7fZ5bA==}
276
+ engines: {node: '>=16'}
277
+ hasBin: true
278
+
279
+ ws@8.21.0:
280
+ resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==}
281
+ engines: {node: '>=10.0.0'}
282
+ peerDependencies:
283
+ bufferutil: ^4.0.1
284
+ utf-8-validate: '>=5.0.2'
285
+ peerDependenciesMeta:
286
+ bufferutil:
287
+ optional: true
288
+ utf-8-validate:
289
+ optional: true
290
+
291
+ youch-core@0.3.3:
292
+ resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
293
+
294
+ youch@4.1.0-beta.10:
295
+ resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==}
296
+
297
+ snapshots:
298
+
299
+ '@cloudflare/workerd-darwin-64@1.20260907.1':
300
+ optional: true
301
+
302
+ '@cloudflare/workerd-darwin-arm64@1.20260907.1':
303
+ optional: true
304
+
305
+ '@cloudflare/workerd-linux-64@1.20260907.1':
306
+ optional: true
307
+
308
+ '@cloudflare/workerd-linux-arm64@1.20260907.1':
309
+ optional: true
310
+
311
+ '@cloudflare/workerd-windows-64@1.20260907.1':
312
+ optional: true
313
+
314
+ '@cspotcode/source-map-support@0.8.1':
315
+ dependencies:
316
+ '@jridgewell/trace-mapping': 0.3.9
317
+
318
+ '@emnapi/runtime@1.11.3':
319
+ dependencies:
320
+ tslib: 2.8.1
321
+ optional: true
322
+
323
+ '@img/colour@1.1.0': {}
324
+
325
+ '@img/sharp-darwin-arm64@0.35.5':
326
+ optionalDependencies:
327
+ '@img/sharp-libvips-darwin-arm64': 1.3.4
328
+ optional: true
329
+
330
+ '@img/sharp-darwin-x64@0.35.5':
331
+ optionalDependencies:
332
+ '@img/sharp-libvips-darwin-x64': 1.3.4
333
+ optional: true
334
+
335
+ '@img/sharp-freebsd-wasm32@0.35.5':
336
+ dependencies:
337
+ '@img/sharp-wasm32': 0.35.5
338
+ optional: true
339
+
340
+ '@img/sharp-libvips-darwin-arm64@1.3.4':
341
+ optional: true
342
+
343
+ '@img/sharp-libvips-darwin-x64@1.3.4':
344
+ optional: true
345
+
346
+ '@img/sharp-libvips-linux-arm64@1.3.4':
347
+ optional: true
348
+
349
+ '@img/sharp-libvips-linux-arm@1.3.4':
350
+ optional: true
351
+
352
+ '@img/sharp-libvips-linux-ppc64@1.3.4':
353
+ optional: true
354
+
355
+ '@img/sharp-libvips-linux-riscv64@1.3.4':
356
+ optional: true
357
+
358
+ '@img/sharp-libvips-linux-s390x@1.3.4':
359
+ optional: true
360
+
361
+ '@img/sharp-libvips-linux-x64@1.3.4':
362
+ optional: true
363
+
364
+ '@img/sharp-libvips-linuxmusl-arm64@1.3.4':
365
+ optional: true
366
+
367
+ '@img/sharp-libvips-linuxmusl-x64@1.3.4':
368
+ optional: true
369
+
370
+ '@img/sharp-linux-arm64@0.35.5':
371
+ optionalDependencies:
372
+ '@img/sharp-libvips-linux-arm64': 1.3.4
373
+ optional: true
374
+
375
+ '@img/sharp-linux-arm@0.35.5':
376
+ optionalDependencies:
377
+ '@img/sharp-libvips-linux-arm': 1.3.4
378
+ optional: true
379
+
380
+ '@img/sharp-linux-ppc64@0.35.5':
381
+ optionalDependencies:
382
+ '@img/sharp-libvips-linux-ppc64': 1.3.4
383
+ optional: true
384
+
385
+ '@img/sharp-linux-riscv64@0.35.5':
386
+ optionalDependencies:
387
+ '@img/sharp-libvips-linux-riscv64': 1.3.4
388
+ optional: true
389
+
390
+ '@img/sharp-linux-s390x@0.35.5':
391
+ optionalDependencies:
392
+ '@img/sharp-libvips-linux-s390x': 1.3.4
393
+ optional: true
394
+
395
+ '@img/sharp-linux-x64@0.35.5':
396
+ optionalDependencies:
397
+ '@img/sharp-libvips-linux-x64': 1.3.4
398
+ optional: true
399
+
400
+ '@img/sharp-linuxmusl-arm64@0.35.5':
401
+ optionalDependencies:
402
+ '@img/sharp-libvips-linuxmusl-arm64': 1.3.4
403
+ optional: true
404
+
405
+ '@img/sharp-linuxmusl-x64@0.35.5':
406
+ optionalDependencies:
407
+ '@img/sharp-libvips-linuxmusl-x64': 1.3.4
408
+ optional: true
409
+
410
+ '@img/sharp-wasm32@0.35.5':
411
+ dependencies:
412
+ '@emnapi/runtime': 1.11.3
413
+ optional: true
414
+
415
+ '@img/sharp-webcontainers-wasm32@0.35.5':
416
+ dependencies:
417
+ '@img/sharp-wasm32': 0.35.5
418
+ optional: true
419
+
420
+ '@img/sharp-win32-arm64@0.35.5':
421
+ optional: true
422
+
423
+ '@img/sharp-win32-ia32@0.35.5':
424
+ optional: true
425
+
426
+ '@img/sharp-win32-x64@0.35.5':
427
+ optional: true
428
+
429
+ '@jridgewell/resolve-uri@3.1.2': {}
430
+
431
+ '@jridgewell/sourcemap-codec@1.6.0': {}
432
+
433
+ '@jridgewell/trace-mapping@0.3.9':
434
+ dependencies:
435
+ '@jridgewell/resolve-uri': 3.1.2
436
+ '@jridgewell/sourcemap-codec': 1.6.0
437
+
438
+ '@poppinss/colors@4.1.6':
439
+ dependencies:
440
+ kleur: 4.1.5
441
+
442
+ '@poppinss/dumper@0.6.5':
443
+ dependencies:
444
+ '@poppinss/colors': 4.1.6
445
+ '@sindresorhus/is': 7.2.0
446
+ supports-color: 10.2.2
447
+
448
+ '@poppinss/exception@1.2.3': {}
449
+
450
+ '@sindresorhus/is@7.2.0': {}
451
+
452
+ '@speed-highlight/core@1.2.24': {}
453
+
454
+ cookie@1.1.1: {}
455
+
456
+ detect-libc@2.1.2: {}
457
+
458
+ error-stack-parser-es@1.0.5: {}
459
+
460
+ kleur@4.1.5: {}
461
+
462
+ miniflare@5.20260907.0-alpha:
463
+ dependencies:
464
+ '@cspotcode/source-map-support': 0.8.1
465
+ sharp: 0.35.5
466
+ undici: 7.29.1
467
+ workerd: 1.20260907.1
468
+ ws: 8.21.0
469
+ youch: 4.1.0-beta.10
470
+ transitivePeerDependencies:
471
+ - '@types/node'
472
+ - bufferutil
473
+ - utf-8-validate
474
+
475
+ semver@7.8.5: {}
476
+
477
+ sharp@0.35.5:
478
+ dependencies:
479
+ '@img/colour': 1.1.0
480
+ detect-libc: 2.1.2
481
+ semver: 7.8.5
482
+ optionalDependencies:
483
+ '@img/sharp-darwin-arm64': 0.35.5
484
+ '@img/sharp-darwin-x64': 0.35.5
485
+ '@img/sharp-freebsd-wasm32': 0.35.5
486
+ '@img/sharp-libvips-darwin-arm64': 1.3.4
487
+ '@img/sharp-libvips-darwin-x64': 1.3.4
488
+ '@img/sharp-libvips-linux-arm': 1.3.4
489
+ '@img/sharp-libvips-linux-arm64': 1.3.4
490
+ '@img/sharp-libvips-linux-ppc64': 1.3.4
491
+ '@img/sharp-libvips-linux-riscv64': 1.3.4
492
+ '@img/sharp-libvips-linux-s390x': 1.3.4
493
+ '@img/sharp-libvips-linux-x64': 1.3.4
494
+ '@img/sharp-libvips-linuxmusl-arm64': 1.3.4
495
+ '@img/sharp-libvips-linuxmusl-x64': 1.3.4
496
+ '@img/sharp-linux-arm': 0.35.5
497
+ '@img/sharp-linux-arm64': 0.35.5
498
+ '@img/sharp-linux-ppc64': 0.35.5
499
+ '@img/sharp-linux-riscv64': 0.35.5
500
+ '@img/sharp-linux-s390x': 0.35.5
501
+ '@img/sharp-linux-x64': 0.35.5
502
+ '@img/sharp-linuxmusl-arm64': 0.35.5
503
+ '@img/sharp-linuxmusl-x64': 0.35.5
504
+ '@img/sharp-webcontainers-wasm32': 0.35.5
505
+ '@img/sharp-win32-arm64': 0.35.5
506
+ '@img/sharp-win32-ia32': 0.35.5
507
+ '@img/sharp-win32-x64': 0.35.5
508
+
509
+ supports-color@10.2.2: {}
510
+
511
+ tslib@2.8.1:
512
+ optional: true
513
+
514
+ undici@7.29.1: {}
515
+
516
+ workerd@1.20260907.1:
517
+ optionalDependencies:
518
+ '@cloudflare/workerd-darwin-64': 1.20260907.1
519
+ '@cloudflare/workerd-darwin-arm64': 1.20260907.1
520
+ '@cloudflare/workerd-linux-64': 1.20260907.1
521
+ '@cloudflare/workerd-linux-arm64': 1.20260907.1
522
+ '@cloudflare/workerd-windows-64': 1.20260907.1
523
+
524
+ ws@8.21.0: {}
525
+
526
+ youch-core@0.3.3:
527
+ dependencies:
528
+ '@poppinss/exception': 1.2.3
529
+ error-stack-parser-es: 1.0.5
530
+
531
+ youch@4.1.0-beta.10:
532
+ dependencies:
533
+ '@poppinss/colors': 4.1.6
534
+ '@poppinss/dumper': 0.6.5
535
+ '@speed-highlight/core': 1.2.24
536
+ cookie: 1.1.1
537
+ youch-core: 0.3.3
@@ -0,0 +1,84 @@
1
+ # Cloudflare Email Sending adapter
2
+
3
+ `sendCloudflare(config, message, dependencies = {})` implements IF-056-MAIL-v1
4
+ using the structured Email Sending REST endpoint. Import it from `index.mjs` in
5
+ this directory. It uses the shared portable core validation and transport and
6
+ makes one request to
7
+ `https://api.cloudflare.com/client/v4/accounts/{accountId}/email/sending/send`.
8
+ Configuration requires provider `cloudflare`, a mode, a nonempty API token in
9
+ `apiKey`, and an exact 32-hex `accountId`. No endpoint override is accepted.
10
+
11
+ This is Cloudflare **Email Sending**, with its account/domain entitlement and
12
+ sender setup. It does not use the older Email Routing send binding that restricts
13
+ outbound mail to verified destinations. Routing inbound email events are a
14
+ separate module responsibility. Neither a send response nor the provider's
15
+ `delivered` group proves that the owner checked an inbox.
16
+
17
+ The wire body preserves named addresses (REST `{address,name}` objects), to,
18
+ cc, bcc, reply_to, text, HTML, allowed custom/thread headers, and base64 attachment
19
+ bytes. Inline attachments use REST `content_id`, not the binding's `contentId`.
20
+ A content ID on a non-inline attachment is rejected because the structured REST
21
+ attachment schema does not support it. SendGrid-only settings and unknown
22
+ message/config fields are rejected. Message-ID and other platform-controlled or
23
+ unsupported custom headers are rejected before sending. Header byte/count/value
24
+ limits follow the current provider reference. Serialized JSON over 5 MiB is
25
+ rejected locally; final MIME size and provider limits still apply at Cloudflare.
26
+
27
+ The facade must consume `unsubscribe` and supply assembled, validated List
28
+ headers. Direct calls with any remaining own `unsubscribe` property fail with
29
+ `unsubscribe_requires_facade`. Caller message objects and attachment bytes are
30
+ not modified. `deliveryId` remains caller correlation; no Cloudflare duplicate
31
+ suppression or provider receipt is invented from it. No retries or provider
32
+ fallbacks are performed. Applications own durable reconciliation and retry policy.
33
+
34
+ ## Response semantics
35
+
36
+ HTTP success requires JSON `success: true`, an empty `errors` array, a result
37
+ object and complete, non-conflicting recipient groups. Both `delivered` and
38
+ `queued` map to public recipient status `accepted`. `permanent_bounces` and
39
+ `suppressed_recipients` map to `rejected`. The suppression group is optional to
40
+ support the REST guide's documented response without it. Missing, null or unsafe
41
+ message IDs never become a synthetic ID: absent/null returns null; an invalid
42
+ supplied ID makes the response uncertain.
43
+
44
+ All accepted recipients produce overall `accepted`; all rejected recipients
45
+ produce `rejected`. A mix produces `uncertain` with
46
+ `cloudflare_partial_recipient_failure` and explicit recipient results. Missing,
47
+ duplicated, conflicting, malformed or unknown returned recipients produce
48
+ `uncertain`; valid known outcomes remain visible and missing/conflicting requested
49
+ mailboxes are uncertain. Unknown returned addresses never enter the public result.
50
+ One public outcome is returned per unique requested mailbox, even when that
51
+ mailbox occurs repeatedly in the unchanged wire envelope. Matching normalizes
52
+ only domain case and retains local-part case.
53
+
54
+ The response body is bounded to 1 MiB and 15 seconds. HTTP 429 is rate limited,
55
+ 408/redirects/5xx and transport/body failures are uncertain; other 4xx reject.
56
+ A logical `success:false` response yields a fixed error code, with documented
57
+ throttling/transient codes distinguished. Contradictory failure-plus-result
58
+ responses are uncertain. Provider error strings and transport exception text
59
+ never escape. There is no credentialed live test in this unit.
60
+
61
+ ## Provider contracts and checks
62
+
63
+ Inspected 2026-10-06:
64
+
65
+ - [REST Sending guide](https://developers.cloudflare.com/email-service/api/send-emails/rest-api/)
66
+ - [Sending API reference](https://developers.cloudflare.com/api/resources/email_sending/methods/send/)
67
+ - [Header allowlist and limits](https://developers.cloudflare.com/email-service/reference/headers/)
68
+ - [Named REST addresses](https://developers.cloudflare.com/email-service/examples/email-sending/specify-recipients/)
69
+ - [Official generated SDK schema](https://github.com/cloudflare/cloudflare-typescript/blob/main/src/resources/email-sending/email-sending.ts)
70
+ resolves the REST inline `content_id` discriminated attachment schema that the
71
+ API reference's collapsed request body does not display.
72
+
73
+ From the Base repository root:
74
+
75
+ ```sh
76
+ node --test modules/mail/tests/cloudflare/*.test.mjs modules/mail/tests/core/*.test.mjs
77
+ ```
78
+
79
+ Fixtures are exclusively under `modules/mail/tests/cloudflare`. They check the
80
+ actual request protocol, documented and malformed responses, partial delivery,
81
+ cardinality, header/feature rejection, redaction, and no retry/redirect following.
82
+ `tests/assembly/workerd.test.mjs` verifies the facade and doctor sender chain
83
+ in actual workerd; local fixture conformance does not claim hosted delivery or
84
+ mailbox receipt.
@@ -0,0 +1,63 @@
1
+ import { fail } from '../../core/errors.mjs';
2
+ import { parseAddress } from '../../core/validation.mjs';
3
+
4
+ // https://developers.cloudflare.com/email-service/reference/headers/
5
+ const allowed = new Set([
6
+ 'in-reply-to', 'references', 'thread-index', 'thread-topic', 'list-unsubscribe',
7
+ 'list-unsubscribe-post', 'list-id', 'list-archive', 'list-help', 'list-owner',
8
+ 'list-post', 'list-subscribe', 'precedence', 'auto-submitted', 'content-language',
9
+ 'keywords', 'comments', 'importance', 'priority', 'sensitivity', 'organization',
10
+ 'require-recipient-valid-since', 'expires', 'reply-by', 'archived-at',
11
+ ]);
12
+ const values = {
13
+ precedence: ['bulk', 'list', 'junk'],
14
+ 'auto-submitted': ['auto-generated', 'auto-replied', 'auto-notified'],
15
+ importance: ['high', 'normal', 'low'],
16
+ priority: ['normal', 'non-urgent', 'urgent'],
17
+ sensitivity: ['personal', 'private', 'company-confidential'],
18
+ };
19
+
20
+ function unsubscribe(value) {
21
+ const parts = value.split(',').map(part => part.trim());
22
+ let https = false;
23
+ for (const part of parts) {
24
+ if (!/^<[^<>\s]+>$/.test(part)) fail('cloudflare_invalid_unsubscribe_header');
25
+ const uri = part.slice(1, -1);
26
+ if (/%0[ad]/i.test(uri)) fail('cloudflare_invalid_unsubscribe_header');
27
+ if (uri.startsWith('https://')) {
28
+ let url;
29
+ try { url = new URL(uri); } catch { fail('cloudflare_invalid_unsubscribe_header'); }
30
+ if (!url.hostname || url.username || url.password) fail('cloudflare_invalid_unsubscribe_header');
31
+ https = true;
32
+ } else if (uri.startsWith('mailto:')) {
33
+ const address = uri.slice(7);
34
+ const parsed = parseAddress(address);
35
+ if (parsed.name || parsed.email !== address) fail('cloudflare_invalid_unsubscribe_header');
36
+ } else fail('cloudflare_invalid_unsubscribe_header');
37
+ }
38
+ return https;
39
+ }
40
+
41
+ export function validateCloudflareHeaders(headers = {}) {
42
+ const normalized = new Map();
43
+ const encoder = new TextEncoder();
44
+ let bytes = 0;
45
+ let standardCount = 0;
46
+ for (const [name, value] of Object.entries(headers)) {
47
+ const lower = name.toLowerCase();
48
+ const custom = /^x-[a-z0-9_-]+$/i.test(name);
49
+ if (!custom && !allowed.has(lower)) fail('cloudflare_unsupported_header');
50
+ if (name.length > 100) fail('cloudflare_invalid_header_name');
51
+ const size = encoder.encode(value).byteLength;
52
+ if (!value.trim() || size > 2048) fail('cloudflare_invalid_header_value');
53
+ bytes += name.length + 4 + size;
54
+ if (!custom) standardCount++;
55
+ if (values[lower] && !values[lower].includes(value)) fail('cloudflare_invalid_header_value');
56
+ normalized.set(lower, value);
57
+ }
58
+ if (bytes > 16 * 1024 || standardCount > 20) fail('cloudflare_headers_too_large');
59
+ const list = normalized.get('list-unsubscribe');
60
+ const hasHttps = list === undefined ? false : unsubscribe(list);
61
+ const post = normalized.get('list-unsubscribe-post');
62
+ if (post !== undefined && (post !== 'List-Unsubscribe=One-Click' || !hasHttps)) fail('cloudflare_invalid_unsubscribe_header');
63
+ }