@aotter/mantle 0.1.5-alpha.1 → 0.2.0-alpha.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/README.md +39 -306
- package/dist/admin/consent.d.ts +17 -0
- package/dist/admin/consent.d.ts.map +1 -0
- package/dist/admin/consent.js +17 -0
- package/dist/admin/consent.js.map +1 -0
- package/dist/admin/createAdminSurface.d.ts +22 -0
- package/dist/admin/createAdminSurface.d.ts.map +1 -0
- package/dist/admin/createAdminSurface.js +589 -0
- package/dist/admin/createAdminSurface.js.map +1 -0
- package/dist/admin/developerConsole.d.ts +264 -0
- package/dist/admin/developerConsole.d.ts.map +1 -0
- package/dist/admin/developerConsole.js +136 -0
- package/dist/admin/developerConsole.js.map +1 -0
- package/dist/admin/identity.d.ts +62 -0
- package/dist/admin/identity.d.ts.map +1 -0
- package/dist/admin/identity.js +7 -0
- package/dist/admin/identity.js.map +1 -0
- package/dist/admin/index.d.ts +4 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +4 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/procedureFlow.d.ts +25 -0
- package/dist/admin/procedureFlow.d.ts.map +1 -0
- package/dist/admin/procedureFlow.js +154 -0
- package/dist/admin/procedureFlow.js.map +1 -0
- package/dist/auth/ConsoleEmailSender.d.ts +15 -0
- package/dist/auth/ConsoleEmailSender.d.ts.map +1 -0
- package/dist/auth/ConsoleEmailSender.js +19 -0
- package/dist/auth/ConsoleEmailSender.js.map +1 -0
- package/dist/auth/appleClientSecret.d.ts +75 -0
- package/dist/auth/appleClientSecret.d.ts.map +1 -0
- package/dist/auth/appleClientSecret.js +116 -0
- package/dist/auth/appleClientSecret.js.map +1 -0
- package/dist/auth/buildAuth.d.ts +4565 -0
- package/dist/auth/buildAuth.d.ts.map +1 -0
- package/dist/auth/buildAuth.js +307 -0
- package/dist/auth/buildAuth.js.map +1 -0
- package/dist/auth/callerResolver.d.ts +48 -0
- package/dist/auth/callerResolver.d.ts.map +1 -0
- package/dist/auth/callerResolver.js +49 -0
- package/dist/auth/callerResolver.js.map +1 -0
- package/dist/auth/createAuthRoutes.d.ts +22 -0
- package/dist/auth/createAuthRoutes.d.ts.map +1 -0
- package/dist/auth/createAuthRoutes.js +128 -0
- package/dist/auth/createAuthRoutes.js.map +1 -0
- package/dist/auth/createMantleAuth.d.ts +3 -0
- package/dist/auth/createMantleAuth.d.ts.map +1 -0
- package/dist/auth/createMantleAuth.js +483 -0
- package/dist/auth/createMantleAuth.js.map +1 -0
- package/dist/auth/db.d.ts +17 -0
- package/dist/auth/db.d.ts.map +1 -0
- package/dist/auth/db.js +24 -0
- package/dist/auth/db.js.map +1 -0
- package/dist/auth/emailTemplates.d.ts +7 -0
- package/dist/auth/emailTemplates.d.ts.map +1 -0
- package/dist/auth/emailTemplates.js +27 -0
- package/dist/auth/emailTemplates.js.map +1 -0
- package/dist/auth/index.d.ts +9 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +7 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/methods.d.ts +717 -0
- package/dist/auth/methods.d.ts.map +1 -0
- package/dist/auth/methods.js +321 -0
- package/dist/auth/methods.js.map +1 -0
- package/dist/auth/oauthTokens.d.ts +24 -0
- package/dist/auth/oauthTokens.d.ts.map +1 -0
- package/dist/auth/oauthTokens.js +146 -0
- package/dist/auth/oauthTokens.js.map +1 -0
- package/dist/auth/setupIncomplete.d.ts +16 -0
- package/dist/auth/setupIncomplete.d.ts.map +1 -0
- package/dist/auth/setupIncomplete.js +50 -0
- package/dist/auth/setupIncomplete.js.map +1 -0
- package/dist/auth/types.d.ts +440 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +10 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/bun/index.d.ts +65 -0
- package/dist/bun/index.d.ts.map +1 -0
- package/dist/bun/index.js +130 -0
- package/dist/bun/index.js.map +1 -0
- package/dist/cli/emitModule.d.ts +7 -0
- package/dist/cli/emitModule.d.ts.map +1 -0
- package/dist/cli/emitModule.js +127 -0
- package/dist/cli/emitModule.js.map +1 -0
- package/dist/cli/generate.d.ts +4 -16
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +318 -262
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +15 -71
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/preset.d.ts +18 -0
- package/dist/cli/preset.d.ts.map +1 -0
- package/dist/cli/preset.js +352 -0
- package/dist/cli/preset.js.map +1 -0
- package/dist/cloudflare/index.d.ts +21 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +14 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/r2Media.d.ts +43 -0
- package/dist/cloudflare/r2Media.d.ts.map +1 -0
- package/dist/cloudflare/r2Media.js +69 -0
- package/dist/cloudflare/r2Media.js.map +1 -0
- package/dist/core/caller.d.ts +35 -0
- package/dist/core/caller.d.ts.map +1 -0
- package/dist/core/caller.js +3 -0
- package/dist/core/caller.js.map +1 -0
- package/dist/core/createMantle.d.ts +22 -0
- package/dist/core/createMantle.d.ts.map +1 -0
- package/dist/core/createMantle.js +117 -0
- package/dist/core/createMantle.js.map +1 -0
- package/dist/core/dialect.d.ts +41 -0
- package/dist/core/dialect.d.ts.map +1 -0
- package/dist/core/dialect.js +7 -0
- package/dist/core/dialect.js.map +1 -0
- package/dist/core/driver.d.ts +17 -0
- package/dist/core/driver.d.ts.map +1 -0
- package/dist/core/driver.js +2 -0
- package/dist/core/driver.js.map +1 -0
- package/dist/core/email.d.ts +17 -0
- package/dist/core/email.d.ts.map +1 -0
- package/dist/core/email.js +2 -0
- package/dist/core/email.js.map +1 -0
- package/dist/core/index.d.ts +16 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/invocation.d.ts +66 -0
- package/dist/core/invocation.d.ts.map +1 -0
- package/dist/core/invocation.js +3 -0
- package/dist/core/invocation.js.map +1 -0
- package/dist/core/runtime/auth.d.ts +9 -0
- package/dist/core/runtime/auth.d.ts.map +1 -0
- package/dist/core/runtime/auth.js +39 -0
- package/dist/core/runtime/auth.js.map +1 -0
- package/dist/core/runtime/createRuntime.d.ts +23 -0
- package/dist/core/runtime/createRuntime.d.ts.map +1 -0
- package/dist/core/runtime/createRuntime.js +214 -0
- package/dist/core/runtime/createRuntime.js.map +1 -0
- package/dist/core/runtime/verifyPlan.d.ts +34 -0
- package/dist/core/runtime/verifyPlan.d.ts.map +1 -0
- package/dist/core/runtime/verifyPlan.js +301 -0
- package/dist/core/runtime/verifyPlan.js.map +1 -0
- package/dist/core/service.d.ts +45 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +2 -0
- package/dist/core/service.js.map +1 -0
- package/dist/core/site.d.ts +117 -0
- package/dist/core/site.d.ts.map +1 -0
- package/dist/core/site.js +2 -0
- package/dist/core/site.js.map +1 -0
- package/dist/core/siteConfig.d.ts +5 -0
- package/dist/core/siteConfig.d.ts.map +1 -0
- package/dist/core/siteConfig.js +24 -0
- package/dist/core/siteConfig.js.map +1 -0
- package/dist/core/sql/allowlist.d.ts +65 -0
- package/dist/core/sql/allowlist.d.ts.map +1 -0
- package/dist/core/sql/allowlist.js +705 -0
- package/dist/core/sql/allowlist.js.map +1 -0
- package/dist/core/sql/ast.d.ts +24 -0
- package/dist/core/sql/ast.d.ts.map +1 -0
- package/dist/core/sql/ast.js +32 -0
- package/dist/core/sql/ast.js.map +1 -0
- package/dist/core/sql/compile.d.ts +50 -0
- package/dist/core/sql/compile.d.ts.map +1 -0
- package/dist/core/sql/compile.js +48 -0
- package/dist/core/sql/compile.js.map +1 -0
- package/dist/core/sql/policy.d.ts +121 -0
- package/dist/core/sql/policy.d.ts.map +1 -0
- package/dist/core/sql/policy.js +379 -0
- package/dist/core/sql/policy.js.map +1 -0
- package/dist/core/sql/positions.d.ts +30 -0
- package/dist/core/sql/positions.d.ts.map +1 -0
- package/dist/core/sql/positions.js +22 -0
- package/dist/core/sql/positions.js.map +1 -0
- package/dist/core/sql/run.d.ts +76 -0
- package/dist/core/sql/run.d.ts.map +1 -0
- package/dist/core/sql/run.js +267 -0
- package/dist/core/sql/run.js.map +1 -0
- package/dist/core/store/createStore.d.ts +49 -0
- package/dist/core/store/createStore.d.ts.map +1 -0
- package/dist/core/store/createStore.js +227 -0
- package/dist/core/store/createStore.js.map +1 -0
- package/dist/core/store/cursor.d.ts +4 -0
- package/dist/core/store/cursor.d.ts.map +1 -0
- package/dist/core/store/cursor.js +22 -0
- package/dist/core/store/cursor.js.map +1 -0
- package/dist/core/store/json.d.ts +80 -0
- package/dist/core/store/json.d.ts.map +1 -0
- package/dist/core/store/json.js +342 -0
- package/dist/core/store/json.js.map +1 -0
- package/dist/core/store.d.ts +160 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +2 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/wire.d.ts +20 -0
- package/dist/core/wire.d.ts.map +1 -0
- package/dist/core/wire.js +84 -0
- package/dist/core/wire.js.map +1 -0
- package/dist/core/withCaller.d.ts +16 -0
- package/dist/core/withCaller.d.ts.map +1 -0
- package/dist/core/withCaller.js +29 -0
- package/dist/core/withCaller.js.map +1 -0
- package/dist/d1/adapter.d.ts +12 -0
- package/dist/d1/adapter.d.ts.map +1 -0
- package/dist/d1/adapter.js +23 -0
- package/dist/d1/adapter.js.map +1 -0
- package/dist/d1/codec.d.ts +14 -0
- package/dist/d1/codec.d.ts.map +1 -0
- package/dist/d1/codec.js +136 -0
- package/dist/d1/codec.js.map +1 -0
- package/dist/d1/compile/index.d.ts +9 -0
- package/dist/d1/compile/index.d.ts.map +1 -0
- package/dist/d1/compile/index.js +9 -0
- package/dist/d1/compile/index.js.map +1 -0
- package/dist/d1/dialect.d.ts +4 -0
- package/dist/d1/dialect.d.ts.map +1 -0
- package/dist/d1/dialect.js +13 -0
- package/dist/d1/dialect.js.map +1 -0
- package/dist/d1/executor.d.ts +13 -0
- package/dist/d1/executor.d.ts.map +1 -0
- package/dist/d1/executor.js +91 -0
- package/dist/d1/executor.js.map +1 -0
- package/dist/d1/index.d.ts +6 -0
- package/dist/d1/index.d.ts.map +1 -0
- package/dist/d1/index.js +6 -0
- package/dist/d1/index.js.map +1 -0
- package/dist/d1/lower.d.ts +8 -0
- package/dist/d1/lower.d.ts.map +1 -0
- package/dist/d1/lower.js +167 -0
- package/dist/d1/lower.js.map +1 -0
- package/dist/d1/media.d.ts +5 -0
- package/dist/d1/media.d.ts.map +1 -0
- package/dist/d1/media.js +157 -0
- package/dist/d1/media.js.map +1 -0
- package/dist/d1/migrations.d.ts +12 -0
- package/dist/d1/migrations.d.ts.map +1 -0
- package/dist/d1/migrations.js +111 -0
- package/dist/d1/migrations.js.map +1 -0
- package/dist/d1/print.d.ts +28 -0
- package/dist/d1/print.d.ts.map +1 -0
- package/dist/d1/print.js +54 -0
- package/dist/d1/print.js.map +1 -0
- package/dist/d1/site.d.ts +17 -0
- package/dist/d1/site.d.ts.map +1 -0
- package/dist/d1/site.js +63 -0
- package/dist/d1/site.js.map +1 -0
- package/dist/d1/storage.d.ts +34 -0
- package/dist/d1/storage.d.ts.map +1 -0
- package/dist/d1/storage.js +288 -0
- package/dist/d1/storage.js.map +1 -0
- package/dist/d1/tz.d.ts +21 -0
- package/dist/d1/tz.d.ts.map +1 -0
- package/dist/d1/tz.js +54 -0
- package/dist/d1/tz.js.map +1 -0
- package/dist/d1/validator.d.ts +10 -0
- package/dist/d1/validator.d.ts.map +1 -0
- package/dist/d1/validator.js +33 -0
- package/dist/d1/validator.js.map +1 -0
- package/dist/mcp/apps.d.ts +43 -0
- package/dist/mcp/apps.d.ts.map +1 -0
- package/dist/mcp/apps.js +57 -0
- package/dist/mcp/apps.js.map +1 -0
- package/dist/mcp/catalog.d.ts +55 -0
- package/dist/mcp/catalog.d.ts.map +1 -0
- package/dist/mcp/catalog.js +81 -0
- package/dist/mcp/catalog.js.map +1 -0
- package/dist/mcp/createMcpSurface.d.ts +34 -0
- package/dist/mcp/createMcpSurface.d.ts.map +1 -0
- package/dist/mcp/createMcpSurface.js +150 -0
- package/dist/mcp/createMcpSurface.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/postgres/adapter.d.ts +20 -0
- package/dist/postgres/adapter.d.ts.map +1 -0
- package/dist/postgres/adapter.js +44 -0
- package/dist/postgres/adapter.js.map +1 -0
- package/dist/postgres/codec.d.ts +13 -0
- package/dist/postgres/codec.d.ts.map +1 -0
- package/dist/postgres/codec.js +110 -0
- package/dist/postgres/codec.js.map +1 -0
- package/dist/postgres/compile/index.d.ts +9 -0
- package/dist/postgres/compile/index.d.ts.map +1 -0
- package/dist/postgres/compile/index.js +9 -0
- package/dist/postgres/compile/index.js.map +1 -0
- package/dist/postgres/driver.d.ts +92 -0
- package/dist/postgres/driver.d.ts.map +1 -0
- package/dist/postgres/driver.js +110 -0
- package/dist/postgres/driver.js.map +1 -0
- package/dist/postgres/executor.d.ts +20 -0
- package/dist/postgres/executor.d.ts.map +1 -0
- package/dist/postgres/executor.js +69 -0
- package/dist/postgres/executor.js.map +1 -0
- package/dist/postgres/index.d.ts +7 -0
- package/dist/postgres/index.d.ts.map +1 -0
- package/dist/postgres/index.js +7 -0
- package/dist/postgres/index.js.map +1 -0
- package/dist/postgres/lower.d.ts +6 -0
- package/dist/postgres/lower.d.ts.map +1 -0
- package/dist/postgres/lower.js +157 -0
- package/dist/postgres/lower.js.map +1 -0
- package/dist/postgres/print.d.ts +11 -0
- package/dist/postgres/print.d.ts.map +1 -0
- package/dist/postgres/print.js +121 -0
- package/dist/postgres/print.js.map +1 -0
- package/dist/postgres/storage.d.ts +19 -0
- package/dist/postgres/storage.d.ts.map +1 -0
- package/dist/postgres/storage.js +201 -0
- package/dist/postgres/storage.js.map +1 -0
- package/dist/postgres/textRows.d.ts +10 -0
- package/dist/postgres/textRows.d.ts.map +1 -0
- package/dist/postgres/textRows.js +44 -0
- package/dist/postgres/textRows.js.map +1 -0
- package/dist/postgres/validator.d.ts +12 -0
- package/dist/postgres/validator.d.ts.map +1 -0
- package/dist/postgres/validator.js +46 -0
- package/dist/postgres/validator.js.map +1 -0
- package/dist/spec/domain/index.d.ts +3 -0
- package/dist/spec/domain/index.d.ts.map +1 -0
- package/dist/spec/domain/index.js +3 -0
- package/dist/spec/domain/index.js.map +1 -0
- package/dist/spec/domain/model/ContentState.d.ts +8 -0
- package/dist/spec/domain/model/ContentState.d.ts.map +1 -0
- package/dist/spec/domain/model/ContentState.js +7 -0
- package/dist/spec/domain/model/ContentState.js.map +1 -0
- package/dist/spec/domain/model/Entry.d.ts +29 -0
- package/dist/spec/domain/model/Entry.d.ts.map +1 -0
- package/dist/spec/domain/model/Entry.js +16 -0
- package/dist/spec/domain/model/Entry.js.map +1 -0
- package/dist/spec/domain/model/Locale.d.ts +30 -0
- package/dist/spec/domain/model/Locale.d.ts.map +1 -0
- package/dist/spec/domain/model/Locale.js +33 -0
- package/dist/spec/domain/model/Locale.js.map +1 -0
- package/dist/spec/domain/model/ManifestGrammar.d.ts +452 -0
- package/dist/spec/domain/model/ManifestGrammar.d.ts.map +1 -0
- package/dist/spec/domain/model/ManifestGrammar.js +149 -0
- package/dist/spec/domain/model/ManifestGrammar.js.map +1 -0
- package/dist/spec/domain/model/MediaMimeAccept.d.ts +55 -0
- package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +1 -0
- package/dist/spec/domain/model/MediaMimeAccept.js +90 -0
- package/dist/spec/domain/model/MediaMimeAccept.js.map +1 -0
- package/dist/spec/domain/model/RuntimePlan.d.ts +94 -0
- package/dist/spec/domain/model/RuntimePlan.d.ts.map +1 -0
- package/dist/spec/domain/model/RuntimePlan.js +4 -0
- package/dist/spec/domain/model/RuntimePlan.js.map +1 -0
- package/dist/spec/domain/model/SiteConfig.d.ts +173 -0
- package/dist/spec/domain/model/SiteConfig.d.ts.map +1 -0
- package/dist/spec/domain/model/SiteConfig.js +13 -0
- package/dist/spec/domain/model/SiteConfig.js.map +1 -0
- package/dist/spec/domain/model/SqlIr.d.ts +96 -0
- package/dist/spec/domain/model/SqlIr.d.ts.map +1 -0
- package/dist/spec/domain/model/SqlIr.js +95 -0
- package/dist/spec/domain/model/SqlIr.js.map +1 -0
- package/dist/spec/domain/model/index.d.ts +14 -0
- package/dist/spec/domain/model/index.d.ts.map +1 -0
- package/dist/spec/domain/model/index.js +14 -0
- package/dist/spec/domain/model/index.js.map +1 -0
- package/dist/spec/domain/service/CloudflareCron.d.ts +2 -0
- package/dist/spec/domain/service/CloudflareCron.d.ts.map +1 -0
- package/dist/spec/domain/service/CloudflareCron.js +63 -0
- package/dist/spec/domain/service/CloudflareCron.js.map +1 -0
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts +34 -0
- package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/CrossSchemaChecker.js +114 -0
- package/dist/spec/domain/service/CrossSchemaChecker.js.map +1 -0
- package/dist/spec/domain/service/EntryDataValidator.d.ts +56 -0
- package/dist/spec/domain/service/EntryDataValidator.d.ts.map +1 -0
- package/dist/spec/domain/service/EntryDataValidator.js +88 -0
- package/dist/spec/domain/service/EntryDataValidator.js.map +1 -0
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts +29 -0
- package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +1 -0
- package/dist/spec/domain/service/JsonSchemaToZod.js +156 -0
- package/dist/spec/domain/service/JsonSchemaToZod.js.map +1 -0
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts +75 -0
- package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +1 -0
- package/dist/spec/domain/service/LifecycleStateMachine.js +76 -0
- package/dist/spec/domain/service/LifecycleStateMachine.js.map +1 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +29 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +1 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.js +96 -0
- package/dist/spec/domain/service/LocaleCanonicalizer.js.map +1 -0
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts +60 -0
- package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestFieldChecks.js +116 -0
- package/dist/spec/domain/service/ManifestFieldChecks.js.map +1 -0
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts +15 -0
- package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestGraphValidator.js +225 -0
- package/dist/spec/domain/service/ManifestGraphValidator.js.map +1 -0
- package/dist/spec/domain/service/ManifestLinker.d.ts +45 -0
- package/dist/spec/domain/service/ManifestLinker.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestLinker.js +92 -0
- package/dist/spec/domain/service/ManifestLinker.js.map +1 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +16 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js +76 -0
- package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +1 -0
- package/dist/spec/domain/service/ManifestParser.d.ts +49 -0
- package/dist/spec/domain/service/ManifestParser.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestParser.js +203 -0
- package/dist/spec/domain/service/ManifestParser.js.map +1 -0
- package/dist/spec/domain/service/ManifestPartition.d.ts +9 -0
- package/dist/spec/domain/service/ManifestPartition.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestPartition.js +19 -0
- package/dist/spec/domain/service/ManifestPartition.js.map +1 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +33 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.js +43 -0
- package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +1 -0
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts +10 -0
- package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +1 -0
- package/dist/spec/domain/service/ManifestSourceSpans.js +76 -0
- package/dist/spec/domain/service/ManifestSourceSpans.js.map +1 -0
- package/dist/spec/domain/service/McpToolNaming.d.ts +25 -0
- package/dist/spec/domain/service/McpToolNaming.d.ts.map +1 -0
- package/dist/spec/domain/service/McpToolNaming.js +50 -0
- package/dist/spec/domain/service/McpToolNaming.js.map +1 -0
- package/dist/spec/domain/service/PlanFingerprint.d.ts +4 -0
- package/dist/spec/domain/service/PlanFingerprint.d.ts.map +1 -0
- package/dist/spec/domain/service/PlanFingerprint.js +14 -0
- package/dist/spec/domain/service/PlanFingerprint.js.map +1 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +4 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js +211 -0
- package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +1 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +42 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.js +289 -0
- package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +1 -0
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts +33 -0
- package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaIndexChecker.js +256 -0
- package/dist/spec/domain/service/SchemaIndexChecker.js.map +1 -0
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts +11 -0
- package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaSearchChecker.js +78 -0
- package/dist/spec/domain/service/SchemaSearchChecker.js.map +1 -0
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts +31 -0
- package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/SchemaSpecChecks.js +445 -0
- package/dist/spec/domain/service/SchemaSpecChecks.js.map +1 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +39 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +1 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.js +194 -0
- package/dist/spec/domain/service/SiteDefaultsValidator.js.map +1 -0
- package/dist/spec/domain/service/SqlClassify.d.ts +19 -0
- package/dist/spec/domain/service/SqlClassify.d.ts.map +1 -0
- package/dist/spec/domain/service/SqlClassify.js +42 -0
- package/dist/spec/domain/service/SqlClassify.js.map +1 -0
- package/dist/spec/domain/service/SqlRefusal.d.ts +16 -0
- package/dist/spec/domain/service/SqlRefusal.d.ts.map +1 -0
- package/dist/spec/domain/service/SqlRefusal.js +20 -0
- package/dist/spec/domain/service/SqlRefusal.js.map +1 -0
- package/dist/spec/domain/service/SqlTypes.d.ts +40 -0
- package/dist/spec/domain/service/SqlTypes.d.ts.map +1 -0
- package/dist/spec/domain/service/SqlTypes.js +110 -0
- package/dist/spec/domain/service/SqlTypes.js.map +1 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +3 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +1 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.js +19 -0
- package/dist/spec/domain/service/StaffRoleHierarchy.js.map +1 -0
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts +16 -0
- package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/TriggerGraphChecks.js +337 -0
- package/dist/spec/domain/service/TriggerGraphChecks.js.map +1 -0
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts +4 -0
- package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +1 -0
- package/dist/spec/domain/service/TriggerSpecChecks.js +89 -0
- package/dist/spec/domain/service/TriggerSpecChecks.js.map +1 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +11 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +1 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js +26 -0
- package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +1 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +14 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +1 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.js +53 -0
- package/dist/spec/domain/service/ViewAdminUiChecker.js.map +1 -0
- package/dist/spec/domain/service/index.d.ts +24 -0
- package/dist/spec/domain/service/index.d.ts.map +1 -0
- package/dist/spec/domain/service/index.js +24 -0
- package/dist/spec/domain/service/index.js.map +1 -0
- package/dist/spec/index.d.ts +10 -0
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +12 -0
- package/dist/spec/index.js.map +1 -0
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts +16 -0
- package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +1 -0
- package/dist/spec/infrastructure/cli/parseArgsError.js +34 -0
- package/dist/spec/infrastructure/cli/parseArgsError.js.map +1 -0
- package/dist/spec/infrastructure/index.d.ts +2 -0
- package/dist/spec/infrastructure/index.d.ts.map +1 -0
- package/dist/spec/infrastructure/index.js +2 -0
- package/dist/spec/infrastructure/index.js.map +1 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +18 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.js +17 -0
- package/dist/spec/infrastructure/sql/PgQueryParser.js.map +1 -0
- package/dist/spec/infrastructure/sql/compilePlan.d.ts +37 -0
- package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/compilePlan.js +282 -0
- package/dist/spec/infrastructure/sql/compilePlan.js.map +1 -0
- package/dist/spec/infrastructure/sql/compileSql.d.ts +35 -0
- package/dist/spec/infrastructure/sql/compileSql.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/compileSql.js +92 -0
- package/dist/spec/infrastructure/sql/compileSql.js.map +1 -0
- package/dist/spec/infrastructure/sql/frontEnd.d.ts +8 -0
- package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/frontEnd.js +100 -0
- package/dist/spec/infrastructure/sql/frontEnd.js.map +1 -0
- package/dist/spec/infrastructure/sql/index.d.ts +4 -0
- package/dist/spec/infrastructure/sql/index.d.ts.map +1 -0
- package/dist/spec/infrastructure/sql/index.js +4 -0
- package/dist/spec/infrastructure/sql/index.js.map +1 -0
- package/dist/spec/kernel/diagnostic.d.ts +137 -0
- package/dist/spec/kernel/diagnostic.d.ts.map +1 -0
- package/dist/spec/kernel/diagnostic.js +296 -0
- package/dist/spec/kernel/diagnostic.js.map +1 -0
- package/dist/spec/kernel/index.d.ts +8 -0
- package/dist/spec/kernel/index.d.ts.map +1 -0
- package/dist/spec/kernel/index.js +8 -0
- package/dist/spec/kernel/index.js.map +1 -0
- package/dist/spec/usecase/EmitTypes.d.ts +22 -0
- package/dist/spec/usecase/EmitTypes.d.ts.map +1 -0
- package/dist/spec/usecase/EmitTypes.js +182 -0
- package/dist/spec/usecase/EmitTypes.js.map +1 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +8 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +1 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.js +101 -0
- package/dist/spec/usecase/ValidateManifestsUseCase.js.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +27 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js +2 -0
- package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +14 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +1 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js +2 -0
- package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +1 -0
- package/dist/spec/usecase/dto/index.d.ts +3 -0
- package/dist/spec/usecase/dto/index.d.ts.map +1 -0
- package/dist/spec/usecase/dto/index.js +3 -0
- package/dist/spec/usecase/dto/index.js.map +1 -0
- package/dist/spec/usecase/index.d.ts +10 -0
- package/dist/spec/usecase/index.d.ts.map +1 -0
- package/dist/spec/usecase/index.js +10 -0
- package/dist/spec/usecase/index.js.map +1 -0
- package/dist/testing/cases/before-hook.d.ts +4 -0
- package/dist/testing/cases/before-hook.d.ts.map +1 -0
- package/dist/testing/cases/before-hook.js +71 -0
- package/dist/testing/cases/before-hook.js.map +1 -0
- package/dist/testing/cases/corpus.d.ts +12 -0
- package/dist/testing/cases/corpus.d.ts.map +1 -0
- package/dist/testing/cases/corpus.js +91 -0
- package/dist/testing/cases/corpus.js.map +1 -0
- package/dist/testing/cases/policy.d.ts +74 -0
- package/dist/testing/cases/policy.d.ts.map +1 -0
- package/dist/testing/cases/policy.js +142 -0
- package/dist/testing/cases/policy.js.map +1 -0
- package/dist/testing/cases/printer.d.ts +4 -0
- package/dist/testing/cases/printer.d.ts.map +1 -0
- package/dist/testing/cases/printer.js +32 -0
- package/dist/testing/cases/printer.js.map +1 -0
- package/dist/testing/cases/report-view.d.ts +5 -0
- package/dist/testing/cases/report-view.d.ts.map +1 -0
- package/dist/testing/cases/report-view.js +33 -0
- package/dist/testing/cases/report-view.js.map +1 -0
- package/dist/testing/cases/requisition.d.ts +4 -0
- package/dist/testing/cases/requisition.d.ts.map +1 -0
- package/dist/testing/cases/requisition.js +38 -0
- package/dist/testing/cases/requisition.js.map +1 -0
- package/dist/testing/cases/search-places.d.ts +4 -0
- package/dist/testing/cases/search-places.d.ts.map +1 -0
- package/dist/testing/cases/search-places.js +60 -0
- package/dist/testing/cases/search-places.js.map +1 -0
- package/dist/testing/cases/stock.d.ts +4 -0
- package/dist/testing/cases/stock.d.ts.map +1 -0
- package/dist/testing/cases/stock.js +35 -0
- package/dist/testing/cases/stock.js.map +1 -0
- package/dist/testing/cases/store.d.ts +4 -0
- package/dist/testing/cases/store.d.ts.map +1 -0
- package/dist/testing/cases/store.js +100 -0
- package/dist/testing/cases/store.js.map +1 -0
- package/dist/testing/harness.d.ts +94 -0
- package/dist/testing/harness.d.ts.map +1 -0
- package/dist/testing/harness.js +168 -0
- package/dist/testing/harness.js.map +1 -0
- package/dist/testing/index.d.ts +37 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +43 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/report.d.ts +15 -0
- package/dist/testing/report.d.ts.map +1 -0
- package/dist/testing/report.js +22 -0
- package/dist/testing/report.js.map +1 -0
- package/dist/web/createRestSurface.d.ts +7 -0
- package/dist/web/createRestSurface.d.ts.map +1 -0
- package/dist/web/createRestSurface.js +39 -0
- package/dist/web/createRestSurface.js.map +1 -0
- package/dist/web/index.d.ts +2 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +2 -0
- package/dist/web/index.js.map +1 -0
- package/docs/adr/0008-structured-diagnostic-shape.md +2 -2
- package/docs/adr/0011-adapter-port-spec.md +2 -2
- package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +21 -2
- package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +5 -1
- package/docs/adr/0022-caller-observed-version-occ.md +1 -1
- package/docs/adr/0024-manifest-native-schema-tables.md +2 -2
- package/docs/adr/0027-scheduled-procedure-triggers.md +1 -1
- package/docs/adr/0028-schema-ttl-expiry.md +3 -3
- package/docs/adr/0029-mcp-apps-interaction-contracts.md +324 -0
- package/docs/adr/0030-store.md +40 -0
- package/docs/adr/0031-host-cloud-core-contract.md +25 -0
- package/docs/adr/0032-store-centric-core-and-service-contract.md +361 -0
- package/docs/adr/0033-storage-converges-to-the-plan.md +92 -0
- package/docs/adr/0034-store-is-authored-as-sql.md +192 -0
- package/docs/adr/0035-sql-dialects.md +154 -0
- package/docs/adr/0036-host-and-dialect.md +65 -0
- package/docs/adr/0037-postgresql-is-the-reference-dialect.md +124 -0
- package/docs/adr/0038-bun-native-host.md +63 -0
- package/docs/adr/README.md +23 -8
- package/docs/adr/adr-lite-861-admin-webmcp.md +6 -0
- package/docs/adr/adr-lite-909-admin-ui-kit.md +1 -1
- package/docs/examples/README.md +16 -18
- package/docs/examples/commerce-inventory.md +481 -0
- package/docs/examples/commerce.md +254 -0
- package/docs/examples/guarded-api.md +238 -0
- package/docs/examples/intake-hooks.md +237 -0
- package/docs/examples/intake.md +127 -0
- package/docs/examples/legal-documents.md +218 -0
- package/docs/examples/procurement.md +215 -0
- package/docs/examples/publication.md +211 -0
- package/docs/examples/reference-service/.dev.vars.example +4 -0
- package/docs/examples/reference-service/.mantle/generated/mantle.ts +174 -0
- package/docs/examples/reference-service/.mantle/generated/plan.json +1936 -0
- package/docs/examples/reference-service/README.md +33 -0
- package/docs/examples/reference-service/manifests/catalog.yaml +103 -0
- package/docs/examples/reference-service/manifests/orders.yaml +120 -0
- package/docs/examples/reference-service/mantle.config.json +1 -0
- package/docs/examples/reference-service/package.json +27 -0
- package/docs/examples/reference-service/smoke.mjs +156 -0
- package/docs/examples/reference-service/src/handlers.ts +36 -0
- package/docs/examples/reference-service/src/index.ts +33 -0
- package/docs/examples/reference-service/src/service.ts +78 -0
- package/docs/examples/{host-minimal-worker → reference-service}/tsconfig.json +7 -2
- package/docs/examples/reference-service/wrangler.jsonc +26 -0
- package/docs/examples/reservation.md +142 -0
- package/docs/handbook/cloudflare/authentication.md +96 -316
- package/docs/handbook/cloudflare/chatgpt-sites.md +104 -15
- package/docs/handbook/cloudflare/deploy-and-operate.md +77 -71
- package/docs/handbook/cloudflare/media-r2.md +64 -187
- package/docs/handbook/cloudflare/service-entry.md +138 -0
- package/docs/handbook/concepts/authorization.md +104 -94
- package/docs/handbook/concepts/four-atoms.md +68 -144
- package/docs/handbook/concepts/lifecycle-and-locales.md +62 -114
- package/docs/handbook/concepts/mcp-and-agents.md +112 -117
- package/docs/handbook/concepts/procedures-and-triggers.md +126 -181
- package/docs/handbook/concepts/runtime-and-adapters.md +177 -163
- package/docs/handbook/concepts/views.md +97 -173
- package/docs/handbook/examples/hub.md +17 -6
- package/docs/handbook/guides/admin-ui.md +101 -96
- package/docs/handbook/guides/agent-setup.md +56 -71
- package/docs/handbook/guides/typed-queries.md +105 -111
- package/docs/handbook/navigation.json +8 -33
- package/docs/handbook/reference/authorization.md +52 -271
- package/docs/handbook/reference/diagnostics.md +69 -178
- package/docs/handbook/reference/features.md +48 -50
- package/docs/handbook/reference/manifest.md +56 -116
- package/docs/handbook/reference/procedure.md +91 -279
- package/docs/handbook/reference/schema.md +154 -239
- package/docs/handbook/reference/site-config.md +58 -211
- package/docs/handbook/reference/surface.md +69 -181
- package/docs/handbook/reference/trigger.md +72 -181
- package/docs/handbook/reference/view.md +140 -241
- package/docs/handbook/releases/index.md +58 -77
- package/docs/handbook/start/overview.md +59 -51
- package/docs/handbook/start/project-and-cli.md +132 -105
- package/docs/handbook/start/quickstart-worker.md +102 -160
- package/docs/skills/develop/SKILL.md +114 -240
- package/docs/skills/develop/mcp-app.md +79 -0
- package/docs/skills/integrate/SKILL.md +83 -47
- package/docs/skills/media-gc/SKILL.md +21 -10
- package/docs/skills/provision/SKILL.md +68 -162
- package/docs/skills/update/SKILL.md +33 -34
- package/docs/upgrade-0.1-to-0.2.md +211 -0
- package/package.json +87 -106
- package/dist/admin-ui.d.ts +0 -2
- package/dist/admin-ui.d.ts.map +0 -1
- package/dist/admin-ui.js +0 -2
- package/dist/admin-ui.js.map +0 -1
- package/dist/admin.d.ts +0 -2
- package/dist/admin.d.ts.map +0 -1
- package/dist/admin.js +0 -2
- package/dist/admin.js.map +0 -1
- package/dist/auth.d.ts +0 -2
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -2
- package/dist/auth.js.map +0 -1
- package/dist/bun.d.ts +0 -2
- package/dist/bun.d.ts.map +0 -1
- package/dist/bun.js +0 -2
- package/dist/bun.js.map +0 -1
- package/dist/cli/generate-cloudflare.d.ts +0 -7
- package/dist/cli/generate-cloudflare.d.ts.map +0 -1
- package/dist/cli/generate-cloudflare.js +0 -123
- package/dist/cli/generate-cloudflare.js.map +0 -1
- package/dist/cli/generate-project.d.ts +0 -25
- package/dist/cli/generate-project.d.ts.map +0 -1
- package/dist/cli/generate-project.js +0 -282
- package/dist/cli/generate-project.js.map +0 -1
- package/dist/cli/generate-sites.d.ts +0 -8
- package/dist/cli/generate-sites.d.ts.map +0 -1
- package/dist/cli/generate-sites.js +0 -273
- package/dist/cli/generate-sites.js.map +0 -1
- package/dist/cli/harness.d.ts +0 -3
- package/dist/cli/harness.d.ts.map +0 -1
- package/dist/cli/harness.js +0 -214
- package/dist/cli/harness.js.map +0 -1
- package/dist/cli/skills.d.ts +0 -3
- package/dist/cli/skills.d.ts.map +0 -1
- package/dist/cli/skills.js +0 -128
- package/dist/cli/skills.js.map +0 -1
- package/dist/cloudflare.d.ts +0 -2
- package/dist/cloudflare.d.ts.map +0 -1
- package/dist/cloudflare.js +0 -2
- package/dist/cloudflare.js.map +0 -1
- package/dist/codegen/emitMantleModule.d.ts +0 -22
- package/dist/codegen/emitMantleModule.d.ts.map +0 -1
- package/dist/codegen/emitMantleModule.js +0 -291
- package/dist/codegen/emitMantleModule.js.map +0 -1
- package/dist/codegen.d.ts +0 -2
- package/dist/codegen.d.ts.map +0 -1
- package/dist/codegen.js +0 -2
- package/dist/codegen.js.map +0 -1
- package/dist/runtime-testing.d.ts +0 -2
- package/dist/runtime-testing.d.ts.map +0 -1
- package/dist/runtime-testing.js +0 -2
- package/dist/runtime-testing.js.map +0 -1
- package/dist/runtime.d.ts +0 -2
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -2
- package/dist/runtime.js.map +0 -1
- package/dist/spec.d.ts +0 -2
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js +0 -2
- package/dist/spec.js.map +0 -1
- package/dist/vercel-libsql.d.ts +0 -2
- package/dist/vercel-libsql.d.ts.map +0 -1
- package/dist/vercel-libsql.js +0 -2
- package/dist/vercel-libsql.js.map +0 -1
- package/dist/vercel.d.ts +0 -2
- package/dist/vercel.d.ts.map +0 -1
- package/dist/vercel.js +0 -2
- package/dist/vercel.js.map +0 -1
- package/dist/web.d.ts +0 -2
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -2
- package/dist/web.js.map +0 -1
- package/docs/adapter-guide.md +0 -222
- package/docs/agent-prompts.md +0 -64
- package/docs/api-mcp-authorization.md +0 -5
- package/docs/assets/mantle-admin-developer.png +0 -0
- package/docs/assets/mantle-admin-operations.png +0 -0
- package/docs/assets/mantle-hero.jpg +0 -0
- package/docs/auth-hosting-model.md +0 -166
- package/docs/cloudflare-low-level-composition.md +0 -5
- package/docs/consumer-onboarding-audit.md +0 -65
- package/docs/deferred-lifecycle-queues.md +0 -5
- package/docs/design-atoms.md +0 -16
- package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
- package/docs/direct-authoring.md +0 -5
- package/docs/examples/builtin-commerce.md +0 -269
- package/docs/examples/builtin-intake.md +0 -143
- package/docs/examples/builtin-legal-documents.md +0 -189
- package/docs/examples/builtin-procurement.md +0 -241
- package/docs/examples/builtin-publication.md +0 -241
- package/docs/examples/builtin-reservation.md +0 -149
- package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
- package/docs/examples/cf-primitives-guarded-api.md +0 -429
- package/docs/examples/cf-primitives-intake-hooks.md +0 -319
- package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
- package/docs/examples/host-chatgpt-sites/README.md +0 -70
- package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
- package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
- package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
- package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
- package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
- package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
- package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
- package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
- package/docs/examples/host-chatgpt-sites/package.json +0 -1
- package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
- package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
- package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
- package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
- package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
- package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
- package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
- package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
- package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
- package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
- package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
- package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
- package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
- package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
- package/docs/examples/host-local-admin-otp/README.md +0 -80
- package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
- package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
- package/docs/examples/host-local-admin-otp/package.json +0 -29
- package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
- package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
- package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
- package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
- package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
- package/docs/examples/host-minimal-worker/README.md +0 -41
- package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
- package/docs/examples/host-minimal-worker/package.json +0 -26
- package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
- package/docs/examples/host-minimal-worker/src/index.ts +0 -4
- package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
- package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
- package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
- package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
- package/docs/handbook/chatgpt-sites/index.md +0 -133
- package/docs/handbook/cloudflare/bindings.md +0 -291
- package/docs/handbook/cloudflare/conventional-worker.md +0 -166
- package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
- package/docs/handbook/cloudflare/low-level-composition.md +0 -169
- package/docs/handbook/cloudflare/public-web.md +0 -144
- package/docs/handbook/cloudflare/site-chrome.md +0 -75
- package/docs/handbook/examples/commerce-transaction.md +0 -11
- package/docs/handbook/examples/commerce.md +0 -11
- package/docs/handbook/examples/guarded-api.md +0 -10
- package/docs/handbook/examples/intake-form.md +0 -12
- package/docs/handbook/examples/intake-hooks.md +0 -11
- package/docs/handbook/examples/legal-documents.md +0 -10
- package/docs/handbook/examples/procurement-approvals.md +0 -10
- package/docs/handbook/examples/publication.md +0 -10
- package/docs/handbook/examples/reservation.md +0 -10
- package/docs/handbook/start/quickstart-admin.md +0 -52
- package/docs/labels.md +0 -71
- package/docs/media-uploads.md +0 -5
- package/docs/migration-0.1.2.md +0 -13
- package/docs/performance-harness.md +0 -228
- package/docs/release-process.md +0 -244
- package/docs/schema-indexes.md +0 -5
- package/docs/sealed-pipeline-ownership.md +0 -101
- package/docs/skills/plugin/SKILL.md +0 -132
- package/docs/skills/theme/SKILL.md +0 -77
- package/docs/spec-only-host-adoption.md +0 -157
- package/docs/transaction-patterns.md +0 -5
- package/skills/README.md +0 -127
- package/skills/develop/SKILL.md +0 -258
- package/skills/install/SKILL.md +0 -112
- package/skills/integrate/SKILL.md +0 -60
- package/skills/media-gc/SKILL.md +0 -85
- package/skills/plugin/SKILL.md +0 -132
- package/skills/provision/SKILL.md +0 -194
- package/skills/theme/SKILL.md +0 -77
- package/skills/update/SKILL.md +0 -51
- package/templates/chatgpt-sites/auth.ts +0 -66
- package/templates/chatgpt-sites/build.mjs +0 -14
- package/templates/chatgpt-sites/env.ts +0 -1
- package/templates/chatgpt-sites/mcp.ts +0 -48
- package/templates/chatgpt-sites/public-mcp.ts +0 -29
- package/templates/chatgpt-sites/smoke-local.mjs +0 -20
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@aotter/mantle/postgres/compile`: the PostgreSQL dialect's compile side (ADR-0035 decision 3). Loaded only by the CLI, after
|
|
3
|
+
* the shared front end has parsed the source and tagged its relations. `accepts` throws the first refusal with its offset.
|
|
4
|
+
*/
|
|
5
|
+
/** The PostgreSQL dialect as a plan records it (ADR-0035 decision 5). `version` changes when what a PostgreSQL plan means changes. */
|
|
6
|
+
export declare const name = "@aotter/mantle/postgres";
|
|
7
|
+
export declare const version = "1";
|
|
8
|
+
export { validateProgram as accepts } from "../validator.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/compile/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sIAAsI;AACtI,eAAO,MAAM,IAAI,4BAA4B,CAAC;AAC9C,eAAO,MAAM,OAAO,MAAM,CAAC;AAC3B,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@aotter/mantle/postgres/compile`: the PostgreSQL dialect's compile side (ADR-0035 decision 3). Loaded only by the CLI, after
|
|
3
|
+
* the shared front end has parsed the source and tagged its relations. `accepts` throws the first refusal with its offset.
|
|
4
|
+
*/
|
|
5
|
+
/** The PostgreSQL dialect as a plan records it (ADR-0035 decision 5). `version` changes when what a PostgreSQL plan means changes. */
|
|
6
|
+
export const name = "@aotter/mantle/postgres";
|
|
7
|
+
export const version = "1";
|
|
8
|
+
export { validateProgram as accepts } from "../validator.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/postgres/compile/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sIAAsI;AACtI,MAAM,CAAC,MAAM,IAAI,GAAG,yBAAyB,CAAC;AAC9C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAC3B,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PostgreSQL connection port. Structural types of node-postgres (`pg`), so Mantle depends on no driver: the host passes
|
|
3
|
+
* `connect`, which opens one client (`new Client(env.HYPERDRIVE.connectionString)` on Workers, where Hyperdrive pools the
|
|
4
|
+
* connections and a socket must not outlive its request). Every operation opens a client and ends it.
|
|
5
|
+
*
|
|
6
|
+
* ponytail: a client per operation, statements sent one at a time (pg does not pipeline). Upgrade to one client per request,
|
|
7
|
+
* or a pipelining driver, when a Procedure's round trips show in latency.
|
|
8
|
+
*/
|
|
9
|
+
import type { DatabaseDriver } from "../core/driver.js";
|
|
10
|
+
export interface PgField {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly dataTypeID: number;
|
|
13
|
+
readonly dataTypeModifier?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PgResult {
|
|
16
|
+
readonly rows: Record<string, unknown>[];
|
|
17
|
+
readonly rowCount: number | null;
|
|
18
|
+
readonly fields: readonly PgField[];
|
|
19
|
+
}
|
|
20
|
+
export interface PgClient {
|
|
21
|
+
/** A native transport without RowDescription can execute a dialect-supplied result description. */
|
|
22
|
+
readonly temporaryResultMetadata?: boolean;
|
|
23
|
+
execute?(statement: PgStatement): Promise<PgOutcome>;
|
|
24
|
+
query(config: {
|
|
25
|
+
text: string;
|
|
26
|
+
values?: unknown[];
|
|
27
|
+
types?: {
|
|
28
|
+
getTypeParser(oid: number, format?: string): (text: string) => unknown;
|
|
29
|
+
};
|
|
30
|
+
}): Promise<PgResult>;
|
|
31
|
+
/** The positional form Kysely (Better Auth) calls. */
|
|
32
|
+
query(text: string, values?: readonly unknown[]): Promise<PgResult & {
|
|
33
|
+
command: string;
|
|
34
|
+
}>;
|
|
35
|
+
end(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/** Opens one connected client. */
|
|
38
|
+
export type PgConnect = () => Promise<PgClient>;
|
|
39
|
+
/** An error PostgreSQL answered with carries its SQLSTATE in `code`; anything else (a dropped socket) carries none. */
|
|
40
|
+
export interface PgError extends Error {
|
|
41
|
+
code?: string;
|
|
42
|
+
constraint?: string;
|
|
43
|
+
table?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare const sqlState: (e: unknown) => string | undefined;
|
|
46
|
+
export interface PgStatement {
|
|
47
|
+
readonly text: string;
|
|
48
|
+
readonly values?: readonly unknown[];
|
|
49
|
+
readonly describeResult?: () => {
|
|
50
|
+
query: string;
|
|
51
|
+
names: string[] | undefined;
|
|
52
|
+
} | undefined;
|
|
53
|
+
/** The statement is a read: a client that had to begin read-write (to describe it) makes the transaction read-only first. */
|
|
54
|
+
readonly readOnly?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/** One statement's rows (decoded) and the rows it wrote or returned. */
|
|
57
|
+
export interface PgOutcome {
|
|
58
|
+
readonly rows: Record<string, unknown>[];
|
|
59
|
+
readonly count: number;
|
|
60
|
+
}
|
|
61
|
+
/** ADR-0037 decision 5: a statement that runs away (a recursive CTE, a regular expression) ends here. 0 is no limit. */
|
|
62
|
+
export declare const STATEMENT_TIMEOUT_MS = 10000;
|
|
63
|
+
/**
|
|
64
|
+
* Statements in one SERIALIZABLE transaction, all or nothing. SERIALIZABLE keeps what SQLite's one writer gave every guard
|
|
65
|
+
* (`WHERE NOT EXISTS`, a first sign-up becoming owner): a concurrent write that would break one fails with 40001 and the
|
|
66
|
+
* whole batch is retried. `check` runs after each statement and may throw to roll everything back.
|
|
67
|
+
*/
|
|
68
|
+
export declare function transaction(connect: PgConnect, statements: readonly PgStatement[], check?: (i: number, outcome: PgOutcome) => void, timeoutMs?: number): Promise<PgOutcome[]>;
|
|
69
|
+
/**
|
|
70
|
+
* One read on its own client, in a read-only transaction: the settings are pinned, and Hyperdrive never answers a read
|
|
71
|
+
* inside a transaction from its cache, so a read sees the write before it.
|
|
72
|
+
* ponytail: three round trips (BEGIN, the read, COMMIT); a pipelining driver sends them as one.
|
|
73
|
+
*/
|
|
74
|
+
export declare function query(connect: PgConnect, s: PgStatement, timeoutMs?: number): Promise<PgOutcome>;
|
|
75
|
+
/** `?1` binds (Mantle's portable SQL) as PostgreSQL's `$1`, outside quoted strings and names. */
|
|
76
|
+
export declare const numbered: (sql: string) => string;
|
|
77
|
+
/**
|
|
78
|
+
* The `DatabaseDriver` over PostgreSQL, for auth's portable SQL and the conformance fixtures: every batch is one transaction.
|
|
79
|
+
*/
|
|
80
|
+
export declare function pgDatabaseDriver(connect: PgConnect): DatabaseDriver;
|
|
81
|
+
/**
|
|
82
|
+
* What Better Auth takes as a PostgreSQL pool (`database: pgPool(connect)`): Kysely's `PostgresDialect` asks it for a client per
|
|
83
|
+
* query or transaction and releases it, so each gets its own connection, as the Workers rule above asks.
|
|
84
|
+
*/
|
|
85
|
+
export declare function pgPool(connect: PgConnect): {
|
|
86
|
+
readonly options: Readonly<Record<string, never>>;
|
|
87
|
+
connect(): Promise<PgClient & {
|
|
88
|
+
release(): void;
|
|
89
|
+
}>;
|
|
90
|
+
end(): Promise<void>;
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/postgres/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { decodeField } from "./codec.js";
|
|
2
|
+
export const sqlState = (e) => {
|
|
3
|
+
const code = e?.code;
|
|
4
|
+
return typeof code === "string" && /^[0-9A-Z]{5}$/.test(code) ? code : undefined;
|
|
5
|
+
};
|
|
6
|
+
// every value comes back as text and is decoded by its column's type OID (`decodeField`), never by the driver's own parsers
|
|
7
|
+
const RAW = { getTypeParser: () => (text) => text };
|
|
8
|
+
async function run(client, s) {
|
|
9
|
+
if (client.execute)
|
|
10
|
+
return client.execute(s);
|
|
11
|
+
const r = await client.query({ text: s.text, values: [...(s.values ?? [])], types: RAW });
|
|
12
|
+
const rows = r.rows.map((row) => Object.fromEntries(r.fields.map((f) => [f.name, decodeField(f.dataTypeID, row[f.name], f.dataTypeModifier)])));
|
|
13
|
+
return { rows, count: r.rowCount ?? rows.length };
|
|
14
|
+
}
|
|
15
|
+
const SERIALIZATION = new Set(["40001", "40P01"]);
|
|
16
|
+
/**
|
|
17
|
+
* What every wire value is decoded under, whatever the server's defaults: ISO dates, PostgreSQL interval text, shortest exact
|
|
18
|
+
* floats, UTC. `SET LOCAL` inside the transaction, because Hyperdrive pools connections per transaction.
|
|
19
|
+
*/
|
|
20
|
+
const PINNED = "SET LOCAL DateStyle = 'ISO, YMD'; SET LOCAL IntervalStyle = 'postgres'; SET LOCAL extra_float_digits = 1; SET LOCAL TimeZone = 'UTC'; " +
|
|
21
|
+
// pg_temp named last: a temporary table on a pooled session never stands in for a Schema table of the same name
|
|
22
|
+
"SELECT set_config('search_path', concat_ws(', ', nullif(current_setting('search_path'), ''), 'pg_temp'), true)";
|
|
23
|
+
/** ADR-0037 decision 5: a statement that runs away (a recursive CTE, a regular expression) ends here. 0 is no limit. */
|
|
24
|
+
export const STATEMENT_TIMEOUT_MS = 10_000;
|
|
25
|
+
const pinned = (timeoutMs) => `${PINNED}; SET LOCAL statement_timeout = ${Math.max(0, Math.floor(timeoutMs))}`;
|
|
26
|
+
const ATTEMPTS = 5;
|
|
27
|
+
/**
|
|
28
|
+
* Statements in one SERIALIZABLE transaction, all or nothing. SERIALIZABLE keeps what SQLite's one writer gave every guard
|
|
29
|
+
* (`WHERE NOT EXISTS`, a first sign-up becoming owner): a concurrent write that would break one fails with 40001 and the
|
|
30
|
+
* whole batch is retried. `check` runs after each statement and may throw to roll everything back.
|
|
31
|
+
*/
|
|
32
|
+
export async function transaction(connect, statements, check, timeoutMs = STATEMENT_TIMEOUT_MS) {
|
|
33
|
+
for (let attempt = 1;; attempt++) {
|
|
34
|
+
const client = await connect();
|
|
35
|
+
let failedAt = -1;
|
|
36
|
+
let committing = false;
|
|
37
|
+
try {
|
|
38
|
+
await client.query({ text: `BEGIN ISOLATION LEVEL SERIALIZABLE; ${pinned(timeoutMs)}` });
|
|
39
|
+
const out = [];
|
|
40
|
+
for (const [i, s] of statements.entries()) {
|
|
41
|
+
failedAt = i;
|
|
42
|
+
out.push(await run(client, s));
|
|
43
|
+
failedAt = -1;
|
|
44
|
+
check?.(i, out[i]);
|
|
45
|
+
}
|
|
46
|
+
committing = true;
|
|
47
|
+
await client.query({ text: "COMMIT" });
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
await client.query({ text: "ROLLBACK" }).catch(() => undefined);
|
|
52
|
+
if (SERIALIZATION.has(sqlState(e) ?? "") && attempt < ATTEMPTS)
|
|
53
|
+
continue;
|
|
54
|
+
// `committing`: only a failure during COMMIT leaves the outcome unknown; anything before it applied nothing
|
|
55
|
+
throw Object.assign(e, { statement: failedAt, committing });
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
await client.end().catch(() => undefined);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* One read on its own client, in a read-only transaction: the settings are pinned, and Hyperdrive never answers a read
|
|
64
|
+
* inside a transaction from its cache, so a read sees the write before it.
|
|
65
|
+
* ponytail: three round trips (BEGIN, the read, COMMIT); a pipelining driver sends them as one.
|
|
66
|
+
*/
|
|
67
|
+
export async function query(connect, s, timeoutMs = STATEMENT_TIMEOUT_MS) {
|
|
68
|
+
const client = await connect();
|
|
69
|
+
try {
|
|
70
|
+
await client.query({ text: `BEGIN${client.temporaryResultMetadata ? "" : " READ ONLY"}; ${pinned(timeoutMs)}` });
|
|
71
|
+
const out = await run(client, { ...s, readOnly: true });
|
|
72
|
+
await client.query({ text: "COMMIT" });
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
await client.query({ text: "ROLLBACK" }).catch(() => undefined);
|
|
77
|
+
throw e;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
await client.end().catch(() => undefined);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** `?1` binds (Mantle's portable SQL) as PostgreSQL's `$1`, outside quoted strings and names. */
|
|
84
|
+
export const numbered = (sql) => sql.replace(/'(?:[^']|'')*'|"(?:[^"]|"")*"|\?(\d+)/g, (m, n) => (n ? `$${n}` : m));
|
|
85
|
+
/**
|
|
86
|
+
* The `DatabaseDriver` over PostgreSQL, for auth's portable SQL and the conformance fixtures: every batch is one transaction.
|
|
87
|
+
*/
|
|
88
|
+
export function pgDatabaseDriver(connect) {
|
|
89
|
+
return {
|
|
90
|
+
async batch(statements) {
|
|
91
|
+
return (await transaction(connect, statements.map((s) => ({ text: numbered(s.sql), values: s.binds })))).map((o) => ({ rows: o.rows }));
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* What Better Auth takes as a PostgreSQL pool (`database: pgPool(connect)`): Kysely's `PostgresDialect` asks it for a client per
|
|
97
|
+
* query or transaction and releases it, so each gets its own connection, as the Workers rule above asks.
|
|
98
|
+
*/
|
|
99
|
+
export function pgPool(connect) {
|
|
100
|
+
return {
|
|
101
|
+
// Kysely 0.29 requires pool options; this shim owns no connection configuration or control client.
|
|
102
|
+
options: {},
|
|
103
|
+
async connect() {
|
|
104
|
+
const client = await connect();
|
|
105
|
+
return Object.assign(client, { release: () => void client.end().catch(() => undefined) });
|
|
106
|
+
},
|
|
107
|
+
async end() { },
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/postgres/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { StorageSchema } from "../core/dialect.js";
|
|
2
|
+
import type { StoreApplied, StoreExecutor, StoreRow, StoreStatement } from "../core/store.js";
|
|
3
|
+
import { type PgConnect } from "./driver.js";
|
|
4
|
+
export declare class PgStoreExecutor implements StoreExecutor {
|
|
5
|
+
private readonly connect;
|
|
6
|
+
private readonly schemas;
|
|
7
|
+
/** Check constraint name -> "<schema>: <expression>", the message D1 gives for the same check. */
|
|
8
|
+
private readonly checks;
|
|
9
|
+
private readonly timeoutMs?;
|
|
10
|
+
/** PostgreSQL takes 65535 binds; Core's validator reads this. */
|
|
11
|
+
readonly maxBindings = 10000;
|
|
12
|
+
constructor(connect: PgConnect, schemas: Readonly<Record<string, StorageSchema>>,
|
|
13
|
+
/** Check constraint name -> "<schema>: <expression>", the message D1 gives for the same check. */
|
|
14
|
+
checks: ReadonlyMap<string, string>, timeoutMs?: number | undefined);
|
|
15
|
+
private prepared;
|
|
16
|
+
select(statement: StoreStatement): Promise<readonly StoreRow[]>;
|
|
17
|
+
apply(batch: readonly StoreStatement[]): Promise<readonly StoreApplied[]>;
|
|
18
|
+
private mapped;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/postgres/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAgC,KAAK,SAAS,EAAkC,MAAM,aAAa,CAAC;AAO3G,qBAAa,eAAgB,YAAW,aAAa;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,kGAAkG;IAClG,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAP7B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,SAAU;gBAEX,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACjE,kGAAkG;IACjF,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,SAAS,CAAC,EAAE,MAAM,YAAA;IAGrC,OAAO,CAAC,QAAQ;IAMV,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAK/D,KAAK,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAU/E,OAAO,CAAC,MAAM;CAqBf"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** PgStoreExecutor: the PostgreSQL dialect's StoreExecutor. Prints IR (`typed`, then the deparser) and runs it over `PgConnect`. */
|
|
2
|
+
import { DiagnosticError, runtimeDiagnostic } from "../spec/kernel/index.js";
|
|
3
|
+
import { query, sqlState, transaction } from "./driver.js";
|
|
4
|
+
import { describeResult } from "./textRows.js";
|
|
5
|
+
import { print, typed } from "./print.js";
|
|
6
|
+
const fail = (code, message, conflict) => new DiagnosticError(runtimeDiagnostic({ code, severity: "error", path: "store", message, ...(conflict ? { conflict } : {}) }));
|
|
7
|
+
export class PgStoreExecutor {
|
|
8
|
+
connect;
|
|
9
|
+
schemas;
|
|
10
|
+
checks;
|
|
11
|
+
timeoutMs;
|
|
12
|
+
/** PostgreSQL takes 65535 binds; Core's validator reads this. */
|
|
13
|
+
maxBindings = 10_000;
|
|
14
|
+
constructor(connect, schemas,
|
|
15
|
+
/** Check constraint name -> "<schema>: <expression>", the message D1 gives for the same check. */
|
|
16
|
+
checks, timeoutMs) {
|
|
17
|
+
this.connect = connect;
|
|
18
|
+
this.schemas = schemas;
|
|
19
|
+
this.checks = checks;
|
|
20
|
+
this.timeoutMs = timeoutMs;
|
|
21
|
+
}
|
|
22
|
+
prepared(s) {
|
|
23
|
+
if (s.binds.length > this.maxBindings)
|
|
24
|
+
throw fail("INPUT_VALIDATION_FAILED", `a statement binds ${s.binds.length} values; the limit is ${this.maxBindings}`);
|
|
25
|
+
const ast = typed(s.ir, this.schemas);
|
|
26
|
+
return { text: print(ast), values: s.binds, describeResult: () => describeResult(ast) };
|
|
27
|
+
}
|
|
28
|
+
async select(statement) {
|
|
29
|
+
const s = this.prepared(statement);
|
|
30
|
+
return (await query(this.connect, s, this.timeoutMs).catch((e) => this.mapped(e, "select"))).rows;
|
|
31
|
+
}
|
|
32
|
+
async apply(batch) {
|
|
33
|
+
const statements = batch.map((s) => this.prepared(s));
|
|
34
|
+
// a write's count is checked where it ran, inside the transaction: a mismatch rolls the whole batch back
|
|
35
|
+
const out = await transaction(this.connect, statements, (i, o) => {
|
|
36
|
+
const expect = batch[i].expect;
|
|
37
|
+
if (expect !== undefined && o.count !== expect)
|
|
38
|
+
throw fail("CONFLICT", `CONFLICT op=${i}: the write matched a different number of rows than it expected`, { opIndex: i, reason: "expect" });
|
|
39
|
+
}, this.timeoutMs).catch((e) => this.mapped(e, "apply"));
|
|
40
|
+
return out.map((o) => ({ affected: o.count, rows: o.rows }));
|
|
41
|
+
}
|
|
42
|
+
mapped(e, kind) {
|
|
43
|
+
if (e instanceof DiagnosticError)
|
|
44
|
+
throw e;
|
|
45
|
+
const state = sqlState(e);
|
|
46
|
+
const { statement: at, committing } = e;
|
|
47
|
+
const op = kind === "apply" && at !== undefined && at >= 0 ? { opIndex: at } : {};
|
|
48
|
+
switch (state) {
|
|
49
|
+
// the engine names the statement that failed, so a unique conflict always knows its op
|
|
50
|
+
case "23505": throw fail("CONFLICT", "A unique constraint of the Schema was violated.", { reason: "unique", ...op });
|
|
51
|
+
case "23514": throw fail("INPUT_VALIDATION_FAILED", `CHECK ${this.checks.get(e.constraint ?? "") ?? "a check of the Schema failed"}`);
|
|
52
|
+
case "23502": throw fail("INPUT_VALIDATION_FAILED", "A required column has no value; a scoped Schema needs a caller identity.");
|
|
53
|
+
case "42P10": throw fail("INPUT_VALIDATION_FAILED", "onConflict.columns must match a unique index of the Schema.");
|
|
54
|
+
case "40001":
|
|
55
|
+
case "40P01": throw fail("RESOURCE_UNAVAILABLE", "The database stayed too busy to apply the write; nothing was written.");
|
|
56
|
+
}
|
|
57
|
+
// the connection, the credentials, resources, an operator or the server itself: never the caller's input
|
|
58
|
+
const down = !state || /^(08|28|53|57|58|XX)/.test(state);
|
|
59
|
+
if (down && kind === "apply" && committing)
|
|
60
|
+
throw fail("OUTCOME_UNKNOWN", "The database did not answer the commit; the write may or may not have been applied.");
|
|
61
|
+
if (down)
|
|
62
|
+
throw fail("RESOURCE_UNAVAILABLE", kind === "apply" ? "The database is unavailable; nothing was written." : "The database is unavailable.");
|
|
63
|
+
// a data exception (a value that does not fit its column), or any other refusal: the write did not happen
|
|
64
|
+
if (state?.startsWith("22"))
|
|
65
|
+
throw fail("INPUT_VALIDATION_FAILED", "A value does not fit its column's type.");
|
|
66
|
+
throw fail("INPUT_VALIDATION_FAILED", `The database refused the statement (SQLSTATE ${state}).`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/postgres/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@aotter/mantle/postgres`: the PostgreSQL dialect's runtime side (ADR-0035). The portable subset on native PostgreSQL types,
|
|
3
|
+
* over any node-postgres-shaped client: `pg` with Cloudflare Hyperdrive on Workers, or `pg` on Bun and Node.
|
|
4
|
+
*/
|
|
5
|
+
export { postgresStorage, postgresDialect, type PostgresStorageOptions } from "./adapter.js";
|
|
6
|
+
export { pgDatabaseDriver, pgPool, type PgClient, type PgConnect } from "./driver.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@aotter/mantle/postgres`: the PostgreSQL dialect's runtime side (ADR-0035). The portable subset on native PostgreSQL types,
|
|
3
|
+
* over any node-postgres-shaped client: `pg` with Cloudflare Hyperdrive on Workers, or `pg` on Bun and Node.
|
|
4
|
+
*/
|
|
5
|
+
export { postgresStorage, postgresDialect } from "./adapter.js";
|
|
6
|
+
export { pgDatabaseDriver, pgPool } from "./driver.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAiC,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SqlNode as N } from "../spec/domain/index.js";
|
|
2
|
+
import type { PolicyLowering } from "../core/sql/policy.js";
|
|
3
|
+
/** `CAST(x AS <Mantle type>)` in PostgreSQL's spelling of the type. */
|
|
4
|
+
export declare function cast(x: N, type: string): N;
|
|
5
|
+
export declare function pgLowering(timeZone: string): PolicyLowering;
|
|
6
|
+
//# sourceMappingURL=lower.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../../src/postgres/lower.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,OAAO,IAAI,CAAC,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS3E,uEAAuE;AACvE,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAI1C;AAqCD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAoF3D"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// The PostgreSQL dialect's lowering (ADR-0035 decision 3): what Core's policy rewriter hands a dialect to spell. Most of Mantle
|
|
2
|
+
// SQL is PostgreSQL already, so this is short: casts and binds typed, the SQLite vocabulary of the portable subset spelled in
|
|
3
|
+
// PostgreSQL, and the site time zone made explicit. AST in, AST out, no parser.
|
|
4
|
+
import { SqlRefusal as Refused } from "../spec/domain/index.js";
|
|
5
|
+
import { S, num } from "../core/sql/ast.js";
|
|
6
|
+
import { encodeDate, encodeNumeric, encodeTimestamptz, decodeDate, decodeNumeric, decodeTimestamptz } from "../d1/codec.js";
|
|
7
|
+
import { parseNumeric } from "../spec/domain/index.js";
|
|
8
|
+
import { pgType } from "./codec.js";
|
|
9
|
+
const fn = (f, args, extra = {}) => ({ FuncCall: { funcname: [S(f)], args, funcformat: "COERCE_EXPLICIT_CALL", ...extra } });
|
|
10
|
+
const str = (s) => ({ A_Const: { sval: { sval: s } } });
|
|
11
|
+
/** `CAST(x AS <Mantle type>)` in PostgreSQL's spelling of the type. */
|
|
12
|
+
export function cast(x, type) {
|
|
13
|
+
const t = pgType(type);
|
|
14
|
+
const m = /^numeric\((\d+), (\d+)\)$/.exec(t);
|
|
15
|
+
return { TypeCast: { arg: x, typeName: m ? { names: [S("numeric")], typmods: [num(Number(m[1])), num(Number(m[2]))], typemod: -1 } : { names: [S(t)], typemod: -1 } } };
|
|
16
|
+
}
|
|
17
|
+
const coalesce = (...args) => ({ CoalesceExpr: { args } });
|
|
18
|
+
const authored = (n, scope) => (n.agg_filter ? { agg_filter: scope.tx(n.agg_filter) } : {});
|
|
19
|
+
const by = (node) => ({ SortBy: { node: structuredClone(node), sortby_dir: "SORTBY_DEFAULT", sortby_nulls: "SORTBY_NULLS_DEFAULT" } });
|
|
20
|
+
/** `'[]'::json`: json, not jsonb, so it matches json_agg's type. */
|
|
21
|
+
const json = (text) => ({ TypeCast: { arg: str(text), typeName: { names: [S("json")], typemod: -1 } } });
|
|
22
|
+
const argOf = (n, scope) => {
|
|
23
|
+
const k = n.ColumnRef?.fields?.length === 2 ? n.ColumnRef.fields[1].String.sval : undefined;
|
|
24
|
+
if (k)
|
|
25
|
+
return { input: k, type: scope.inputs[k] };
|
|
26
|
+
return { const: Number(n.A_Const?.ival?.ival ?? n.A_Const?.fval?.fval) };
|
|
27
|
+
};
|
|
28
|
+
/** Great-circle meters between the row's point and (__lat, __lng): the haversine D1 computes, in PostgreSQL's functions. */
|
|
29
|
+
const HAV = (lat1, lng1) => `(2 * 6371008.8 * asin(least(1.0, sqrt(sin(radians(__lat - ${lat1}) / 2) * sin(radians(__lat - ${lat1}) / 2) + cos(radians(${lat1})) * cos(radians(__lat)) * sin(radians(__lng - ${lng1}) / 2) * sin(radians(__lng - ${lng1}) / 2)))))`;
|
|
30
|
+
/** PostgreSQL text with sub-ASTs spliced in for `__name`, printed in parentheses (the same device as D1's lowering). */
|
|
31
|
+
const TOKEN = /"(?:[^"]|"")*"|'(?:[^']|'')*'|__\w+/g;
|
|
32
|
+
function sql(text, subst = {}) {
|
|
33
|
+
const parts = [];
|
|
34
|
+
let last = 0;
|
|
35
|
+
for (const m of text.matchAll(TOKEN)) {
|
|
36
|
+
if (!m[0].startsWith("__"))
|
|
37
|
+
continue;
|
|
38
|
+
const node = subst[m[0]];
|
|
39
|
+
if (!node)
|
|
40
|
+
throw new Error(`lowering template names ${m[0]} but was not given it`);
|
|
41
|
+
if (m.index > last)
|
|
42
|
+
parts.push(text.slice(last, m.index));
|
|
43
|
+
parts.push("(", structuredClone(node), ")");
|
|
44
|
+
last = m.index + m[0].length;
|
|
45
|
+
}
|
|
46
|
+
if (last < text.length)
|
|
47
|
+
parts.push(text.slice(last));
|
|
48
|
+
return { Raw: { parts } };
|
|
49
|
+
}
|
|
50
|
+
const q = (id) => `"${id.replace(/"/g, '""')}"`;
|
|
51
|
+
const lit = (s) => `'${s.replace(/'/g, "''")}'`;
|
|
52
|
+
const strConst = (n) => n?.A_Const?.sval?.sval;
|
|
53
|
+
export function pgLowering(timeZone) {
|
|
54
|
+
const zone = str(timeZone);
|
|
55
|
+
return {
|
|
56
|
+
input: (param, type) => cast(param, type),
|
|
57
|
+
system: (param, type) => cast(param, type),
|
|
58
|
+
func(f, n, scope) {
|
|
59
|
+
const args = n.args ?? [];
|
|
60
|
+
switch (f) {
|
|
61
|
+
// in the site time zone, as D1 computes them
|
|
62
|
+
case "date_trunc": return fn("date_trunc", [args[0], scope.tx(args[1]), zone]);
|
|
63
|
+
case "extract": return sql(`CAST(extract(${strConst(args[0])} FROM __ts AT TIME ZONE ${lit(timeZone)}) AS int8)`, { __ts: scope.tx(args[1]) });
|
|
64
|
+
// SQLite's columns (key, value, type, id), so the portable subset's json_each reads the same: see `_mantle_json_each`
|
|
65
|
+
case "json_each": return fn("_mantle_json_each", [cast(scope.tx(args[0]), "json")]);
|
|
66
|
+
// PostgreSQL leaves an aggregate's input order open; ordering by the value (an object by its key) keeps it deterministic.
|
|
67
|
+
// ponytail: D1 aggregates in scan order, so the two engines may order an array differently; neither order is promised
|
|
68
|
+
// json has no ordering of its own, so the order is jsonb's; a DISTINCT aggregate may order only by its argument
|
|
69
|
+
// an author's FILTER and ORDER BY (ADR-0037) are kept; without an ORDER BY the order is the value's, as above
|
|
70
|
+
case "json_group_array": {
|
|
71
|
+
const x = scope.tx(args[0]);
|
|
72
|
+
return coalesce(fn("json_agg", [x], { ...(n.agg_distinct ? { agg_order: [by(x)], agg_distinct: true } : { agg_order: n.agg_order ? scope.tx(n.agg_order) : [by(fn("to_jsonb", [x]))] }), ...authored(n, scope) }), json("[]"));
|
|
73
|
+
}
|
|
74
|
+
case "json_group_object": {
|
|
75
|
+
const k = scope.tx(args[0]);
|
|
76
|
+
return coalesce(fn("json_object_agg", [k, scope.tx(args[1])], { agg_order: n.agg_order ? scope.tx(n.agg_order) : [by(k)], ...authored(n, scope) }), json("{}"));
|
|
77
|
+
}
|
|
78
|
+
case "json_array_length": return fn("jsonb_array_length", [cast(scope.tx(args[0]), "json")]);
|
|
79
|
+
case "instr": return fn("strpos", [scope.tx(args[0]), scope.tx(args[1])]);
|
|
80
|
+
// PostgreSQL rounds to a scale only as numeric
|
|
81
|
+
case "round": return args.length === 2 ? fn("round", [{ TypeCast: { arg: scope.tx(args[0]), typeName: { names: [S("numeric")], typemod: -1 } } }, scope.tx(args[1])]) : undefined;
|
|
82
|
+
case "mantle.search": {
|
|
83
|
+
const alias = args[0].ColumnRef.fields[0].String.sval;
|
|
84
|
+
const { schema, def } = scope.alias(alias);
|
|
85
|
+
if (!def.search?.length)
|
|
86
|
+
throw new Refused("SQL_FUNCTION", `${schema} declares no search fields`);
|
|
87
|
+
scope.seen("search");
|
|
88
|
+
// ponytail: ILIKE over the declared fields, a scan; a pg_trgm GIN index is the upgrade when a search shows in latency
|
|
89
|
+
const pattern = `'%' || replace(replace(replace(__q, '!', '!!'), '%', '!%'), '_', '!_') || '%'`;
|
|
90
|
+
return sql(def.search.map((fld) => `${q(alias)}.${q(fld)} ILIKE ${pattern} ESCAPE '!'`).join(" OR "), { __q: scope.tx(args[1]) });
|
|
91
|
+
}
|
|
92
|
+
case "mantle.search_rank": {
|
|
93
|
+
const alias = args[0].ColumnRef.fields[0].String.sval;
|
|
94
|
+
const { schema, def, searchQuery } = scope.alias(alias);
|
|
95
|
+
if (!def.search?.length)
|
|
96
|
+
throw new Refused("SQL_FUNCTION", `${schema} declares no search fields`);
|
|
97
|
+
if (!searchQuery)
|
|
98
|
+
throw new Refused("SQL_FUNCTION", `mantle.search_rank(${alias}) needs a mantle.search(${alias}, ...) in the same query`);
|
|
99
|
+
// ponytail: lower is better, as bm25 is on D1: minus the query's occurrences across the fields. A pg_trgm or tsvector rank is the upgrade
|
|
100
|
+
const count = (fld) => `coalesce((length(lower(${q(alias)}.${q(fld)})) - length(replace(lower(${q(alias)}.${q(fld)}), lower(__q), ''))) / greatest(length(__q), 1), 0)`;
|
|
101
|
+
return sql(`-(${def.search.map(count).join(" + ")})`, { __q: scope.tx(searchQuery) });
|
|
102
|
+
}
|
|
103
|
+
case "mantle.near":
|
|
104
|
+
case "mantle.distance": {
|
|
105
|
+
const [ref, latN, lngN] = args;
|
|
106
|
+
const alias = ref.ColumnRef.fields[0].String.sval, fld = ref.ColumnRef.fields[1].String.sval;
|
|
107
|
+
const { schema, def } = scope.alias(alias);
|
|
108
|
+
if (def.fields[fld] !== "geo")
|
|
109
|
+
throw new Refused("SQL_FUNCTION", `${schema}.${fld} is not a geo field`);
|
|
110
|
+
const la = `${q(alias)}.${q(`${fld}_lat`)}`, ln = `${q(alias)}.${q(`${fld}_lng`)}`;
|
|
111
|
+
const sub = { __lat: scope.tx(latN), __lng: scope.tx(lngN) };
|
|
112
|
+
if (f === "mantle.distance")
|
|
113
|
+
return sql(HAV(la, ln), sub);
|
|
114
|
+
scope.seen("near");
|
|
115
|
+
// ponytail: the box D1 reads from its R*Tree, here a plain range over the two columns; a GiST index is the upgrade
|
|
116
|
+
const meters = Number(args[3].A_Const.ival?.ival ?? args[3].A_Const.fval?.fval);
|
|
117
|
+
const b = (box) => scope.param({ k: "dialect", box, lat: argOf(latN, scope), lng: argOf(lngN, scope), meters });
|
|
118
|
+
return sql(`${la} BETWEEN __b0 AND __b1 AND ${ln} BETWEEN __b2 AND __b3 AND ${HAV(la, ln)} <= ${meters}`, { ...sub, __b0: b("minLat"), __b1: b("maxLat"), __b2: b("minLng"), __b3: b("maxLng") });
|
|
119
|
+
}
|
|
120
|
+
case "typeof":
|
|
121
|
+
case "hex":
|
|
122
|
+
case "json_extract":
|
|
123
|
+
case "json_set":
|
|
124
|
+
case "json_insert":
|
|
125
|
+
case "json_remove":
|
|
126
|
+
throw new Refused("SQL_FUNCTION", `${f} is not supported by the PostgreSQL dialect`);
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
},
|
|
130
|
+
call: (out) => ({ FuncCall: out }),
|
|
131
|
+
cast(n, scope) {
|
|
132
|
+
const t = n.typeName.names.at(-1).String.sval;
|
|
133
|
+
const a = n.arg?.A_Const;
|
|
134
|
+
const text = a?.sval?.sval ?? a?.fval?.fval ?? (a?.ival?.ival !== undefined ? String(a.ival.ival) : undefined);
|
|
135
|
+
// a literal is checked as D1 checks it, so both dialects refuse the same text, and sent in one spelling
|
|
136
|
+
if (t === "timestamptz" && text !== undefined)
|
|
137
|
+
return cast(str(decodeTimestamptz(encodeTimestamptz(text))), "timestamptz");
|
|
138
|
+
if (t === "date" && text !== undefined)
|
|
139
|
+
return cast(str(decodeDate(encodeDate(text))), "date");
|
|
140
|
+
if (t === "numeric" && n.typeName.typmods?.length === 2) {
|
|
141
|
+
const [p, s] = n.typeName.typmods.map((m) => m.A_Const.ival.ival);
|
|
142
|
+
parseNumeric(`numeric(${p}, ${s})`);
|
|
143
|
+
if (text !== undefined)
|
|
144
|
+
return cast(str(decodeNumeric(encodeNumeric(text, p, s), s)), `numeric(${p},${s})`);
|
|
145
|
+
}
|
|
146
|
+
// a bigint has no cast to bool in PostgreSQL; `_mantle_bool` gives PostgreSQL's int4, text and numeric rules for every type
|
|
147
|
+
if (t === "bool")
|
|
148
|
+
return fn("_mantle_bool", [scope.tx(n.arg)]);
|
|
149
|
+
return { TypeCast: { ...n, arg: scope.tx(n.arg) } };
|
|
150
|
+
},
|
|
151
|
+
sublink: (out) => ({ SubLink: out }),
|
|
152
|
+
// 32 lower-case hex digits, the shape D1's ids have
|
|
153
|
+
newId: () => fn("replace", [{ TypeCast: { arg: fn("gen_random_uuid", []), typeName: { names: [S("text")], typemod: -1 } } }, str("-"), str("")]),
|
|
154
|
+
columns: () => [],
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=lower.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower.js","sourceRoot":"","sources":["../../src/postgres/lower.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SqlNode as N } from "../spec/domain/index.js";
|
|
2
|
+
import type { StorageSchema } from "../core/dialect.js";
|
|
3
|
+
export interface RawExpr {
|
|
4
|
+
readonly parts: readonly (string | N)[];
|
|
5
|
+
}
|
|
6
|
+
export declare function print(ast: N): string;
|
|
7
|
+
/** A column's Mantle type: the native columns, then the Schema's fields (a geo field is its two float columns). */
|
|
8
|
+
export declare function columnType(s: StorageSchema, col: string): string | undefined;
|
|
9
|
+
/** The physical AST with PostgreSQL's types made explicit (see the module comment). */
|
|
10
|
+
export declare function typed(ast: N, schemas: Readonly<Record<string, StorageSchema>>): N;
|
|
11
|
+
//# sourceMappingURL=print.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../src/postgres/print.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,MAAM,WAAW,OAAO;IAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAA;CAAE;AAmBpE,wBAAgB,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAEpC;AAED,mHAAmH;AACnH,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW5E;AAKD,uFAAuF;AACvF,wBAAgB,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAkDjF"}
|