@mistriwork/engine 0.0.0-stage → 1.0.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +17 -2
- package/dist/adapters/adapter.d.ts +693 -0
- package/dist/adapters/adapter.js +444 -0
- package/dist/adapters/cache/cacheStore.d.ts +75 -0
- package/dist/adapters/cache/cacheStore.js +160 -0
- package/dist/adapters/cache/resp.d.ts +52 -0
- package/dist/adapters/cache/resp.js +237 -0
- package/dist/adapters/commands/canonicalJson.d.ts +19 -0
- package/dist/adapters/commands/canonicalJson.js +154 -0
- package/dist/adapters/connect.d.ts +29 -0
- package/dist/adapters/connect.js +40 -0
- package/dist/adapters/connectionBudget.d.ts +101 -0
- package/dist/adapters/connectionBudget.js +128 -0
- package/dist/adapters/dbLatency.d.ts +35 -0
- package/dist/adapters/dbLatency.js +79 -0
- package/dist/adapters/epochCache.d.ts +50 -0
- package/dist/adapters/epochCache.js +85 -0
- package/dist/adapters/http/egress.d.ts +48 -0
- package/dist/adapters/http/egress.js +175 -0
- package/dist/adapters/http/httpAdapter.d.ts +71 -0
- package/dist/adapters/http/httpAdapter.js +512 -0
- package/dist/adapters/http/httpDescription.d.ts +32 -0
- package/dist/adapters/http/httpDescription.js +246 -0
- package/dist/adapters/http/openapi.d.ts +98 -0
- package/dist/adapters/http/openapi.js +487 -0
- package/dist/adapters/layoutRefusal.d.ts +24 -0
- package/dist/adapters/layoutRefusal.js +35 -0
- package/dist/adapters/net/networkPolicy.d.ts +44 -0
- package/dist/adapters/net/networkPolicy.js +123 -0
- package/dist/adapters/net/untrustedDatabase.d.ts +18 -0
- package/dist/adapters/net/untrustedDatabase.js +120 -0
- package/dist/adapters/poolAdmission.d.ts +43 -0
- package/dist/adapters/poolAdmission.js +184 -0
- package/dist/adapters/poolMetrics.d.ts +121 -0
- package/dist/adapters/poolMetrics.js +185 -0
- package/dist/adapters/postgres.d.ts +436 -0
- package/dist/adapters/postgres.js +1890 -0
- package/dist/adapters/postgresCatalog.d.ts +96 -0
- package/dist/adapters/postgresCatalog.js +387 -0
- package/dist/adapters/postgresCatalogDigest.d.ts +30 -0
- package/dist/adapters/postgresCatalogDigest.js +87 -0
- package/dist/adapters/postgresCatalogRows.d.ts +62 -0
- package/dist/adapters/postgresCatalogRows.js +37 -0
- package/dist/adapters/postgresDates.d.ts +1 -0
- package/dist/adapters/postgresDates.js +39 -0
- package/dist/adapters/postgresMaintenance.d.ts +33 -0
- package/dist/adapters/postgresMaintenance.js +179 -0
- package/dist/adapters/postgresPool.d.ts +255 -0
- package/dist/adapters/postgresPool.js +838 -0
- package/dist/adapters/postgresPooler.d.ts +28 -0
- package/dist/adapters/postgresPooler.js +267 -0
- package/dist/adapters/postgresReadCatalog.d.ts +31 -0
- package/dist/adapters/postgresReadCatalog.js +226 -0
- package/dist/adapters/postgresReadSnapshot.d.ts +46 -0
- package/dist/adapters/postgresReadSnapshot.js +133 -0
- package/dist/adapters/postgresSchemaEpoch.d.ts +24 -0
- package/dist/adapters/postgresSchemaEpoch.js +149 -0
- package/dist/adapters/postgresTransactionHandle.d.ts +173 -0
- package/dist/adapters/postgresTransactionHandle.js +524 -0
- package/dist/adapters/postgresValues.d.ts +30 -0
- package/dist/adapters/postgresValues.js +75 -0
- package/dist/adapters/replicas.d.ts +70 -0
- package/dist/adapters/replicas.js +208 -0
- package/dist/adapters/reservedSql.d.ts +38 -0
- package/dist/adapters/reservedSql.js +264 -0
- package/dist/adapters/rolePrivileges.d.ts +17 -0
- package/dist/adapters/rolePrivileges.js +22 -0
- package/dist/adapters/scoped/keyRows.d.ts +65 -0
- package/dist/adapters/scoped/keyRows.js +173 -0
- package/dist/adapters/scoped/postgresScopeCatalog.d.ts +16 -0
- package/dist/adapters/scoped/postgresScopeCatalog.js +117 -0
- package/dist/adapters/scoped/scopedCommandOperations.d.ts +5 -0
- package/dist/adapters/scoped/scopedCommandOperations.js +48 -0
- package/dist/adapters/scoped/scopedReads.d.ts +20 -0
- package/dist/adapters/scoped/scopedReads.js +174 -0
- package/dist/adapters/scoped/scopedTransaction.d.ts +89 -0
- package/dist/adapters/scoped/scopedTransaction.js +303 -0
- package/dist/adapters/scoped/sqliteScopeCatalog.d.ts +16 -0
- package/dist/adapters/scoped/sqliteScopeCatalog.js +241 -0
- package/dist/adapters/scoped/updateGuard.d.ts +3 -0
- package/dist/adapters/scoped/updateGuard.js +40 -0
- package/dist/adapters/serverSettings.d.ts +45 -0
- package/dist/adapters/serverSettings.js +46 -0
- package/dist/adapters/sqlite.d.ts +262 -0
- package/dist/adapters/sqlite.js +1434 -0
- package/dist/adapters/sqliteCostlyReads.d.ts +33 -0
- package/dist/adapters/sqliteCostlyReads.js +49 -0
- package/dist/adapters/sqliteDecimals.d.ts +22 -0
- package/dist/adapters/sqliteDecimals.js +57 -0
- package/dist/adapters/sqliteHandles.d.ts +43 -0
- package/dist/adapters/sqliteHandles.js +143 -0
- package/dist/adapters/sqliteStatementProcess.d.ts +29 -0
- package/dist/adapters/sqliteStatementProcess.js +131 -0
- package/dist/adapters/statementControl.d.ts +34 -0
- package/dist/adapters/statementControl.js +90 -0
- package/dist/adapters/storeHost.d.ts +130 -0
- package/dist/adapters/storeHost.js +13 -0
- package/dist/adapters/telemetry/drivers.d.ts +21 -0
- package/dist/adapters/telemetry/drivers.js +321 -0
- package/dist/adapters/telemetry/metrics.d.ts +63 -0
- package/dist/adapters/telemetry/metrics.js +122 -0
- package/dist/adapters/telemetry/otlp.d.ts +12 -0
- package/dist/adapters/telemetry/otlp.js +320 -0
- package/dist/adapters/telemetry/otlpEncode.d.ts +48 -0
- package/dist/adapters/telemetry/otlpEncode.js +366 -0
- package/dist/adapters/telemetry/otlpEnv.d.ts +1 -0
- package/dist/adapters/telemetry/otlpEnv.js +12 -0
- package/dist/adapters/telemetry/serverTiming.d.ts +83 -0
- package/dist/adapters/telemetry/serverTiming.js +503 -0
- package/dist/adapters/telemetry/start.d.ts +10 -0
- package/dist/adapters/telemetry/start.js +25 -0
- package/dist/adapters/telemetry/statement.d.ts +16 -0
- package/dist/adapters/telemetry/statement.js +134 -0
- package/dist/adapters/telemetry/trace.d.ts +127 -0
- package/dist/adapters/telemetry/trace.js +295 -0
- package/dist/adapters/writeAhead.d.ts +27 -0
- package/dist/adapters/writeAhead.js +46 -0
- package/dist/adapters/writeAttribution.d.ts +18 -0
- package/dist/adapters/writeAttribution.js +23 -0
- package/dist/adapters/writeCapture.d.ts +73 -0
- package/dist/adapters/writeCapture.js +20 -0
- package/dist/adapters/writeLanes.d.ts +94 -0
- package/dist/adapters/writeLanes.js +232 -0
- package/dist/engine.d.ts +15 -0
- package/dist/engine.js +13 -0
- package/dist/server/auth/credentials.d.ts +61 -0
- package/dist/server/auth/credentials.js +260 -0
- package/dist/server/cacheService.d.ts +50 -0
- package/dist/server/cacheService.js +110 -0
- package/dist/server/cli/args.d.ts +176 -0
- package/dist/server/cli/args.js +342 -0
- package/dist/server/cli/bin.d.ts +5 -0
- package/dist/server/cli/bin.js +66 -0
- package/dist/server/cli/browser.d.ts +15 -0
- package/dist/server/cli/browser.js +37 -0
- package/dist/server/cli/config.d.ts +50 -0
- package/dist/server/cli/config.js +206 -0
- package/dist/server/cli/startup.d.ts +36 -0
- package/dist/server/cli/startup.js +128 -0
- package/dist/server/cli/startupOptions.d.ts +63 -0
- package/dist/server/cli/startupOptions.js +143 -0
- package/dist/server/cli/subcommand.d.ts +28 -0
- package/dist/server/cli/subcommand.js +32 -0
- package/dist/server/cli/usage.d.ts +13 -0
- package/dist/server/cli/usage.js +31 -0
- package/dist/server/clientHttp.d.ts +184 -0
- package/dist/server/clientHttp.js +700 -0
- package/dist/server/clientSurface.d.ts +128 -0
- package/dist/server/clientSurface.js +182 -0
- package/dist/server/columnGrants.d.ts +103 -0
- package/dist/server/columnGrants.js +730 -0
- package/dist/server/compileCache.d.ts +1 -0
- package/dist/server/compileCache.js +30 -0
- package/dist/server/config/locations.d.ts +1 -0
- package/dist/server/config/locations.js +15 -0
- package/dist/server/configPaths.d.ts +7 -0
- package/dist/server/configPaths.js +34 -0
- package/dist/server/configSections.d.ts +64 -0
- package/dist/server/configSections.js +72 -0
- package/dist/server/connectionRedaction.d.ts +30 -0
- package/dist/server/connectionRedaction.js +77 -0
- package/dist/server/connections.d.ts +353 -0
- package/dist/server/connections.js +978 -0
- package/dist/server/constraints.d.ts +82 -0
- package/dist/server/constraints.js +169 -0
- package/dist/server/demo.d.ts +9 -0
- package/dist/server/demo.js +554 -0
- package/dist/server/devclient.d.ts +108 -0
- package/dist/server/devclient.js +361 -0
- package/dist/server/evidence.d.ts +55 -0
- package/dist/server/evidence.js +323 -0
- package/dist/server/hiddenColumns.d.ts +32 -0
- package/dist/server/hiddenColumns.js +238 -0
- package/dist/server/http/baselineHeaders.d.ts +24 -0
- package/dist/server/http/baselineHeaders.js +12 -0
- package/dist/server/http/captured.d.ts +35 -0
- package/dist/server/http/captured.js +73 -0
- package/dist/server/http/clock.d.ts +1 -0
- package/dist/server/http/clock.js +14 -0
- package/dist/server/http/connectionSource.d.ts +4 -0
- package/dist/server/http/connectionSource.js +48 -0
- package/dist/server/http/context.d.ts +189 -0
- package/dist/server/http/context.js +11 -0
- package/dist/server/http/crawlerText.d.ts +15 -0
- package/dist/server/http/crawlerText.js +32 -0
- package/dist/server/http/dataRoutes.d.ts +88 -0
- package/dist/server/http/dataRoutes.js +137 -0
- package/dist/server/http/door.d.ts +57 -0
- package/dist/server/http/door.js +39 -0
- package/dist/server/http/exportRoute.d.ts +15 -0
- package/dist/server/http/exportRoute.js +320 -0
- package/dist/server/http/firstPaint.d.ts +108 -0
- package/dist/server/http/firstPaint.js +262 -0
- package/dist/server/http/httpOperationRoutes.d.ts +11 -0
- package/dist/server/http/httpOperationRoutes.js +50 -0
- package/dist/server/http/pageReads.d.ts +20 -0
- package/dist/server/http/pageReads.js +205 -0
- package/dist/server/http/pageRoutes.d.ts +39 -0
- package/dist/server/http/pageRoutes.js +291 -0
- package/dist/server/http/probes.d.ts +22 -0
- package/dist/server/http/probes.js +27 -0
- package/dist/server/http/rateLimit.d.ts +131 -0
- package/dist/server/http/rateLimit.js +351 -0
- package/dist/server/http/readRoutes.d.ts +9 -0
- package/dist/server/http/readRoutes.js +131 -0
- package/dist/server/http/readRouting.d.ts +20 -0
- package/dist/server/http/readRouting.js +80 -0
- package/dist/server/http/recordCompose.d.ts +67 -0
- package/dist/server/http/recordCompose.js +167 -0
- package/dist/server/http/recordWrites.d.ts +89 -0
- package/dist/server/http/recordWrites.js +298 -0
- package/dist/server/http/refusalReport.d.ts +38 -0
- package/dist/server/http/refusalReport.js +63 -0
- package/dist/server/http/reply.d.ts +130 -0
- package/dist/server/http/reply.js +394 -0
- package/dist/server/http/requestOrigin.d.ts +11 -0
- package/dist/server/http/requestOrigin.js +8 -0
- package/dist/server/http/router.d.ts +45 -0
- package/dist/server/http/router.js +22 -0
- package/dist/server/http/serverCore.d.ts +68 -0
- package/dist/server/http/serverCore.js +177 -0
- package/dist/server/http/traceRequest.d.ts +30 -0
- package/dist/server/http/traceRequest.js +224 -0
- package/dist/server/http/trust.d.ts +261 -0
- package/dist/server/http/trust.js +472 -0
- package/dist/server/http/writeRefusal.d.ts +33 -0
- package/dist/server/http/writeRefusal.js +24 -0
- package/dist/server/httpConnection.d.ts +49 -0
- package/dist/server/httpConnection.js +170 -0
- package/dist/server/impact.d.ts +55 -0
- package/dist/server/impact.js +47 -0
- package/dist/server/journal.d.ts +134 -0
- package/dist/server/journal.js +398 -0
- package/dist/server/keysetReadHttp.d.ts +52 -0
- package/dist/server/keysetReadHttp.js +85 -0
- package/dist/server/layouts.d.ts +49 -0
- package/dist/server/layouts.js +192 -0
- package/dist/server/migrate/cli.d.ts +55 -0
- package/dist/server/migrate/cli.js +517 -0
- package/dist/server/migrate/database.d.ts +37 -0
- package/dist/server/migrate/database.js +247 -0
- package/dist/server/migrate/desired.d.ts +76 -0
- package/dist/server/migrate/desired.js +292 -0
- package/dist/server/migrate/files.d.ts +34 -0
- package/dist/server/migrate/files.js +141 -0
- package/dist/server/migrate/flyway.d.ts +7 -0
- package/dist/server/migrate/flyway.js +69 -0
- package/dist/server/migrate/history.d.ts +70 -0
- package/dist/server/migrate/history.js +211 -0
- package/dist/server/migrate/runner.d.ts +100 -0
- package/dist/server/migrate/runner.js +409 -0
- package/dist/server/migrate/snapshot.d.ts +30 -0
- package/dist/server/migrate/snapshot.js +239 -0
- package/dist/server/migrate/target.d.ts +33 -0
- package/dist/server/migrate/target.js +82 -0
- package/dist/server/openapiDraft.d.ts +25 -0
- package/dist/server/openapiDraft.js +171 -0
- package/dist/server/operations/diagnostics.d.ts +101 -0
- package/dist/server/operations/diagnostics.js +284 -0
- package/dist/server/operations/requestMetrics.d.ts +33 -0
- package/dist/server/operations/requestMetrics.js +94 -0
- package/dist/server/packageVersion.d.ts +1 -0
- package/dist/server/packageVersion.js +11 -0
- package/dist/server/poolConfig.d.ts +34 -0
- package/dist/server/poolConfig.js +114 -0
- package/dist/server/product.d.ts +20 -0
- package/dist/server/product.js +12 -0
- package/dist/server/recordHistoryOperations.d.ts +39 -0
- package/dist/server/recordHistoryOperations.js +43 -0
- package/dist/server/recordWriteOperations.d.ts +111 -0
- package/dist/server/recordWriteOperations.js +329 -0
- package/dist/server/resourceReadHttp.d.ts +81 -0
- package/dist/server/resourceReadHttp.js +606 -0
- package/dist/server/resourceReadOperations.d.ts +147 -0
- package/dist/server/resourceReadOperations.js +452 -0
- package/dist/server/scaffoldMachine.d.ts +54 -0
- package/dist/server/scaffoldMachine.js +184 -0
- package/dist/server/seed/cli.d.ts +20 -0
- package/dist/server/seed/cli.js +164 -0
- package/dist/server/seed/lexicon.d.ts +26 -0
- package/dist/server/seed/lexicon.js +585 -0
- package/dist/server/seed/seed.d.ts +70 -0
- package/dist/server/seed/seed.js +779 -0
- package/dist/server/seed/words.d.ts +21 -0
- package/dist/server/seed/words.js +164 -0
- package/dist/server/serverRequests.d.ts +6 -0
- package/dist/server/serverRequests.js +33 -0
- package/dist/server/serverTimeouts.d.ts +33 -0
- package/dist/server/serverTimeouts.js +32 -0
- package/dist/server/shapeonly.d.ts +32 -0
- package/dist/server/shapeonly.js +110 -0
- package/dist/server/startupWarnings.d.ts +32 -0
- package/dist/server/startupWarnings.js +92 -0
- package/dist/shared/addressParams.d.ts +28 -0
- package/dist/shared/addressParams.js +47 -0
- package/dist/shared/appCards.d.ts +123 -0
- package/dist/shared/appCards.js +385 -0
- package/dist/shared/appComponents.d.ts +177 -0
- package/dist/shared/appComponents.js +422 -0
- package/dist/shared/appDocuments.d.ts +43 -0
- package/dist/shared/appDocuments.js +131 -0
- package/dist/shared/appEmbeds.d.ts +21 -0
- package/dist/shared/appEmbeds.js +24 -0
- package/dist/shared/appIcons.d.ts +28 -0
- package/dist/shared/appIcons.js +223 -0
- package/dist/shared/appLinks.d.ts +17 -0
- package/dist/shared/appLinks.js +124 -0
- package/dist/shared/appListColumns.d.ts +3 -0
- package/dist/shared/appListColumns.js +66 -0
- package/dist/shared/appLocale.d.ts +36 -0
- package/dist/shared/appLocale.js +86 -0
- package/dist/shared/appMessages.d.ts +44 -0
- package/dist/shared/appMessages.js +78 -0
- package/dist/shared/appNoun.d.ts +21 -0
- package/dist/shared/appNoun.js +32 -0
- package/dist/shared/autoBucket.d.ts +98 -0
- package/dist/shared/autoBucket.js +305 -0
- package/dist/shared/autoValues.d.ts +25 -0
- package/dist/shared/autoValues.js +25 -0
- package/dist/shared/breakdown.d.ts +228 -0
- package/dist/shared/breakdown.js +557 -0
- package/dist/shared/breakdowntext.d.ts +41 -0
- package/dist/shared/breakdowntext.js +400 -0
- package/dist/shared/builtInThemes.d.ts +2 -0
- package/dist/shared/builtInThemes.js +771 -0
- package/dist/shared/chartSeparation.d.ts +11 -0
- package/dist/shared/chartSeparation.js +58 -0
- package/dist/shared/clauses.d.ts +22 -0
- package/dist/shared/clauses.js +97 -0
- package/dist/shared/columnCaption.d.ts +16 -0
- package/dist/shared/columnCaption.js +90 -0
- package/dist/shared/commandFieldPath.d.ts +2 -0
- package/dist/shared/commandFieldPath.js +7 -0
- package/dist/shared/commandWire.d.ts +26 -0
- package/dist/shared/commandWire.js +41 -0
- package/dist/shared/computed.d.ts +161 -0
- package/dist/shared/computed.js +378 -0
- package/dist/shared/computedParse.d.ts +13 -0
- package/dist/shared/computedParse.js +278 -0
- package/dist/shared/computedValue.d.ts +47 -0
- package/dist/shared/computedValue.js +191 -0
- package/dist/shared/connection.d.ts +30 -0
- package/dist/shared/connection.js +1 -0
- package/dist/shared/csv.d.ts +20 -0
- package/dist/shared/csv.js +63 -0
- package/dist/shared/dashLayout.d.ts +30 -0
- package/dist/shared/dashLayout.js +132 -0
- package/dist/shared/dashboardAsks.d.ts +93 -0
- package/dist/shared/dashboardAsks.js +129 -0
- package/dist/shared/dashboardTrend.d.ts +20 -0
- package/dist/shared/dashboardTrend.js +50 -0
- package/dist/shared/declaredReferences.d.ts +50 -0
- package/dist/shared/declaredReferences.js +202 -0
- package/dist/shared/definedFields.d.ts +63 -0
- package/dist/shared/definedFields.js +103 -0
- package/dist/shared/definedValues.d.ts +63 -0
- package/dist/shared/definedValues.js +184 -0
- package/dist/shared/displayDefaults.d.ts +135 -0
- package/dist/shared/displayDefaults.js +529 -0
- package/dist/shared/dueDate.d.ts +6 -0
- package/dist/shared/dueDate.js +6 -0
- package/dist/shared/duration.d.ts +4 -0
- package/dist/shared/duration.js +23 -0
- package/dist/shared/fileBounds.d.ts +9 -0
- package/dist/shared/fileBounds.js +9 -0
- package/dist/shared/filter.d.ts +217 -0
- package/dist/shared/filter.js +305 -0
- package/dist/shared/firstPaint.d.ts +24 -0
- package/dist/shared/firstPaint.js +33 -0
- package/dist/shared/form.d.ts +21 -0
- package/dist/shared/form.js +25 -0
- package/dist/shared/formValues.d.ts +104 -0
- package/dist/shared/formValues.js +352 -0
- package/dist/shared/funnel.d.ts +45 -0
- package/dist/shared/funnel.js +108 -0
- package/dist/shared/httpOperations.d.ts +48 -0
- package/dist/shared/httpOperations.js +9 -0
- package/dist/shared/iconGlyphs.d.ts +4 -0
- package/dist/shared/iconGlyphs.js +151 -0
- package/dist/shared/iconWeights.d.ts +3 -0
- package/dist/shared/iconWeights.js +162 -0
- package/dist/shared/imageWidths.d.ts +32 -0
- package/dist/shared/imageWidths.js +38 -0
- package/dist/shared/keysetPage.d.ts +64 -0
- package/dist/shared/keysetPage.js +161 -0
- package/dist/shared/like.d.ts +20 -0
- package/dist/shared/like.js +29 -0
- package/dist/shared/listEmpty.d.ts +12 -0
- package/dist/shared/listEmpty.js +36 -0
- package/dist/shared/listFilters.d.ts +28 -0
- package/dist/shared/listFilters.js +84 -0
- package/dist/shared/listPresentations.d.ts +199 -0
- package/dist/shared/listPresentations.js +7 -0
- package/dist/shared/listQuestion.d.ts +52 -0
- package/dist/shared/listQuestion.js +137 -0
- package/dist/shared/lookPalettes.d.ts +62 -0
- package/dist/shared/lookPalettes.js +306 -0
- package/dist/shared/maskQuoted.d.ts +24 -0
- package/dist/shared/maskQuoted.js +48 -0
- package/dist/shared/mentionLabel.d.ts +19 -0
- package/dist/shared/mentionLabel.js +38 -0
- package/dist/shared/mentionLookup.d.ts +17 -0
- package/dist/shared/mentionLookup.js +64 -0
- package/dist/shared/menuCounts.d.ts +16 -0
- package/dist/shared/menuCounts.js +74 -0
- package/dist/shared/model.d.ts +79 -0
- package/dist/shared/model.js +153 -0
- package/dist/shared/money.d.ts +44 -0
- package/dist/shared/money.js +81 -0
- package/dist/shared/moneyEntry.d.ts +7 -0
- package/dist/shared/moneyEntry.js +27 -0
- package/dist/shared/mount.d.ts +118 -0
- package/dist/shared/mount.js +248 -0
- package/dist/shared/niceTicks.d.ts +26 -0
- package/dist/shared/niceTicks.js +50 -0
- package/dist/shared/order.d.ts +59 -0
- package/dist/shared/order.js +133 -0
- package/dist/shared/page.d.ts +135 -0
- package/dist/shared/page.js +1187 -0
- package/dist/shared/pageAnatomy.d.ts +99 -0
- package/dist/shared/pageAnatomy.js +370 -0
- package/dist/shared/pageConfig.d.ts +25 -0
- package/dist/shared/pageConfig.js +1308 -0
- package/dist/shared/pageEmptyActions.d.ts +12 -0
- package/dist/shared/pageEmptyActions.js +20 -0
- package/dist/shared/pageLayouts.d.ts +72 -0
- package/dist/shared/pageLayouts.js +205 -0
- package/dist/shared/pageModel.d.ts +785 -0
- package/dist/shared/pageModel.js +121 -0
- package/dist/shared/pagePaths.d.ts +180 -0
- package/dist/shared/pagePaths.js +869 -0
- package/dist/shared/pagePlans.d.ts +52 -0
- package/dist/shared/pagePlans.js +108 -0
- package/dist/shared/pageRoutes.d.ts +9 -0
- package/dist/shared/pageRoutes.js +9 -0
- package/dist/shared/query.d.ts +166 -0
- package/dist/shared/query.js +1302 -0
- package/dist/shared/queryDates.d.ts +12 -0
- package/dist/shared/queryDates.js +101 -0
- package/dist/shared/queryOperands.d.ts +99 -0
- package/dist/shared/queryOperands.js +131 -0
- package/dist/shared/reads.d.ts +103 -0
- package/dist/shared/reads.js +154 -0
- package/dist/shared/recordLabel.d.ts +51 -0
- package/dist/shared/recordLabel.js +123 -0
- package/dist/shared/recordReadKeys.d.ts +30 -0
- package/dist/shared/recordReadKeys.js +51 -0
- package/dist/shared/recordReads.d.ts +268 -0
- package/dist/shared/recordReads.js +368 -0
- package/dist/shared/recordview.d.ts +198 -0
- package/dist/shared/recordview.js +356 -0
- package/dist/shared/referenceModel.d.ts +58 -0
- package/dist/shared/referenceModel.js +194 -0
- package/dist/shared/refusal.d.ts +64 -0
- package/dist/shared/refusal.js +144 -0
- package/dist/shared/relatedCreate.d.ts +30 -0
- package/dist/shared/relatedCreate.js +162 -0
- package/dist/shared/resourceHttp.d.ts +464 -0
- package/dist/shared/resourceHttp.js +1 -0
- package/dist/shared/richText.d.ts +85 -0
- package/dist/shared/richText.js +305 -0
- package/dist/shared/rollups.d.ts +143 -0
- package/dist/shared/rollups.js +64 -0
- package/dist/shared/rowScope.d.ts +72 -0
- package/dist/shared/rowScope.js +376 -0
- package/dist/shared/runtimeTables.d.ts +44 -0
- package/dist/shared/runtimeTables.js +79 -0
- package/dist/shared/schema.d.ts +523 -0
- package/dist/shared/schema.js +627 -0
- package/dist/shared/schematext.d.ts +38 -0
- package/dist/shared/schematext.js +101 -0
- package/dist/shared/scopeCatalog.d.ts +29 -0
- package/dist/shared/scopeCatalog.js +468 -0
- package/dist/shared/servedApp.d.ts +681 -0
- package/dist/shared/servedApp.js +45 -0
- package/dist/shared/sessionLease.d.ts +34 -0
- package/dist/shared/sessionLease.js +3 -0
- package/dist/shared/shape.d.ts +55 -0
- package/dist/shared/shape.js +168 -0
- package/dist/shared/slug.d.ts +1 -0
- package/dist/shared/slug.js +12 -0
- package/dist/shared/sortText.d.ts +14 -0
- package/dist/shared/sortText.js +26 -0
- package/dist/shared/sqlRelation.d.ts +4 -0
- package/dist/shared/sqlRelation.js +8 -0
- package/dist/shared/sqlsaved.d.ts +44 -0
- package/dist/shared/sqlsaved.js +63 -0
- package/dist/shared/stitchedPaths.d.ts +27 -0
- package/dist/shared/stitchedPaths.js +38 -0
- package/dist/shared/structuredFilter.d.ts +22 -0
- package/dist/shared/structuredFilter.js +1 -0
- package/dist/shared/subtitlePath.d.ts +20 -0
- package/dist/shared/subtitlePath.js +24 -0
- package/dist/shared/suggest.d.ts +18 -0
- package/dist/shared/suggest.js +59 -0
- package/dist/shared/tableSizing.d.ts +4 -0
- package/dist/shared/tableSizing.js +9 -0
- package/dist/shared/tagLists.d.ts +57 -0
- package/dist/shared/tagLists.js +34 -0
- package/dist/shared/textRules.d.ts +54 -0
- package/dist/shared/textRules.js +133 -0
- package/dist/shared/theme.d.ts +94 -0
- package/dist/shared/theme.js +800 -0
- package/dist/shared/themeColor.d.ts +34 -0
- package/dist/shared/themeColor.js +109 -0
- package/dist/shared/themeFaces.d.ts +30 -0
- package/dist/shared/themeFaces.js +42 -0
- package/dist/shared/themeInk.d.ts +20 -0
- package/dist/shared/themeInk.js +52 -0
- package/dist/shared/themeLooks.d.ts +9 -0
- package/dist/shared/themeLooks.js +572 -0
- package/dist/shared/themeParts.d.ts +26 -0
- package/dist/shared/themeParts.js +71 -0
- package/dist/shared/themePartsCheck.d.ts +21 -0
- package/dist/shared/themePartsCheck.js +91 -0
- package/dist/shared/themePresets.d.ts +85 -0
- package/dist/shared/themePresets.js +139 -0
- package/dist/shared/themeRecipeWords.d.ts +156 -0
- package/dist/shared/themeRecipeWords.js +156 -0
- package/dist/shared/themeRecipes.d.ts +213 -0
- package/dist/shared/themeRecipes.js +234 -0
- package/dist/shared/themeResolve.d.ts +55 -0
- package/dist/shared/themeResolve.js +52 -0
- package/dist/shared/themeTokens.d.ts +107 -0
- package/dist/shared/themeTokens.js +116 -0
- package/dist/shared/themeType.d.ts +38 -0
- package/dist/shared/themeType.js +205 -0
- package/dist/shared/unitWord.d.ts +4 -0
- package/dist/shared/unitWord.js +37 -0
- package/dist/shared/view.d.ts +195 -0
- package/dist/shared/view.js +987 -0
- package/dist/shared/viewLabels.d.ts +47 -0
- package/dist/shared/viewLabels.js +459 -0
- package/dist/shared/viewPaths.d.ts +248 -0
- package/dist/shared/viewPaths.js +294 -0
- package/dist/shared/viewtext.d.ts +57 -0
- package/dist/shared/viewtext.js +282 -0
- package/dist/shared/vocabulary.d.ts +71 -0
- package/dist/shared/vocabulary.js +249 -0
- package/dist/shared/weekStart.d.ts +7 -0
- package/dist/shared/weekStart.js +36 -0
- package/mark.svg +1 -0
- package/package.json +261 -4
- package/schema/model.d.ts +298 -0
- package/schema/theme.d.ts +587 -0
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The schema model every adapter produces, and the whole reason this tool
|
|
3
|
+
* can exist for more than one database.
|
|
4
|
+
*
|
|
5
|
+
* Most database clients treat a schema as a list of tables. The interesting
|
|
6
|
+
* structure is the edges: which column points at which table, and — the part
|
|
7
|
+
* almost nothing surfaces well — which columns elsewhere point back at the row
|
|
8
|
+
* you are looking at. Answering that second question is what turns a database
|
|
9
|
+
* from a list into something you can walk.
|
|
10
|
+
*
|
|
11
|
+
* Relational databases hand you both directions for free. `information_schema`
|
|
12
|
+
* knows every foreign key, so the reverse map is a filter over a list you
|
|
13
|
+
* already have. Adapters do the dialect-specific reading; everything above
|
|
14
|
+
* this file works on the model below and never learns which database it is.
|
|
15
|
+
*/
|
|
16
|
+
import type { Rollup } from './rollups.js';
|
|
17
|
+
import type { TagSet } from './tagLists.js';
|
|
18
|
+
import type { ComputedColumn } from './computed.js';
|
|
19
|
+
export interface ColumnMeta {
|
|
20
|
+
name: string;
|
|
21
|
+
/** The database's own type string, shown as-is. Normalising it loses detail. */
|
|
22
|
+
type: string;
|
|
23
|
+
nullable: boolean;
|
|
24
|
+
/** True for the column(s) forming the primary key. */
|
|
25
|
+
primaryKey: boolean;
|
|
26
|
+
/** Server-projected editing affordance, never authority. Absent preserves existing behavior. */
|
|
27
|
+
writable?: boolean;
|
|
28
|
+
/** Server-projected: the column changes only through the App's actions
|
|
29
|
+
(transitions), so editors do not offer it. Never authority. */
|
|
30
|
+
changesBy?: 'actions';
|
|
31
|
+
/** Set when this column references another table. */
|
|
32
|
+
references?: {
|
|
33
|
+
table: string;
|
|
34
|
+
column: string;
|
|
35
|
+
};
|
|
36
|
+
/** Declared default, if any. */
|
|
37
|
+
default?: string;
|
|
38
|
+
/** Public presence hint when a private schema projection omits the SQL default. */
|
|
39
|
+
hasDefault?: boolean;
|
|
40
|
+
/** Catalog-confirmed automatic identity assignment; absent is not a type-based guess. */
|
|
41
|
+
identity?: 'always' | 'by-default';
|
|
42
|
+
/**
|
|
43
|
+
* The values the database will accept, when it says so — an enum type, a
|
|
44
|
+
* native enum, a `CHECK (status IN (...))`.
|
|
45
|
+
*
|
|
46
|
+
* Absent when the column is unconstrained *or* when the adapter could not
|
|
47
|
+
* read the constraint, which are not the same thing; nothing may present
|
|
48
|
+
* this as "anything else is invalid".
|
|
49
|
+
*/
|
|
50
|
+
allowed?: string[];
|
|
51
|
+
/**
|
|
52
|
+
* The database pins this integer to 0 and 1 (`CHECK (flag IN (0, 1))`), the
|
|
53
|
+
* flag of a dialect with no boolean type: it reads as yes or no, as a
|
|
54
|
+
* declared BOOLEAN does (`isFlagColumn`). The stored value stays 0 or 1.
|
|
55
|
+
*/
|
|
56
|
+
flag?: true;
|
|
57
|
+
/**
|
|
58
|
+
* What the database holds a text column's length and form to: a
|
|
59
|
+
* `varchar(n)`'s n as `max`, and on PostgreSQL a CHECK in the simple form
|
|
60
|
+
* `char_length(col) >= n` as `min` or `col ~ '…'` as `pattern` (a whole-value
|
|
61
|
+
* JavaScript pattern). Display evidence like `allowed`; an App's own `text`
|
|
62
|
+
* rule wins key by key (textRules.ts). Absent where it says nothing a form can check.
|
|
63
|
+
*/
|
|
64
|
+
text?: {
|
|
65
|
+
min?: number;
|
|
66
|
+
max?: number;
|
|
67
|
+
pattern?: string;
|
|
68
|
+
};
|
|
69
|
+
comment?: string;
|
|
70
|
+
/**
|
|
71
|
+
* An App's machine over this column (appMachine.ts), as the query language
|
|
72
|
+
* reads it: `status is open` is a state that is not final, `status is
|
|
73
|
+
* onBench` one of a group the machine names. Set on an App's catalog only.
|
|
74
|
+
*/
|
|
75
|
+
states?: MachineStates;
|
|
76
|
+
}
|
|
77
|
+
/** A machine's states as a condition reads them: the open ones, the final ones, and the named groups. */
|
|
78
|
+
export interface MachineStates {
|
|
79
|
+
open: readonly string[];
|
|
80
|
+
final: readonly string[];
|
|
81
|
+
groups?: Readonly<Record<string, readonly string[]>>;
|
|
82
|
+
}
|
|
83
|
+
/** One foreign-key reference a column carries, and whether the key it came
|
|
84
|
+
* from has more than one column. */
|
|
85
|
+
export interface ColumnReferenceCandidate {
|
|
86
|
+
readonly reference: {
|
|
87
|
+
table: string;
|
|
88
|
+
column: string;
|
|
89
|
+
};
|
|
90
|
+
readonly composite: boolean;
|
|
91
|
+
}
|
|
92
|
+
export type ColumnReferenceChoice = {
|
|
93
|
+
kind: 'one';
|
|
94
|
+
reference: {
|
|
95
|
+
table: string;
|
|
96
|
+
column: string;
|
|
97
|
+
};
|
|
98
|
+
} | {
|
|
99
|
+
kind: 'none';
|
|
100
|
+
} | {
|
|
101
|
+
kind: 'conflict';
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* The one link a reader follows from a column that sits in several keys.
|
|
105
|
+
*
|
|
106
|
+
* Several references on one column is ordinary schema, not a mistake: a tenant
|
|
107
|
+
* table's ownership column carries its own single-column reference to the
|
|
108
|
+
* tenancy profile (the framework requires exactly that) and its part in each
|
|
109
|
+
* composite tenant key. So the question is never whether to accept them, only
|
|
110
|
+
* which one `references` says. A single-column key is the column's own target,
|
|
111
|
+
* so it wins. Two single-column keys disagreeing is the real contradiction:
|
|
112
|
+
* the column claims to be two different things, and a catalog that attests a
|
|
113
|
+
* write boundary refuses it. Components of composite keys that disagree name
|
|
114
|
+
* no single link, so the column shows none — every edge is still in
|
|
115
|
+
* `foreignKeys`, where the walk reads both directions anyway.
|
|
116
|
+
*
|
|
117
|
+
* Both callers read the same verdict, and they answer `conflict` differently on
|
|
118
|
+
* purpose. The scoped catalogs attest a write boundary, so a contradiction
|
|
119
|
+
* there refuses the whole catalog: a lease may not write through metadata it
|
|
120
|
+
* cannot vouch for. The adapters' own `describe`, which reads databases this
|
|
121
|
+
* tool did not design, shows the column no link and carries on — refusing
|
|
122
|
+
* there would blank an entire existing database in the browser over one odd
|
|
123
|
+
* pair of keys. Do not "fix" the second into the first.
|
|
124
|
+
*/
|
|
125
|
+
export declare function chooseColumnReference(candidates: readonly ColumnReferenceCandidate[]): ColumnReferenceChoice;
|
|
126
|
+
/**
|
|
127
|
+
* The columns a connection's `"hidden"` keeps from everything served over it
|
|
128
|
+
* (server hiddenColumns.ts), on the table it cut them from. A symbol, so the
|
|
129
|
+
* names ride along with the served catalog on the server and are never
|
|
130
|
+
* written into a JSON answer: they are what lets an App's own `hidden` name a
|
|
131
|
+
* column the connection already hides, rather than be told it is no column.
|
|
132
|
+
*/
|
|
133
|
+
export declare const CONNECTION_HIDDEN: unique symbol;
|
|
134
|
+
export interface TableMeta {
|
|
135
|
+
/** What the connection hides of this table (CONNECTION_HIDDEN); never serialized. */
|
|
136
|
+
readonly [CONNECTION_HIDDEN]?: readonly string[];
|
|
137
|
+
name: string;
|
|
138
|
+
/** Server-projected delete affordance, never authority; may account for hidden columns. */
|
|
139
|
+
deletable?: boolean;
|
|
140
|
+
/** Server capability projection; omitted retains ordinary insert behavior. */
|
|
141
|
+
insertable?: boolean;
|
|
142
|
+
/** Schema/namespace the table lives in. Empty when the database has none. */
|
|
143
|
+
schema: string;
|
|
144
|
+
/** Qualified name used everywhere as the table's identity. */
|
|
145
|
+
id: string;
|
|
146
|
+
columns: ColumnMeta[];
|
|
147
|
+
/**
|
|
148
|
+
* The engine this table is read on, where an App's catalog merges sources on
|
|
149
|
+
* more than one connection (appSourceCatalog.ts). The merged catalog's own
|
|
150
|
+
* `dialect` is the default source's and says nothing about another's tables.
|
|
151
|
+
* Absent on a one-connection catalog, where `dialect` is every table's.
|
|
152
|
+
*/
|
|
153
|
+
sourceDialect?: Dialect;
|
|
154
|
+
/** Approximate row count when the database can give one cheaply. */
|
|
155
|
+
approxRows?: number;
|
|
156
|
+
/** An App's record name for this table, as a template ('PO-{id}'), where it
|
|
157
|
+
serves one: what makes `$label` a path here (recordLabel.ts). */
|
|
158
|
+
labelTemplate?: string;
|
|
159
|
+
/** Set where that template is the key in the App's own words ('SO-{id}'),
|
|
160
|
+
so a grid's key column reads as the record's name (appRecordLabels.ts). */
|
|
161
|
+
keyLabel?: true;
|
|
162
|
+
/** An App's rollups over the rows that point at this table, by name, where
|
|
163
|
+
it serves them: numbers read like columns and never written, which is
|
|
164
|
+
why they are not among `columns` (rollups.ts). */
|
|
165
|
+
rollups?: Record<string, Rollup>;
|
|
166
|
+
/** An App's computed columns on this table, by name, where it serves them to this reader: expressions over
|
|
167
|
+
its columns, read like columns and never written, beside `columns` for the reason rollups are (computed.ts). */
|
|
168
|
+
computed?: Record<string, ComputedColumn>;
|
|
169
|
+
/** An App's tags on this table's records, where it serves them to this reader: read as `tags`, beside `columns`
|
|
170
|
+
for the reason rollups are (tagLists.ts). */
|
|
171
|
+
tags?: TagSet;
|
|
172
|
+
/** An App's segments on this table (appSegments.ts): a name and the conditions it stands for, which the query
|
|
173
|
+
language reads as a word (`overdue and mine`) and writes inline. Set on an App's catalog only, and served to a
|
|
174
|
+
reader only where every column they name is one the reader may read. */
|
|
175
|
+
segments?: Readonly<Record<string, string>>;
|
|
176
|
+
comment?: string;
|
|
177
|
+
/**
|
|
178
|
+
* The columns the source can filter by, when it cannot filter by every one:
|
|
179
|
+
* an API filters only where it documents a parameter (adapters/http).
|
|
180
|
+
* Absent means any column, as for every database.
|
|
181
|
+
*/
|
|
182
|
+
filterable?: string[];
|
|
183
|
+
/**
|
|
184
|
+
* The columns the source can sort by, when it cannot sort by every one: an
|
|
185
|
+
* API sorts by the values it documents (adapters/http). Absent means the
|
|
186
|
+
* database's own rule applies (see `indexed`).
|
|
187
|
+
*/
|
|
188
|
+
sortable?: string[];
|
|
189
|
+
/** `false` when the source reports no totals (an API): lists page without one, and nothing asks for a count. */
|
|
190
|
+
countable?: false;
|
|
191
|
+
/** True for views — read-only, and worth saying so rather than surprising. */
|
|
192
|
+
isView: boolean;
|
|
193
|
+
/** An App's union (appUnions.ts): read by asking each branch it holds, never as a table. */
|
|
194
|
+
union?: import('./servedApp.js').UnionTable;
|
|
195
|
+
/**
|
|
196
|
+
* Columns that lead an index, primary key included.
|
|
197
|
+
*
|
|
198
|
+
* Only the *leading* column of each index, because that is the only one an
|
|
199
|
+
* `ORDER BY` can be satisfied by: an index on `(customer_id, opened_at)`
|
|
200
|
+
* makes `ORDER BY customer_id` free and `ORDER BY opened_at` a full sort.
|
|
201
|
+
* Recording the whole index would invite the wrong conclusion.
|
|
202
|
+
*
|
|
203
|
+
* Absent rather than empty when the adapter does not report indexes, so
|
|
204
|
+
* "no indexes" and "we did not look" stay distinguishable.
|
|
205
|
+
*/
|
|
206
|
+
indexed?: string[];
|
|
207
|
+
/**
|
|
208
|
+
* Columns unique on their own by a constraint or a whole-table unique
|
|
209
|
+
* index (not a partial or expression one): what an App's natural-key
|
|
210
|
+
* address (`address:`) must be proven to be before it is accepted.
|
|
211
|
+
* Absent when there are none or the adapter cannot say, and either way
|
|
212
|
+
* nothing is proven.
|
|
213
|
+
*/
|
|
214
|
+
unique?: string[];
|
|
215
|
+
/**
|
|
216
|
+
* Pairs of columns unique together, and by nothing more, by a constraint or
|
|
217
|
+
* a whole-table unique index (`UNIQUE (tenant_id, number)`): in a tenant
|
|
218
|
+
* App, a natural key unique within its tenant (appAddress.ts). Absent as
|
|
219
|
+
* `unique` is: nothing proven.
|
|
220
|
+
*/
|
|
221
|
+
uniquePairs?: Array<[string, string]>;
|
|
222
|
+
/**
|
|
223
|
+
* Columns a trigram index (PostgreSQL's pg_trgm, GIN or GiST) covers, at any
|
|
224
|
+
* position: the only index a `contains` search (ILIKE '%x%') can use. Like
|
|
225
|
+
* `indexed`, absent means the adapter did not look — only PostgreSQL does.
|
|
226
|
+
*/
|
|
227
|
+
trigram?: string[];
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* One foreign key edge, stored once and read in both directions.
|
|
231
|
+
*
|
|
232
|
+
* `from` is the side holding the column, which is the "many" end in the usual
|
|
233
|
+
* case. A reverse lookup is every edge whose `to.table` is the table in hand.
|
|
234
|
+
*/
|
|
235
|
+
/** What the database does to the referencing rows when the referenced row goes. */
|
|
236
|
+
export type DeleteRule = 'cascade' | 'set null' | 'set default' | 'restrict' | 'no action';
|
|
237
|
+
export interface ForeignKey {
|
|
238
|
+
name: string;
|
|
239
|
+
from: {
|
|
240
|
+
table: string;
|
|
241
|
+
columns: string[];
|
|
242
|
+
};
|
|
243
|
+
to: {
|
|
244
|
+
table: string;
|
|
245
|
+
columns: string[];
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* The constraint's `ON DELETE` action.
|
|
249
|
+
*
|
|
250
|
+
* Carried because "three rows point at this one" is not an answer to "what
|
|
251
|
+
* happens if I delete it" — under `cascade` those three rows go too and so
|
|
252
|
+
* may their children; under `restrict` the delete simply fails; under `set
|
|
253
|
+
* null` they survive with a hole where the reference was. Three different
|
|
254
|
+
* outcomes behind one number, and a tool that shows the number without the
|
|
255
|
+
* rule is inviting the reader to guess which.
|
|
256
|
+
*
|
|
257
|
+
* Absent when the adapter does not report it, which is a "do not know" and
|
|
258
|
+
* must not be read as `no action`.
|
|
259
|
+
*/
|
|
260
|
+
onDelete?: DeleteRule;
|
|
261
|
+
/**
|
|
262
|
+
* An App's declared reference (`references:` on a resource): a soft key
|
|
263
|
+
* the database does not know, joined like a real one within one connection.
|
|
264
|
+
* Never authority: no write, cascade or delete impact reads it, and it
|
|
265
|
+
* never enters a scoped catalog's fingerprint, which is the database's.
|
|
266
|
+
*/
|
|
267
|
+
declared?: true;
|
|
268
|
+
/**
|
|
269
|
+
* A declared reference to a table in another source, on another
|
|
270
|
+
* connection: no statement can join it, so it is read in two steps, the
|
|
271
|
+
* list and then one batched read of the targets it names through the
|
|
272
|
+
* target source's own scoped reads (appStitchedReads.ts). Shown and
|
|
273
|
+
* followed like any reference; never filtered, sorted, grouped or rolled
|
|
274
|
+
* up through.
|
|
275
|
+
*/
|
|
276
|
+
stitched?: true;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* A dialect's spelling of an `ON DELETE` action, normalised.
|
|
280
|
+
*
|
|
281
|
+
* Each engine words these differently — SQLite in prose, Postgres as
|
|
282
|
+
* a single character — and the difference is not interesting upstream. Shared
|
|
283
|
+
* so the adapters cannot drift on a value the delete dialog reads
|
|
284
|
+
* literally.
|
|
285
|
+
*
|
|
286
|
+
* Unrecognised returns undefined rather than a default: "the adapter did not
|
|
287
|
+
* report it" and "the constraint says NO ACTION" lead to different advice, and
|
|
288
|
+
* conflating them presents an unknown as harmless.
|
|
289
|
+
*/
|
|
290
|
+
export declare function deleteRuleOf(raw: unknown): DeleteRule | undefined;
|
|
291
|
+
export interface DatabaseSchema {
|
|
292
|
+
/** What to call this connection in the UI. */
|
|
293
|
+
label: string;
|
|
294
|
+
/** Which adapter produced it, for dialect-specific affordances. */
|
|
295
|
+
dialect: Dialect;
|
|
296
|
+
tables: TableMeta[];
|
|
297
|
+
foreignKeys: ForeignKey[];
|
|
298
|
+
/** When this was read. Introspection is on connect, not on every request. */
|
|
299
|
+
readAt: string;
|
|
300
|
+
}
|
|
301
|
+
/** `http` is an API read through its description (src/adapters/http), not a database: no SQL reaches it. */
|
|
302
|
+
export type Dialect = 'postgres' | 'sqlite' | 'mssql' | 'http';
|
|
303
|
+
/** Diagrams and exports also accept authored shapes without introspection
|
|
304
|
+
metadata: the tables and keys, the rest optional. Named for what it is —
|
|
305
|
+
a subset of the introspected schema — and not `SchemaShape`, which is the
|
|
306
|
+
public veneer's table → columns map in packages/mistri/schema/app.d.ts. */
|
|
307
|
+
export type SchemaSubset = Pick<DatabaseSchema, 'tables' | 'foreignKeys'> & Partial<Pick<DatabaseSchema, 'label' | 'dialect' | 'readAt'>>;
|
|
308
|
+
/**
|
|
309
|
+
* Columns elsewhere that point at this table — the "what refers to me"
|
|
310
|
+
* question. Deliberately derived rather than stored, so it cannot drift from
|
|
311
|
+
* the foreign key list it is computed from.
|
|
312
|
+
*/
|
|
313
|
+
/** A column of the table, or a rollup or a computed column its catalog serves (rollups.ts, computed.ts): what a measure may read. */
|
|
314
|
+
export declare function columnOrRollup(table: TableMeta, name: string): boolean;
|
|
315
|
+
export declare function referencesTo(schema: DatabaseSchema, tableId: string): ForeignKey[];
|
|
316
|
+
/** Columns on this table that point elsewhere. */
|
|
317
|
+
export declare function referencesFrom(schema: DatabaseSchema, tableId: string): ForeignKey[];
|
|
318
|
+
export declare function findTable(schema: DatabaseSchema, tableId: string): TableMeta | undefined;
|
|
319
|
+
/**
|
|
320
|
+
* A table by its id, or by a bare name when only one table has it.
|
|
321
|
+
*
|
|
322
|
+
* A table's id is qualified where the engine qualifies things — `public.customer`
|
|
323
|
+
* on Postgres — and nobody types that when there is
|
|
324
|
+
* only one `customer`. Ambiguity is left unresolved rather than guessed: two
|
|
325
|
+
* schemas with a `customer` each is exactly when picking one silently writes
|
|
326
|
+
* to the wrong database.
|
|
327
|
+
*/
|
|
328
|
+
export declare function tableNamed(schema: DatabaseSchema, asked: string): TableMeta | undefined;
|
|
329
|
+
export declare function looksLikeDate(column: ColumnMeta): boolean;
|
|
330
|
+
/** The column that names each row by what it is called (`name`, `title`, `invoice_number`), never one picked only
|
|
331
|
+
because it is text: the label of a table that has one, for a caller that must not take a guess for a name. */
|
|
332
|
+
export declare function rowName(table: TableMeta): string | undefined;
|
|
333
|
+
export declare function labelColumn(table: TableMeta): string | undefined;
|
|
334
|
+
/** Primary key columns, in declaration order. */
|
|
335
|
+
export declare function primaryKey(table: TableMeta): string[];
|
|
336
|
+
/**
|
|
337
|
+
* Where a row's name lives, as a view path.
|
|
338
|
+
*
|
|
339
|
+
* `labelColumn` answers "which of this table's own columns reads best", and
|
|
340
|
+
* for a well-normalised table the honest answer is none of them: employee
|
|
341
|
+
* carries `party_id`, and the name is `party.display_name`, one table away.
|
|
342
|
+
* So when a table's best label is its own key, the question is asked one
|
|
343
|
+
* forward hop further before giving up — a tool whose whole idea is walking
|
|
344
|
+
* references should not call a person "30" when the walk it teaches would
|
|
345
|
+
* have found the name.
|
|
346
|
+
*
|
|
347
|
+
* The hop is taken only across a link that is plausibly one-to-one: a
|
|
348
|
+
* reference that *is* the whole primary key (the subtype pattern —
|
|
349
|
+
* `person.party_id PRIMARY KEY REFERENCES party` — one-to-one by
|
|
350
|
+
* construction), or a reference into an identity table. Not any reference
|
|
351
|
+
* with a name on the other end: `invoice.customer_id` reaches a perfectly
|
|
352
|
+
* good name that is not the invoice's — forty invoices share it, and a trail
|
|
353
|
+
* of rows all called "Dry Creek Vineyards" identifies nothing.
|
|
354
|
+
*
|
|
355
|
+
* A table with a real label of its own keeps it, so nothing changes where
|
|
356
|
+
* things already read well. Self-references are skipped: the manager's name
|
|
357
|
+
* is not this row's name.
|
|
358
|
+
*/
|
|
359
|
+
export declare function labelPath(schema: DatabaseSchema, table: TableMeta, preferred?: string | false): string | undefined;
|
|
360
|
+
/**
|
|
361
|
+
* The order a column's values sort in when it is not their text: the
|
|
362
|
+
* vocabulary the database declares over a text column (`CHECK (stage IN
|
|
363
|
+
* ('new', 'qualified', 'won', 'lost'))`), in the order it was written. A
|
|
364
|
+
* pipeline sorted A → Z put "Closed lost" before "Qualification"; sorted as
|
|
365
|
+
* declared it reads as the pipeline does. A native enum (Postgres) is
|
|
366
|
+
* left alone, since the engine already orders it so, and free text has none.
|
|
367
|
+
* Every value the column can hold is in the list or NULL, which is what lets
|
|
368
|
+
* a page continue past one by naming the values after it (keysetPage.ts).
|
|
369
|
+
*/
|
|
370
|
+
export declare function declaredOrder(column: Pick<ColumnMeta, 'type' | 'allowed'> | undefined): readonly string[] | undefined;
|
|
371
|
+
export interface Order {
|
|
372
|
+
column: string;
|
|
373
|
+
direction: 'asc' | 'desc';
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* The order a table's rows are shown in when the query does not say.
|
|
377
|
+
*
|
|
378
|
+
* There has to be one, and not for taste: `LIMIT`/`OFFSET` without `ORDER BY`
|
|
379
|
+
* has no defined order in either SQLite or Postgres, so paging through an
|
|
380
|
+
* unordered table can repeat a row on page two and never show another. The
|
|
381
|
+
* database is free to hand back rows in whatever order it finds them, and
|
|
382
|
+
* Postgres in particular will change its mind after an UPDATE moves a row.
|
|
383
|
+
* A default order is what makes "Next" mean what it appears to mean.
|
|
384
|
+
*
|
|
385
|
+
* Given that it must exist, it may as well be useful. In order of preference:
|
|
386
|
+
*
|
|
387
|
+
* 1. When the row was last touched, newest first — *if the column is
|
|
388
|
+
* indexed*. On a table with an indexed `updated_at`, "what changed
|
|
389
|
+
* recently" is what people open it to see, and the database can answer it
|
|
390
|
+
* by walking the index backwards.
|
|
391
|
+
* 2. When it was created, newest first, under the same condition.
|
|
392
|
+
* 3. A single numeric primary key, descending. On an autoincrement key that
|
|
393
|
+
* is the same "newest first" by proxy.
|
|
394
|
+
* 4. Any other primary key, ascending. A text key sorts alphabetically —
|
|
395
|
+
* `country` starting at ZW rather than AU would be perverse — and a
|
|
396
|
+
* composite key ascending groups its children under their parent, which
|
|
397
|
+
* is how `invoice_line` wants to be read.
|
|
398
|
+
* 5. The label column, then the first column: neither is meaningful, but
|
|
399
|
+
* both are deterministic, which is the part that matters.
|
|
400
|
+
*
|
|
401
|
+
* The index condition is the one rule here that is not about taste. A default
|
|
402
|
+
* that nobody asked for must not be a default that costs anything: `ORDER BY
|
|
403
|
+
* updated_at DESC LIMIT 20` on an unindexed column is a full scan and a sort
|
|
404
|
+
* of the whole table to return twenty rows, and it would happen on every table
|
|
405
|
+
* you clicked. The primary key is always indexed, which is why it is the
|
|
406
|
+
* fallback rather than merely one option among several.
|
|
407
|
+
*
|
|
408
|
+
* A table whose adapter does not report indexes at all gets the key, not a
|
|
409
|
+
* guess — `indexed` is undefined rather than empty in that case precisely so
|
|
410
|
+
* the two can be told apart.
|
|
411
|
+
*/
|
|
412
|
+
export declare function defaultOrder(table: TableMeta): Order[];
|
|
413
|
+
/**
|
|
414
|
+
* Make an order total by appending the primary key.
|
|
415
|
+
*
|
|
416
|
+
* Sorting by `status` leaves every row with the same status in an undefined
|
|
417
|
+
* order relative to its neighbours — which is the paging bug again, one level
|
|
418
|
+
* down: page one and page two disagree about which of two equal rows comes
|
|
419
|
+
* first, so one is shown twice and one not at all. Appending the key breaks
|
|
420
|
+
* every remaining tie the same way each time.
|
|
421
|
+
*
|
|
422
|
+
* A table with no primary key cannot be made stable this way, and is left
|
|
423
|
+
* alone rather than given a guess.
|
|
424
|
+
*/
|
|
425
|
+
export declare function withKey(table: TableMeta, order: Order[]): Order[];
|
|
426
|
+
/**
|
|
427
|
+
* The order to actually run with, and whether the caller asked for it.
|
|
428
|
+
*
|
|
429
|
+
* `implicit` is reported rather than hidden: the grid shows which column it
|
|
430
|
+
* sorted by, so a default order is something the reader can see and disagree
|
|
431
|
+
* with rather than a silent rearrangement of their data.
|
|
432
|
+
*/
|
|
433
|
+
export declare function resolveOrder(table: TableMeta, requested: Order[] | undefined): {
|
|
434
|
+
order: Order[];
|
|
435
|
+
implicit: boolean;
|
|
436
|
+
};
|
|
437
|
+
/**
|
|
438
|
+
* Reconstruct a table's DDL from the catalog.
|
|
439
|
+
*
|
|
440
|
+
* This is a *reconstruction*, and callers must say so. It is built from what
|
|
441
|
+
* introspection captured — columns, types, nullability, defaults, keys — and
|
|
442
|
+
* therefore omits anything the model does not carry: indexes, check
|
|
443
|
+
* constraints, triggers, partitioning, storage parameters. Presenting it as
|
|
444
|
+
* the definitive `CREATE TABLE` would be a lie that bites the first time
|
|
445
|
+
* someone copies it into a migration.
|
|
446
|
+
*
|
|
447
|
+
* An adapter that can produce the database's own stored DDL should do so
|
|
448
|
+
* instead; `SqliteAdapter` does, because `sqlite_master` keeps the original
|
|
449
|
+
* statement text verbatim.
|
|
450
|
+
*/
|
|
451
|
+
export declare function renderDDL(schema: DatabaseSchema, tableId: string): string;
|
|
452
|
+
export type ColumnKind = 'number' | 'boolean' | 'date' | 'text' | 'other';
|
|
453
|
+
export declare function columnKind(type: string): ColumnKind;
|
|
454
|
+
/**
|
|
455
|
+
* What an aggregate other than a count reads from a value of this type.
|
|
456
|
+
* PostgreSQL has no sum, average, minimum, maximum or percentile of a boolean
|
|
457
|
+
* ("function avg(boolean) does not exist"), where SQLite holds one as
|
|
458
|
+
* 0 and 1 and add it up; read as an integer there, a won rate is the same
|
|
459
|
+
* number on every engine, a computed yes-or-no or a stored one.
|
|
460
|
+
*/
|
|
461
|
+
export declare function aggregateInput(read: string, type: string | undefined, dialect: string | undefined): string;
|
|
462
|
+
/** A column that holds yes or no: declared BOOLEAN, or an integer a CHECK pins to 0 and 1. */
|
|
463
|
+
export declare function isFlagColumn(column: (Pick<ColumnMeta, 'type'> & {
|
|
464
|
+
flag?: true;
|
|
465
|
+
}) | undefined): boolean;
|
|
466
|
+
/**
|
|
467
|
+
* How a column holds the moment something happened, the one rule every `now`
|
|
468
|
+
* the server writes follows (appStamps.ts): a DATE the App's day, a
|
|
469
|
+
* TIMESTAMP or DATETIME an instant (zoned or the App's wall clock), and a text
|
|
470
|
+
* column named for a moment — SQLite keeps dates as text — `_on` a day and
|
|
471
|
+
* `_at` an instant, in the digits the typed column would hold. Undefined for
|
|
472
|
+
* any other column, a TIME of day among them.
|
|
473
|
+
*/
|
|
474
|
+
export declare function momentColumn(column: Pick<ColumnMeta, 'name' | 'type'>): 'date' | 'instant' | 'instant-zoned' | undefined;
|
|
475
|
+
/**
|
|
476
|
+
* The column a state stamps as the record enters it, by its name: `ready_at`
|
|
477
|
+
* (or `ready_on`) beside a `ready` state is written the moment the record
|
|
478
|
+
* moves there, whatever moves it — a verb, a Save, a command — unless the
|
|
479
|
+
* write says it itself. Never the machine's own column or its `since`, never a
|
|
480
|
+
* key, a number or a flag.
|
|
481
|
+
*/
|
|
482
|
+
export declare function stateStampColumn(state: string, columns: readonly ColumnMeta[], machine: {
|
|
483
|
+
column: string;
|
|
484
|
+
since?: string;
|
|
485
|
+
}): ColumnMeta | undefined;
|
|
486
|
+
/**
|
|
487
|
+
* Turn a value on its way *into* the database into the right JavaScript type
|
|
488
|
+
* for its column.
|
|
489
|
+
*
|
|
490
|
+
* Everything typed into a text input arrives as a string, including "17901"
|
|
491
|
+
* for a REAL column. SQLite's type affinity usually rescues that, but not
|
|
492
|
+
* always — a column with BLOB affinity stores the characters — and Postgres
|
|
493
|
+
* rejects it outright. Either way the stored value should be a number because
|
|
494
|
+
* the column says so, not because the driver was forgiving.
|
|
495
|
+
*
|
|
496
|
+
* Unparseable input is passed through unchanged rather than coerced to NaN or
|
|
497
|
+
* 0. Letting the database reject "abc" for an integer column gives the user a
|
|
498
|
+
* real error; silently storing 0 gives them a wrong number.
|
|
499
|
+
*
|
|
500
|
+
* Only a number a double holds exactly becomes one. An id past 2^53 or a
|
|
501
|
+
* numeric wider than fifteen digits stays the text it was typed as, and the
|
|
502
|
+
* database parses it exactly: through Number(), "9007199254740993" was
|
|
503
|
+
* written as …992, a different row. And only plain decimal text is read as
|
|
504
|
+
* a number at all — Number() also reads "0x1A" as 26 and "1e3" as 1000,
|
|
505
|
+
* which is not what was typed; those go to the database as given too.
|
|
506
|
+
*/
|
|
507
|
+
export declare function coerceForColumn(declaredType: string, value: string | number | boolean | null): string | number | boolean | null;
|
|
508
|
+
/** A column that holds bytes: BLOB (SQLite), bytea (Postgres), (VAR)BINARY. */
|
|
509
|
+
export declare function isBinaryType(type: string | undefined): boolean;
|
|
510
|
+
/** A column that holds a JSON document: json and jsonb (Postgres), JSON (SQLite by declaration). */
|
|
511
|
+
export declare function isJsonType(type: string | undefined): boolean;
|
|
512
|
+
/** A column whose stored value an update can be compared on (scoped/updateGuard.ts): not a document, bytes, an array or a geometry. */
|
|
513
|
+
export declare function comparableType(type: string | undefined): boolean;
|
|
514
|
+
/**
|
|
515
|
+
* What an update of `values` expects the record to hold still: each column
|
|
516
|
+
* it writes, as the list or record showed it (`row`). Sent as the update's
|
|
517
|
+
* `expected`, it makes the write a compare-and-set, so a save made on a row
|
|
518
|
+
* someone else has since changed is refused rather than written over theirs
|
|
519
|
+
* — the lost update a writer pool would otherwise let through (server
|
|
520
|
+
* writeLanes.ts). Undefined when the row does not hold every written column
|
|
521
|
+
* as a plain value of a comparable type: the write is then as blind as ever.
|
|
522
|
+
*/
|
|
523
|
+
export declare function expectedValues(table: Pick<TableMeta, 'columns'>, values: Record<string, unknown>, row: Record<string, unknown> | undefined): Record<string, string | number | boolean | null> | undefined;
|