@noodleseed/one 0.63.0 → 0.64.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.
- package/dist/auth-discovery.d.ts +17 -0
- package/dist/auth-discovery.d.ts.map +1 -0
- package/dist/auth-discovery.js +54 -0
- package/dist/auth-discovery.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/catalog-data-platform-auth.d.ts +7 -0
- package/dist/commands/catalog-data-platform-auth.d.ts.map +1 -0
- package/dist/commands/catalog-data-platform-auth.js +47 -0
- package/dist/commands/catalog-data-platform-auth.js.map +1 -0
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +6 -3
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/docs-mcp.d.ts +3 -3
- package/dist/commands/docs-mcp.js +3 -3
- package/dist/commands/platform-auth-finalization-args.d.ts +13 -0
- package/dist/commands/platform-auth-finalization-args.d.ts.map +1 -0
- package/dist/commands/platform-auth-finalization-args.js +29 -0
- package/dist/commands/platform-auth-finalization-args.js.map +1 -0
- package/dist/commands/platform-auth-migration-args.d.ts +71 -0
- package/dist/commands/platform-auth-migration-args.d.ts.map +1 -0
- package/dist/commands/platform-auth-migration-args.js +320 -0
- package/dist/commands/platform-auth-migration-args.js.map +1 -0
- package/dist/commands/platform-auth-migration-ops.d.ts +3 -0
- package/dist/commands/platform-auth-migration-ops.d.ts.map +1 -0
- package/dist/commands/platform-auth-migration-ops.js +369 -0
- package/dist/commands/platform-auth-migration-ops.js.map +1 -0
- package/dist/commands/project-setup.js +1 -1
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/control-plane.d.ts +0 -11
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js +1 -8
- package/dist/control-plane.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +3 -5
- package/dist/doctor.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +2 -2
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +26 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +105 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js +99 -0
- package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +15 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/main.js +112 -19
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.js +9 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.d.ts +24 -0
- package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.js +88 -0
- package/node_modules/@noodle-borg/service/dist/oauth/authorization-initiation.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/branding.js +3 -2
- package/node_modules/@noodle-borg/service/dist/oauth/branding.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-token.d.ts +5 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent-token.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent-token.js +19 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent-token.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +216 -28
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.js +62 -0
- package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/metadata.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/oauth/metadata.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/metadata.js +20 -0
- package/node_modules/@noodle-borg/service/dist/oauth/metadata.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js +2 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js +58 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.js +49 -0
- package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.js +7 -0
- package/node_modules/@noodle-borg/service/dist/oauth/postgres-time.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +20 -25
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js +105 -196
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js +157 -0
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.js +110 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts +7 -4
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +63 -120
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +19 -6
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store.js +24 -2
- package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/tokens.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.js +8 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-availability.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.d.ts +34 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js +109 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts +22 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js +30 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.d.ts +21 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js +56 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.d.ts +30 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.js +94 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-federation.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.d.ts +33 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.js +27 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-human.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.js +63 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-provider-choice.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.js +40 -0
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-rollout-store.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos-events.d.ts +115 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos-events.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos-events.js +310 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos-events.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos.d.ts +65 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos.js +85 -0
- package/node_modules/@noodle-borg/service/dist/oauth/workos.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts +11 -2
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/personal-workspace.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/personal-workspace.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/personal-workspace.js +8 -2
- package/node_modules/@noodle-borg/service/dist/personal-workspace.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts +67 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.js +54 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-configuration.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.js +61 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-frozen-candidate-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.d.ts +32 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.js +231 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-legacy-sources-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.d.ts +29 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.js +350 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.d.ts +50 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.js +239 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-local-subjects-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.d.ts +66 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.js +77 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-paging.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.d.ts +40 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.js +355 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.d.ts +41 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.js +230 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-progress-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.js +126 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.js +86 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-sources.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.d.ts +42 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.js +368 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.d.ts +86 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.js +474 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-runs-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.js +435 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration.d.ts +202 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration.js +313 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-migration.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.d.ts +48 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.js +158 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-batches.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.d.ts +43 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.js +92 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-effects.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.d.ts +31 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.js +94 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-operation-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.d.ts +102 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.js +2 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-ports.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.js +367 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.d.ts +10 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.js +37 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-remote-status.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.js +156 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-rollout.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.js +162 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.d.ts +92 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.js +271 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.js +67 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-state-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.js +47 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts +1569 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator.js +274 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-operator.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.d.ts +41 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.js +163 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.d.ts +34 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.js +274 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.js +120 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.d.ts +79 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.js +88 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-remote-verification.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.d.ts +6 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.js +38 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollback-guard.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.d.ts +61 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.js +292 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.d.ts +19 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.js +121 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-readiness-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts +119 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.js +194 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-rollout-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js +93 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.d.ts +32 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.js +68 -0
- package/node_modules/@noodle-borg/service/dist/platform-auth-service-bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.js +92 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-maintenance.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.d.ts +23 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.js +231 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.js +399 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-schema-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.js +25 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-enqueue.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.js +74 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-evidence-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.d.ts +19 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.js +249 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.d.ts +34 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.js +275 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync-recovery-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync.d.ts +98 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync.js +179 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity-sync.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity.d.ts +110 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity.js +312 -0
- package/node_modules/@noodle-borg/service/dist/platform-identity.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.d.ts +6 -0
- package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js +36 -0
- package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/billing-read.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/billing-read.js +3 -9
- package/node_modules/@noodle-borg/service/dist/routes/billing-read.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-run-claim.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-run-claim.js +3 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-run-claim.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.js +40 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.js +158 -0
- package/node_modules/@noodle-borg/service/dist/routes/platform-auth-migration.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/serve-options.d.ts +21 -3
- package/node_modules/@noodle-borg/service/dist/serve-options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +61 -146
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +3 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +17 -29
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js +60 -19
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +1 -2
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +0 -40
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.d.ts +5 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.js +176 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-personal-workspace.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +43 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +2 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/workos-directory.d.ts +71 -0
- package/node_modules/@noodle-borg/service/dist/workos-directory.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/workos-directory.js +175 -0
- package/node_modules/@noodle-borg/service/dist/workos-directory.js.map +1 -0
- package/node_modules/@noodle-borg/service/package.json +1 -0
- package/node_modules/@workos-inc/node/LICENSE +21 -0
- package/node_modules/@workos-inc/node/README.md +140 -0
- package/node_modules/@workos-inc/node/lib/factory-B8vTFojy.d.cts +9727 -0
- package/node_modules/@workos-inc/node/lib/factory-B8vTFojy.d.mts +9727 -0
- package/node_modules/@workos-inc/node/lib/factory-CoKXdPX2.cjs +8426 -0
- package/node_modules/@workos-inc/node/lib/factory-CoKXdPX2.cjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/factory-MKPb5Egh.mjs +8241 -0
- package/node_modules/@workos-inc/node/lib/factory-MKPb5Egh.mjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/index.cjs +449 -0
- package/node_modules/@workos-inc/node/lib/index.cjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/index.d.cts +478 -0
- package/node_modules/@workos-inc/node/lib/index.d.mts +478 -0
- package/node_modules/@workos-inc/node/lib/index.mjs +394 -0
- package/node_modules/@workos-inc/node/lib/index.mjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/index.worker.cjs +60 -0
- package/node_modules/@workos-inc/node/lib/index.worker.cjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/index.worker.d.cts +16 -0
- package/node_modules/@workos-inc/node/lib/index.worker.d.mts +16 -0
- package/node_modules/@workos-inc/node/lib/index.worker.mjs +35 -0
- package/node_modules/@workos-inc/node/lib/index.worker.mjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/webapi-BgpV54gi.mjs +3224 -0
- package/node_modules/@workos-inc/node/lib/webapi-BgpV54gi.mjs.map +1 -0
- package/node_modules/@workos-inc/node/lib/webapi-BzGFatFp.cjs +3271 -0
- package/node_modules/@workos-inc/node/lib/webapi-BzGFatFp.cjs.map +1 -0
- package/node_modules/@workos-inc/node/package.json +96 -0
- package/package.json +2 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { loadBoundFrozenImportCandidate } from './platform-auth-frozen-candidate-postgres.js';
|
|
3
|
+
import { PlatformAuthMigrationError, } from './platform-auth-migration.js';
|
|
4
|
+
import { candidateDigest, migrationHash as hash, PostgresPlatformAuthMigrationRunStore, } from './platform-auth-migration-runs-postgres.js';
|
|
5
|
+
import { normalizePlatformIdentityEmail } from './platform-identity.js';
|
|
6
|
+
/** Durable migration ledger adapter. It deliberately commits claims before calling an upstream directory. */
|
|
7
|
+
export class PostgresPlatformAuthMigrationStore {
|
|
8
|
+
#pool;
|
|
9
|
+
#runs;
|
|
10
|
+
constructor(pool) {
|
|
11
|
+
this.#pool = pool;
|
|
12
|
+
this.#runs = new PostgresPlatformAuthMigrationRunStore(pool);
|
|
13
|
+
}
|
|
14
|
+
createRun(input) {
|
|
15
|
+
return this.#runs.createRun(input);
|
|
16
|
+
}
|
|
17
|
+
listFrozenCandidates(runId) {
|
|
18
|
+
return this.#runs.listFrozenCandidates(runId);
|
|
19
|
+
}
|
|
20
|
+
listFrozenCandidateBatch(runId, options) {
|
|
21
|
+
return this.#runs.listFrozenCandidateBatch(runId, options);
|
|
22
|
+
}
|
|
23
|
+
completeRun(runId) {
|
|
24
|
+
return this.#runs.completeRun(runId);
|
|
25
|
+
}
|
|
26
|
+
async recordBackfill(input) {
|
|
27
|
+
if (input.source.provider !== 'google' ||
|
|
28
|
+
input.source.subject !== input.principalId ||
|
|
29
|
+
input.runId === undefined ||
|
|
30
|
+
input.verifiedEmail === undefined)
|
|
31
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
32
|
+
const connection = this.#pool.connect === undefined ? this.#pool : await this.#pool.connect();
|
|
33
|
+
try {
|
|
34
|
+
await connection.query('BEGIN');
|
|
35
|
+
await connection.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [
|
|
36
|
+
`platform-backfill-source:${hash(input.source)}`,
|
|
37
|
+
]);
|
|
38
|
+
await connection.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [
|
|
39
|
+
`platform-backfill-principal:${hash(input.principalId)}`,
|
|
40
|
+
]);
|
|
41
|
+
const email = normalizePlatformIdentityEmail(input.verifiedEmail);
|
|
42
|
+
await connection.query('SELECT pg_advisory_xact_lock(hashtextextended($1, 0))', [
|
|
43
|
+
`platform-backfill-email:${hash(email)}`,
|
|
44
|
+
]);
|
|
45
|
+
const running = await connection.query(`SELECT inventory_run_id, inventory_checksum, release_sha,
|
|
46
|
+
workos_realm_fingerprint, lineage_checksum
|
|
47
|
+
FROM identity_migration_runs
|
|
48
|
+
WHERE id = $1 AND kind = 'backfill' AND state = 'running' FOR UPDATE`, [input.runId]);
|
|
49
|
+
const run = running.rows[0];
|
|
50
|
+
if (run === undefined ||
|
|
51
|
+
run.inventory_run_id === null ||
|
|
52
|
+
run.inventory_checksum === null ||
|
|
53
|
+
run.workos_realm_fingerprint === null ||
|
|
54
|
+
run.lineage_checksum === null)
|
|
55
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
56
|
+
const frozen = await connection.query(`SELECT candidate.principal_id, candidate.normalized_email, candidate.email_fingerprint,
|
|
57
|
+
candidate.provenance, candidate.blocker_codes, candidate.source_fingerprint,
|
|
58
|
+
candidate.candidate_fingerprint, candidate.source_realm,
|
|
59
|
+
inventory.frozen_checksum, inventory.release_sha,
|
|
60
|
+
inventory.workos_realm_fingerprint,
|
|
61
|
+
inventory.source_fingerprint AS source_set_fingerprint
|
|
62
|
+
FROM platform_auth_inventory_candidates candidate
|
|
63
|
+
JOIN identity_migration_runs inventory ON inventory.id = candidate.migration_run_id
|
|
64
|
+
WHERE candidate.migration_run_id = $1 AND candidate.source_subject = $2
|
|
65
|
+
AND inventory.kind = 'inventory' AND inventory.state = 'completed'
|
|
66
|
+
FOR UPDATE`, [run.inventory_run_id, input.source.subject]);
|
|
67
|
+
const candidate = frozen.rows[0];
|
|
68
|
+
if (candidate === undefined ||
|
|
69
|
+
candidate.frozen_checksum !== run.inventory_checksum ||
|
|
70
|
+
candidate.release_sha !== run.release_sha ||
|
|
71
|
+
candidate.source_realm !== input.source.realm ||
|
|
72
|
+
candidate.workos_realm_fingerprint !== run.workos_realm_fingerprint ||
|
|
73
|
+
candidate.source_set_fingerprint === null ||
|
|
74
|
+
run.lineage_checksum !==
|
|
75
|
+
hash({
|
|
76
|
+
inventoryRunHash: hash(run.inventory_run_id),
|
|
77
|
+
inventoryChecksum: run.inventory_checksum,
|
|
78
|
+
candidateSetChecksum: candidate.source_set_fingerprint,
|
|
79
|
+
workosRealmFingerprint: run.workos_realm_fingerprint,
|
|
80
|
+
releaseSha: run.release_sha,
|
|
81
|
+
}) ||
|
|
82
|
+
candidate.normalized_email !== email ||
|
|
83
|
+
candidate.email_fingerprint !== hash(email) ||
|
|
84
|
+
candidate.blocker_codes.length !== 0 ||
|
|
85
|
+
candidate.candidate_fingerprint !== candidateDigest(candidate))
|
|
86
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
87
|
+
const existing = await connection.query(`SELECT principal_id, source_fingerprint, verified_email_fingerprint FROM identity_backfill_ledger
|
|
88
|
+
WHERE source_provider = $1 AND source_realm = $2 AND source_subject = $3`, [input.source.provider, input.source.realm, input.source.subject]);
|
|
89
|
+
if (existing.rows[0] !== undefined && existing.rows[0].principal_id !== input.principalId)
|
|
90
|
+
throw new PlatformAuthMigrationError('source_remap_forbidden');
|
|
91
|
+
if (existing.rows[0] !== undefined) {
|
|
92
|
+
// Verified-email evidence is immutable migration lineage. A recovery needs a separately
|
|
93
|
+
// audited dual-auth/manual-evidence ceremony; a fresh inventory must not reinterpret it.
|
|
94
|
+
if (existing.rows[0].source_fingerprint !== hash(input.source) ||
|
|
95
|
+
existing.rows[0].verified_email_fingerprint !==
|
|
96
|
+
hash(normalizePlatformIdentityEmail(input.verifiedEmail)))
|
|
97
|
+
throw new PlatformAuthMigrationError('source_remap_forbidden');
|
|
98
|
+
}
|
|
99
|
+
await connection.query(`INSERT INTO platform_principals
|
|
100
|
+
(principal_id, status, billing_identity_issuer, billing_subject)
|
|
101
|
+
VALUES ($1, 'active', 'https://accounts.google.com', $1)
|
|
102
|
+
ON CONFLICT (principal_id) DO NOTHING`, [input.principalId]);
|
|
103
|
+
const principal = await connection.query('SELECT status, billing_identity_issuer, billing_subject FROM platform_principals WHERE principal_id = $1 FOR UPDATE', [input.principalId]);
|
|
104
|
+
if (principal.rows[0] === undefined ||
|
|
105
|
+
principal.rows[0].billing_identity_issuer !== 'https://accounts.google.com' ||
|
|
106
|
+
principal.rows[0].billing_subject !== input.source.subject)
|
|
107
|
+
throw new PlatformAuthMigrationError('source_remap_forbidden');
|
|
108
|
+
if (principal.rows[0].status !== 'active')
|
|
109
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
110
|
+
await connection.query(`INSERT INTO platform_identity_links (provider, realm, external_id, principal_id)
|
|
111
|
+
VALUES ('google', $1, $2, $3)
|
|
112
|
+
ON CONFLICT (provider, realm, external_id) DO NOTHING`, [input.source.realm, input.source.subject, input.principalId]);
|
|
113
|
+
const link = await connection.query(`SELECT principal_id, disabled_at FROM platform_identity_links
|
|
114
|
+
WHERE provider = 'google' AND realm = $1 AND external_id = $2 FOR UPDATE`, [input.source.realm, input.source.subject]);
|
|
115
|
+
if (link.rows[0]?.principal_id !== input.principalId || link.rows[0].disabled_at !== null)
|
|
116
|
+
throw new PlatformAuthMigrationError('source_remap_forbidden');
|
|
117
|
+
await connection.query(`INSERT INTO platform_verified_emails
|
|
118
|
+
(principal_id, original_email, normalized_email, provider, realm)
|
|
119
|
+
VALUES ($1, $2, $3, 'google', $4)
|
|
120
|
+
ON CONFLICT (principal_id, normalized_email, provider, realm) DO NOTHING`, [input.principalId, input.verifiedEmail, email, input.source.realm]);
|
|
121
|
+
const emailEvidence = await connection.query(`SELECT
|
|
122
|
+
(SELECT count(*)::text FROM platform_verified_emails
|
|
123
|
+
WHERE principal_id = $1 AND provider = 'google' AND realm = $2
|
|
124
|
+
AND status = 'active') AS current_google,
|
|
125
|
+
(SELECT count(*)::text FROM platform_verified_emails
|
|
126
|
+
WHERE principal_id = $1 AND provider = 'google' AND realm = $2
|
|
127
|
+
AND status = 'active' AND normalized_email = $3) AS exact,
|
|
128
|
+
(SELECT count(DISTINCT principal_id)::text FROM platform_verified_emails
|
|
129
|
+
WHERE status = 'active' AND normalized_email = $3) AS global_principals`, [input.principalId, input.source.realm, email]);
|
|
130
|
+
if (Number(emailEvidence.rows[0]?.current_google ?? 0) !== 1 ||
|
|
131
|
+
Number(emailEvidence.rows[0]?.exact ?? 0) !== 1 ||
|
|
132
|
+
Number(emailEvidence.rows[0]?.global_principals ?? 0) !== 1)
|
|
133
|
+
throw new PlatformAuthMigrationError('source_remap_forbidden');
|
|
134
|
+
if (existing.rows[0] !== undefined) {
|
|
135
|
+
await connection.query('COMMIT');
|
|
136
|
+
return 'already_backfilled';
|
|
137
|
+
}
|
|
138
|
+
const inserted = await connection.query(`INSERT INTO identity_backfill_ledger
|
|
139
|
+
(source_provider, source_realm, source_subject, principal_id, migration_run_id, source_fingerprint, verified_email_fingerprint)
|
|
140
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
|
141
|
+
ON CONFLICT (source_provider, source_realm, source_subject) DO NOTHING RETURNING principal_id`, [
|
|
142
|
+
input.source.provider,
|
|
143
|
+
input.source.realm,
|
|
144
|
+
input.source.subject,
|
|
145
|
+
input.principalId,
|
|
146
|
+
input.runId ?? null,
|
|
147
|
+
hash(input.source),
|
|
148
|
+
hash(input.verifiedEmail === undefined
|
|
149
|
+
? ''
|
|
150
|
+
: normalizePlatformIdentityEmail(input.verifiedEmail)),
|
|
151
|
+
]);
|
|
152
|
+
if (inserted.rows[0] !== undefined) {
|
|
153
|
+
await connection.query('COMMIT');
|
|
154
|
+
return 'backfilled';
|
|
155
|
+
}
|
|
156
|
+
const raced = await connection.query(`SELECT principal_id FROM identity_backfill_ledger
|
|
157
|
+
WHERE source_provider = $1 AND source_realm = $2 AND source_subject = $3`, [input.source.provider, input.source.realm, input.source.subject]);
|
|
158
|
+
if (raced.rows[0]?.principal_id !== input.principalId)
|
|
159
|
+
throw new PlatformAuthMigrationError('source_remap_forbidden');
|
|
160
|
+
await connection.query('COMMIT');
|
|
161
|
+
return 'already_backfilled';
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
await connection.query('ROLLBACK').catch(() => undefined);
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
connection.release?.();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async claimImport(input, options = {}) {
|
|
172
|
+
const email = normalizePlatformIdentityEmail(input.verifiedEmail);
|
|
173
|
+
if (input.principalId.length === 0 ||
|
|
174
|
+
input.principalId.length > 64 ||
|
|
175
|
+
input.realm.trim().length === 0)
|
|
176
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
177
|
+
const leaseToken = randomUUID();
|
|
178
|
+
const connection = this.#pool.connect === undefined ? this.#pool : await this.#pool.connect();
|
|
179
|
+
try {
|
|
180
|
+
await connection.query('BEGIN ISOLATION LEVEL REPEATABLE READ');
|
|
181
|
+
await connection.query('LOCK TABLE platform_principals, platform_identity_links, platform_verified_emails IN SHARE MODE');
|
|
182
|
+
const runResult = await connection.query(`SELECT kind, release_sha, workos_realm_fingerprint, inventory_run_id,
|
|
183
|
+
inventory_checksum, lineage_checksum
|
|
184
|
+
FROM identity_migration_runs
|
|
185
|
+
WHERE id = $1 AND kind IN ('import', 'reconcile') AND state = 'running' FOR UPDATE`, [input.runId]);
|
|
186
|
+
const run = runResult.rows[0];
|
|
187
|
+
const realm = input.realm.trim();
|
|
188
|
+
if (run === undefined ||
|
|
189
|
+
run.inventory_run_id === null ||
|
|
190
|
+
run.inventory_checksum === null ||
|
|
191
|
+
run.lineage_checksum === null ||
|
|
192
|
+
run.workos_realm_fingerprint !== hash(realm))
|
|
193
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
194
|
+
const candidate = await loadBoundFrozenImportCandidate(connection, {
|
|
195
|
+
inventoryRunId: run.inventory_run_id,
|
|
196
|
+
inventoryChecksum: run.inventory_checksum,
|
|
197
|
+
releaseSha: run.release_sha,
|
|
198
|
+
workosRealmFingerprint: run.workos_realm_fingerprint,
|
|
199
|
+
lineageChecksum: run.lineage_checksum,
|
|
200
|
+
principalId: input.principalId,
|
|
201
|
+
normalizedEmail: email,
|
|
202
|
+
});
|
|
203
|
+
const principal = await connection.query(`SELECT status, billing_identity_issuer, billing_subject
|
|
204
|
+
FROM platform_principals WHERE principal_id = $1`, [input.principalId]);
|
|
205
|
+
const exactPrincipal = principal.rows[0];
|
|
206
|
+
if (exactPrincipal?.status !== 'active' ||
|
|
207
|
+
exactPrincipal.billing_identity_issuer !== 'https://accounts.google.com' ||
|
|
208
|
+
exactPrincipal.billing_subject !== input.principalId)
|
|
209
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
210
|
+
const links = await connection.query(`SELECT count(*) FILTER (WHERE disabled_at IS NULL)::text AS enabled,
|
|
211
|
+
count(*) FILTER (WHERE disabled_at IS NULL AND realm = $2
|
|
212
|
+
AND external_id = $1)::text AS exact
|
|
213
|
+
FROM platform_identity_links
|
|
214
|
+
WHERE provider = 'google' AND principal_id = $1`, [input.principalId, candidate.source_realm]);
|
|
215
|
+
if (Number(links.rows[0]?.enabled ?? 0) !== 1 || Number(links.rows[0]?.exact ?? 0) !== 1)
|
|
216
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
217
|
+
const emails = await connection.query(`SELECT
|
|
218
|
+
(SELECT count(*)::text FROM platform_verified_emails
|
|
219
|
+
WHERE principal_id = $1 AND provider = 'google' AND realm = $2
|
|
220
|
+
AND status = 'active') AS current_google,
|
|
221
|
+
(SELECT count(*)::text FROM platform_verified_emails
|
|
222
|
+
WHERE principal_id = $1 AND provider = 'google' AND realm = $2
|
|
223
|
+
AND status = 'active' AND normalized_email = $3) AS exact,
|
|
224
|
+
(SELECT count(DISTINCT principal_id)::text FROM platform_verified_emails
|
|
225
|
+
WHERE status = 'active' AND normalized_email = $3) AS global_principals`, [input.principalId, candidate.source_realm, email]);
|
|
226
|
+
if (Number(emails.rows[0]?.current_google ?? 0) !== 1 ||
|
|
227
|
+
Number(emails.rows[0]?.exact ?? 0) !== 1 ||
|
|
228
|
+
Number(emails.rows[0]?.global_principals ?? 0) !== 1)
|
|
229
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
230
|
+
const existing = await connection.query(`SELECT ledger.migration_run_id, ledger.realm, ledger.normalized_email,
|
|
231
|
+
ledger.email_fingerprint, ledger.external_id, ledger.state, ledger.lease_token,
|
|
232
|
+
ledger.lease_expires_at, ledger.retry_at, ledger.attempt_count,
|
|
233
|
+
prior.lineage_checksum
|
|
234
|
+
FROM workos_import_ledger ledger
|
|
235
|
+
LEFT JOIN identity_migration_runs prior ON prior.id = ledger.migration_run_id
|
|
236
|
+
WHERE ledger.principal_id = $1 FOR UPDATE OF ledger`, [input.principalId]);
|
|
237
|
+
const previous = existing.rows[0];
|
|
238
|
+
if (previous !== undefined &&
|
|
239
|
+
(previous.realm !== realm ||
|
|
240
|
+
previous.normalized_email !== email ||
|
|
241
|
+
previous.email_fingerprint !== hash(email) ||
|
|
242
|
+
previous.external_id !== input.principalId ||
|
|
243
|
+
(previous.migration_run_id !== input.runId &&
|
|
244
|
+
(run.kind !== 'reconcile' || previous.lineage_checksum !== run.lineage_checksum))))
|
|
245
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
246
|
+
if (previous !== undefined &&
|
|
247
|
+
(previous.state === 'linked' ||
|
|
248
|
+
((previous.state === 'blocked' || previous.state === 'failed') &&
|
|
249
|
+
options.terminalRetry !== 'explicit_operator_reconcile')))
|
|
250
|
+
throw new PlatformAuthMigrationError('stale_lease');
|
|
251
|
+
const now = Date.now();
|
|
252
|
+
if (previous !== undefined &&
|
|
253
|
+
((previous.lease_token !== null &&
|
|
254
|
+
(previous.lease_expires_at === null || previous.lease_expires_at.getTime() > now)) ||
|
|
255
|
+
(previous.retry_at !== null && previous.retry_at.getTime() > now)))
|
|
256
|
+
throw new PlatformAuthMigrationError('stale_lease');
|
|
257
|
+
const attempt = (previous?.attempt_count ?? 0) + 1;
|
|
258
|
+
if (previous === undefined) {
|
|
259
|
+
await connection.query(`INSERT INTO workos_import_ledger
|
|
260
|
+
(principal_id, migration_run_id, realm, normalized_email, email_fingerprint,
|
|
261
|
+
external_id, state, lease_token, lease_expires_at, attempt_count, retry_at, updated_at)
|
|
262
|
+
VALUES ($1, $2, $3, $4, $5, $1, 'pending', $6,
|
|
263
|
+
now() + interval '30 seconds', 1, NULL, now())`, [input.principalId, input.runId, realm, email, hash(email), leaseToken]);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
await connection.query(`UPDATE workos_import_ledger
|
|
267
|
+
SET migration_run_id = $2, lease_token = $3,
|
|
268
|
+
lease_expires_at = now() + interval '30 seconds',
|
|
269
|
+
attempt_count = $4, retry_at = NULL, updated_at = now()
|
|
270
|
+
WHERE principal_id = $1`, [input.principalId, input.runId, leaseToken, attempt]);
|
|
271
|
+
}
|
|
272
|
+
await connection.query('COMMIT');
|
|
273
|
+
return {
|
|
274
|
+
key: `${input.runId}\0${realm}\0${input.principalId}`,
|
|
275
|
+
leaseToken,
|
|
276
|
+
attempt,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
await connection.query('ROLLBACK').catch(() => undefined);
|
|
281
|
+
if (postgresCode(error) === '23505')
|
|
282
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
connection.release?.();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
async finishImport(lease, result) {
|
|
290
|
+
const { runId, realm, principalId } = parseLeaseKey(lease.key);
|
|
291
|
+
if (result.state === 'linked' && result.remoteUserId === undefined)
|
|
292
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
293
|
+
if (result.retryAt !== undefined &&
|
|
294
|
+
(result.state !== 'reconcile_required' || !Number.isFinite(Date.parse(result.retryAt))))
|
|
295
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
296
|
+
if (result.state === 'linked') {
|
|
297
|
+
const conflict = await this.#pool.query(`SELECT principal_id FROM platform_identity_links
|
|
298
|
+
WHERE provider = 'workos' AND realm = $1 AND external_id = $2`, [realm, result.remoteUserId]);
|
|
299
|
+
if (conflict.rows[0] !== undefined && conflict.rows[0].principal_id !== principalId)
|
|
300
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
301
|
+
const principalRealm = await this.#pool.query(`SELECT external_id FROM platform_identity_links
|
|
302
|
+
WHERE provider = 'workos' AND realm = $1 AND principal_id = $2`, [realm, principalId]);
|
|
303
|
+
if (principalRealm.rows[0] !== undefined &&
|
|
304
|
+
principalRealm.rows[0].external_id !== result.remoteUserId)
|
|
305
|
+
throw new PlatformAuthMigrationError('reconciliation_drift');
|
|
306
|
+
}
|
|
307
|
+
const row = await this.#pool.query(`WITH existing_link AS (
|
|
308
|
+
SELECT principal_id FROM platform_identity_links
|
|
309
|
+
WHERE provider = 'workos' AND realm = $2 AND external_id = $6 AND principal_id = $3
|
|
310
|
+
), linked AS (
|
|
311
|
+
INSERT INTO platform_identity_links (provider, realm, external_id, principal_id)
|
|
312
|
+
SELECT 'workos', $2, $6, $3 WHERE $5 = 'linked' AND EXISTS (
|
|
313
|
+
SELECT 1 FROM workos_import_ledger
|
|
314
|
+
WHERE principal_id = $3 AND realm = $2 AND migration_run_id = $1
|
|
315
|
+
AND lease_token = $4 AND attempt_count = $7 AND lease_expires_at > now()
|
|
316
|
+
)
|
|
317
|
+
ON CONFLICT (provider, realm, external_id) DO NOTHING
|
|
318
|
+
RETURNING principal_id
|
|
319
|
+
), link_ok AS (
|
|
320
|
+
SELECT principal_id FROM existing_link UNION ALL SELECT principal_id FROM linked
|
|
321
|
+
), updated AS (
|
|
322
|
+
UPDATE workos_import_ledger
|
|
323
|
+
SET state = $5, remote_user_id = $6,
|
|
324
|
+
linked_at = CASE WHEN $5 = 'linked' THEN now() ELSE linked_at END,
|
|
325
|
+
outcome_code = $5,
|
|
326
|
+
retry_at = CASE WHEN $5 = 'reconcile_required'
|
|
327
|
+
THEN COALESCE($10::timestamptz, now()) ELSE NULL END,
|
|
328
|
+
lease_token = NULL, lease_expires_at = NULL, updated_at = now()
|
|
329
|
+
WHERE principal_id = $3 AND realm = $2 AND migration_run_id = $1
|
|
330
|
+
AND lease_token = $4 AND attempt_count = $7 AND lease_expires_at > now()
|
|
331
|
+
AND ($5 <> 'linked' OR EXISTS (SELECT 1 FROM link_ok WHERE principal_id = $3))
|
|
332
|
+
RETURNING principal_id, state, attempt_count, email_fingerprint, external_id, retry_at
|
|
333
|
+
) INSERT INTO workos_import_attempt_evidence
|
|
334
|
+
(principal_id, principal_fingerprint, migration_run_id, attempt, outcome_code,
|
|
335
|
+
external_id_fingerprint, email_fingerprint, retry_at)
|
|
336
|
+
SELECT NULL, $9, $1, attempt_count, $5, $8, email_fingerprint, retry_at FROM updated
|
|
337
|
+
RETURNING outcome_code AS state`, [
|
|
338
|
+
runId,
|
|
339
|
+
realm,
|
|
340
|
+
principalId,
|
|
341
|
+
lease.leaseToken,
|
|
342
|
+
result.state,
|
|
343
|
+
result.remoteUserId ?? null,
|
|
344
|
+
lease.attempt,
|
|
345
|
+
hash(principalId),
|
|
346
|
+
hash(principalId),
|
|
347
|
+
result.retryAt ?? null,
|
|
348
|
+
]);
|
|
349
|
+
if (row.rows[0] === undefined)
|
|
350
|
+
throw new PlatformAuthMigrationError('stale_lease');
|
|
351
|
+
return { state: row.rows[0].state };
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
function postgresCode(error) {
|
|
355
|
+
return typeof error === 'object' && error !== null && 'code' in error
|
|
356
|
+
? String(error.code)
|
|
357
|
+
: undefined;
|
|
358
|
+
}
|
|
359
|
+
function parseLeaseKey(key) {
|
|
360
|
+
const [runId, realm, principalId, extra] = key.split('\0');
|
|
361
|
+
if (runId === undefined ||
|
|
362
|
+
realm === undefined ||
|
|
363
|
+
principalId === undefined ||
|
|
364
|
+
extra !== undefined)
|
|
365
|
+
throw new PlatformAuthMigrationError('invalid_import');
|
|
366
|
+
return { runId, realm, principalId };
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=platform-auth-migration-postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth-migration-postgres.js","sourceRoot":"","sources":["../src/platform-auth-migration-postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { PlatformIdentityQueryable } from './platform-identity-postgres.js';
|
|
2
|
+
export type PlatformAuthMigrationRunKind = 'inventory' | 'backfill' | 'import' | 'reconcile';
|
|
3
|
+
export type PlatformAuthMigrationRunInput = {
|
|
4
|
+
readonly runId: string;
|
|
5
|
+
readonly releaseSha: string;
|
|
6
|
+
readonly workosRealm: string;
|
|
7
|
+
readonly actorFingerprint: string;
|
|
8
|
+
} & ({
|
|
9
|
+
readonly kind: 'inventory';
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'backfill' | 'import' | 'reconcile';
|
|
12
|
+
readonly inventoryRunId: string;
|
|
13
|
+
readonly inventoryChecksum: string;
|
|
14
|
+
});
|
|
15
|
+
export interface PlatformAuthMigrationRun {
|
|
16
|
+
readonly runId: string;
|
|
17
|
+
readonly kind: PlatformAuthMigrationRunKind;
|
|
18
|
+
readonly state: 'running' | 'completed';
|
|
19
|
+
readonly lineageChecksum: string;
|
|
20
|
+
readonly inventoryRunId?: string;
|
|
21
|
+
readonly inventoryChecksum?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PlatformAuthFrozenCandidate {
|
|
24
|
+
readonly source: {
|
|
25
|
+
readonly provider: 'google';
|
|
26
|
+
readonly realm: string;
|
|
27
|
+
readonly subject: string;
|
|
28
|
+
};
|
|
29
|
+
readonly principalId: string;
|
|
30
|
+
readonly verifiedEmail: string;
|
|
31
|
+
readonly candidateFingerprint: string;
|
|
32
|
+
}
|
|
33
|
+
export interface PlatformAuthFrozenCandidatePage {
|
|
34
|
+
readonly candidates: readonly PlatformAuthFrozenCandidate[];
|
|
35
|
+
readonly nextAfterFingerprint?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface FrozenCandidateRow {
|
|
38
|
+
readonly source_subject: string;
|
|
39
|
+
readonly source_realm: string | null;
|
|
40
|
+
readonly principal_id: string | null;
|
|
41
|
+
readonly normalized_email: string | null;
|
|
42
|
+
readonly email_fingerprint: string | null;
|
|
43
|
+
readonly provenance: readonly string[];
|
|
44
|
+
readonly blocker_codes: readonly string[];
|
|
45
|
+
readonly source_fingerprint: string;
|
|
46
|
+
readonly candidate_fingerprint: string | null;
|
|
47
|
+
}
|
|
48
|
+
type Connection = PlatformIdentityQueryable & {
|
|
49
|
+
release?: () => void;
|
|
50
|
+
};
|
|
51
|
+
type Pool = PlatformIdentityQueryable & {
|
|
52
|
+
connect?: () => Promise<Connection>;
|
|
53
|
+
};
|
|
54
|
+
export declare class PostgresPlatformAuthMigrationRunStore {
|
|
55
|
+
#private;
|
|
56
|
+
constructor(pool: Pool);
|
|
57
|
+
createRun(input: PlatformAuthMigrationRunInput): Promise<PlatformAuthMigrationRun>;
|
|
58
|
+
listFrozenCandidates(runId: string): Promise<readonly PlatformAuthFrozenCandidate[]>;
|
|
59
|
+
listFrozenCandidateBatch(runId: string, options: {
|
|
60
|
+
readonly limit: number;
|
|
61
|
+
readonly afterFingerprint?: string;
|
|
62
|
+
readonly eligibility?: 'all' | 'actionable' | 'operator_reconcile';
|
|
63
|
+
}): Promise<PlatformAuthFrozenCandidatePage>;
|
|
64
|
+
completeRun(runId: string): Promise<PlatformAuthMigrationRun>;
|
|
65
|
+
}
|
|
66
|
+
export declare function loadFrozenInventory(pool: PlatformIdentityQueryable, expected: {
|
|
67
|
+
readonly inventoryRunId: string;
|
|
68
|
+
readonly inventoryChecksum: string;
|
|
69
|
+
readonly releaseSha: string;
|
|
70
|
+
readonly workosRealmFingerprint: string;
|
|
71
|
+
readonly requireBlockerFree: boolean;
|
|
72
|
+
}): Promise<{
|
|
73
|
+
readonly googleRealm: string;
|
|
74
|
+
readonly lineageChecksum: string;
|
|
75
|
+
readonly candidates: readonly FrozenCandidateRow[];
|
|
76
|
+
}>;
|
|
77
|
+
export declare function candidateDigest(candidate: {
|
|
78
|
+
readonly principal_id: string | null;
|
|
79
|
+
readonly email_fingerprint: string | null;
|
|
80
|
+
readonly provenance: readonly string[];
|
|
81
|
+
readonly blocker_codes: readonly string[];
|
|
82
|
+
readonly source_fingerprint: string;
|
|
83
|
+
}): string;
|
|
84
|
+
export declare function migrationHash(value: unknown): string;
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=platform-auth-migration-runs-postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth-migration-runs-postgres.d.ts","sourceRoot":"","sources":["../src/platform-auth-migration-runs-postgres.ts"],"names":[],"mappings":"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"}
|