@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,12 @@
|
|
|
1
|
+
type Signal = 'traces' | 'logs' | 'metrics';
|
|
2
|
+
type Env = Readonly<Record<string, string | undefined>>;
|
|
3
|
+
interface OtlpExporter {
|
|
4
|
+
/** The signals being sent. */
|
|
5
|
+
readonly signals: readonly Signal[];
|
|
6
|
+
flush(): Promise<void>;
|
|
7
|
+
shutdown(): Promise<void>;
|
|
8
|
+
readonly warnings: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/** Start exporting what the environment asks for. The caller checked `otlpRequested`. */
|
|
11
|
+
export declare function startOtlp(env: Env, version: string, service?: string): OtlpExporter;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTLP over HTTP, configured by the standard OTEL_* environment variables
|
|
3
|
+
* and nothing else — so a Collector, Datadog's Agent and Dynatrace all work
|
|
4
|
+
* with what their own documentation already tells an operator to set.
|
|
5
|
+
*
|
|
6
|
+
* Read (per the OpenTelemetry SDK environment specification):
|
|
7
|
+
* OTEL_SDK_DISABLED `true` turns everything off
|
|
8
|
+
* OTEL_EXPORTER_OTLP_ENDPOINT base URL; /v1/traces, /v1/logs, /v1/metrics appended
|
|
9
|
+
* OTEL_EXPORTER_OTLP_{TRACES,LOGS,METRICS}_ENDPOINT a signal's full URL, used as given
|
|
10
|
+
* OTEL_EXPORTER_OTLP[_{SIGNAL}]_HEADERS `key=value,…`, values percent-decoded
|
|
11
|
+
* OTEL_EXPORTER_OTLP[_{SIGNAL}]_PROTOCOL `http/protobuf` (default) or `http/json`
|
|
12
|
+
* OTEL_EXPORTER_OTLP[_{SIGNAL}]_TIMEOUT milliseconds, default 10000
|
|
13
|
+
* OTEL_EXPORTER_OTLP[_{SIGNAL}]_COMPRESSION `gzip` or `none`
|
|
14
|
+
* OTEL_{TRACES,LOGS,METRICS}_EXPORTER `otlp` (default when an endpoint is set) or `none`
|
|
15
|
+
* OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES
|
|
16
|
+
* OTEL_TRACES_SAMPLER[_ARG] always_on, always_off, traceidratio, parentbased_*
|
|
17
|
+
* OTEL_BSP_SCHEDULE_DELAY, OTEL_BSP_MAX_QUEUE_SIZE, OTEL_BSP_MAX_EXPORT_BATCH_SIZE
|
|
18
|
+
* OTEL_BLRP_SCHEDULE_DELAY, OTEL_METRIC_EXPORT_INTERVAL
|
|
19
|
+
*
|
|
20
|
+
* gRPC is not spoken: `grpc` is answered with one line on stderr saying to
|
|
21
|
+
* use the HTTP port, and HTTP/protobuf is sent. Every exporter that matters
|
|
22
|
+
* here takes OTLP/HTTP.
|
|
23
|
+
*
|
|
24
|
+
* Nothing waits on an export. A full queue drops the newest and counts it; a
|
|
25
|
+
* failed POST is retried once on the next interval and then dropped. The
|
|
26
|
+
* exporter never logs through the telemetry it exports.
|
|
27
|
+
*/
|
|
28
|
+
import { request as httpRequest } from 'node:http';
|
|
29
|
+
import { request as httpsRequest } from 'node:https';
|
|
30
|
+
import { gzipSync } from 'node:zlib';
|
|
31
|
+
import { hostname } from 'node:os';
|
|
32
|
+
import { addSink, setSampler } from './trace.js';
|
|
33
|
+
import { enableMetrics, snapshotMetrics, metrics } from './metrics.js';
|
|
34
|
+
import { logsJson, logsProto, metricsJson, metricsProto, tracesJson, tracesProto } from './otlpEncode.js';
|
|
35
|
+
const SIGNALS = ['traces', 'logs', 'metrics'];
|
|
36
|
+
const upper = (signal) => signal.toUpperCase();
|
|
37
|
+
const int = (value, fallback, min = 0) => {
|
|
38
|
+
const n = value === undefined ? NaN : Number(value);
|
|
39
|
+
return Number.isFinite(n) && n >= min ? Math.floor(n) : fallback;
|
|
40
|
+
};
|
|
41
|
+
/** `key=value,key2=value2`, each part percent-decoded, per the spec's W3C Baggage-like format. */
|
|
42
|
+
function parseKeyValues(text) {
|
|
43
|
+
const out = {};
|
|
44
|
+
for (const part of (text ?? '').split(',')) {
|
|
45
|
+
const at = part.indexOf('=');
|
|
46
|
+
if (at <= 0)
|
|
47
|
+
continue;
|
|
48
|
+
try {
|
|
49
|
+
out[decodeURIComponent(part.slice(0, at).trim())] = decodeURIComponent(part.slice(at + 1).trim());
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
/* a malformed pair is skipped */
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
function samplerOf(env, warnings) {
|
|
58
|
+
const name = (env.OTEL_TRACES_SAMPLER ?? 'parentbased_always_on').trim().toLowerCase();
|
|
59
|
+
const ratio = Math.min(1, Math.max(0, Number(env.OTEL_TRACES_SAMPLER_ARG ?? '1')));
|
|
60
|
+
// A parent's decision is honoured in trace.ts (`parentbased_` is how every span below a root samples);
|
|
61
|
+
// this decides roots.
|
|
62
|
+
switch (name.replace(/^parentbased_/, '')) {
|
|
63
|
+
case 'always_on':
|
|
64
|
+
return () => true;
|
|
65
|
+
case 'always_off':
|
|
66
|
+
return () => false;
|
|
67
|
+
case 'traceidratio': {
|
|
68
|
+
const bound = Number.isFinite(ratio) ? ratio : 1;
|
|
69
|
+
// The spec's rule: the trace id's low 8 bytes, compared with ratio × 2^64.
|
|
70
|
+
return (traceId) => bound >= 1 || (bound > 0 && BigInt(`0x${traceId.slice(16)}`) < BigInt(Math.floor(bound * 2 ** 53)) << 11n);
|
|
71
|
+
}
|
|
72
|
+
default:
|
|
73
|
+
warnings.push(`OTEL_TRACES_SAMPLER=${name} is not one that is known; sampling every trace.`);
|
|
74
|
+
return () => true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function otlpConfig(env, version, service) {
|
|
78
|
+
const warnings = [];
|
|
79
|
+
const signals = {};
|
|
80
|
+
for (const signal of SIGNALS) {
|
|
81
|
+
const S = upper(signal);
|
|
82
|
+
const exporters = env[`OTEL_${S}_EXPORTER`]
|
|
83
|
+
?.split(',')
|
|
84
|
+
.map((name) => name.trim().toLowerCase())
|
|
85
|
+
.filter(Boolean);
|
|
86
|
+
if (exporters?.length && !exporters.includes('otlp'))
|
|
87
|
+
continue;
|
|
88
|
+
const own = env[`OTEL_EXPORTER_OTLP_${S}_ENDPOINT`]?.trim();
|
|
89
|
+
const base = env.OTEL_EXPORTER_OTLP_ENDPOINT?.trim();
|
|
90
|
+
if (!own && !base && !exporters?.includes('otlp'))
|
|
91
|
+
continue;
|
|
92
|
+
let url;
|
|
93
|
+
try {
|
|
94
|
+
url = own ? new URL(own) : new URL(`${(base || 'http://localhost:4318').replace(/\/+$/, '')}/v1/${signal}`);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
warnings.push(`The OTLP ${signal} endpoint is not a URL; ${signal} are not exported.`);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const protocol = (env[`OTEL_EXPORTER_OTLP_${S}_PROTOCOL`] ?? env.OTEL_EXPORTER_OTLP_PROTOCOL ?? 'http/protobuf').trim().toLowerCase();
|
|
101
|
+
if (protocol === 'grpc')
|
|
102
|
+
warnings.push(`OTLP over gRPC is not spoken; sending ${signal} as OTLP/HTTP protobuf to ${url.origin}. Point the endpoint at the collector's HTTP port (4318).`);
|
|
103
|
+
signals[signal] = {
|
|
104
|
+
url,
|
|
105
|
+
headers: { ...parseKeyValues(env.OTEL_EXPORTER_OTLP_HEADERS), ...parseKeyValues(env[`OTEL_EXPORTER_OTLP_${S}_HEADERS`]) },
|
|
106
|
+
json: protocol === 'http/json',
|
|
107
|
+
timeoutMs: int(env[`OTEL_EXPORTER_OTLP_${S}_TIMEOUT`] ?? env.OTEL_EXPORTER_OTLP_TIMEOUT, 10_000, 1),
|
|
108
|
+
gzip: (env[`OTEL_EXPORTER_OTLP_${S}_COMPRESSION`] ?? env.OTEL_EXPORTER_OTLP_COMPRESSION ?? 'none').trim().toLowerCase() === 'gzip',
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const attributes = {
|
|
112
|
+
'service.name': service,
|
|
113
|
+
'service.version': version,
|
|
114
|
+
'telemetry.sdk.name': service,
|
|
115
|
+
'telemetry.sdk.language': 'nodejs',
|
|
116
|
+
'telemetry.sdk.version': version,
|
|
117
|
+
'process.runtime.name': 'nodejs',
|
|
118
|
+
'process.runtime.version': process.versions.node,
|
|
119
|
+
'process.pid': process.pid,
|
|
120
|
+
'host.name': hostname(),
|
|
121
|
+
...parseKeyValues(env.OTEL_RESOURCE_ATTRIBUTES),
|
|
122
|
+
...(env.OTEL_SERVICE_NAME?.trim() ? { 'service.name': env.OTEL_SERVICE_NAME.trim() } : {}),
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
resource: { attributes },
|
|
126
|
+
signals,
|
|
127
|
+
sampler: samplerOf(env, warnings),
|
|
128
|
+
warnings,
|
|
129
|
+
scheduleMs: int(env.OTEL_BSP_SCHEDULE_DELAY, 5000, 1),
|
|
130
|
+
maxQueue: int(env.OTEL_BSP_MAX_QUEUE_SIZE, 2048, 1),
|
|
131
|
+
maxBatch: int(env.OTEL_BSP_MAX_EXPORT_BATCH_SIZE, 512, 1),
|
|
132
|
+
logScheduleMs: int(env.OTEL_BLRP_SCHEDULE_DELAY, 1000, 1),
|
|
133
|
+
metricIntervalMs: int(env.OTEL_METRIC_EXPORT_INTERVAL, 60_000, 1),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function post(config, body) {
|
|
137
|
+
const raw = typeof body === 'string' ? Buffer.from(body, 'utf8') : body;
|
|
138
|
+
const payload = config.gzip ? gzipSync(raw) : raw;
|
|
139
|
+
const headers = {
|
|
140
|
+
...config.headers,
|
|
141
|
+
'content-type': config.json ? 'application/json' : 'application/x-protobuf',
|
|
142
|
+
'content-length': String(payload.length),
|
|
143
|
+
...(config.gzip ? { 'content-encoding': 'gzip' } : {}),
|
|
144
|
+
};
|
|
145
|
+
return new Promise((resolve) => {
|
|
146
|
+
const open = config.url.protocol === 'https:' ? httpsRequest : httpRequest;
|
|
147
|
+
const outgoing = open(config.url, { method: 'POST', headers, timeout: config.timeoutMs }, (response) => {
|
|
148
|
+
response.resume();
|
|
149
|
+
// 2xx is accepted; a 4xx other than throttling will not improve on a retry.
|
|
150
|
+
const status = response.statusCode ?? 0;
|
|
151
|
+
resolve((status >= 200 && status < 300) || (status >= 400 && status < 500 && status !== 429));
|
|
152
|
+
});
|
|
153
|
+
outgoing.on('timeout', () => outgoing.destroy(new Error('timeout')));
|
|
154
|
+
outgoing.on('error', () => resolve(false));
|
|
155
|
+
outgoing.end(payload);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/** One signal's queue: batched, bounded, one POST at a time. */
|
|
159
|
+
class Queue {
|
|
160
|
+
target;
|
|
161
|
+
encode;
|
|
162
|
+
maxQueue;
|
|
163
|
+
maxBatch;
|
|
164
|
+
items = [];
|
|
165
|
+
retry;
|
|
166
|
+
sending;
|
|
167
|
+
timer;
|
|
168
|
+
dropped = 0;
|
|
169
|
+
constructor(target, encode, maxQueue, maxBatch, scheduleMs) {
|
|
170
|
+
this.target = target;
|
|
171
|
+
this.encode = encode;
|
|
172
|
+
this.maxQueue = maxQueue;
|
|
173
|
+
this.maxBatch = maxBatch;
|
|
174
|
+
this.timer = setInterval(() => {
|
|
175
|
+
void this.flush();
|
|
176
|
+
}, scheduleMs);
|
|
177
|
+
this.timer.unref();
|
|
178
|
+
}
|
|
179
|
+
add(item) {
|
|
180
|
+
if (this.items.length >= this.maxQueue) {
|
|
181
|
+
this.dropped++;
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
this.items.push(item);
|
|
185
|
+
if (this.items.length >= this.maxBatch)
|
|
186
|
+
void this.flush();
|
|
187
|
+
}
|
|
188
|
+
flush() {
|
|
189
|
+
if (this.sending)
|
|
190
|
+
return this.sending.then(() => (this.items.length || this.retry ? this.flush() : undefined));
|
|
191
|
+
if (!this.items.length && !this.retry)
|
|
192
|
+
return Promise.resolve();
|
|
193
|
+
const batch = this.retry ?? this.items.splice(0, this.maxBatch);
|
|
194
|
+
const wasRetry = Boolean(this.retry);
|
|
195
|
+
this.retry = undefined;
|
|
196
|
+
this.sending = post(this.target, this.encode(batch, this.target.json))
|
|
197
|
+
.then((ok) => {
|
|
198
|
+
if (!ok) {
|
|
199
|
+
if (wasRetry)
|
|
200
|
+
this.dropped += batch.length;
|
|
201
|
+
else
|
|
202
|
+
this.retry = batch;
|
|
203
|
+
}
|
|
204
|
+
}, () => {
|
|
205
|
+
this.dropped += batch.length;
|
|
206
|
+
})
|
|
207
|
+
.finally(() => {
|
|
208
|
+
this.sending = undefined;
|
|
209
|
+
});
|
|
210
|
+
return this.sending.then(() => (this.items.length ? this.flush() : undefined));
|
|
211
|
+
}
|
|
212
|
+
stop() {
|
|
213
|
+
clearInterval(this.timer);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/** Start exporting what the environment asks for. The caller checked `otlpRequested`. */
|
|
217
|
+
export function startOtlp(env, version, service = 'mistri') {
|
|
218
|
+
const config = otlpConfig(env, version, service);
|
|
219
|
+
const scope = { name: service, version };
|
|
220
|
+
const { traces, logs, metrics: metricTarget } = config.signals;
|
|
221
|
+
setSampler(config.sampler);
|
|
222
|
+
const spanQueue = traces &&
|
|
223
|
+
new Queue(traces, (items, json) => (json ? tracesJson(config.resource, scope, items) : tracesProto(config.resource, scope, items)), config.maxQueue, config.maxBatch, config.scheduleMs);
|
|
224
|
+
const logQueue = logs &&
|
|
225
|
+
new Queue(logs, (items, json) => (json ? logsJson(config.resource, scope, items) : logsProto(config.resource, scope, items)), config.maxQueue, config.maxBatch, config.logScheduleMs);
|
|
226
|
+
let metricTimer;
|
|
227
|
+
const sendMetrics = async () => {
|
|
228
|
+
if (!metricTarget)
|
|
229
|
+
return;
|
|
230
|
+
const snapshot = snapshotMetrics();
|
|
231
|
+
if (!snapshot.length)
|
|
232
|
+
return;
|
|
233
|
+
await post(metricTarget, metricTarget.json ? metricsJson(config.resource, scope, snapshot) : metricsProto(config.resource, scope, snapshot));
|
|
234
|
+
};
|
|
235
|
+
if (metricTarget) {
|
|
236
|
+
enableMetrics();
|
|
237
|
+
metricTimer = setInterval(() => {
|
|
238
|
+
void sendMetrics();
|
|
239
|
+
}, config.metricIntervalMs);
|
|
240
|
+
metricTimer.unref();
|
|
241
|
+
}
|
|
242
|
+
const remove = addSink({
|
|
243
|
+
onEnd(span) {
|
|
244
|
+
recordSpanMetrics(span);
|
|
245
|
+
// Only the travelling parts are read here: never `detail`.
|
|
246
|
+
if (span.sampled)
|
|
247
|
+
spanQueue?.add(span);
|
|
248
|
+
},
|
|
249
|
+
onLog(record) {
|
|
250
|
+
// A line only the local observer may keep (an App's own console) never reaches this sink; see trace.ts.
|
|
251
|
+
if (record.local)
|
|
252
|
+
return;
|
|
253
|
+
logQueue?.add({
|
|
254
|
+
time: record.time,
|
|
255
|
+
level: record.level,
|
|
256
|
+
source: record.source,
|
|
257
|
+
message: record.message,
|
|
258
|
+
attributes: record.attributes,
|
|
259
|
+
...(record.traceId ? { traceId: record.traceId, spanId: record.spanId, sampled: record.sampled } : {}),
|
|
260
|
+
});
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
const flush = async () => {
|
|
264
|
+
await Promise.all([spanQueue?.flush(), logQueue?.flush(), sendMetrics()]);
|
|
265
|
+
};
|
|
266
|
+
return {
|
|
267
|
+
warnings: config.warnings,
|
|
268
|
+
signals: SIGNALS.filter((signal) => config.signals[signal]),
|
|
269
|
+
flush,
|
|
270
|
+
async shutdown() {
|
|
271
|
+
remove();
|
|
272
|
+
clearInterval(metricTimer);
|
|
273
|
+
spanQueue?.stop();
|
|
274
|
+
logQueue?.stop();
|
|
275
|
+
await flush();
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/** The metrics a span implies, recorded whether or not the span is sampled. */
|
|
280
|
+
function recordSpanMetrics(span) {
|
|
281
|
+
const seconds = ((span.endTime ?? span.startTime) - span.startTime) / 1000;
|
|
282
|
+
const a = span.attributes;
|
|
283
|
+
if (span.kind === 'server' && a['http.request.method']) {
|
|
284
|
+
metrics.httpDuration.record(seconds, {
|
|
285
|
+
'http.request.method': a['http.request.method'],
|
|
286
|
+
'http.route': a['http.route'],
|
|
287
|
+
'http.response.status_code': a['http.response.status_code'],
|
|
288
|
+
'error.type': a['error.type'],
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
else if (a['db.system.name']) {
|
|
292
|
+
metrics.dbDuration.record(seconds, {
|
|
293
|
+
'db.system.name': a['db.system.name'],
|
|
294
|
+
'db.operation.name': a['db.operation.name'],
|
|
295
|
+
'db.collection.name': a['db.collection.name'],
|
|
296
|
+
'error.type': a['error.type'],
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
else if (a['mistri.command.id']) {
|
|
300
|
+
const labels = {
|
|
301
|
+
'mistri.command.id': a['mistri.command.id'],
|
|
302
|
+
'mistri.command.outcome': a['mistri.command.outcome'],
|
|
303
|
+
'mistri.refusal.code': a['mistri.refusal.code'],
|
|
304
|
+
};
|
|
305
|
+
metrics.commands.record(1, labels);
|
|
306
|
+
metrics.commandDuration.record(seconds, labels);
|
|
307
|
+
}
|
|
308
|
+
else if (a['mistri.job.id']) {
|
|
309
|
+
metrics.jobAttempts.record(1, { 'mistri.job.id': a['mistri.job.id'], 'mistri.job.outcome': a['mistri.job.outcome'] });
|
|
310
|
+
if (typeof a['mistri.job.lag_ms'] === 'number')
|
|
311
|
+
metrics.jobLag.record(a['mistri.job.lag_ms'] / 1000, { 'mistri.job.id': a['mistri.job.id'] });
|
|
312
|
+
}
|
|
313
|
+
else if (a['mistri.outbound.kind']) {
|
|
314
|
+
metrics.outbound.record(1, {
|
|
315
|
+
'mistri.outbound.kind': a['mistri.outbound.kind'],
|
|
316
|
+
'error.type': a['error.type'],
|
|
317
|
+
'http.response.status_code': a['http.response.status_code'],
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OTLP's three export requests — traces, logs, metrics — in both encodings
|
|
3
|
+
* OTLP/HTTP speaks: protobuf (the default, and the only one Dynatrace's API
|
|
4
|
+
* takes) and JSON (what a person can read, and what Datadog's Agent and the
|
|
5
|
+
* Collector take as well).
|
|
6
|
+
*
|
|
7
|
+
* Hand-written, like the MCP loop (server/mcp/protocol.ts), and for the same
|
|
8
|
+
* reason: the messages used are a dozen, stable since OTLP 1.0, and the SDK
|
|
9
|
+
* that would encode them is larger than this file and would ride into every
|
|
10
|
+
* `npx tablewalk` that never exports anything. Field numbers are the
|
|
11
|
+
* opentelemetry-proto ones, cited beside each message.
|
|
12
|
+
*/
|
|
13
|
+
import type { AttributeValue, LogRecord, SpanRecord } from './trace.js';
|
|
14
|
+
export interface Resource {
|
|
15
|
+
readonly attributes: Readonly<Record<string, AttributeValue>>;
|
|
16
|
+
}
|
|
17
|
+
export interface Scope {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly version: string;
|
|
20
|
+
}
|
|
21
|
+
export interface MetricPoint {
|
|
22
|
+
readonly attributes: Readonly<Record<string, AttributeValue>>;
|
|
23
|
+
readonly value?: number;
|
|
24
|
+
readonly count?: number;
|
|
25
|
+
readonly sum?: number;
|
|
26
|
+
readonly bounds?: readonly number[];
|
|
27
|
+
readonly buckets?: readonly number[];
|
|
28
|
+
readonly min?: number;
|
|
29
|
+
readonly max?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface Metric {
|
|
32
|
+
readonly name: string;
|
|
33
|
+
readonly description: string;
|
|
34
|
+
readonly unit: string;
|
|
35
|
+
readonly kind: 'counter' | 'histogram' | 'gauge' | 'updown';
|
|
36
|
+
readonly points: readonly MetricPoint[];
|
|
37
|
+
readonly start: number;
|
|
38
|
+
readonly time: number;
|
|
39
|
+
}
|
|
40
|
+
/** ExportTraceServiceRequest: resource_spans 1 → ResourceSpans { resource 1, scope_spans 2 → ScopeSpans { scope 1, spans 2 } }. */
|
|
41
|
+
export declare function tracesProto(resource: Resource, scope: Scope, spans: readonly SpanRecord[]): Buffer;
|
|
42
|
+
/** ExportLogsServiceRequest: resource_logs 1 → { resource 1, scope_logs 2 → { scope 1, log_records 2 } }. */
|
|
43
|
+
export declare function logsProto(resource: Resource, scope: Scope, logs: readonly LogRecord[]): Buffer;
|
|
44
|
+
/** ExportMetricsServiceRequest: resource_metrics 1 → { resource 1, scope_metrics 2 → { scope 1, metrics 2 } }. */
|
|
45
|
+
export declare function metricsProto(resource: Resource, scope: Scope, metrics: readonly Metric[]): Buffer;
|
|
46
|
+
export declare function tracesJson(resource: Resource, scope: Scope, spans: readonly SpanRecord[]): string;
|
|
47
|
+
export declare function logsJson(resource: Resource, scope: Scope, logs: readonly LogRecord[]): string;
|
|
48
|
+
export declare function metricsJson(resource: Resource, scope: Scope, metrics: readonly Metric[]): string;
|