@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,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The colour arithmetic a theme is measured with: a bounded evaluator of the colours a palette is written in, mixing
|
|
3
|
+
* and compositing as the page does, and WCAG contrast. Apart from theme.ts, which judges whole themes, because the
|
|
4
|
+
* client draws with one result of it (heatTop, a matrix's strongest tint) on every first paint, and theme.ts with its
|
|
5
|
+
* recipes, faces and checks is several kilobytes no first paint should carry.
|
|
6
|
+
*/
|
|
7
|
+
import type { ThemePalette } from '../../schema/theme.js';
|
|
8
|
+
export type Color = readonly [number, number, number, number];
|
|
9
|
+
/** A deliberately bounded color evaluator, not a CSS parser. Fractional sRGB
|
|
10
|
+
channels stay unrounded through compositing and luminance calculation. */
|
|
11
|
+
export declare function diagnosticColor(value: string, depth?: number): Color | undefined;
|
|
12
|
+
export declare function mixColor(a: Color, b: Color, weight: number): Color;
|
|
13
|
+
export declare function over(color: Color, ground: Color): Color;
|
|
14
|
+
export declare function measuredContrast(foreground: Color, background: Color): number | undefined;
|
|
15
|
+
/** A composited colour as the page paints it, `#rrggbb` (alpha dropped: a ground is opaque, an ink composited on one). */
|
|
16
|
+
export declare function colorHex(color: Color): string;
|
|
17
|
+
/** The strongest a heat tint is drawn (a matrix's heaviest cell), as a share of the accent over the panel. */
|
|
18
|
+
export declare const HEAT_TOP = 0.62;
|
|
19
|
+
/**
|
|
20
|
+
* How strong a heat tint may be drawn under a palette: the strongest share of the accent over the panel, at most
|
|
21
|
+
* HEAT_TOP, on which the ink still reads at 4.5:1. A matrix's cells say their figure (and, folded, their column) in
|
|
22
|
+
* the ink on that tint, so the scale stops where the words would fade: 62% under Lumen's blue, about half under
|
|
23
|
+
* Mono's black or a dark mode's light accent, where the ink sits near the accent. Unmeasurable colors keep HEAT_TOP.
|
|
24
|
+
*/
|
|
25
|
+
export declare function heatTop(palette: Pick<ThemePalette, 'accent' | 'surface' | 'ink'>): number;
|
|
26
|
+
/**
|
|
27
|
+
* A command form's field edge at rest (formDress.css, `--field-edge`): a clean outline at 3:1 on what the field
|
|
28
|
+
* stands on (WCAG 1.4.11). Where the look's control edge (`lineControl`) already reads at up to 4.5:1 on its surface
|
|
29
|
+
* and its page, it is that edge, so a form's field and a record's inline edit wear one line (Lumen, Sage). A stronger
|
|
30
|
+
* one — Mono's ink, a theme's near-black — is mixed toward the surface to the lightest that still clears FIELD_EDGE on
|
|
31
|
+
* both: a box of solid ink round every answer read as a form shouting. Undefined keeps the look's own edge (the sheet
|
|
32
|
+
* falls back to `--line-control`), and so does a color this cannot measure.
|
|
33
|
+
*/
|
|
34
|
+
export declare function fieldEdge(palette: Pick<ThemePalette, 'lineControl' | 'surface' | 'ground'>): string | undefined;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** A deliberately bounded color evaluator, not a CSS parser. Fractional sRGB
|
|
2
|
+
channels stay unrounded through compositing and luminance calculation. */
|
|
3
|
+
export function diagnosticColor(value, depth = 0) {
|
|
4
|
+
if (depth > 8)
|
|
5
|
+
return undefined;
|
|
6
|
+
value = value.trim().toLowerCase();
|
|
7
|
+
if (value === 'transparent')
|
|
8
|
+
return [0, 0, 0, 0];
|
|
9
|
+
if (value === 'white')
|
|
10
|
+
return [1, 1, 1, 1];
|
|
11
|
+
if (value === 'black')
|
|
12
|
+
return [0, 0, 0, 1];
|
|
13
|
+
if (/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(value)) {
|
|
14
|
+
const hex = value.length < 6
|
|
15
|
+
? value
|
|
16
|
+
.slice(1)
|
|
17
|
+
.split('')
|
|
18
|
+
.map((char) => char + char)
|
|
19
|
+
.join('')
|
|
20
|
+
: value.slice(1);
|
|
21
|
+
return [
|
|
22
|
+
parseInt(hex.slice(0, 2), 16) / 255,
|
|
23
|
+
parseInt(hex.slice(2, 4), 16) / 255,
|
|
24
|
+
parseInt(hex.slice(4, 6), 16) / 255,
|
|
25
|
+
hex.length === 8 ? parseInt(hex.slice(6, 8), 16) / 255 : 1,
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
// The two expressions emitted by effectiveThemePalette. The inner legacy
|
|
29
|
+
// color can be unknown; that remains unmeasured rather than guessed.
|
|
30
|
+
const mix = /^color-mix\(in srgb, (.+) (62|14)%, (white|transparent)\)$/.exec(value);
|
|
31
|
+
const color = mix && diagnosticColor(mix[1], depth + 1);
|
|
32
|
+
return color ? mixColor(color, diagnosticColor(mix[3]), Number(mix[2]) / 100) : undefined;
|
|
33
|
+
}
|
|
34
|
+
export function mixColor(a, b, weight) {
|
|
35
|
+
const alpha = a[3] * weight + b[3] * (1 - weight);
|
|
36
|
+
const channel = (index) => (alpha ? (a[index] * a[3] * weight + b[index] * b[3] * (1 - weight)) / alpha : 0);
|
|
37
|
+
return [channel(0), channel(1), channel(2), alpha];
|
|
38
|
+
}
|
|
39
|
+
export function over(color, ground) {
|
|
40
|
+
const alpha = color[3] + ground[3] * (1 - color[3]);
|
|
41
|
+
const channel = (index) => (alpha ? (color[index] * color[3] + ground[index] * ground[3] * (1 - color[3])) / alpha : 0);
|
|
42
|
+
return [channel(0), channel(1), channel(2), alpha];
|
|
43
|
+
}
|
|
44
|
+
export function measuredContrast(foreground, background) {
|
|
45
|
+
if (background[3] !== 1)
|
|
46
|
+
return undefined; // No known opaque ground.
|
|
47
|
+
const luminance = (color) => color
|
|
48
|
+
.slice(0, 3)
|
|
49
|
+
.map((value) => (value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4))
|
|
50
|
+
.reduce((total, value, index) => total + value * [0.2126, 0.7152, 0.0722][index], 0);
|
|
51
|
+
const a = luminance(over(foreground, background)), b = luminance(background);
|
|
52
|
+
return (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);
|
|
53
|
+
}
|
|
54
|
+
/** A composited colour as the page paints it, `#rrggbb` (alpha dropped: a ground is opaque, an ink composited on one). */
|
|
55
|
+
export function colorHex(color) {
|
|
56
|
+
return `#${color
|
|
57
|
+
.slice(0, 3)
|
|
58
|
+
.map((value) => Math.round(Math.min(1, Math.max(0, value)) * 255)
|
|
59
|
+
.toString(16)
|
|
60
|
+
.padStart(2, '0'))
|
|
61
|
+
.join('')}`;
|
|
62
|
+
}
|
|
63
|
+
/** The strongest a heat tint is drawn (a matrix's heaviest cell), as a share of the accent over the panel. */
|
|
64
|
+
export const HEAT_TOP = 0.62;
|
|
65
|
+
/** Below this a heat scale stops reading as one: the palette's heaviest cell is drawn here and `check` says why. */
|
|
66
|
+
const HEAT_FLOOR = 0.2;
|
|
67
|
+
/**
|
|
68
|
+
* How strong a heat tint may be drawn under a palette: the strongest share of the accent over the panel, at most
|
|
69
|
+
* HEAT_TOP, on which the ink still reads at 4.5:1. A matrix's cells say their figure (and, folded, their column) in
|
|
70
|
+
* the ink on that tint, so the scale stops where the words would fade: 62% under Lumen's blue, about half under
|
|
71
|
+
* Mono's black or a dark mode's light accent, where the ink sits near the accent. Unmeasurable colors keep HEAT_TOP.
|
|
72
|
+
*/
|
|
73
|
+
export function heatTop(palette) {
|
|
74
|
+
const accent = palette.accent && diagnosticColor(palette.accent), surface = palette.surface && diagnosticColor(palette.surface), ink = palette.ink && diagnosticColor(palette.ink);
|
|
75
|
+
if (!accent || !surface || !ink)
|
|
76
|
+
return HEAT_TOP;
|
|
77
|
+
for (let step = Math.round(HEAT_TOP * 100); step > HEAT_FLOOR * 100; step--) {
|
|
78
|
+
const ratio = measuredContrast(ink, over(mixColor(accent, [0, 0, 0, 0], step / 100), surface));
|
|
79
|
+
if (ratio === undefined || ratio >= 4.5)
|
|
80
|
+
return step / 100;
|
|
81
|
+
}
|
|
82
|
+
return HEAT_FLOOR;
|
|
83
|
+
}
|
|
84
|
+
/** What a command form's field edge at rest is drawn to: 3:1 with room to spare, short of a line that shouts. */
|
|
85
|
+
const FIELD_EDGE = 3.5;
|
|
86
|
+
/** Past this a control's edge is a line drawn to be seen (Mono's ink), not a field's quiet boundary. */
|
|
87
|
+
const FIELD_EDGE_CEILING = 4.5;
|
|
88
|
+
/**
|
|
89
|
+
* A command form's field edge at rest (formDress.css, `--field-edge`): a clean outline at 3:1 on what the field
|
|
90
|
+
* stands on (WCAG 1.4.11). Where the look's control edge (`lineControl`) already reads at up to 4.5:1 on its surface
|
|
91
|
+
* and its page, it is that edge, so a form's field and a record's inline edit wear one line (Lumen, Sage). A stronger
|
|
92
|
+
* one — Mono's ink, a theme's near-black — is mixed toward the surface to the lightest that still clears FIELD_EDGE on
|
|
93
|
+
* both: a box of solid ink round every answer read as a form shouting. Undefined keeps the look's own edge (the sheet
|
|
94
|
+
* falls back to `--line-control`), and so does a color this cannot measure.
|
|
95
|
+
*/
|
|
96
|
+
export function fieldEdge(palette) {
|
|
97
|
+
const edge = palette.lineControl && diagnosticColor(palette.lineControl), surface = palette.surface && diagnosticColor(palette.surface), ground = palette.ground ? diagnosticColor(palette.ground) : surface;
|
|
98
|
+
if (!edge || !surface || !ground)
|
|
99
|
+
return undefined;
|
|
100
|
+
const least = (color) => Math.min(measuredContrast(color, surface) ?? 0, measuredContrast(color, ground) ?? 0);
|
|
101
|
+
if (least(edge) <= FIELD_EDGE_CEILING)
|
|
102
|
+
return undefined;
|
|
103
|
+
for (let step = 1; step < 100; step++) {
|
|
104
|
+
const mixed = mixColor(edge, surface, step / 100);
|
|
105
|
+
if (least(mixed) >= FIELD_EDGE)
|
|
106
|
+
return colorHex(mixed);
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A theme's own font files (`type.faces`) as a page declares them: the
|
|
3
|
+
* `@font-face` rules, the face its headings are drawn in, and the families a
|
|
4
|
+
* stack names. Shared by the server's first paint (clientSurface.ts) and the
|
|
5
|
+
* browser's look (client visualTheme.ts), so a face is declared the same way
|
|
6
|
+
* before the script runs and after; the files themselves are the server's
|
|
7
|
+
* (server/app/appFonts.ts).
|
|
8
|
+
*/
|
|
9
|
+
import type { ThemeDefinition, ThemeFaceDefinition } from '../../schema/theme.js';
|
|
10
|
+
/** The path segment an App's fonts are served under, beside its `_components`. */
|
|
11
|
+
export declare const FONTS_SEGMENT = "_fonts";
|
|
12
|
+
/** A stack's families, unquoted. */
|
|
13
|
+
export declare function families(stack: string): string[];
|
|
14
|
+
/**
|
|
15
|
+
* The face a theme's headings are drawn in, preloaded on first paint: the
|
|
16
|
+
* first served face of the family its heading stack leads with, at the
|
|
17
|
+
* heading weight where it ships one. A theme whose headings lead with a
|
|
18
|
+
* family it does not ship has none: nothing is fetched for a face the page
|
|
19
|
+
* would not draw a line in.
|
|
20
|
+
*/
|
|
21
|
+
export declare function headingFace(theme: ThemeDefinition): ThemeFaceDefinition | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The `@font-face` rules for a theme's served faces, each `url()` the
|
|
24
|
+
* browser's own form of its address (`shown`). `swap`, as Inter's is
|
|
25
|
+
* (lumenLook.css): the text is drawn at once in the stack's next family and
|
|
26
|
+
* set again when the face lands, never held invisible. The family and the
|
|
27
|
+
* address are both checked to a character set that cannot close the rule
|
|
28
|
+
* (themeSpec.ts, appFonts.ts), so nothing a theme says becomes a stylesheet.
|
|
29
|
+
*/
|
|
30
|
+
export declare function faceRules(theme: ThemeDefinition | undefined, shown?: (href: string) => string): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** The path segment an App's fonts are served under, beside its `_components`. */
|
|
2
|
+
export const FONTS_SEGMENT = '_fonts';
|
|
3
|
+
/** A stack's families, unquoted. */
|
|
4
|
+
export function families(stack) {
|
|
5
|
+
return stack
|
|
6
|
+
.split(',')
|
|
7
|
+
.map((family) => family.trim().replace(/^["']|["']$/g, ''))
|
|
8
|
+
.filter(Boolean);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The face a theme's headings are drawn in, preloaded on first paint: the
|
|
12
|
+
* first served face of the family its heading stack leads with, at the
|
|
13
|
+
* heading weight where it ships one. A theme whose headings lead with a
|
|
14
|
+
* family it does not ship has none: nothing is fetched for a face the page
|
|
15
|
+
* would not draw a line in.
|
|
16
|
+
*/
|
|
17
|
+
export function headingFace(theme) {
|
|
18
|
+
const lead = families(theme.fonts?.heading ?? theme.fonts?.ui ?? '')[0]?.toLowerCase();
|
|
19
|
+
if (!lead)
|
|
20
|
+
return undefined;
|
|
21
|
+
const faces = (theme.faces ?? []).filter((face) => face.family.toLowerCase() === lead && face.style === 'normal' && face.href);
|
|
22
|
+
const weight = theme.type?.roles?.title?.weight ?? 700;
|
|
23
|
+
return (faces.find((face) => {
|
|
24
|
+
const [low, high = low] = face.weight.split(' ').map(Number);
|
|
25
|
+
return weight >= low && weight <= high;
|
|
26
|
+
}) ?? faces[0]);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The `@font-face` rules for a theme's served faces, each `url()` the
|
|
30
|
+
* browser's own form of its address (`shown`). `swap`, as Inter's is
|
|
31
|
+
* (lumenLook.css): the text is drawn at once in the stack's next family and
|
|
32
|
+
* set again when the face lands, never held invisible. The family and the
|
|
33
|
+
* address are both checked to a character set that cannot close the rule
|
|
34
|
+
* (themeSpec.ts, appFonts.ts), so nothing a theme says becomes a stylesheet.
|
|
35
|
+
*/
|
|
36
|
+
export function faceRules(theme, shown = (href) => href) {
|
|
37
|
+
return (theme?.faces ?? [])
|
|
38
|
+
.filter((face) => face.href && /^[\w/.%-]+$/.test(face.href))
|
|
39
|
+
.map((face) => `@font-face{font-family:"${face.family}";src:url("${shown(face.href)}") format("${face.href.endsWith('.woff') ? 'woff' : 'woff2'}");` +
|
|
40
|
+
`font-weight:${face.weight};font-style:${face.style};font-display:swap}`)
|
|
41
|
+
.join('\n');
|
|
42
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two inks an accent needs that are not the accent. A brand accent is
|
|
3
|
+
* chosen as a fill (a button, a tab, a meter), and the words drawn on it and
|
|
4
|
+
* the words drawn in it are two other colors: a bright orange wants near-black
|
|
5
|
+
* words on it, and is 2.3:1 as text on a white page. A theme may say them
|
|
6
|
+
* (`onAccent`, `accentInk`); where it says nothing and the accent as it stands
|
|
7
|
+
* would fail, the one that passes is taken, so most themes never name either.
|
|
8
|
+
* Both are answered only when they differ from what the sheets already do
|
|
9
|
+
* (the page's color on the accent, the accent itself as text): an accent that
|
|
10
|
+
* passes keeps every theme's tokens exactly as they were.
|
|
11
|
+
*/
|
|
12
|
+
import type { ThemePalette } from '../../schema/theme.js';
|
|
13
|
+
type Colors = Pick<ThemePalette, 'accent' | 'ink' | 'surface'> & Partial<ThemePalette>;
|
|
14
|
+
/** The words on an accent fill when the page's color would not read on it: the ink if that does, else the better of white and black. Undefined where the default reads, or where a color is no hex to measure. */
|
|
15
|
+
export declare function deriveOnAccent(palette: Colors): string | undefined;
|
|
16
|
+
/** The accent as text and links when it would not read on the grounds a word stands on: the accent drawn toward the ink until it does, so the hue stays the brand's. Undefined where it reads already.
|
|
17
|
+
`soft`: the accent's own 14% tint is a ground too (a selected item, where an App's accent draws accentSoft as that
|
|
18
|
+
tint): on a ground darker than white, Workshop's paper, a blue that reads on the page fell to 4.4:1 on its tint. */
|
|
19
|
+
export declare function deriveAccentInk(palette: Colors, soft?: boolean): string | undefined;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const HEX = /^#[0-9a-f]{6}$/i;
|
|
2
|
+
/** Text needs this much against what it is drawn on (WCAG 1.4.3). */
|
|
3
|
+
const TEXT = 4.5;
|
|
4
|
+
function luminance(hex) {
|
|
5
|
+
const [r, g, b] = [1, 3, 5].map((start) => {
|
|
6
|
+
const value = parseInt(hex.slice(start, start + 2), 16) / 255;
|
|
7
|
+
return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;
|
|
8
|
+
});
|
|
9
|
+
return r * 0.2126 + g * 0.7152 + b * 0.0722;
|
|
10
|
+
}
|
|
11
|
+
function contrast(a, b) {
|
|
12
|
+
const x = luminance(a), y = luminance(b);
|
|
13
|
+
return (Math.max(x, y) + 0.05) / (Math.min(x, y) + 0.05);
|
|
14
|
+
}
|
|
15
|
+
function mix(a, b, weight) {
|
|
16
|
+
return `#${[1, 3, 5]
|
|
17
|
+
.map((start) => Math.round(parseInt(a.slice(start, start + 2), 16) * weight + parseInt(b.slice(start, start + 2), 16) * (1 - weight))
|
|
18
|
+
.toString(16)
|
|
19
|
+
.padStart(2, '0'))
|
|
20
|
+
.join('')}`;
|
|
21
|
+
}
|
|
22
|
+
/** The words on an accent fill when the page's color would not read on it: the ink if that does, else the better of white and black. Undefined where the default reads, or where a color is no hex to measure. */
|
|
23
|
+
export function deriveOnAccent(palette) {
|
|
24
|
+
const fill = palette.accent;
|
|
25
|
+
const given = palette.ground ?? palette.surface;
|
|
26
|
+
if (!HEX.test(fill) || !HEX.test(given) || contrast(given, fill) >= TEXT)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (HEX.test(palette.ink) && contrast(palette.ink, fill) >= TEXT)
|
|
29
|
+
return palette.ink.toLowerCase();
|
|
30
|
+
return contrast('#ffffff', fill) >= contrast('#000000', fill) ? '#ffffff' : '#000000';
|
|
31
|
+
}
|
|
32
|
+
/** The accent as text and links when it would not read on the grounds a word stands on: the accent drawn toward the ink until it does, so the hue stays the brand's. Undefined where it reads already.
|
|
33
|
+
`soft`: the accent's own 14% tint is a ground too (a selected item, where an App's accent draws accentSoft as that
|
|
34
|
+
tint): on a ground darker than white, Workshop's paper, a blue that reads on the page fell to 4.4:1 on its tint. */
|
|
35
|
+
export function deriveAccentInk(palette, soft = false) {
|
|
36
|
+
const accent = palette.accent;
|
|
37
|
+
if (!HEX.test(accent) || !HEX.test(palette.ink))
|
|
38
|
+
return undefined;
|
|
39
|
+
const pages = [palette.surface, palette.ground, palette.raised].filter((color) => Boolean(color && HEX.test(color)));
|
|
40
|
+
if (!pages.length)
|
|
41
|
+
return undefined;
|
|
42
|
+
const grounds = soft ? [...pages, ...pages.map((page) => mix(accent, page, 0.14))] : pages;
|
|
43
|
+
const reads = (color) => grounds.every((ground) => contrast(color, ground) >= TEXT);
|
|
44
|
+
if (reads(accent))
|
|
45
|
+
return undefined;
|
|
46
|
+
for (let step = 1; step <= 20; step++) {
|
|
47
|
+
const color = mix(palette.ink, accent, step / 20);
|
|
48
|
+
if (reads(color))
|
|
49
|
+
return color;
|
|
50
|
+
}
|
|
51
|
+
return palette.ink.toLowerCase();
|
|
52
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The built-in looks as authored specs: each look's palettes, faces, shape,
|
|
3
|
+
* density and recipe picks, written by purpose as an App's own theme is.
|
|
4
|
+
* themePresets.ts compiles them into the presets the server and the browser
|
|
5
|
+
* both wear; the builder and the checks are elsewhere, so they stay out of a
|
|
6
|
+
* first paint that needs only the looks.
|
|
7
|
+
*/
|
|
8
|
+
import type { ThemeSpec } from '../../schema/theme.js';
|
|
9
|
+
export declare const LOOKS: readonly ThemeSpec[];
|