@runeditrun/rer 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +157 -2
- package/bin/rer.mjs +3 -0
- package/cli/README.md +243 -0
- package/cli/adapter.mjs +10 -0
- package/cli/ai-local.mjs +65 -0
- package/cli/archive-path.mjs +52 -0
- package/cli/archive-vite.mjs +55 -0
- package/cli/archive.mjs +8 -0
- package/cli/auth-copy.mjs +80 -0
- package/cli/bounded.mjs +70 -0
- package/cli/cache-doctor.mjs +63 -0
- package/cli/container-transfer.mjs +35 -0
- package/cli/container.mjs +62 -0
- package/cli/contract.mjs +25 -0
- package/cli/dependencies.mjs +45 -0
- package/cli/dependency-approval.mjs +33 -0
- package/cli/dependency-doctor.mjs +34 -0
- package/cli/dependency-input.mjs +43 -0
- package/cli/deploy-config.mjs +118 -0
- package/cli/deploy.mjs +37 -0
- package/cli/dev-identity.mjs +80 -0
- package/cli/errors.mjs +14 -0
- package/cli/export.mjs +42 -0
- package/cli/font-cache.mjs +29 -0
- package/cli/hosted-output.mjs +110 -0
- package/cli/independent.mjs +29 -0
- package/cli/inspect.mjs +174 -0
- package/cli/jsonc.mjs +111 -0
- package/cli/lifecycle.mjs +148 -0
- package/cli/local.mjs +100 -0
- package/cli/main.mjs +57 -0
- package/cli/managed-server.mjs +143 -0
- package/cli/node-runtime-cache.mjs +68 -0
- package/cli/node-runtime-discovery.mjs +56 -0
- package/cli/node-runtime-download.mjs +59 -0
- package/cli/node-runtime.mjs +50 -0
- package/cli/output.mjs +22 -0
- package/cli/parse.mjs +77 -0
- package/cli/port.mjs +52 -0
- package/cli/portability-worker.mjs +56 -0
- package/cli/portability.mjs +66 -0
- package/cli/preview-cache.mjs +99 -0
- package/cli/project.mjs +48 -0
- package/cli/release.mjs +24 -0
- package/cli/runtime-front-door.mjs +46 -0
- package/cli/scheduled.mjs +81 -0
- package/cli/server-activity.mjs +12 -0
- package/cli/server-proxy.mjs +93 -0
- package/cli/server-registry.mjs +182 -0
- package/cli/server-resources.mjs +22 -0
- package/cli/settings.mjs +15 -0
- package/cli/setup-answers.mjs +29 -0
- package/cli/setup-input.mjs +113 -0
- package/cli/shared.mjs +7 -0
- package/cli/transfers.mjs +33 -0
- package/cli/version.mjs +36 -0
- package/composition/git-source.mjs +111 -0
- package/edition-authoring/files.mjs +81 -0
- package/edition-authoring/manifest.mjs +65 -0
- package/global/README.md +158 -0
- package/global/checkout.mjs +72 -0
- package/global/cli/command.mjs +13 -0
- package/global/cli/install.mjs +75 -0
- package/global/cli/layout.mjs +45 -0
- package/global/cli/status.mjs +54 -0
- package/global/cli/uninstall.mjs +36 -0
- package/global/delegate.mjs +13 -0
- package/global/launch/capacity.mjs +72 -0
- package/global/launch/dev.mjs +117 -0
- package/global/launch/facts.mjs +94 -0
- package/global/launch/failure.mjs +5 -0
- package/global/launch/local-defaults.mjs +4 -0
- package/global/launch/prepare.mjs +63 -0
- package/global/launch/render.mjs +44 -0
- package/global/launch/state.mjs +106 -0
- package/global/launch/steps.mjs +90 -0
- package/global/launch/stop.mjs +89 -0
- package/global/launch/worker.mjs +62 -0
- package/global/list.mjs +59 -0
- package/global/main.mjs +53 -0
- package/global/package-info.mjs +38 -0
- package/global/registry.mjs +24 -0
- package/global/rer.mjs +29 -0
- package/global/update/archive.mjs +89 -0
- package/global/update/command.mjs +90 -0
- package/global/update/latest.mjs +6 -0
- package/global/update/notice.mjs +58 -0
- package/global/update/registry.mjs +47 -0
- package/global/version.mjs +29 -0
- package/install.sh +144 -0
- package/modules/ai/LICENSE +21 -0
- package/modules/ai/README.md +90 -0
- package/modules/ai/client.mjs +71 -0
- package/modules/ai/config.mjs +39 -0
- package/modules/ai/dev/index.d.mts +6 -0
- package/modules/ai/dev/index.mjs +64 -0
- package/modules/ai/dev/outbox.mjs +33 -0
- package/modules/ai/errors.mjs +28 -0
- package/modules/ai/fake/index.d.mts +3 -0
- package/modules/ai/fake/index.mjs +82 -0
- package/modules/ai/index.d.mts +10 -0
- package/modules/ai/index.mjs +3 -0
- package/modules/ai/package.json +6 -0
- package/modules/container/README.md +156 -0
- package/modules/container/adapters/d1.mjs +34 -0
- package/modules/container/adapters/egress.mjs +40 -0
- package/modules/container/adapters/jobs.mjs +47 -0
- package/modules/container/adapters/objects.mjs +84 -0
- package/modules/container/adapters/retained.mjs +14 -0
- package/modules/container/adapters/sqlite-error.mjs +7 -0
- package/modules/container/adapters/sqlite-worker.mjs +26 -0
- package/modules/container/assets.mjs +14 -0
- package/modules/container/bindings.mjs +1 -0
- package/modules/container/boundary.mjs +38 -0
- package/modules/container/build.mjs +65 -0
- package/modules/container/deploy-input.mjs +17 -0
- package/modules/container/entrypoint.sh +5 -0
- package/modules/container/host.mjs +43 -0
- package/modules/container/ingress.mjs +23 -0
- package/modules/container/lock.mjs +11 -0
- package/modules/container/migrations.mjs +16 -0
- package/modules/container/node-engine.mjs +39 -0
- package/modules/container/portability-schema.mjs +14 -0
- package/modules/container/remote/deploy.py +76 -0
- package/modules/container/remote/files.py +275 -0
- package/modules/container/remote/resources.py +157 -0
- package/modules/container/runner.mjs +10 -0
- package/modules/container/ssh-plan.mjs +44 -0
- package/modules/container/ssh.mjs +63 -0
- package/modules/container/transfer.mjs +27 -0
- package/modules/container/worker-engine.mjs +32 -0
- package/modules/dependencies/README.md +211 -0
- package/modules/dependencies/approval.mjs +51 -0
- package/modules/dependencies/auth.mjs +40 -0
- package/modules/dependencies/authority.mjs +14 -0
- package/modules/dependencies/crypto.mjs +13 -0
- package/modules/dependencies/index.d.mts +23 -0
- package/modules/dependencies/index.mjs +113 -0
- package/modules/dependencies/logout.mjs +42 -0
- package/modules/dependencies/native.mjs +9 -0
- package/modules/dependencies/protocol.mjs +23 -0
- package/modules/dependencies/schema/approval-attempt.sql +3 -0
- package/modules/dependencies/schema/dependencies.sql +15 -0
- package/modules/dependencies/store.mjs +19 -0
- package/modules/deploy-kit/README.md +308 -0
- package/modules/deploy-kit/artifact.mjs +47 -0
- package/modules/deploy-kit/build-modules.mjs +21 -0
- package/modules/deploy-kit/check.mjs +13 -0
- package/modules/deploy-kit/cli.mjs +50 -0
- package/modules/deploy-kit/container-config.mjs +8 -0
- package/modules/deploy-kit/default-stage.mjs +14 -0
- package/modules/deploy-kit/deploy.mjs +80 -0
- package/modules/deploy-kit/health-request.mjs +86 -0
- package/modules/deploy-kit/health.mjs +99 -0
- package/modules/deploy-kit/index.mjs +12 -0
- package/modules/deploy-kit/local-only.mjs +10 -0
- package/modules/deploy-kit/migrations.mjs +48 -0
- package/modules/deploy-kit/owner-cli.mjs +63 -0
- package/modules/deploy-kit/owner.mjs +297 -0
- package/modules/deploy-kit/prepare.mjs +62 -0
- package/modules/deploy-kit/provider.mjs +99 -0
- package/modules/deploy-kit/queue-consumer.mjs +10 -0
- package/modules/deploy-kit/receipt.mjs +16 -0
- package/modules/deploy-kit/render.mjs +47 -0
- package/modules/deploy-kit/resources.mjs +106 -0
- package/modules/deploy-kit/service-grants.mjs +25 -0
- package/modules/deploy-kit/sql-safety.mjs +94 -0
- package/modules/deploy-kit/sql-tokens.mjs +49 -0
- package/modules/deploy-kit/teardown.mjs +100 -0
- package/modules/deploy-kit/templates.mjs +31 -0
- package/modules/deploy-kit/validation.mjs +58 -0
- package/modules/deploy-kit/worker.mjs +105 -0
- package/modules/erasure/CONTRACT.md +90 -0
- package/modules/erasure/README.md +221 -0
- package/modules/erasure/audit.mjs +23 -0
- package/modules/erasure/blobs.mjs +45 -0
- package/modules/erasure/cascade.mjs +91 -0
- package/modules/erasure/completion.mjs +62 -0
- package/modules/erasure/declaration.mjs +51 -0
- package/modules/erasure/fence.mjs +19 -0
- package/modules/erasure/index.d.mts +62 -0
- package/modules/erasure/index.mjs +85 -0
- package/modules/erasure/order.mjs +56 -0
- package/modules/erasure/plan.mjs +121 -0
- package/modules/erasure/rate.mjs +57 -0
- package/modules/erasure/receipt.mjs +32 -0
- package/modules/erasure/root.mjs +21 -0
- package/modules/erasure/schema/erasure-rates.sql +5 -0
- package/modules/erasure/schema/erasure.sql +27 -0
- package/modules/erasure/scope.mjs +29 -0
- package/modules/erasure/sql.mjs +23 -0
- package/modules/erasure/verification.mjs +69 -0
- package/modules/integrations/core/CONTRACT.md +50 -0
- package/modules/integrations/core/README.md +27 -0
- package/modules/integrations/core/crypto.ts +19 -0
- package/modules/integrations/core/database.ts +21 -0
- package/modules/integrations/core/delivery.ts +97 -0
- package/modules/integrations/core/destination.ts +13 -0
- package/modules/integrations/core/index.ts +7 -0
- package/modules/integrations/core/node-transport.ts +72 -0
- package/modules/integrations/core/public-address.ts +57 -0
- package/modules/integrations/core/repository.ts +74 -0
- package/modules/integrations/core/schema.sql +36 -0
- package/modules/integrations/core/sqlite.ts +20 -0
- package/modules/integrations/core/timestamped-body-signature.ts +38 -0
- package/modules/integrations/core/tokens.ts +71 -0
- package/modules/integrations/core/types.ts +52 -0
- package/modules/integrations/core/upgrade-token-usage-context.sql +5 -0
- package/modules/integrations/core/webhook.ts +73 -0
- package/modules/job-queue/README.md +173 -0
- package/modules/job-queue/cli.mjs +64 -0
- package/modules/job-queue/command.mjs +64 -0
- package/modules/job-queue/config.mjs +48 -0
- package/modules/job-queue/identity.mjs +48 -0
- package/modules/job-queue/index.mjs +135 -0
- package/modules/job-queue/membership.mjs +30 -0
- package/modules/job-queue/module.json +10 -0
- package/modules/job-queue/policy.mjs +29 -0
- package/modules/job-queue/processes.mjs +80 -0
- package/modules/job-queue/resources.mjs +37 -0
- package/modules/job-queue/storage.mjs +64 -0
- package/modules/job-queue/supervisor.mjs +30 -0
- package/modules/job-queue/waiting.mjs +16 -0
- package/modules/mail/LICENSE +21 -0
- package/modules/mail/README.md +336 -0
- package/modules/mail/doctor.mjs +81 -0
- package/modules/mail/index.mjs +8 -0
- package/modules/mail/live-proof/README.md +113 -0
- package/modules/mail/live-proof/run.mjs +55 -0
- package/modules/mail/package.json +19 -0
- package/modules/mail/pnpm-lock.yaml +537 -0
- package/modules/mail/src/adapters/cloudflare/README.md +84 -0
- package/modules/mail/src/adapters/cloudflare/headers.mjs +63 -0
- package/modules/mail/src/adapters/cloudflare/index.mjs +47 -0
- package/modules/mail/src/adapters/cloudflare/response.mjs +99 -0
- package/modules/mail/src/adapters/messaging/README.md +92 -0
- package/modules/mail/src/adapters/messaging/contract.mjs +66 -0
- package/modules/mail/src/adapters/messaging/event-schema.mjs +28 -0
- package/modules/mail/src/adapters/messaging/index.mjs +61 -0
- package/modules/mail/src/adapters/messaging/jws.mjs +68 -0
- package/modules/mail/src/adapters/messaging/request.mjs +52 -0
- package/modules/mail/src/adapters/messaging/serialize.mjs +21 -0
- package/modules/mail/src/adapters/resend/README.md +120 -0
- package/modules/mail/src/adapters/resend/index.mjs +22 -0
- package/modules/mail/src/adapters/resend/response.mjs +54 -0
- package/modules/mail/src/adapters/resend/serialize.mjs +46 -0
- package/modules/mail/src/adapters/resend/size.mjs +99 -0
- package/modules/mail/src/adapters/sendgrid/README.md +75 -0
- package/modules/mail/src/adapters/sendgrid/index.mjs +35 -0
- package/modules/mail/src/adapters/sendgrid/serialize.mjs +104 -0
- package/modules/mail/src/core/errors.mjs +9 -0
- package/modules/mail/src/core/transport.mjs +33 -0
- package/modules/mail/src/core/validation.mjs +172 -0
- package/modules/mail/src/development/index.d.mts +37 -0
- package/modules/mail/src/development/index.mjs +35 -0
- package/modules/mail/src/development/outbox.mjs +78 -0
- package/modules/mail/src/development/schema.sql +9 -0
- package/modules/mail/src/development/viewer-html.mjs +42 -0
- package/modules/mail/src/development/viewer.mjs +65 -0
- package/modules/mail/src/doctor/README.md +107 -0
- package/modules/mail/src/doctor/common.mjs +64 -0
- package/modules/mail/src/doctor/dns.mjs +102 -0
- package/modules/mail/src/doctor/index.mjs +28 -0
- package/modules/mail/src/doctor/probe.mjs +66 -0
- package/modules/mail/src/doctor/receive.mjs +81 -0
- package/modules/mail/src/doctor/records.mjs +45 -0
- package/modules/mail/src/events/README.md +268 -0
- package/modules/mail/src/events/d1-schema.sql +25 -0
- package/modules/mail/src/events/d1-storage.mjs +76 -0
- package/modules/mail/src/events/index.mjs +3 -0
- package/modules/mail/src/events/intake.mjs +201 -0
- package/modules/mail/src/events/storage.mjs +52 -0
- package/modules/mail/src/events/verify.mjs +92 -0
- package/modules/mail/src/inbound/README.md +137 -0
- package/modules/mail/src/inbound/bytes.mjs +91 -0
- package/modules/mail/src/inbound/headers.mjs +143 -0
- package/modules/mail/src/inbound/index.mjs +29 -0
- package/modules/mail/src/inbound/mime.mjs +36 -0
- package/modules/mail/src/inbound/multipart.mjs +27 -0
- package/modules/mail/src/inbound/resend-attachment.mjs +43 -0
- package/modules/mail/src/inbound/resend.mjs +54 -0
- package/modules/mail/src/inbound/sendgrid.mjs +60 -0
- package/modules/mail/src/sender.mjs +33 -0
- package/modules/mail/src/sendgrid-email/index.d.mts +33 -0
- package/modules/mail/src/sendgrid-email/index.mjs +86 -0
- package/modules/mail/src/unsubscribe/index.mjs +142 -0
- package/modules/operator-auth/README.md +599 -0
- package/modules/operator-auth/accounts/adapter.mjs +41 -0
- package/modules/operator-auth/accounts/admin.mjs +159 -0
- package/modules/operator-auth/accounts/credentials.mjs +27 -0
- package/modules/operator-auth/accounts/editor-owner.mjs +13 -0
- package/modules/operator-auth/accounts/index.d.mts +9 -0
- package/modules/operator-auth/accounts/index.mjs +9 -0
- package/modules/operator-auth/accounts/native.d.mts +38 -0
- package/modules/operator-auth/accounts/native.mjs +171 -0
- package/modules/operator-auth/accounts/oa.mjs +90 -0
- package/modules/operator-auth/accounts/provider-control.mjs +50 -0
- package/modules/operator-auth/accounts/provider-pin.mjs +14 -0
- package/modules/operator-auth/accounts/roles.mjs +26 -0
- package/modules/operator-auth/accounts/schema/dependency-setup.sql +17 -0
- package/modules/operator-auth/accounts/schema/dev-sessions.sql +22 -0
- package/modules/operator-auth/accounts/schema/domain-rules-step-up.sql +20 -0
- package/modules/operator-auth/accounts/schema/invitation-cancellation.sql +17 -0
- package/modules/operator-auth/accounts/schema/operator-auth.sql +142 -0
- package/modules/operator-auth/accounts/schema/provider-control.sql +30 -0
- package/modules/operator-auth/accounts/schema/provider-pins.sql +6 -0
- package/modules/operator-auth/accounts/settings-page.mjs +4 -0
- package/modules/operator-auth/accounts/store.mjs +246 -0
- package/modules/operator-auth/branding.mjs +66 -0
- package/modules/operator-auth/config.mjs +35 -0
- package/modules/operator-auth/conformance/README.md +81 -0
- package/modules/operator-auth/conformance/index.d.mts +43 -0
- package/modules/operator-auth/conformance/index.mjs +300 -0
- package/modules/operator-auth/conformance/presentation.mjs +57 -0
- package/modules/operator-auth/crypto.mjs +17 -0
- package/modules/operator-auth/dev/badge.mjs +62 -0
- package/modules/operator-auth/dev/index.d.mts +14 -0
- package/modules/operator-auth/dev/index.mjs +137 -0
- package/modules/operator-auth/dev/personas.mjs +17 -0
- package/modules/operator-auth/dev/sign-in-as.d.mts +3 -0
- package/modules/operator-auth/dev/sign-in-as.mjs +25 -0
- package/modules/operator-auth/dev-admission.d.mts +4 -0
- package/modules/operator-auth/dev-admission.mjs +10 -0
- package/modules/operator-auth/dev-gate.mjs +86 -0
- package/modules/operator-auth/docs/README.md +78 -0
- package/modules/operator-auth/docs/native-accounts.md +313 -0
- package/modules/operator-auth/docs/tanstack-start.md +218 -0
- package/modules/operator-auth/docs/vite-spa.md +144 -0
- package/modules/operator-auth/errors.mjs +9 -0
- package/modules/operator-auth/http.mjs +42 -0
- package/modules/operator-auth/identity/admission.mjs +105 -0
- package/modules/operator-auth/identity/after-confirm.mjs +18 -0
- package/modules/operator-auth/identity/email-link/confirmation.mjs +14 -0
- package/modules/operator-auth/identity/email-link/index.d.mts +48 -0
- package/modules/operator-auth/identity/email-link/index.mjs +128 -0
- package/modules/operator-auth/identity/email-link/message.mjs +16 -0
- package/modules/operator-auth/identity/index.d.mts +7 -0
- package/modules/operator-auth/identity/index.mjs +5 -0
- package/modules/operator-auth/identity/oidc/README.md +171 -0
- package/modules/operator-auth/identity/oidc/client-auth.mjs +16 -0
- package/modules/operator-auth/identity/oidc/config.mjs +102 -0
- package/modules/operator-auth/identity/oidc/crypto.mjs +29 -0
- package/modules/operator-auth/identity/oidc/errors.mjs +5 -0
- package/modules/operator-auth/identity/oidc/index.d.mts +33 -0
- package/modules/operator-auth/identity/oidc/index.mjs +287 -0
- package/modules/operator-auth/identity/oidc/jwt.mjs +102 -0
- package/modules/operator-auth/identity/oidc/network.mjs +93 -0
- package/modules/operator-auth/identity/oidc/presets.mjs +26 -0
- package/modules/operator-auth/identity/oidc/schema/oidc.sql +50 -0
- package/modules/operator-auth/identity/oidc/store.mjs +68 -0
- package/modules/operator-auth/identity/principal.mjs +28 -0
- package/modules/operator-auth/index.d.mts +223 -0
- package/modules/operator-auth/index.mjs +11 -0
- package/modules/operator-auth/input.mjs +55 -0
- package/modules/operator-auth/local-cli.mjs +16 -0
- package/modules/operator-auth/page.mjs +34 -0
- package/modules/operator-auth/policy.mjs +20 -0
- package/modules/operator-auth/routes.mjs +91 -0
- package/modules/operator-auth/service.mjs +152 -0
- package/modules/operator-auth/signin/index.mjs +67 -0
- package/modules/owner-claim/README.md +137 -0
- package/modules/owner-claim/idp.mjs +40 -0
- package/modules/owner-claim/index.d.mts +27 -0
- package/modules/owner-claim/index.mjs +39 -0
- package/modules/owner-claim/page.mjs +11 -0
- package/modules/owner-claim/schema/idp.sql +4 -0
- package/modules/owner-claim/schema/owner-claim.sql +18 -0
- package/modules/owner-claim/transaction.mjs +87 -0
- package/modules/owner-claim/verify.mjs +80 -0
- package/modules/portability/README.md +444 -0
- package/modules/portability/bridge.mjs +102 -0
- package/modules/portability/catalogue.mjs +118 -0
- package/modules/portability/cli-options.mjs +38 -0
- package/modules/portability/cli.mjs +56 -0
- package/modules/portability/copies.mjs +68 -0
- package/modules/portability/dev-data.mjs +32 -0
- package/modules/portability/diff.mjs +33 -0
- package/modules/portability/export.mjs +129 -0
- package/modules/portability/files.mjs +65 -0
- package/modules/portability/format.mjs +122 -0
- package/modules/portability/generated.mjs +60 -0
- package/modules/portability/hash.mjs +79 -0
- package/modules/portability/http.mjs +42 -0
- package/modules/portability/import.mjs +185 -0
- package/modules/portability/index.d.mts +58 -0
- package/modules/portability/index.mjs +22 -0
- package/modules/portability/journal.mjs +49 -0
- package/modules/portability/legacy-files.mjs +43 -0
- package/modules/portability/legacy-safety.mjs +27 -0
- package/modules/portability/lines.mjs +36 -0
- package/modules/portability/migration-history.mjs +18 -0
- package/modules/portability/migration-statements.mjs +23 -0
- package/modules/portability/payloads.mjs +52 -0
- package/modules/portability/provider-data.mjs +25 -0
- package/modules/portability/restore-safety.mjs +30 -0
- package/modules/portability/schema/portability.sql +25 -0
- package/modules/portability/storage.mjs +49 -0
- package/modules/release/README.md +212 -0
- package/modules/release/catalogue.mjs +79 -0
- package/modules/release/export.mjs +51 -0
- package/modules/release/produce.mjs +136 -0
- package/modules/release/public-child-transport-state.cjs +29 -0
- package/modules/release/public-child.mjs +71 -0
- package/modules/release/public-git.mjs +21 -0
- package/modules/release/publication-scan.mjs +22 -0
- package/modules/release/publish-handoff.mjs +37 -0
- package/modules/release/source.mjs +71 -0
- package/modules/release/test-summary.mjs +50 -0
- package/onboarding/README.md +163 -0
- package/onboarding/activity.mjs +31 -0
- package/onboarding/adapter-auth.mjs +88 -0
- package/onboarding/adapter-hosting.mjs +35 -0
- package/onboarding/adapter-labels.mjs +13 -0
- package/onboarding/adapter-settings.mjs +129 -0
- package/onboarding/adapter.mjs +238 -0
- package/onboarding/agent-handoff.mjs +9 -0
- package/onboarding/app-processes.mjs +21 -0
- package/onboarding/archive-output.d.mts +3 -0
- package/onboarding/archive-output.mjs +54 -0
- package/onboarding/command-custody.mjs +24 -0
- package/onboarding/command-recovery.mjs +8 -0
- package/onboarding/commands.mjs +166 -0
- package/onboarding/dependency-approval.mjs +36 -0
- package/onboarding/dev-identity.mjs +23 -0
- package/onboarding/email.mjs +24 -0
- package/onboarding/failures.mjs +42 -0
- package/onboarding/input-limits.mjs +7 -0
- package/onboarding/installer-inputs.mjs +24 -0
- package/onboarding/launcher.mjs +34 -0
- package/onboarding/local/build-files.mjs +64 -0
- package/onboarding/local/build.mjs +49 -0
- package/onboarding/local/environment.mjs +30 -0
- package/onboarding/local/files.mjs +35 -0
- package/onboarding/local/operation.mjs +166 -0
- package/onboarding/local/owner.mjs +34 -0
- package/onboarding/local/process-table.mjs +114 -0
- package/onboarding/local/recovery.mjs +79 -0
- package/onboarding/local/state.mjs +31 -0
- package/onboarding/metadata.mjs +7 -0
- package/onboarding/operator-install.mjs +45 -0
- package/onboarding/operator-installer.mjs +39 -0
- package/onboarding/operator-prerequisites.mjs +27 -0
- package/onboarding/package.json +6 -0
- package/onboarding/prefill.mjs +16 -0
- package/onboarding/private-files.mjs +97 -0
- package/onboarding/private.mjs +35 -0
- package/onboarding/process-cleanup.mjs +134 -0
- package/onboarding/process-diagnostics.mjs +91 -0
- package/onboarding/process-scope.mjs +118 -0
- package/onboarding/process-table.mjs +118 -0
- package/onboarding/process-tree.mjs +36 -0
- package/onboarding/production-modules.mjs +22 -0
- package/onboarding/production-options.mjs +40 -0
- package/onboarding/production-plan.mjs +8 -0
- package/onboarding/production-runtime.mjs +30 -0
- package/onboarding/project-vite.mjs +14 -0
- package/onboarding/providers.mjs +289 -0
- package/onboarding/queue.mjs +53 -0
- package/onboarding/queued-entry.mjs +34 -0
- package/onboarding/readiness.mjs +59 -0
- package/onboarding/redaction-jwt.mjs +32 -0
- package/onboarding/redaction.mjs +298 -0
- package/onboarding/schema/SETUP.schema.json +514 -0
- package/onboarding/schema/dependencies.mjs +35 -0
- package/onboarding/schema/json-schema.mjs +202 -0
- package/onboarding/schema/setup-validation.mjs +325 -0
- package/onboarding/secrets.mjs +21 -0
- package/onboarding/server.mjs +188 -0
- package/onboarding/setup-manifest.mjs +116 -0
- package/onboarding/state.mjs +46 -0
- package/onboarding/theme-files.mjs +37 -0
- package/onboarding/theme.mjs +118 -0
- package/onboarding/ui/activity.js +98 -0
- package/onboarding/ui/address-client.mjs +33 -0
- package/onboarding/ui/app.js +377 -0
- package/onboarding/ui/index.html +1 -0
- package/onboarding/ui/model-core.mjs +127 -0
- package/onboarding/ui/model.mjs +5 -0
- package/onboarding/ui/style.css +63 -0
- package/onboarding/ui/theme.css +37 -0
- package/onboarding/ui/workspace-art.js +30 -0
- package/onboarding/wrangler-auth.mjs +43 -0
- package/operations/README.md +246 -0
- package/operations/operations.mjs +168 -0
- package/operations/project-operations.mjs +157 -0
- package/package.json +11 -4
- package/scripts/publish-check/README.md +72 -0
- package/scripts/publish-check/checksum_maps.py +52 -0
- package/scripts/publish-check/cli.py +34 -0
- package/scripts/publish-check/command_arguments.py +51 -0
- package/scripts/publish-check/command_shell_quotes.py +41 -0
- package/scripts/publish-check/command_source_quotes.py +120 -0
- package/scripts/publish-check/content_identities.py +250 -0
- package/scripts/publish-check/copy_identities.py +41 -0
- package/scripts/publish-check/der.py +61 -0
- package/scripts/publish-check/destination.py +117 -0
- package/scripts/publish-check/env_values.py +74 -0
- package/scripts/publish-check/font_licence.py +23 -0
- package/scripts/publish-check/git_history.py +115 -0
- package/scripts/publish-check/github_refs.py +217 -0
- package/scripts/publish-check/gitleaks.py +72 -0
- package/scripts/publish-check/gitleaks.toml +40 -0
- package/scripts/publish-check/history_scan.py +176 -0
- package/scripts/publish-check/hit_location.py +18 -0
- package/scripts/publish-check/hygiene_config.py +42 -0
- package/scripts/publish-check/hygiene_text.py +11 -0
- package/scripts/publish-check/identity-recipe.mjs +54 -0
- package/scripts/publish-check/json_identity.py +79 -0
- package/scripts/publish-check/license-exceptions.json +11 -0
- package/scripts/publish-check/licenses.py +49 -0
- package/scripts/publish-check/policy.py +18 -0
- package/scripts/publish-check/project_identity.py +89 -0
- package/scripts/publish-check/provenance.py +91 -0
- package/scripts/publish-check/provenance_pins.py +33 -0
- package/scripts/publish-check/public_base.py +63 -0
- package/scripts/publish-check/public_hygiene.py +80 -0
- package/scripts/publish-check/publication-config.json +12 -0
- package/scripts/publish-check/publication_config.py +34 -0
- package/scripts/publish-check/report.py +52 -0
- package/scripts/publish-check/repository_commands.py +75 -0
- package/scripts/publish-check/repository_intent.py +52 -0
- package/scripts/publish-check/reviewed.py +41 -0
- package/scripts/publish-check/source_hashes.mjs +6 -0
- package/scripts/publish-check/tree_scan.py +88 -0
- package/scripts/publish-check/trust_bundle.py +87 -0
- 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
|
+
}
|