@harperfast/harper 5.2.10 → 5.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/mcpTools.ts +1 -1
- package/agent/session.ts +25 -14
- package/bin/cliOperations.ts +46 -9
- package/bin/copyDb.ts +282 -59
- package/bin/deploySetup.ts +16 -5
- package/bin/harper.ts +1 -1
- package/bin/help.ts +4 -1
- package/bin/lite.ts +4 -1
- package/bin/restart.ts +59 -3
- package/bin/run.ts +6 -11
- package/bin/upgrade.js +7 -3
- package/bin/workloadIdentity.ts +119 -0
- package/components/Application.ts +2414 -242
- package/components/ApplicationScope.ts +8 -0
- package/components/EntryHandler.ts +59 -39
- package/components/OptionsWatcher.ts +150 -74
- package/components/RuntimeModuleTracker.ts +38 -7
- package/components/Scope.ts +37 -15
- package/components/awaitRestart.ts +84 -0
- package/components/componentLoader.ts +340 -30
- package/components/componentPreparationLock.ts +16 -5
- package/components/mcp/adapters/harperHttp.ts +4 -0
- package/components/mcp/listChanged.ts +4 -0
- package/components/mcp/toolRegistry.ts +2 -0
- package/components/mcp/tools/operations.ts +9 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
- package/components/operations.js +270 -78
- package/components/operationsValidation.js +49 -1
- package/components/status/ComponentStatusRegistry.ts +59 -0
- package/config/RootConfigWatcher.ts +80 -34
- package/config/configUtils.ts +291 -34
- package/config/harperConfigEnvVars.ts +170 -27
- package/config-root.schema.json +29 -0
- package/dataLayer/blobBackup.ts +160 -50
- package/dataLayer/delete.ts +6 -1
- package/dataLayer/harperBridge/ResourceBridge.ts +52 -8
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dataLayer/hdbInfoController.ts +34 -1
- package/dataLayer/insert.ts +44 -1
- package/dataLayer/rocksdbBackup.ts +53 -10
- package/dataLayer/schema.ts +11 -1
- package/dataLayer/schemaDescribe.ts +8 -1
- package/dist/agent/mcpTools.js +1 -1
- package/dist/agent/mcpTools.js.map +1 -1
- package/dist/agent/session.d.ts +22 -0
- package/dist/agent/session.js +26 -15
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cliOperations.js +48 -9
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.d.ts +12 -1
- package/dist/bin/copyDb.js +248 -60
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deploySetup.d.ts +2 -0
- package/dist/bin/deploySetup.js +11 -3
- package/dist/bin/deploySetup.js.map +1 -1
- package/dist/bin/harper.js +1 -1
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.js +4 -1
- package/dist/bin/help.js.map +1 -1
- package/dist/bin/lite.js +4 -1
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/restart.js +54 -5
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.js +4 -10
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/upgrade.js +4 -3
- package/dist/bin/upgrade.js.map +1 -1
- package/dist/bin/workloadIdentity.d.ts +18 -0
- package/dist/bin/workloadIdentity.js +100 -0
- package/dist/bin/workloadIdentity.js.map +1 -0
- package/dist/components/Application.d.ts +139 -16
- package/dist/components/Application.js +2215 -267
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +8 -0
- package/dist/components/ApplicationScope.js +7 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.js +26 -10
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +1 -0
- package/dist/components/OptionsWatcher.js +141 -74
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.js +40 -6
- package/dist/components/RuntimeModuleTracker.js.map +1 -1
- package/dist/components/Scope.js +38 -13
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/awaitRestart.d.ts +33 -0
- package/dist/components/awaitRestart.js +61 -0
- package/dist/components/awaitRestart.js.map +1 -0
- package/dist/components/componentLoader.d.ts +38 -1
- package/dist/components/componentLoader.js +279 -22
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/componentPreparationLock.d.ts +5 -0
- package/dist/components/componentPreparationLock.js +14 -6
- package/dist/components/componentPreparationLock.js.map +1 -1
- package/dist/components/mcp/adapters/harperHttp.js +4 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
- package/dist/components/mcp/listChanged.js +5 -0
- package/dist/components/mcp/listChanged.js.map +1 -1
- package/dist/components/mcp/toolRegistry.d.ts +1 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -1
- package/dist/components/mcp/tools/operations.d.ts +5 -0
- package/dist/components/mcp/tools/operations.js +9 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
- package/dist/components/operations.js +231 -77
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +49 -1
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
- package/dist/components/status/ComponentStatusRegistry.js +63 -0
- package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
- package/dist/config/RootConfigWatcher.d.ts +7 -1
- package/dist/config/RootConfigWatcher.js +64 -27
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configUtils.d.ts +9 -1
- package/dist/config/configUtils.js +254 -33
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.d.ts +16 -0
- package/dist/config/harperConfigEnvVars.js +162 -25
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/blobBackup.d.ts +49 -20
- package/dist/dataLayer/blobBackup.js +139 -50
- package/dist/dataLayer/blobBackup.js.map +1 -1
- package/dist/dataLayer/delete.js +1 -1
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +51 -10
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.d.ts +10 -0
- package/dist/dataLayer/hdbInfoController.js +30 -1
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +9 -1
- package/dist/dataLayer/insert.js +30 -0
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
- package/dist/dataLayer/rocksdbBackup.js +45 -8
- package/dist/dataLayer/rocksdbBackup.js.map +1 -1
- package/dist/dataLayer/schema.js +8 -0
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +8 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +52 -0
- package/dist/resources/DatabaseTransaction.d.ts +55 -3
- package/dist/resources/DatabaseTransaction.js +460 -134
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/LMDBTransaction.js +22 -4
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
- package/dist/resources/PrimaryRocksDatabase.js +30 -2
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +20 -0
- package/dist/resources/RecordEncoder.js +94 -9
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +2 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.js +20 -11
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +20 -1
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/RocksIndexStore.d.ts +6 -1
- package/dist/resources/RocksIndexStore.js +24 -10
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +14 -1
- package/dist/resources/RocksTransactionLogStore.js +57 -17
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +112 -8
- package/dist/resources/Table.js +1071 -197
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.d.ts +11 -2
- package/dist/resources/auditStore.js +183 -18
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +129 -9
- package/dist/resources/blob.js +992 -114
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/branchDatabase.d.ts +48 -0
- package/dist/resources/branchDatabase.js +892 -0
- package/dist/resources/branchDatabase.js.map +1 -0
- package/dist/resources/crdt.js +50 -12
- package/dist/resources/crdt.js.map +1 -1
- package/dist/resources/databases.d.ts +150 -9
- package/dist/resources/databases.js +1247 -525
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/defineTable.d.ts +10 -2
- package/dist/resources/defineTable.js +9 -1
- package/dist/resources/defineTable.js.map +1 -1
- package/dist/resources/graphql.d.ts +1 -1
- package/dist/resources/graphql.js +50 -15
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +1 -0
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +6 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/longLivedTransactions.d.ts +71 -0
- package/dist/resources/longLivedTransactions.js +358 -0
- package/dist/resources/longLivedTransactions.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +26 -0
- package/dist/resources/models/backendRegistry.js +60 -2
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/bootstrap.d.ts +33 -1
- package/dist/resources/models/bootstrap.js +416 -31
- package/dist/resources/models/bootstrap.js.map +1 -1
- package/dist/resources/recordLock.d.ts +80 -0
- package/dist/resources/recordLock.js +184 -0
- package/dist/resources/recordLock.js.map +1 -0
- package/dist/resources/replayLogs.d.ts +14 -1
- package/dist/resources/replayLogs.js +152 -24
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +94 -7
- package/dist/resources/replayLogsGuards.js +111 -7
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/resources/search.js +158 -32
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js +2 -2
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.js +61 -30
- package/dist/security/auth.js.map +1 -1
- package/dist/security/authn/oidc/claims.d.ts +22 -0
- package/dist/security/authn/oidc/claims.js +71 -0
- package/dist/security/authn/oidc/claims.js.map +1 -0
- package/dist/security/authn/oidc/identityToken.d.ts +27 -0
- package/dist/security/authn/oidc/identityToken.js +111 -0
- package/dist/security/authn/oidc/identityToken.js.map +1 -0
- package/dist/security/authn/oidc/jwks.d.ts +25 -0
- package/dist/security/authn/oidc/jwks.js +261 -0
- package/dist/security/authn/oidc/jwks.js.map +1 -0
- package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
- package/dist/security/authn/oidc/providers/generic.js +34 -0
- package/dist/security/authn/oidc/providers/generic.js.map +1 -0
- package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
- package/dist/security/authn/oidc/providers/githubActions.js +129 -0
- package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
- package/dist/security/authn/oidc/providers/index.d.ts +37 -0
- package/dist/security/authn/oidc/providers/index.js +24 -0
- package/dist/security/authn/oidc/providers/index.js.map +1 -0
- package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
- package/dist/security/authn/oidc/tokenExchange.js +306 -0
- package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
- package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
- package/dist/security/authn/oidc/types.d.ts +38 -0
- package/dist/security/authn/oidc/types.js +6 -0
- package/dist/security/authn/oidc/types.js.map +1 -0
- package/dist/security/certificateVerification/index.js +40 -11
- package/dist/security/certificateVerification/index.js.map +1 -1
- package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
- package/dist/security/certificateVerification/trustedIssuers.js +79 -0
- package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
- package/dist/security/certificateVerification/types.d.ts +1 -0
- package/dist/security/credentialProvenance.d.ts +35 -0
- package/dist/security/credentialProvenance.js +51 -0
- package/dist/security/credentialProvenance.js.map +1 -0
- package/dist/security/credentialRejection.d.ts +4 -0
- package/dist/security/credentialRejection.js +24 -0
- package/dist/security/credentialRejection.js.map +1 -0
- package/dist/security/deferredAuthentication.d.ts +36 -0
- package/dist/security/deferredAuthentication.js +70 -0
- package/dist/security/deferredAuthentication.js.map +1 -0
- package/dist/security/impersonation.d.ts +21 -0
- package/dist/security/impersonation.js +108 -9
- package/dist/security/impersonation.js.map +1 -1
- package/dist/security/jsLoader.d.ts +6 -0
- package/dist/security/jsLoader.js +75 -15
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.js +301 -71
- package/dist/security/keys.js.map +1 -1
- package/dist/security/operationScope.d.ts +21 -0
- package/dist/security/operationScope.js +36 -0
- package/dist/security/operationScope.js.map +1 -0
- package/dist/security/permissionsTranslator.js +21 -0
- package/dist/security/permissionsTranslator.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +19 -1
- package/dist/security/tokenAuthentication.js +191 -10
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +4 -3
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
- package/dist/server/DurableSubscriptionsSession.js +67 -10
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.js +73 -0
- package/dist/server/REST.js.map +1 -1
- package/dist/server/graphqlQuerying.js +4 -0
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +11 -0
- package/dist/server/http.js +88 -15
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +8 -1
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +6 -2
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobs.js +4 -1
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/liveSubscriptionAuth.d.ts +26 -4
- package/dist/server/liveSubscriptionAuth.js +105 -39
- package/dist/server/liveSubscriptionAuth.js.map +1 -1
- package/dist/server/loadRootComponents.js +49 -10
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/mqtt.d.ts +2 -0
- package/dist/server/mqtt.js +165 -30
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.d.ts +2 -0
- package/dist/server/nodeName.js +107 -23
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +25 -0
- package/dist/server/serverHelpers/Headers.js +139 -1
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +9 -0
- package/dist/server/serverHelpers/contentTypes.js +32 -25
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
- package/dist/server/serverHelpers/deployValidationState.js +9 -19
- package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
- package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
- package/dist/server/serverHelpers/registeredOperations.js +74 -21
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
- package/dist/server/serverHelpers/requestSanitization.js +20 -0
- package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.js +6 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
- package/dist/server/serverHelpers/serverUtilities.js +90 -20
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
- package/dist/server/serverHelpers/uwsServer.js +19 -1
- package/dist/server/serverHelpers/uwsServer.js.map +1 -1
- package/dist/server/static.js +24 -28
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +5 -0
- package/dist/server/storageReclamation.js +16 -0
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/itc.d.ts +7 -2
- package/dist/server/threads/itc.js +5 -1
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +26 -4
- package/dist/server/threads/manageThreads.js +517 -72
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.js +89 -26
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadHeapMemory.d.ts +2 -0
- package/dist/server/threads/threadHeapMemory.js +31 -0
- package/dist/server/threads/threadHeapMemory.js.map +1 -0
- package/dist/server/threads/threadServer.js +46 -15
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/config.d.ts +1 -3
- package/dist/sqlEngine/config.js +19 -16
- package/dist/sqlEngine/config.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +1 -1
- package/dist/sqlTranslator/index.js +30 -7
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/directives/5-3-0.d.ts +7 -0
- package/dist/upgrade/directives/5-3-0.js +148 -0
- package/dist/upgrade/directives/5-3-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.js +2 -1
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.js +2 -1
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/common_utils.d.ts +16 -0
- package/dist/utility/common_utils.js +32 -6
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/componentNames.d.ts +8 -0
- package/dist/utility/componentNames.js +12 -1
- package/dist/utility/componentNames.js.map +1 -1
- package/dist/utility/environment/environmentManager.js +3 -6
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +1 -0
- package/dist/utility/environment/systemInformation.js +1 -0
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +2 -0
- package/dist/utility/errors/commonErrors.js +2 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +17 -0
- package/dist/utility/errors/hdbError.js +30 -1
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +16 -0
- package/dist/utility/hdbTerms.js +18 -2
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +2 -0
- package/dist/utility/logging/harper_logger.js +91 -14
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logRotator.js +76 -49
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/nodeIdentity.d.ts +9 -0
- package/dist/utility/nodeIdentity.js +58 -0
- package/dist/utility/nodeIdentity.js.map +1 -0
- package/dist/utility/npmUtilities.js +9 -7
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operationPermissions.d.ts +3 -1
- package/dist/utility/operationPermissions.js +16 -1
- package/dist/utility/operationPermissions.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +10 -7
- package/dist/utility/operation_authorization.js +212 -41
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/watchPath.d.ts +29 -0
- package/dist/utility/watchPath.js +68 -0
- package/dist/utility/watchPath.js.map +1 -0
- package/dist/utility/watcherFallback.d.ts +86 -0
- package/dist/utility/watcherFallback.js +278 -1
- package/dist/utility/watcherFallback.js.map +1 -1
- package/dist/validation/configValidator.d.ts +12 -0
- package/dist/validation/configValidator.js +199 -72
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/installValidator.js +12 -0
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +11 -0
- package/dist/validation/validationWrapper.js +16 -3
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +2 -0
- package/json/systemSchema.json +52 -0
- package/npm-shrinkwrap.json +235 -233
- package/package.json +8 -7
- package/resources/DESIGN.md +114 -52
- package/resources/DatabaseTransaction.ts +522 -130
- package/resources/LMDBTransaction.ts +26 -4
- package/resources/PrimaryRocksDatabase.ts +29 -3
- package/resources/RecordEncoder.ts +103 -8
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +17 -9
- package/resources/ResourceInterface.ts +23 -0
- package/resources/RocksIndexStore.ts +30 -10
- package/resources/RocksTransactionLogStore.ts +78 -21
- package/resources/Table.ts +1107 -164
- package/resources/auditStore.ts +187 -21
- package/resources/blob.ts +1029 -110
- package/resources/branchDatabase.ts +941 -0
- package/resources/crdt.ts +76 -12
- package/resources/databases.ts +1354 -522
- package/resources/defineTable.ts +18 -2
- package/resources/graphql.ts +70 -16
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +6 -2
- package/resources/longLivedTransactions.ts +360 -0
- package/resources/models/backendRegistry.ts +84 -2
- package/resources/models/bootstrap.ts +473 -28
- package/resources/recordLock.ts +253 -0
- package/resources/replayLogs.ts +147 -26
- package/resources/replayLogsGuards.ts +171 -8
- package/resources/search.ts +154 -32
- package/resources/transactionBroadcast.ts +3 -3
- package/security/auth.ts +68 -29
- package/security/authn/oidc/claims.ts +72 -0
- package/security/authn/oidc/identityToken.ts +129 -0
- package/security/authn/oidc/jwks.ts +260 -0
- package/security/authn/oidc/providers/generic.ts +40 -0
- package/security/authn/oidc/providers/githubActions.ts +137 -0
- package/security/authn/oidc/providers/index.ts +52 -0
- package/security/authn/oidc/tokenExchange.ts +300 -0
- package/security/authn/oidc/trustPolicyOperations.ts +343 -0
- package/security/authn/oidc/types.ts +41 -0
- package/security/certificateVerification/index.ts +54 -13
- package/security/certificateVerification/trustedIssuers.ts +76 -0
- package/security/certificateVerification/types.ts +1 -0
- package/security/credentialProvenance.ts +47 -0
- package/security/credentialRejection.ts +22 -0
- package/security/deferredAuthentication.ts +71 -0
- package/security/impersonation.ts +117 -12
- package/security/jsLoader.ts +81 -18
- package/security/keys.ts +298 -72
- package/security/operationScope.ts +33 -0
- package/security/permissionsTranslator.js +23 -0
- package/security/tokenAuthentication.ts +233 -12
- package/security/user.ts +4 -3
- package/server/DESIGN.md +183 -16
- package/server/DurableSubscriptionsSession.ts +71 -11
- package/server/REST.ts +79 -1
- package/server/graphqlQuerying.ts +4 -0
- package/server/http.ts +99 -18
- package/server/itc/serverHandlers.js +8 -1
- package/server/jobs/jobProcess.ts +8 -2
- package/server/jobs/jobs.ts +4 -1
- package/server/liveSubscriptionAuth.ts +129 -46
- package/server/loadRootComponents.js +50 -8
- package/server/mqtt.ts +179 -38
- package/server/nodeName.ts +103 -21
- package/server/serverHelpers/Headers.ts +131 -0
- package/server/serverHelpers/contentTypes.ts +29 -21
- package/server/serverHelpers/deployValidationState.ts +24 -13
- package/server/serverHelpers/operationAuthorizationState.ts +34 -3
- package/server/serverHelpers/registeredOperations.ts +79 -22
- package/server/serverHelpers/requestSanitization.ts +15 -0
- package/server/serverHelpers/serverHandlers.js +6 -3
- package/server/serverHelpers/serverUtilities.ts +104 -31
- package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
- package/server/serverHelpers/uwsServer.ts +17 -2
- package/server/static.ts +23 -29
- package/server/storageReclamation.ts +13 -0
- package/server/threads/itc.js +11 -1
- package/server/threads/manageThreads.js +526 -63
- package/server/threads/socketRouter.ts +81 -26
- package/server/threads/threadHeapMemory.ts +26 -0
- package/server/threads/threadServer.js +43 -15
- package/sqlTranslator/index.ts +31 -8
- package/studio/web/assets/{Chat-Br06zdMA.js → Chat-BnCBegQz.js} +1 -1
- package/studio/web/assets/{FloatingChat-BWImX5fA.js → FloatingChat-CoDW1ySS.js} +3 -3
- package/studio/web/assets/{apiToken-DN0nmDsq.js → apiToken-Bwk5BLXW.js} +1 -1
- package/studio/web/assets/{applications-kSxVoyeU.js → applications-DHxGi7JH.js} +1 -1
- package/studio/web/assets/{cssMode-C1JeufH5.js → cssMode-s0cWI-_M.js} +1 -1
- package/studio/web/assets/{editor-qoo9CrGO.js → editor-DNcRHK54.js} +1 -1
- package/studio/web/assets/{html-Dt4IIy04.js → html-Bdssedlg.js} +1 -1
- package/studio/web/assets/{htmlMode-DXgKKr4C.js → htmlMode-CoDlJ3fw.js} +1 -1
- package/studio/web/assets/{index-6onkYFOG.js → index-D6sxmFLR.js} +5 -5
- package/studio/web/assets/{index.lazy-BrCFnpNJ.js → index.lazy-tmU5BS8s.js} +1 -1
- package/studio/web/assets/{javascript-DNCQGUBc.js → javascript-B8meVSTH.js} +1 -1
- package/studio/web/assets/{jsonMode-CR6HWruP.js → jsonMode-DpIPd35T.js} +1 -1
- package/studio/web/assets/{languageServices-BM4fI4rS.js → languageServices-C_5FMJzQ.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-DSa1ttcD.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
- package/studio/web/assets/{notifications-BHXLnh6x.js → notifications-CQf18QKb.js} +1 -1
- package/studio/web/assets/{notifications-CUmtIA6z.js → notifications-CvZivSbh.js} +1 -1
- package/studio/web/assets/{profile-8BeFSF3j.js → profile-DdOwtntb.js} +1 -1
- package/studio/web/assets/{regions-C8qR0HhD.js → regions-n69fwagr.js} +1 -1
- package/studio/web/assets/{register-B4n5i0SD.js → register-PfWTCXWB.js} +2 -2
- package/studio/web/assets/{setComponentFile-g0_B0lgX.js → setComponentFile-Bg6O7X0S.js} +1 -1
- package/studio/web/assets/{setup-B0CTj_Q5.js → setup-CUx_aUDl.js} +2 -2
- package/studio/web/assets/{status-C6Yib7-K.js → status-D7BVKqX9.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-Dgta7bVi.js → toggleHighContrast-DBSyXzMr.js} +1 -1
- package/studio/web/assets/{tsMode-CH_jHvU-.js → tsMode-BByKCjBS.js} +1 -1
- package/studio/web/assets/{typescript-Co9LCXd5.js → typescript-DDLnLpw9.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-wKC8NsC_.js → useEntityRestURL-31CHGaHk.js} +1 -1
- package/studio/web/assets/{workers-CWeLxCXA.js → workers-pR3jRY9D.js} +1 -1
- package/studio/web/assets/{xml-BadC-0Rk.js → xml-2iRnMhQO.js} +1 -1
- package/studio/web/assets/{yaml-BiUfxPbC.js → yaml-Bf92gJpd.js} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/directives/5-3-0.ts +132 -0
- package/upgrade/directives/directivesController.ts +2 -1
- package/utility/OperationFunctionCaller.ts +2 -1
- package/utility/common_utils.ts +30 -5
- package/utility/componentNames.ts +12 -0
- package/utility/environment/environmentManager.ts +3 -7
- package/utility/environment/systemInformation.ts +7 -0
- package/utility/errors/commonErrors.ts +4 -0
- package/utility/errors/hdbError.ts +29 -0
- package/utility/hdbTerms.ts +17 -0
- package/utility/logging/harper_logger.ts +87 -14
- package/utility/logging/logRotator.ts +72 -45
- package/utility/nodeIdentity.ts +45 -0
- package/utility/npmUtilities.ts +10 -8
- package/utility/operationPermissions.ts +18 -1
- package/utility/operation_authorization.ts +231 -42
- package/utility/watchPath.ts +63 -0
- package/utility/watcherFallback.ts +270 -0
- package/validation/configValidator.ts +209 -72
- package/validation/installValidator.ts +15 -0
- package/validation/validationWrapper.ts +18 -4
package/dist/server/nodeName.js
CHANGED
|
@@ -35,14 +35,18 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.getThisNodeName = getThisNodeName;
|
|
37
37
|
exports.clearThisNodeName = clearThisNodeName;
|
|
38
|
+
exports.nodeNameToDisplayHost = nodeNameToDisplayHost;
|
|
39
|
+
exports.getThisNodeHostname = getThisNodeHostname;
|
|
38
40
|
exports.hostnameToUrl = hostnameToUrl;
|
|
39
41
|
exports.urlToNodeName = urlToNodeName;
|
|
40
42
|
exports.getThisNodeUrl = getThisNodeUrl;
|
|
41
43
|
const node_fs_1 = require("node:fs");
|
|
42
44
|
const node_crypto_1 = require("node:crypto");
|
|
45
|
+
const node_net_1 = require("node:net");
|
|
43
46
|
const hdbTerms_ts_1 = require("../utility/hdbTerms.js");
|
|
44
47
|
const env = __importStar(require("../utility/environment/environmentManager.js"));
|
|
45
48
|
const logger_ts_1 = require("../utility/logging/logger.js");
|
|
49
|
+
const nodeIdentity_ts_1 = require("../utility/nodeIdentity.js");
|
|
46
50
|
const Server_ts_1 = require("./Server.js");
|
|
47
51
|
Object.defineProperty(Server_ts_1.server, 'hostname', {
|
|
48
52
|
get() {
|
|
@@ -55,48 +59,111 @@ function getCommonNameFromCert() {
|
|
|
55
59
|
return commonNameFromCert;
|
|
56
60
|
const certificatePath = env.get(hdbTerms_ts_1.CONFIG_PARAMS.OPERATIONSAPI_TLS_CERTIFICATE) || env.get(hdbTerms_ts_1.CONFIG_PARAMS.TLS_CERTIFICATE);
|
|
57
61
|
if (certificatePath) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
try {
|
|
63
|
+
// use this to get the hostname if it isn't provided by config
|
|
64
|
+
const subject = new node_crypto_1.X509Certificate((0, node_fs_1.readFileSync)(certificatePath)).subject;
|
|
65
|
+
return (commonNameFromCert = subject?.match(/CN=(.*)/)?.[1] ?? null);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// a missing/unparseable cert file must not throw out of identity resolution — the caller
|
|
69
|
+
// falls back to another source. Do NOT cache the failure, so a later read (e.g. after the
|
|
70
|
+
// cert is created) can still pick up its common name.
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
62
73
|
}
|
|
63
74
|
}
|
|
64
75
|
let nodeName;
|
|
65
76
|
function getThisNodeName() {
|
|
66
77
|
if (nodeName)
|
|
67
78
|
return nodeName; // if already determined, just return
|
|
68
|
-
|
|
69
|
-
if (
|
|
79
|
+
const configured = env.get(hdbTerms_ts_1.CONFIG_PARAMS.NODE_HOSTNAME);
|
|
80
|
+
if (configured) {
|
|
70
81
|
const replicationHostname = env.get('replication_hostname');
|
|
71
|
-
if (replicationHostname && replicationHostname !==
|
|
82
|
+
if (replicationHostname && replicationHostname !== configured) {
|
|
72
83
|
// If these are both set and differ, the node identity is ambiguous. node.hostname
|
|
73
84
|
// wins (it is what this node identifies as), but if it doesn't match the name this
|
|
74
85
|
// node is registered under in hdb_nodes, replication for that name silently turns
|
|
75
86
|
// off (harper-pro#351). Do NOT blindly recommend cementing the already-picked
|
|
76
87
|
// node.hostname value — that's how a wrong identity (e.g. 'localhost') gets locked
|
|
77
88
|
// in. Steer the operator to reconcile against the registered node name instead.
|
|
78
|
-
logger_ts_1.logger.warn?.(`The node.hostname (${
|
|
89
|
+
logger_ts_1.logger.warn?.(`The node.hostname (${configured}) and replication.hostname (${replicationHostname}) configuration values are both set and differ. This node will identify as "${configured}". Ensure that name matches this node's row in system.hdb_nodes; if it does not, set node.hostname (or remove it to fall back to replication.hostname) to match the registered node name, otherwise replication for this node will be disabled.`);
|
|
79
90
|
}
|
|
80
|
-
return nodeName;
|
|
81
91
|
}
|
|
82
|
-
//
|
|
92
|
+
// Use the first source that is a valid bare host (harper#2218). node.hostname and
|
|
93
|
+
// replication.hostname are rejected at the config boundary when invalid; the remaining derived
|
|
94
|
+
// sources are validated here and skipped — not fatal — if unusable, so a descriptive certificate
|
|
95
|
+
// common name or an empty value can never cache a corrupt identity or crash a request-time caller.
|
|
83
96
|
nodeName =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
getHostFromListeningPort('
|
|
97
|
+
asBareHost(configured, 'node.hostname') ??
|
|
98
|
+
asBareHost(env.get('replication_hostname'), 'replication.hostname') ?? // for backwards compatibility
|
|
99
|
+
asBareHost(replicationUrlHost(), 'the host in replication.url') ??
|
|
100
|
+
asBareHost(getCommonNameFromCert(), 'the certificate common name') ??
|
|
101
|
+
asBareHost(getHostFromListeningPort('operationsapi_network_secureport'), 'the operations API host') ??
|
|
102
|
+
asBareHost(getHostFromListeningPort('operationsapi_network_port'), 'the operations API host') ??
|
|
89
103
|
'127.0.0.1';
|
|
90
104
|
return nodeName;
|
|
91
105
|
}
|
|
92
106
|
function clearThisNodeName() {
|
|
93
107
|
nodeName = undefined;
|
|
94
108
|
}
|
|
109
|
+
// Reduce a node name to a host safe to compose a display URL from: strip a scheme/port (defensive —
|
|
110
|
+
// a configured node.hostname carrying those is now rejected at the config boundary) and bracket a
|
|
111
|
+
// bare IPv6 literal, without which the composed startup URLs are unparseable.
|
|
112
|
+
function nodeNameToDisplayHost(name) {
|
|
113
|
+
if (!name)
|
|
114
|
+
return name;
|
|
115
|
+
const hasScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(name);
|
|
116
|
+
const candidates = hasScheme ? [name] : [`http://${name}`, `http://[${name}]`];
|
|
117
|
+
for (const candidate of candidates) {
|
|
118
|
+
try {
|
|
119
|
+
const { hostname } = new URL(candidate);
|
|
120
|
+
if (hostname)
|
|
121
|
+
return hostname;
|
|
122
|
+
}
|
|
123
|
+
catch { }
|
|
124
|
+
}
|
|
125
|
+
return name;
|
|
126
|
+
}
|
|
127
|
+
function getThisNodeHostname() {
|
|
128
|
+
return nodeNameToDisplayHost(getThisNodeName());
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The host of replication.url, or undefined when it is unset or carries no usable host. Warns in the
|
|
132
|
+
* latter case for the same reason asBareHost does: a typo'd URL must not silently cost this node its
|
|
133
|
+
* identity. urlToNodeName itself stays quiet — it is also used for peer URLs, not just this node's.
|
|
134
|
+
*/
|
|
135
|
+
function replicationUrlHost() {
|
|
136
|
+
const url = env.get(hdbTerms_ts_1.CONFIG_PARAMS.REPLICATION_URL);
|
|
137
|
+
if (!url)
|
|
138
|
+
return undefined;
|
|
139
|
+
const host = urlToNodeName(url);
|
|
140
|
+
if (host === undefined) {
|
|
141
|
+
logger_ts_1.logger.warn?.(`Ignoring replication.url (${JSON.stringify(url)}) as this node's identity: it is not a URL with a host. Falling back to the next available source, which may leave this node identifying as 127.0.0.1 and unable to replicate.`);
|
|
142
|
+
}
|
|
143
|
+
return host;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* A candidate identity source, or undefined when it is unset or not a bare host. Skipping is
|
|
147
|
+
* deliberate (see getThisNodeName) but silence is a diagnosis trap: a typo'd source that quietly
|
|
148
|
+
* resolves identity to 127.0.0.1 looks like a working node until replication fails, so say so.
|
|
149
|
+
*/
|
|
150
|
+
function asBareHost(value, source) {
|
|
151
|
+
if (value === undefined || value === null || value === '')
|
|
152
|
+
return undefined;
|
|
153
|
+
const violation = (0, nodeIdentity_ts_1.bareHostViolation)(value);
|
|
154
|
+
if (!violation)
|
|
155
|
+
return value;
|
|
156
|
+
logger_ts_1.logger.warn?.(`Ignoring ${source} (${JSON.stringify(value)}) as this node's identity: it ${violation}. Falling back to the next available source, which may leave this node identifying as 127.0.0.1 and unable to replicate. Set it to a bare hostname or IP literal.`);
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
95
159
|
function getHostFromListeningPort(key) {
|
|
96
160
|
const port = env.get(key);
|
|
97
161
|
const lastColon = port?.lastIndexOf?.(':');
|
|
98
|
-
if (lastColon > 0)
|
|
99
|
-
|
|
162
|
+
if (lastColon > 0) {
|
|
163
|
+
const host = port.slice(0, lastColon);
|
|
164
|
+
// A listen address stores IPv6 bracketed ("[::1]:9925"); the node identity is unbracketed.
|
|
165
|
+
return host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
|
|
166
|
+
}
|
|
100
167
|
}
|
|
101
168
|
function getPortFromListeningPort(key) {
|
|
102
169
|
const port = env.get(key);
|
|
@@ -108,22 +175,39 @@ function getPortFromListeningPort(key) {
|
|
|
108
175
|
function hostnameToUrl(hostname) {
|
|
109
176
|
if (!hostname)
|
|
110
177
|
return undefined;
|
|
178
|
+
// A bare IPv6 literal must be bracketed for the authority to parse: "ws://::1:9925" is rejected by
|
|
179
|
+
// the URL parser, "ws://[::1]:9925" is not. Hostnames and IPv4 pass through unchanged.
|
|
180
|
+
const host = (0, node_net_1.isIP)(hostname) === 6 ? `[${hostname}]` : hostname;
|
|
111
181
|
let port = getPortFromListeningPort('replication_port');
|
|
112
182
|
if (port)
|
|
113
|
-
return `ws://${
|
|
183
|
+
return `ws://${host}:${port}`;
|
|
114
184
|
port = getPortFromListeningPort('replication_secureport');
|
|
115
185
|
if (port)
|
|
116
|
-
return `wss://${
|
|
186
|
+
return `wss://${host}:${port}`;
|
|
117
187
|
port = getPortFromListeningPort('operationsapi_network_port');
|
|
118
188
|
if (port)
|
|
119
|
-
return `ws://${
|
|
189
|
+
return `ws://${host}:${port}`;
|
|
120
190
|
port = getPortFromListeningPort('operationsapi_network_secureport');
|
|
121
191
|
if (port)
|
|
122
|
-
return `wss://${
|
|
192
|
+
return `wss://${host}:${port}`;
|
|
123
193
|
}
|
|
124
194
|
function urlToNodeName(nodeUrl) {
|
|
125
|
-
if (nodeUrl)
|
|
126
|
-
return
|
|
195
|
+
if (!nodeUrl)
|
|
196
|
+
return undefined;
|
|
197
|
+
try {
|
|
198
|
+
// the part of the URL that is the node name, matched against the certificate common name. URL
|
|
199
|
+
// keeps an IPv6 host bracketed ("[::1]"); the identity is stored unbracketed so it stays one
|
|
200
|
+
// canonical string across sources and net.isIP types it as an IP certificate SAN.
|
|
201
|
+
const host = new URL(nodeUrl).hostname;
|
|
202
|
+
// A hostless scheme ("mailto:", "data:", "file:", "urn:") parses but has an empty hostname —
|
|
203
|
+
// that is no name at all, not an identity, so treat it like a malformed URL.
|
|
204
|
+
if (host === '')
|
|
205
|
+
return undefined;
|
|
206
|
+
return host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return undefined; // a malformed URL yields no name — callers skip this source rather than crash
|
|
210
|
+
}
|
|
127
211
|
}
|
|
128
212
|
function getThisNodeUrl() {
|
|
129
213
|
const url = env.get(hdbTerms_ts_1.CONFIG_PARAMS.REPLICATION_URL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeName.js","sourceRoot":"","sources":["../../server/nodeName.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"nodeName.js","sourceRoot":"","sources":["../../server/nodeName.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,3 +42,28 @@ export declare function mergeHeaders(target: any, source: Headers): any;
|
|
|
42
42
|
* there are no headers) is returned unchanged.
|
|
43
43
|
*/
|
|
44
44
|
export declare function toWriteHeadHeaders(headers: any): any;
|
|
45
|
+
export declare const SHARED_CACHE_OPTIN: RegExp;
|
|
46
|
+
export declare const PRIVATE_SCOPE: RegExp;
|
|
47
|
+
/**
|
|
48
|
+
* Folds the middleware chain's response headers into the headers a fallback server produced for the
|
|
49
|
+
* same request.
|
|
50
|
+
*
|
|
51
|
+
* Bun and uWS construct a new response from legacy Fastify when the chain declines a request, so the
|
|
52
|
+
* chain's credential-dependent cache policy must be merged explicitly. Fastify wins headers it set,
|
|
53
|
+
* `Vary` is unioned, and private cache scope is re-applied unless the final response explicitly opts
|
|
54
|
+
* into RFC 9111 shared caching with `public` or `s-maxage`.
|
|
55
|
+
*/
|
|
56
|
+
export declare function mergeChainHeadersIntoFallback<T extends {
|
|
57
|
+
get(name: string): any;
|
|
58
|
+
set(name: string, value: any): any;
|
|
59
|
+
has(name: string): boolean;
|
|
60
|
+
append?(name: string, value: any): any;
|
|
61
|
+
}>(chainHeaders: any, finalHeaders: T): T;
|
|
62
|
+
/**
|
|
63
|
+
* Node's counterpart to the Bun and uWS fallback bridges: the chain's headers go onto the
|
|
64
|
+
* `ServerResponse` before legacy Fastify runs, so a Fastify route that sets `Cache-Control` or `Vary`
|
|
65
|
+
* replaces them outright and can make a credential-dependent response shared-cacheable (#1565).
|
|
66
|
+
* Reconciliation therefore runs at `writeHead` — the last point the header set is still mutable, and
|
|
67
|
+
* the one Node also routes implicit headers through — using the same policy as the other two bridges.
|
|
68
|
+
*/
|
|
69
|
+
export declare function bridgeChainHeadersToNodeResponse(chainHeaders: any, nodeResponse: any): void;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Headers = void 0;
|
|
3
|
+
exports.PRIVATE_SCOPE = exports.SHARED_CACHE_OPTIN = exports.Headers = void 0;
|
|
4
4
|
exports.addVaryHeader = addVaryHeader;
|
|
5
5
|
exports.appendHeader = appendHeader;
|
|
6
6
|
exports.mergeHeaders = mergeHeaders;
|
|
7
7
|
exports.toWriteHeadHeaders = toWriteHeadHeaders;
|
|
8
|
+
exports.mergeChainHeadersIntoFallback = mergeChainHeadersIntoFallback;
|
|
9
|
+
exports.bridgeChainHeadersToNodeResponse = bridgeChainHeadersToNodeResponse;
|
|
8
10
|
/**
|
|
9
11
|
* Fast implementation of standard Headers
|
|
10
12
|
*/
|
|
@@ -187,4 +189,140 @@ function toWriteHeadHeaders(headers) {
|
|
|
187
189
|
}
|
|
188
190
|
return result;
|
|
189
191
|
}
|
|
192
|
+
// RFC 9111 cache-scope directives; boundaries on both sides so a token like `public-foo` doesn't match.
|
|
193
|
+
exports.SHARED_CACHE_OPTIN = /(^|[,\s])(public|s-maxage)($|[\s,;=])/i;
|
|
194
|
+
exports.PRIVATE_SCOPE = /(^|[,\s])(private|no-store)($|[\s,;=])/i;
|
|
195
|
+
function headerValueString(value) {
|
|
196
|
+
if (value == null)
|
|
197
|
+
return '';
|
|
198
|
+
return Array.isArray(value) ? value.join(', ') : String(value);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Folds the middleware chain's response headers into the headers a fallback server produced for the
|
|
202
|
+
* same request.
|
|
203
|
+
*
|
|
204
|
+
* Bun and uWS construct a new response from legacy Fastify when the chain declines a request, so the
|
|
205
|
+
* chain's credential-dependent cache policy must be merged explicitly. Fastify wins headers it set,
|
|
206
|
+
* `Vary` is unioned, and private cache scope is re-applied unless the final response explicitly opts
|
|
207
|
+
* into RFC 9111 shared caching with `public` or `s-maxage`.
|
|
208
|
+
*/
|
|
209
|
+
function mergeChainHeadersIntoFallback(chainHeaders, finalHeaders) {
|
|
210
|
+
if (!chainHeaders?.[Symbol.iterator])
|
|
211
|
+
return finalHeaders;
|
|
212
|
+
const chainVary = headerValueString(chainHeaders.get('Vary'));
|
|
213
|
+
const chainCacheControl = headerValueString(chainHeaders.get('Cache-Control'));
|
|
214
|
+
for (const [name, value] of chainHeaders) {
|
|
215
|
+
const lowerName = String(name).toLowerCase();
|
|
216
|
+
if (lowerName === 'vary' || lowerName === 'cache-control')
|
|
217
|
+
continue;
|
|
218
|
+
if (finalHeaders.has(name)) {
|
|
219
|
+
if (lowerName === 'set-cookie') {
|
|
220
|
+
const existing = finalHeaders.getSetCookie?.() ?? finalHeaders.get(name);
|
|
221
|
+
const existingValues = new Set((Array.isArray(existing) ? existing : [existing]).map(String));
|
|
222
|
+
const values = Array.isArray(value) ? value : [value];
|
|
223
|
+
for (const single of values) {
|
|
224
|
+
if (!existingValues.has(String(single)))
|
|
225
|
+
appendHeader(finalHeaders, name, single, false);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
if (Array.isArray(value)) {
|
|
231
|
+
for (const single of value)
|
|
232
|
+
appendHeader(finalHeaders, name, single, lowerName !== 'set-cookie');
|
|
233
|
+
}
|
|
234
|
+
else
|
|
235
|
+
finalHeaders.set(name, value);
|
|
236
|
+
}
|
|
237
|
+
for (const token of chainVary.split(',')) {
|
|
238
|
+
const trimmed = token.trim();
|
|
239
|
+
if (trimmed)
|
|
240
|
+
addVaryHeader(finalHeaders, trimmed);
|
|
241
|
+
}
|
|
242
|
+
if (chainCacheControl) {
|
|
243
|
+
const finalCacheControl = headerValueString(finalHeaders.get('Cache-Control'));
|
|
244
|
+
if (!finalCacheControl)
|
|
245
|
+
finalHeaders.set('Cache-Control', chainCacheControl);
|
|
246
|
+
else if (exports.PRIVATE_SCOPE.test(chainCacheControl) &&
|
|
247
|
+
!exports.PRIVATE_SCOPE.test(finalCacheControl) &&
|
|
248
|
+
!exports.SHARED_CACHE_OPTIN.test(finalCacheControl))
|
|
249
|
+
finalHeaders.set('Cache-Control', finalCacheControl + ', private');
|
|
250
|
+
}
|
|
251
|
+
return finalHeaders;
|
|
252
|
+
}
|
|
253
|
+
function nodeResponseHeaders(nodeResponse) {
|
|
254
|
+
return {
|
|
255
|
+
get: (name) => nodeResponse.getHeader(name),
|
|
256
|
+
set: (name, value) => nodeResponse.setHeader(name, value),
|
|
257
|
+
has: (name) => nodeResponse.hasHeader(name),
|
|
258
|
+
append: (name, value, commaDelimited) => {
|
|
259
|
+
const existing = nodeResponse.getHeader(name);
|
|
260
|
+
if (existing == null)
|
|
261
|
+
return nodeResponse.setHeader(name, value);
|
|
262
|
+
if (commaDelimited)
|
|
263
|
+
return nodeResponse.setHeader(name, (Array.isArray(existing) ? existing.join(', ') : existing) + ', ' + value);
|
|
264
|
+
return nodeResponse.setHeader(name, Array.isArray(existing) ? [...existing, value] : [existing, value]);
|
|
265
|
+
},
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function applyWriteHeadHeaders(nodeResponse, headers) {
|
|
269
|
+
const suppliedHeaders = new Map();
|
|
270
|
+
const addHeader = (name, value) => {
|
|
271
|
+
const key = String(name).toLowerCase();
|
|
272
|
+
const supplied = suppliedHeaders.get(key);
|
|
273
|
+
if (!supplied) {
|
|
274
|
+
suppliedHeaders.set(key, { name, value });
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const values = Array.isArray(supplied.value) ? supplied.value : [supplied.value];
|
|
278
|
+
supplied.value = Array.isArray(value) ? values.concat(value) : values.concat([value]);
|
|
279
|
+
};
|
|
280
|
+
if (Array.isArray(headers)) {
|
|
281
|
+
if (Array.isArray(headers[0])) {
|
|
282
|
+
for (const [name, value] of headers)
|
|
283
|
+
addHeader(name, value);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
for (let i = 0; i + 1 < headers.length; i += 2)
|
|
287
|
+
addHeader(headers[i], headers[i + 1]);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
for (const name of Object.keys(headers)) {
|
|
292
|
+
const value = headers[name];
|
|
293
|
+
if (value != null)
|
|
294
|
+
addHeader(name, value);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
for (const { name, value } of suppliedHeaders.values())
|
|
298
|
+
nodeResponse.setHeader(name, value);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Node's counterpart to the Bun and uWS fallback bridges: the chain's headers go onto the
|
|
302
|
+
* `ServerResponse` before legacy Fastify runs, so a Fastify route that sets `Cache-Control` or `Vary`
|
|
303
|
+
* replaces them outright and can make a credential-dependent response shared-cacheable (#1565).
|
|
304
|
+
* Reconciliation therefore runs at `writeHead` — the last point the header set is still mutable, and
|
|
305
|
+
* the one Node also routes implicit headers through — using the same policy as the other two bridges.
|
|
306
|
+
*/
|
|
307
|
+
function bridgeChainHeadersToNodeResponse(chainHeaders, nodeResponse) {
|
|
308
|
+
if (!chainHeaders?.[Symbol.iterator])
|
|
309
|
+
return;
|
|
310
|
+
for (const [name, value] of chainHeaders)
|
|
311
|
+
nodeResponse.setHeader(name, value);
|
|
312
|
+
const originalWriteHead = nodeResponse.writeHead;
|
|
313
|
+
nodeResponse.writeHead = function (statusCode, statusMessage, headers) {
|
|
314
|
+
if (this.headersSent)
|
|
315
|
+
return originalWriteHead.apply(this, arguments);
|
|
316
|
+
if (statusMessage != null && typeof statusMessage !== 'string') {
|
|
317
|
+
headers = statusMessage;
|
|
318
|
+
statusMessage = undefined;
|
|
319
|
+
}
|
|
320
|
+
if (headers)
|
|
321
|
+
applyWriteHeadHeaders(this, headers);
|
|
322
|
+
mergeChainHeadersIntoFallback(chainHeaders, nodeResponseHeaders(this));
|
|
323
|
+
return statusMessage === undefined
|
|
324
|
+
? originalWriteHead.call(this, statusCode)
|
|
325
|
+
: originalWriteHead.call(this, statusCode, statusMessage);
|
|
326
|
+
};
|
|
327
|
+
}
|
|
190
328
|
//# sourceMappingURL=Headers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../server/serverHelpers/Headers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../server/serverHelpers/Headers.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,15 @@ export declare function findBestSerializer(incomingMessage: any): {
|
|
|
29
29
|
* @returns {Uint8Array|*}
|
|
30
30
|
*/
|
|
31
31
|
export declare function serialize(responseData: any, request: any, responseObject: any): any;
|
|
32
|
+
/**
|
|
33
|
+
* Get the message serializer for a request's negotiated content type, memoized on the request.
|
|
34
|
+
* The returned function is the registered per-content-type serializer, so its identity keys the
|
|
35
|
+
* content type. Caching serialized output across requests under that key is only valid because the
|
|
36
|
+
* built-in serializers are pure functions of their argument — a component registering a serializer
|
|
37
|
+
* into `server.contentTypes` whose output depends on anything else would not be shareable.
|
|
38
|
+
* @param request
|
|
39
|
+
*/
|
|
40
|
+
export declare function getMessageSerializer(request?: Request): (message: any) => Buffer | string;
|
|
32
41
|
/**
|
|
33
42
|
* Serialize a message, may be use multiple times (like with WebSockets)
|
|
34
43
|
* @param message
|
|
@@ -40,6 +40,7 @@ exports.contentTypes = void 0;
|
|
|
40
40
|
exports.registerContentHandlers = registerContentHandlers;
|
|
41
41
|
exports.findBestSerializer = findBestSerializer;
|
|
42
42
|
exports.serialize = serialize;
|
|
43
|
+
exports.getMessageSerializer = getMessageSerializer;
|
|
43
44
|
exports.serializeMessage = serializeMessage;
|
|
44
45
|
exports.asyncSerialization = asyncSerialization;
|
|
45
46
|
exports.hasAsyncSerialization = hasAsyncSerialization;
|
|
@@ -156,6 +157,11 @@ const ndjsonHandler = {
|
|
|
156
157
|
};
|
|
157
158
|
mediaTypes.set('application/x-ndjson', ndjsonHandler);
|
|
158
159
|
mediaTypes.set('application/ndjson', ndjsonHandler);
|
|
160
|
+
function serializeSSEData(data) {
|
|
161
|
+
if (typeof data === 'object')
|
|
162
|
+
return 'data: ' + JSONStringify(data) + '\n';
|
|
163
|
+
return 'data: ' + String(data).replace(/\r\n|\r|\n/g, '\ndata: ') + '\n';
|
|
164
|
+
}
|
|
159
165
|
mediaTypes.set('text/event-stream', {
|
|
160
166
|
// Server-Sent Events (SSE)
|
|
161
167
|
serializeStream: function (iterable) {
|
|
@@ -173,26 +179,24 @@ mediaTypes.set('text/event-stream', {
|
|
|
173
179
|
id: message.timestamp,
|
|
174
180
|
};
|
|
175
181
|
}
|
|
176
|
-
|
|
182
|
+
// A non-null top-level `data` or truthy `event` is an SSE envelope, even with sibling fields.
|
|
183
|
+
// `id`/`retry` alone do not open it: `id` is too common a literal-payload field name (e.g. a
|
|
184
|
+
// database record) to safely treat as an SSE-envelope signal.
|
|
185
|
+
if (message.data != null || message.event) {
|
|
177
186
|
let serialized = '';
|
|
178
187
|
if (message.event)
|
|
179
188
|
serialized += 'event: ' + message.event + '\n';
|
|
180
|
-
if (message.data) {
|
|
181
|
-
|
|
182
|
-
if (typeof data === 'object')
|
|
183
|
-
data = JSONStringify(data);
|
|
184
|
-
serialized += 'data: ' + data + '\n';
|
|
189
|
+
if (message.data != null) {
|
|
190
|
+
serialized += serializeSSEData(message.data);
|
|
185
191
|
}
|
|
186
|
-
if (message.id)
|
|
192
|
+
if (message.id != null)
|
|
187
193
|
serialized += 'id: ' + message.id + '\n';
|
|
188
|
-
if (message.retry)
|
|
194
|
+
if (message.retry != null)
|
|
189
195
|
serialized += 'retry: ' + message.retry + '\n';
|
|
190
196
|
return serialized + '\n';
|
|
191
197
|
}
|
|
192
198
|
else {
|
|
193
|
-
|
|
194
|
-
return `data: ${JSONStringify(message)}\n\n`;
|
|
195
|
-
return `data: ${message}\n\n`;
|
|
199
|
+
return serializeSSEData(message) + '\n';
|
|
196
200
|
}
|
|
197
201
|
},
|
|
198
202
|
compressible: false,
|
|
@@ -469,6 +473,22 @@ function serialize(responseData, request, responseObject) {
|
|
|
469
473
|
return responseBody;
|
|
470
474
|
}
|
|
471
475
|
let asyncSerializations;
|
|
476
|
+
/**
|
|
477
|
+
* Get the message serializer for a request's negotiated content type, memoized on the request.
|
|
478
|
+
* The returned function is the registered per-content-type serializer, so its identity keys the
|
|
479
|
+
* content type. Caching serialized output across requests under that key is only valid because the
|
|
480
|
+
* built-in serializers are pure functions of their argument — a component registering a serializer
|
|
481
|
+
* into `server.contentTypes` whose output depends on anything else would not be shareable.
|
|
482
|
+
* @param request
|
|
483
|
+
*/
|
|
484
|
+
function getMessageSerializer(request) {
|
|
485
|
+
if (!request)
|
|
486
|
+
return JSONStringify;
|
|
487
|
+
let serialize = request.serialize;
|
|
488
|
+
if (!serialize)
|
|
489
|
+
serialize = request.serialize = findBestSerializer(request).serializer.serialize;
|
|
490
|
+
return serialize;
|
|
491
|
+
}
|
|
472
492
|
/**
|
|
473
493
|
* Serialize a message, may be use multiple times (like with WebSockets)
|
|
474
494
|
* @param message
|
|
@@ -480,20 +500,7 @@ function serializeMessage(message, request, inAsyncContinuation) {
|
|
|
480
500
|
return message.data;
|
|
481
501
|
asyncSerializations = inAsyncContinuation ? undefined : [];
|
|
482
502
|
try {
|
|
483
|
-
|
|
484
|
-
if (request) {
|
|
485
|
-
let serialize = request.serialize;
|
|
486
|
-
if (serialize)
|
|
487
|
-
serialized = serialize(message);
|
|
488
|
-
else {
|
|
489
|
-
const serializer = findBestSerializer(request);
|
|
490
|
-
serialize = request.serialize = serializer.serializer.serialize;
|
|
491
|
-
serialized = serialize(message);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
else {
|
|
495
|
-
serialized = JSONStringify(message);
|
|
496
|
-
}
|
|
503
|
+
const serialized = getMessageSerializer(request)(message);
|
|
497
504
|
if (asyncSerializations?.length > 0)
|
|
498
505
|
// if there were any serialization attempts that must wait for async work to be done, we wait now and then retry the serialization
|
|
499
506
|
return (asyncSerializations.length === 1 ? asyncSerializations[0] : Promise.all(asyncSerializations)).then(() => serializeMessage(message, request, true));
|