@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,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The command line, read: every flag `tablewalk` takes, into one Options
|
|
3
|
+
* value, with the environment variables that stand in for flags in a
|
|
4
|
+
* container. `USAGE` in cli/usage.ts says the same list in words, and
|
|
5
|
+
* test/prose.test.ts holds the two and the README to each other.
|
|
6
|
+
*/
|
|
7
|
+
import { parseHostList } from '../http/trust.js';
|
|
8
|
+
import { isReaderCount, MAX_READERS } from '../../adapters/postgresPool.js';
|
|
9
|
+
import { isLockTimeout, isWriterCount, MAX_LOCK_TIMEOUT_MS, MAX_WRITERS, MIN_LOCK_TIMEOUT_MS } from '../../adapters/writeLanes.js';
|
|
10
|
+
import { envName, productEnv } from '../product.js';
|
|
11
|
+
/**
|
|
12
|
+
* The variable `mistri check` and a build set on the child that validates (build.ts `checkApp`): the real
|
|
13
|
+
* validation, run as CI runs it, and not a spelling of the command line.
|
|
14
|
+
*/
|
|
15
|
+
export const CHECK_VALIDATION = 'MISTRI_CHECK_VALIDATION';
|
|
16
|
+
export function parseArgs(argv) {
|
|
17
|
+
/* Loopback by default. A database browser listening on every interface is
|
|
18
|
+
one shared wifi away from being someone else's database browser, and the
|
|
19
|
+
old `listen(port)` did exactly that. Binding elsewhere is possible but
|
|
20
|
+
has to be asked for. */
|
|
21
|
+
const opts = {
|
|
22
|
+
target: '',
|
|
23
|
+
port: 4111,
|
|
24
|
+
host: '127.0.0.1',
|
|
25
|
+
schemas: [],
|
|
26
|
+
open: false,
|
|
27
|
+
noConfig: false,
|
|
28
|
+
allowedHosts: [],
|
|
29
|
+
trustProxy: [],
|
|
30
|
+
authProxyFrom: [],
|
|
31
|
+
trustProxyCloudflare: false,
|
|
32
|
+
mcp: false,
|
|
33
|
+
outputSchema: false,
|
|
34
|
+
tools: '',
|
|
35
|
+
help: false,
|
|
36
|
+
version: false,
|
|
37
|
+
demo: false,
|
|
38
|
+
portGiven: false,
|
|
39
|
+
};
|
|
40
|
+
for (let i = 0; i < argv.length; i++) {
|
|
41
|
+
const arg = argv[i];
|
|
42
|
+
if (arg === '--db' || arg === '-d')
|
|
43
|
+
opts.target = argv[++i] ?? '';
|
|
44
|
+
else if (arg === '--port' || arg === '-p') {
|
|
45
|
+
opts.port = Number(argv[++i] ?? 4111);
|
|
46
|
+
opts.portGiven = true;
|
|
47
|
+
}
|
|
48
|
+
else if (arg === '--demo')
|
|
49
|
+
opts.demo = true;
|
|
50
|
+
else if (arg === '--host')
|
|
51
|
+
opts.host = argv[++i] ?? '127.0.0.1';
|
|
52
|
+
else if (arg === '--allowed-host')
|
|
53
|
+
opts.allowedHosts.push(argv[++i] ?? '');
|
|
54
|
+
else if (arg === '--trust-proxy')
|
|
55
|
+
opts.trustProxy.push(argv[++i] ?? '');
|
|
56
|
+
else if (arg === '--auth-proxy-from')
|
|
57
|
+
opts.authProxyFrom.push(argv[++i] ?? '');
|
|
58
|
+
else if (arg === '--trust-proxy-hops')
|
|
59
|
+
opts.trustProxyHops = argv[++i] ?? '';
|
|
60
|
+
else if (arg === '--trust-proxy-cloudflare')
|
|
61
|
+
opts.trustProxyCloudflare = true;
|
|
62
|
+
else if (arg === '--insecure-http-sign-in')
|
|
63
|
+
opts.insecureHttpSignIn = true;
|
|
64
|
+
else if (arg === '--auth-proxy-header')
|
|
65
|
+
opts.authProxyHeader = (argv[++i] ?? '').trim() || undefined;
|
|
66
|
+
/* Renamed before 1.0, and refused rather than ignored: beside three flags
|
|
67
|
+
that name the visitor's address it read as one of them, and a server
|
|
68
|
+
that silently dropped it would stop requiring the identity header. */
|
|
69
|
+
else if (arg === '--trust-proxy-header') {
|
|
70
|
+
i++;
|
|
71
|
+
opts.retired ??= '--trust-proxy-header is now --auth-proxy-header (the header a signing-in proxy sets with the user).';
|
|
72
|
+
}
|
|
73
|
+
else if (arg === '--schema')
|
|
74
|
+
opts.schemas.push(argv[++i] ?? '');
|
|
75
|
+
else if (arg === '--read-pool')
|
|
76
|
+
opts.readPool = argv[++i] ?? '';
|
|
77
|
+
else if (arg === '--write-pool')
|
|
78
|
+
opts.writePool = argv[++i] ?? '';
|
|
79
|
+
else if (arg === '--lock-timeout')
|
|
80
|
+
opts.lockTimeout = argv[++i] ?? '';
|
|
81
|
+
else if (arg === '--pooler')
|
|
82
|
+
opts.pooler = argv[++i] ?? '';
|
|
83
|
+
else if (arg === '--drain-delay')
|
|
84
|
+
opts.drainDelay = argv[++i] ?? '';
|
|
85
|
+
else if (arg === '--shutdown-grace')
|
|
86
|
+
opts.shutdownGrace = argv[++i] ?? '';
|
|
87
|
+
else if (arg === '--api-integers') {
|
|
88
|
+
if (opts.apiIntegers !== undefined)
|
|
89
|
+
opts.unknown = '--api-integers (may be supplied only once)';
|
|
90
|
+
else
|
|
91
|
+
opts.apiIntegers = argv[++i] ?? '';
|
|
92
|
+
}
|
|
93
|
+
else if (arg === '--api-reads') {
|
|
94
|
+
if (opts.apiReads !== undefined)
|
|
95
|
+
opts.unknown = '--api-reads (may be supplied only once)';
|
|
96
|
+
else
|
|
97
|
+
opts.apiReads = true;
|
|
98
|
+
}
|
|
99
|
+
else if (arg === '--app-mcp') {
|
|
100
|
+
if (opts.appMcp !== undefined)
|
|
101
|
+
opts.unknown = '--app-mcp (may be supplied only once)';
|
|
102
|
+
else
|
|
103
|
+
opts.appMcp = true;
|
|
104
|
+
}
|
|
105
|
+
else if (arg === '--api-requests-per-minute') {
|
|
106
|
+
if (opts.apiRequestsPerMinute !== undefined)
|
|
107
|
+
opts.unknown = '--api-requests-per-minute (may be supplied only once)';
|
|
108
|
+
else
|
|
109
|
+
opts.apiRequestsPerMinute = argv[++i] ?? '';
|
|
110
|
+
}
|
|
111
|
+
else if (arg === '--config')
|
|
112
|
+
opts.config = argv[++i] ?? '';
|
|
113
|
+
else if (arg === '--no-config')
|
|
114
|
+
opts.noConfig = true;
|
|
115
|
+
else if (arg === '--no-live')
|
|
116
|
+
opts.noLive = true;
|
|
117
|
+
else if (arg === '--db-latency')
|
|
118
|
+
opts.dbLatency = argv[++i] ?? '';
|
|
119
|
+
else if (arg === '--app')
|
|
120
|
+
(opts.apps ??= []).push(argv[++i] ?? '');
|
|
121
|
+
else if (arg === '--mount') {
|
|
122
|
+
const said = argv[++i] ?? '';
|
|
123
|
+
const eq = said.indexOf('=');
|
|
124
|
+
if (eq <= 0)
|
|
125
|
+
opts.unknown = `--mount ${said} (write it <app>=<path>, like main=/ or billing=/billing)`;
|
|
126
|
+
else if (Object.hasOwn((opts.mounts ??= {}), said.slice(0, eq)))
|
|
127
|
+
opts.unknown = `--mount ${said} (each App is mounted once)`;
|
|
128
|
+
else
|
|
129
|
+
opts.mounts[said.slice(0, eq)] = said.slice(eq + 1);
|
|
130
|
+
}
|
|
131
|
+
else if (arg === '--base-path') {
|
|
132
|
+
if (opts.basePath !== undefined)
|
|
133
|
+
opts.unknown = '--base-path (may be supplied only once)';
|
|
134
|
+
else
|
|
135
|
+
opts.basePath = argv[++i] ?? '';
|
|
136
|
+
}
|
|
137
|
+
else if (arg === '--app-entry') {
|
|
138
|
+
if (opts.appEntry !== undefined)
|
|
139
|
+
opts.unknown = '--app-entry (may be supplied only once)';
|
|
140
|
+
else
|
|
141
|
+
opts.appEntry = argv[++i] ?? '';
|
|
142
|
+
}
|
|
143
|
+
else if (arg === '--commands') {
|
|
144
|
+
if (opts.commands !== undefined)
|
|
145
|
+
opts.unknown = '--commands (may be supplied only once)';
|
|
146
|
+
else
|
|
147
|
+
opts.commands = argv[++i] ?? '';
|
|
148
|
+
}
|
|
149
|
+
else if (arg === '--jobs') {
|
|
150
|
+
if (opts.jobs !== undefined)
|
|
151
|
+
opts.unknown = '--jobs (may be supplied only once)';
|
|
152
|
+
else
|
|
153
|
+
opts.jobs = argv[++i] ?? '';
|
|
154
|
+
}
|
|
155
|
+
else if (arg === '--policy') {
|
|
156
|
+
if (opts.policy !== undefined)
|
|
157
|
+
opts.unknown = '--policy (may be supplied only once)';
|
|
158
|
+
else
|
|
159
|
+
opts.policy = argv[++i] ?? '';
|
|
160
|
+
}
|
|
161
|
+
else if (arg === '--scaffold-app')
|
|
162
|
+
opts.scaffoldApp = argv[++i] ?? '';
|
|
163
|
+
else if (arg === '--name')
|
|
164
|
+
opts.name = argv[++i] ?? '';
|
|
165
|
+
else if (arg === '--from-openapi')
|
|
166
|
+
opts.fromOpenapi = argv[++i] ?? '';
|
|
167
|
+
else if (arg === '--openapi')
|
|
168
|
+
opts.openapi = argv[++i] ?? '';
|
|
169
|
+
else if (arg === '--api-url')
|
|
170
|
+
opts.apiUrl = argv[++i] ?? '';
|
|
171
|
+
else if (arg === '--api-token-env')
|
|
172
|
+
opts.apiTokenEnv = argv[++i] ?? '';
|
|
173
|
+
else if (arg === '--write-authority')
|
|
174
|
+
opts.writeAuthority = true;
|
|
175
|
+
else if (arg === '--bump')
|
|
176
|
+
(opts.bump ??= []).push(argv[++i] ?? '');
|
|
177
|
+
else if (arg === '--reindex') {
|
|
178
|
+
// The resource is optional: `--reindex` alone indexes every searched resource.
|
|
179
|
+
const next = argv[i + 1];
|
|
180
|
+
opts.reindex = next !== undefined && !next.startsWith('-') ? argv[++i] : '';
|
|
181
|
+
}
|
|
182
|
+
else if (arg === '--open')
|
|
183
|
+
opts.open = true;
|
|
184
|
+
else if (arg === '--dev')
|
|
185
|
+
opts.dev = true;
|
|
186
|
+
else if (arg === '--mcp')
|
|
187
|
+
opts.mcp = true;
|
|
188
|
+
else if (arg === '--output-schema')
|
|
189
|
+
opts.outputSchema = true;
|
|
190
|
+
else if (arg === '--tools')
|
|
191
|
+
opts.tools = argv[++i] ?? '';
|
|
192
|
+
else if (arg === '--export')
|
|
193
|
+
opts.export = argv[++i] ?? '';
|
|
194
|
+
/* `--lint` takes no argument by default, so `tablewalk --lint --db x`
|
|
195
|
+
must not eat the next flag as a format. */
|
|
196
|
+
else if (arg === '--lint') {
|
|
197
|
+
opts.lint = argv[i + 1] && !argv[i + 1].startsWith('-') ? argv[++i] : 'text';
|
|
198
|
+
}
|
|
199
|
+
else if (arg === '--fail-on')
|
|
200
|
+
opts.failOn = argv[++i] ?? '';
|
|
201
|
+
else if (arg === '--diff')
|
|
202
|
+
opts.diff = argv[++i] ?? '';
|
|
203
|
+
else if (arg === '--help' || arg === '-h')
|
|
204
|
+
opts.help = true;
|
|
205
|
+
else if (arg === '--version' || arg === '-v' || arg === '-V')
|
|
206
|
+
opts.version = true;
|
|
207
|
+
else if (!arg.startsWith('-') && !opts.target)
|
|
208
|
+
opts.target = arg;
|
|
209
|
+
/* An unknown flag is a mistake, and saying so is cheap.
|
|
210
|
+
|
|
211
|
+
It used to be ignored. That was survivable only by accident: with no
|
|
212
|
+
target, the "nothing to open" gate printed the usage and exited, so
|
|
213
|
+
`tablewalk --prot 4111` looked like it had told you something. Now that
|
|
214
|
+
a server starts with nothing, the same typo silently starts one on the
|
|
215
|
+
default port and waits — the least useful thing it could do with a
|
|
216
|
+
command it did not understand. */
|
|
217
|
+
else if (arg.startsWith('-') && !opts.unknown)
|
|
218
|
+
opts.unknown = arg;
|
|
219
|
+
}
|
|
220
|
+
if (!opts.target && process.env.DATABASE_URL) {
|
|
221
|
+
opts.target = process.env.DATABASE_URL;
|
|
222
|
+
opts.targetFromEnvironment = true;
|
|
223
|
+
}
|
|
224
|
+
/* The env var exists for containers, where the name someone reaches tablewalk
|
|
225
|
+
by is a property of the deployment rather than of the command line — a
|
|
226
|
+
compose file sets it once, and the image's own CMD stays untouched. */
|
|
227
|
+
opts.allowedHosts.push(...parseHostList(productEnv('ALLOWED_HOSTS')));
|
|
228
|
+
if (!opts.authProxyHeader && productEnv('AUTH_PROXY_HEADER')?.trim()) {
|
|
229
|
+
opts.authProxyHeader = productEnv('AUTH_PROXY_HEADER').trim();
|
|
230
|
+
}
|
|
231
|
+
if (productEnv('TRUST_PROXY_HEADER')?.trim())
|
|
232
|
+
opts.retired ??= `${envName('TRUST_PROXY_HEADER')} is now ${envName('AUTH_PROXY_HEADER')} (the header a signing-in proxy sets with the user).`;
|
|
233
|
+
opts.allowedHosts = opts.allowedHosts.filter(Boolean);
|
|
234
|
+
// Added to the flags, like MISTRI_ALLOWED_HOSTS: a compose file names
|
|
235
|
+
// its network's proxy once and the image's CMD stays untouched.
|
|
236
|
+
opts.trustProxy.push(...parseHostList(productEnv('TRUST_PROXY')));
|
|
237
|
+
opts.authProxyFrom.push(...parseHostList(productEnv('AUTH_PROXY_FROM')));
|
|
238
|
+
if (opts.trustProxyHops === undefined && productEnv('TRUST_PROXY_HOPS')?.trim()) {
|
|
239
|
+
opts.trustProxyHops = productEnv('TRUST_PROXY_HOPS').trim();
|
|
240
|
+
}
|
|
241
|
+
if (/^(1|true)$/i.test(productEnv('TRUST_PROXY_CLOUDFLARE')?.trim() ?? ''))
|
|
242
|
+
opts.trustProxyCloudflare = true;
|
|
243
|
+
if (/^(1|true)$/i.test(productEnv('INSECURE_HTTP_SIGN_IN')?.trim() ?? ''))
|
|
244
|
+
opts.insecureHttpSignIn = true;
|
|
245
|
+
/* Cloud Run, Heroku and most platforms hand the port in as PORT. A flag
|
|
246
|
+
wins; it is the platform's word, so a busy port is not rolled past. */
|
|
247
|
+
if (!opts.portGiven &&
|
|
248
|
+
/^\d{1,5}$/.test(process.env.PORT?.trim() ?? '') &&
|
|
249
|
+
Number(process.env.PORT) >= 1 &&
|
|
250
|
+
Number(process.env.PORT) <= 65535) {
|
|
251
|
+
opts.port = Number(process.env.PORT);
|
|
252
|
+
opts.portGiven = true;
|
|
253
|
+
}
|
|
254
|
+
/* The pool's shape is a fact about the deployment — the pod's share of the
|
|
255
|
+
database's connections, the pooler in its path — so a container sets it
|
|
256
|
+
once, as with the variables above. A flag says it for one run and wins. */
|
|
257
|
+
if (opts.readPool === undefined && productEnv('READ_POOL')?.trim())
|
|
258
|
+
opts.readPool = productEnv('READ_POOL').trim();
|
|
259
|
+
if (opts.writePool === undefined && productEnv('WRITE_POOL')?.trim())
|
|
260
|
+
opts.writePool = productEnv('WRITE_POOL').trim();
|
|
261
|
+
if (opts.lockTimeout === undefined && productEnv('LOCK_TIMEOUT')?.trim())
|
|
262
|
+
opts.lockTimeout = productEnv('LOCK_TIMEOUT').trim();
|
|
263
|
+
if (opts.pooler === undefined && productEnv('POOLER')?.trim())
|
|
264
|
+
opts.pooler = productEnv('POOLER').trim();
|
|
265
|
+
// How long a platform lets a stopping container drain is the deployment's too.
|
|
266
|
+
if (opts.drainDelay === undefined && productEnv('DRAIN_DELAY')?.trim())
|
|
267
|
+
opts.drainDelay = productEnv('DRAIN_DELAY').trim();
|
|
268
|
+
if (opts.shutdownGrace === undefined && productEnv('SHUTDOWN_GRACE')?.trim())
|
|
269
|
+
opts.shutdownGrace = productEnv('SHUTDOWN_GRACE').trim();
|
|
270
|
+
// Where the proxy serves it is the deployment's, as the host names are.
|
|
271
|
+
if (opts.basePath === undefined && productEnv('BASE_PATH')?.trim())
|
|
272
|
+
opts.basePath = productEnv('BASE_PATH').trim();
|
|
273
|
+
return opts;
|
|
274
|
+
}
|
|
275
|
+
/** Cloud Run gives a stopping instance 10 seconds in all, so the default drains nothing and cuts a stuck response at 10. */
|
|
276
|
+
export const DEFAULT_SHUTDOWN_TIMINGS = { drainMs: 0, graceMs: 10_000 };
|
|
277
|
+
const MAX_DRAIN_DELAY_S = 120;
|
|
278
|
+
const MAX_SHUTDOWN_GRACE_S = 300;
|
|
279
|
+
/**
|
|
280
|
+
* What `--drain-delay` and `--shutdown-grace` (or MISTRI_DRAIN_DELAY and
|
|
281
|
+
* MISTRI_SHUTDOWN_GRACE) name, in milliseconds, or the sentence saying why
|
|
282
|
+
* they cannot be used. The delay is the beat a balancer that probes /readyz
|
|
283
|
+
* needs between the first 503 and the listener closing; the grace bounds a
|
|
284
|
+
* response that never finishes once the rest has drained. They come one after
|
|
285
|
+
* the other, so a platform's stop timeout must hold both plus the drain.
|
|
286
|
+
*/
|
|
287
|
+
export function shutdownTimings(opts) {
|
|
288
|
+
const seconds = (value, flag, variable, low, high) => {
|
|
289
|
+
if (value === undefined)
|
|
290
|
+
return undefined;
|
|
291
|
+
const given = /^\d+(\.\d+)?$/.test(value) ? Number(value) : Number.NaN;
|
|
292
|
+
if (!(given >= low && given <= high))
|
|
293
|
+
return `${flag} takes seconds from ${low} to ${high}; "${value}" is not one. It comes from the flag or ${variable}.`;
|
|
294
|
+
return Math.round(given * 1000);
|
|
295
|
+
};
|
|
296
|
+
const drainMs = seconds(opts.drainDelay, '--drain-delay', envName('DRAIN_DELAY'), 0, MAX_DRAIN_DELAY_S);
|
|
297
|
+
if (typeof drainMs === 'string')
|
|
298
|
+
return drainMs;
|
|
299
|
+
const graceMs = seconds(opts.shutdownGrace, '--shutdown-grace', envName('SHUTDOWN_GRACE'), 1, MAX_SHUTDOWN_GRACE_S);
|
|
300
|
+
if (typeof graceMs === 'string')
|
|
301
|
+
return graceMs;
|
|
302
|
+
return { drainMs: drainMs ?? DEFAULT_SHUTDOWN_TIMINGS.drainMs, graceMs: graceMs ?? DEFAULT_SHUTDOWN_TIMINGS.graceMs };
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* The process-wide pool defaults `--read-pool`, `--write-pool`, `--pooler`
|
|
306
|
+
* and `--lock-timeout` (or their variables) name, or the sentence saying why
|
|
307
|
+
* they cannot be used. Refused rather than clamped: a pod sized for 16
|
|
308
|
+
* readers that quietly got 4 is a capacity plan nobody can see failing.
|
|
309
|
+
*/
|
|
310
|
+
export function postgresPoolFlags(opts) {
|
|
311
|
+
let readers;
|
|
312
|
+
if (opts.readPool !== undefined) {
|
|
313
|
+
readers = /^\d+$/.test(opts.readPool) ? Number(opts.readPool) : Number.NaN;
|
|
314
|
+
if (!isReaderCount(readers)) {
|
|
315
|
+
return `--read-pool takes a whole number from 1 to ${MAX_READERS}; "${opts.readPool}" is not one. It comes from the flag or ${envName('READ_POOL')}.`;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
let writers;
|
|
319
|
+
if (opts.writePool !== undefined) {
|
|
320
|
+
writers = /^\d+$/.test(opts.writePool) ? Number(opts.writePool) : Number.NaN;
|
|
321
|
+
if (!isWriterCount(writers)) {
|
|
322
|
+
return `--write-pool takes a whole number from 1 to ${MAX_WRITERS}; "${opts.writePool}" is not one. It comes from the flag or ${envName('WRITE_POOL')}.`;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
let lockTimeoutMs;
|
|
326
|
+
if (opts.lockTimeout !== undefined) {
|
|
327
|
+
lockTimeoutMs = /^\d+(\.\d+)?$/.test(opts.lockTimeout) ? Math.round(Number(opts.lockTimeout) * 1000) : Number.NaN;
|
|
328
|
+
if (!isLockTimeout(lockTimeoutMs)) {
|
|
329
|
+
return `--lock-timeout takes seconds from ${MIN_LOCK_TIMEOUT_MS / 1000} to ${MAX_LOCK_TIMEOUT_MS / 1000}; "${opts.lockTimeout}" is not one. It comes from the flag or ${envName('LOCK_TIMEOUT')}.`;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const pooler = opts.pooler;
|
|
333
|
+
if (pooler !== undefined && pooler !== 'session' && pooler !== 'transaction') {
|
|
334
|
+
return `--pooler takes "session" or "transaction"; "${pooler}" is neither. It comes from the flag or ${envName('POOLER')}.`;
|
|
335
|
+
}
|
|
336
|
+
return {
|
|
337
|
+
...(readers !== undefined ? { readers } : {}),
|
|
338
|
+
...(writers !== undefined ? { writers } : {}),
|
|
339
|
+
...(pooler !== undefined ? { pooler } : {}),
|
|
340
|
+
...(lockTimeoutMs !== undefined ? { lockTimeoutMs } : {}),
|
|
341
|
+
};
|
|
342
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What each binary's entry does before its main, the one way: `tablewalk` (packages/tablewalk/src/server/index.ts)
|
|
3
|
+
* and `mistri` (packages/mistri/src/server/index.ts) each call `runBin` with their own main, and nothing else.
|
|
4
|
+
*
|
|
5
|
+
* Two binaries, not one bin that hands a start across: a person types `npx tablewalk <db>` for the database browser
|
|
6
|
+
* and `npx @mistriwork/mistri dev` for an App, and each refuses the other's start by the other's name. Neither entry imports the
|
|
7
|
+
* other product, so installing one never loads, or installs, the other.
|
|
8
|
+
*
|
|
9
|
+
* An entry re-exports nothing. One used to re-export `createApp` and the trust checks for the tests, and an ES
|
|
10
|
+
* module's re-exports are loaded whether or not anyone reads them: every start — `--help`, `--mcp` — paid for the whole
|
|
11
|
+
* HTTP server before `main` could look at a flag. The tests import those from where they live.
|
|
12
|
+
*/
|
|
13
|
+
/* A namespace, not a named import: on a Node without enableCompileCache a named import fails as the module links,
|
|
14
|
+
before the version check below could say why. */
|
|
15
|
+
import * as nodeModule from 'node:module';
|
|
16
|
+
import { pathToFileURL } from 'node:url';
|
|
17
|
+
import { realpathSync } from 'node:fs';
|
|
18
|
+
import { compileCacheDirectory } from '../compileCache.js';
|
|
19
|
+
import { oldNodeRefusal, quietSqliteExperimentalWarning } from '../startupWarnings.js';
|
|
20
|
+
/**
|
|
21
|
+
* Whether `entry` (the entry's `import.meta.url`) is the script this process was started with.
|
|
22
|
+
*
|
|
23
|
+
* Matched by identity, not by name. The old test — does argv[1] *look like* server/index — held until npm ran it
|
|
24
|
+
* through a bin shim, which is a symlink called `tablewalk`: the module loaded, matched nothing, and `npx tablewalk`
|
|
25
|
+
* exited 0 having done exactly that. Resolving the symlink and comparing against the entry's own URL is the question
|
|
26
|
+
* actually being asked, and it keeps the property the guard exists for: a test that imports an entry boots nothing.
|
|
27
|
+
* The tests once imported one, and a module that starts a server as a side effect of being read cannot be tested —
|
|
28
|
+
* it printed its usage and listened on 4111 in the middle of the suite.
|
|
29
|
+
*/
|
|
30
|
+
function invokedAs(entry) {
|
|
31
|
+
const arg = process.argv[1];
|
|
32
|
+
if (!arg)
|
|
33
|
+
return false;
|
|
34
|
+
try {
|
|
35
|
+
return pathToFileURL(realpathSync(arg)).href === entry;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Runs the binary whose entry is `entry`: its main, loaded on demand, when the process was started with it. */
|
|
42
|
+
export function runBin(entry, load) {
|
|
43
|
+
if (!invokedAs(entry))
|
|
44
|
+
return;
|
|
45
|
+
const refusal = oldNodeRefusal();
|
|
46
|
+
if (refusal) {
|
|
47
|
+
process.stderr.write(`${refusal}\n`);
|
|
48
|
+
process.exitCode = 1;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
/* Before the first import of the server, which is what the cache is for: V8's compiled code for every module
|
|
52
|
+
`main` loads is kept on disk, so the second start of the same version skips compiling them. An agent's client
|
|
53
|
+
spawns `--mcp` every session, and that start is mostly compiling. From source (tsx) the cache would hold tsx's
|
|
54
|
+
transforms, which are keyed by content anyway, so it is only enabled for the built package. */
|
|
55
|
+
const directory = entry.endsWith('.js') ? compileCacheDirectory(process.env) : undefined;
|
|
56
|
+
if (directory) {
|
|
57
|
+
try {
|
|
58
|
+
nodeModule.enableCompileCache(directory);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
/* a cache is an optimisation, never a reason not to start */
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
quietSqliteExperimentalWarning();
|
|
65
|
+
void load().then(({ main }) => main());
|
|
66
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The command that opens `url` on `platform`. Windows has no `start` executable — it is a `cmd.exe` builtin, so
|
|
3
|
+
* spawning it by name fails with ENOENT, which the caller swallows: `--open` and `--demo` did nothing there. The
|
|
4
|
+
* URL handler `start` itself ends in is a real program, and with no shell between, an `&` in a URL is not a command
|
|
5
|
+
* separator.
|
|
6
|
+
*/
|
|
7
|
+
export declare function openerFor(platform: NodeJS.Platform, url: string): {
|
|
8
|
+
cmd: string;
|
|
9
|
+
args: string[];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Opening the served page in the reader's browser, best effort: a machine
|
|
13
|
+
* with no opener keeps serving, and the URL is already on screen.
|
|
14
|
+
*/
|
|
15
|
+
export declare function openBrowser(url: string): Promise<void>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The command that opens `url` on `platform`. Windows has no `start` executable — it is a `cmd.exe` builtin, so
|
|
3
|
+
* spawning it by name fails with ENOENT, which the caller swallows: `--open` and `--demo` did nothing there. The
|
|
4
|
+
* URL handler `start` itself ends in is a real program, and with no shell between, an `&` in a URL is not a command
|
|
5
|
+
* separator.
|
|
6
|
+
*/
|
|
7
|
+
export function openerFor(platform, url) {
|
|
8
|
+
if (platform === 'darwin')
|
|
9
|
+
return { cmd: 'open', args: [url] };
|
|
10
|
+
if (platform === 'win32')
|
|
11
|
+
return { cmd: 'rundll32', args: ['url.dll,FileProtocolHandler', url] };
|
|
12
|
+
return { cmd: 'xdg-open', args: [url] };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Opening the served page in the reader's browser, best effort: a machine
|
|
16
|
+
* with no opener keeps serving, and the URL is already on screen.
|
|
17
|
+
*/
|
|
18
|
+
export async function openBrowser(url) {
|
|
19
|
+
const { spawn } = await import('node:child_process');
|
|
20
|
+
const { cmd, args } = openerFor(process.platform, url);
|
|
21
|
+
try {
|
|
22
|
+
const child = spawn(cmd, args, { detached: true, stdio: 'ignore', windowsHide: true });
|
|
23
|
+
/* A headless box — a container, a server, an SSH session — has no
|
|
24
|
+
`xdg-open`, and `spawn` reports that as an `error` event, not a throw.
|
|
25
|
+
With no handler Node re-raises it as an uncaught exception and takes the
|
|
26
|
+
whole process down — so `--open`, and `--demo` which implies it, crashed
|
|
27
|
+
exactly where it was most useful: the container serving the demo. A
|
|
28
|
+
missing opener is not fatal. The server is already listening and the URL
|
|
29
|
+
is already printed; opening it is a convenience, not a requirement. */
|
|
30
|
+
child.once('error', () => { });
|
|
31
|
+
child.unref();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
/* Some platforms throw synchronously instead. Same non-answer: the server
|
|
35
|
+
stays up, the URL is on screen, the reader opens it themselves. */
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Registry } from '../connections.js';
|
|
2
|
+
import type { ConfigSections } from '../configSections.js';
|
|
3
|
+
import { type PageDef } from '../../shared/page.js';
|
|
4
|
+
import { type ConfigLayout } from '../../shared/recordview.js';
|
|
5
|
+
import { type ViewDef } from '../../shared/view.js';
|
|
6
|
+
import { type SavedQuery } from '../../shared/sqlsaved.js';
|
|
7
|
+
import type { Options } from './args.js';
|
|
8
|
+
/**
|
|
9
|
+
* A variable an App's definition may read, as an "apps" entry's `env` names it. The file is read here, for every
|
|
10
|
+
* product; the App framework's own word for it (shared/appAuthority.ts `AppEnvName`) is this shape, read from here.
|
|
11
|
+
*/
|
|
12
|
+
interface ConfigEnvName {
|
|
13
|
+
name: string;
|
|
14
|
+
secret?: true;
|
|
15
|
+
}
|
|
16
|
+
/** One "apps" entry's `env`: names, or `{ "name": …, "secret": true }` for one that reads like a credential. */
|
|
17
|
+
export declare function parseAppEnv(raw: unknown, where: string): ConfigEnvName[];
|
|
18
|
+
/** What a session keeps from its config file. */
|
|
19
|
+
export interface StartupConfig {
|
|
20
|
+
/** The file this session's connections were read from, and written back to. */
|
|
21
|
+
configPath?: string;
|
|
22
|
+
/** The file as parsed and as text, so a tenant start can see it change under it. */
|
|
23
|
+
loadedConfigSignature?: string;
|
|
24
|
+
loadedConfigText?: string;
|
|
25
|
+
/** Views predefined in the config file. Read once, at startup, like connections. */
|
|
26
|
+
views: ViewDef[];
|
|
27
|
+
/** SQL statements predefined in the config file, read from the same place. */
|
|
28
|
+
queries: SavedQuery[];
|
|
29
|
+
pages: PageDef[];
|
|
30
|
+
layouts: ConfigLayout[];
|
|
31
|
+
/** The "apps" directories, resolved against the config file's own location. */
|
|
32
|
+
apps: string[];
|
|
33
|
+
/** Said when DATABASE_URL was set and the config's own connections were used instead of it. */
|
|
34
|
+
environmentTargetNote?: string;
|
|
35
|
+
/** What each of those directories' definitions may read of the environment, by resolved directory. */
|
|
36
|
+
appEnv: Record<string, ConfigEnvName[]>;
|
|
37
|
+
/** `"mount": { "<app>": "/" | "/<segment>" }`, as written: where each App is served (shared/mount.ts). A `--mount` for the same App wins. */
|
|
38
|
+
mount?: Record<string, string>;
|
|
39
|
+
/** `"basePath": "/tools"`, as written; `--base-path` wins. */
|
|
40
|
+
basePath?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Whether the config file a start would read names Apps: read raw, before anything is said of it, so the database
|
|
44
|
+
* browser's main can hand a start that serves Apps to the App framework's without both reading the file aloud. The
|
|
45
|
+
* file is the one `loadConfig` would read; one it cannot parse is left for that to refuse.
|
|
46
|
+
*/
|
|
47
|
+
export declare function configNamesApps(opts: Pick<Options, 'config' | 'noConfig'>): Promise<boolean>;
|
|
48
|
+
/** `sections` may be a promise's maker, so a start that reads no config file (`--no-config`) never loads them. */
|
|
49
|
+
export declare function readStartupConfig(opts: Options, registry: Registry, given: ConfigSections | (() => Promise<ConfigSections>)): Promise<StartupConfig>;
|
|
50
|
+
export {};
|