@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobProcess.js","sourceRoot":"","sources":["../../../server/jobs/jobProcess.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,2EAA2E;AAC3E,2DAA2D;AAC3D,4EAA4D;AAC5D,oEAAsD;AACtD,wEAA0D;AAC1D,8FAAkE;AAClE,4EAA8D;AAC9D,6DAA+C;AAC/C,iFAAmE;AACnE,oDAA4B;AAC5B,gDAAkC;AAClC,mCAAmC;AAEnC,uCAAyC;AACzC,yCAAiC;AACjC,6DAAiD;AACjD,sEAA4E;AAC5E,mEAA6D;AAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAE,QAAgB,CAAC,qBAAqB,CAAW,CAAC;AAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAErC;;;;GAIG;AACH,CAAC,KAAK,UAAU,GAAG;IAClB,qHAAqH;IACrH,IAAI,MAAM,GAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACrD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC;QACJ,0BAAY,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC7C,YAAY,CAAC,qBAAqB,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEpC,KAAK,MAAM,EAAE,iBAAiB,EAAE,IAAI,IAAA,wCAAuB,GAAE,EAAE,CAAC;YAC/D,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,sGAAsG;gBACtG,MAAM,MAAM,kCAAC,IAAA,wBAAa,EAAC,IAAA,gBAAI,EAAC,8BAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC;YACxF,CAAC;QACF,CAAC;QAED,8GAA8G;QAC9G,sHAAsH;QACtH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,8CAA8C,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,GAAG,IAAA,kBAAS,EAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"jobProcess.js","sourceRoot":"","sources":["../../../server/jobs/jobProcess.ts"],"names":[],"mappings":"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"}
|
package/dist/server/jobs/jobs.js
CHANGED
|
@@ -52,6 +52,7 @@ const search = __importStar(require("../../dataLayer/search.js"));
|
|
|
52
52
|
const SearchObject_ts_1 = __importDefault(require("../../dataLayer/SearchObject.js"));
|
|
53
53
|
const SearchByHashObject_ts_1 = __importDefault(require("../../dataLayer/SearchByHashObject.js"));
|
|
54
54
|
const SqlSearchObject_ts_1 = __importDefault(require("../../dataLayer/SqlSearchObject.js"));
|
|
55
|
+
const operationAuthorizationState_ts_1 = require("../serverHelpers/operationAuthorizationState.js");
|
|
55
56
|
const hdbTerms = __importStar(require("../../utility/hdbTerms.js"));
|
|
56
57
|
const JobObject_ts_1 = __importDefault(require("./JobObject.js"));
|
|
57
58
|
const UpdateObject_ts_1 = __importDefault(require("../../dataLayer/UpdateObject.js"));
|
|
@@ -261,7 +262,9 @@ async function getJobsInDateRange(jsonBody) {
|
|
|
261
262
|
const hdbSql = require('../../sqlTranslator/index');
|
|
262
263
|
pSqlEvaluate = (0, util_1.promisify)(hdbSql.evaluateSQL);
|
|
263
264
|
}
|
|
264
|
-
|
|
265
|
+
// Harper's own statement, not the caller's. A carrier is not equivalent here — see DESIGN.md.
|
|
266
|
+
// Wraps only this statement: a later caller-dependent one must not inherit the bypass.
|
|
267
|
+
return await (0, operationAuthorizationState_ts_1.runWithOperationAuthorizationBypass)(true, () => pSqlEvaluate(sqlSearchObj));
|
|
265
268
|
}
|
|
266
269
|
catch (e) {
|
|
267
270
|
harper_logger_ts_1.default.error(`there was a problem searching for jobs from date ${jsonBody.from_date} to date ${jsonBody.to_date} ${e}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../server/jobs/jobs.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../server/jobs/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Register a live subscription for continuous re-authorization.
|
|
3
|
-
*
|
|
2
|
+
* Register a live subscription for continuous re-authorization.
|
|
3
|
+
*
|
|
4
|
+
* Without `revoke`, teardown is end()/close()/emit('close') on `subscription`, and the
|
|
5
|
+
* subscription's own teardown unregisters the entry so callers need not.
|
|
6
|
+
*
|
|
7
|
+
* With `revoke`, that becomes the teardown and `subscription` is never touched — no `end` wrapping,
|
|
8
|
+
* no 'close' listener — because a feed shared by many subscribers must stay revocable per subscriber,
|
|
9
|
+
* so the registry can neither own the shared object nor let every registrant mutate it. A `revoke`
|
|
10
|
+
* caller owns the entry's lifetime: nothing detects a leaked registration, and a forgotten
|
|
11
|
+
* `unregister()` degrades sweep latency for every other tracked subscriber. It also owns teardown
|
|
12
|
+
* recovery — the entry is untracked before `revoke` runs and `revoke` is invoked exactly once, so one
|
|
13
|
+
* that throws, rejects or never settles is logged and never retried. A `recheck` shared across
|
|
14
|
+
* subscribers must not mutate state shared across them: `registerLiveSubscriptionForContext` in
|
|
15
|
+
* resources/Resource.ts mutates `context.user`, which is safe only while each context has exactly
|
|
16
|
+
* one subscriber.
|
|
4
17
|
*/
|
|
5
18
|
export declare function registerLiveSubscription(opts: {
|
|
6
|
-
subscription: any;
|
|
7
19
|
username: string;
|
|
8
20
|
authExpiresAt?: number;
|
|
9
21
|
recheck: () => Promise<boolean>;
|
|
10
|
-
}
|
|
22
|
+
} & ({
|
|
23
|
+
subscription: any;
|
|
24
|
+
revoke?: undefined;
|
|
25
|
+
} | {
|
|
26
|
+
subscription?: any;
|
|
27
|
+
revoke: () => void | Promise<void>;
|
|
28
|
+
})): {
|
|
29
|
+
unregister: () => void;
|
|
30
|
+
};
|
|
11
31
|
/** Test-only: current number of tracked subscriptions. */
|
|
12
32
|
export declare function _liveSubscriptionCount(): number;
|
|
33
|
+
/** Test-only: run a sweep synchronously, bypassing the interval/ITC triggers. */
|
|
34
|
+
export declare function _sweepNow(): Promise<void>;
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerLiveSubscription = registerLiveSubscription;
|
|
7
7
|
exports._liveSubscriptionCount = _liveSubscriptionCount;
|
|
8
|
+
exports._sweepNow = _sweepNow;
|
|
8
9
|
const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_logger.js"));
|
|
9
10
|
/**
|
|
10
11
|
* Continuous re-authorization for live subscriptions (#1414).
|
|
@@ -21,13 +22,33 @@ const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_lo
|
|
|
21
22
|
*/
|
|
22
23
|
// Backstop interval; also catches token expiry, which is not event-signaled. Overridable for tests.
|
|
23
24
|
const RECHECK_INTERVAL_MS = Number(process.env.HARPER_SUBSCRIPTION_REAUTH_INTERVAL_MS) || 30_000;
|
|
25
|
+
function errorMessage(error) {
|
|
26
|
+
try {
|
|
27
|
+
return error instanceof Error ? error.message : String(error);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return '<error message unavailable>';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function safeLog(log, message) {
|
|
34
|
+
try {
|
|
35
|
+
log?.(message);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
/* a broken logger must not turn a contained failure into a new one */
|
|
39
|
+
}
|
|
40
|
+
}
|
|
24
41
|
const registry = new Set();
|
|
25
42
|
let sweepTimer = null;
|
|
26
43
|
let itcListenerInstalled = false;
|
|
27
44
|
let sweeping = false;
|
|
45
|
+
const NOOP_HANDLE = { unregister: () => { } };
|
|
46
|
+
function triggerSweep() {
|
|
47
|
+
void sweep().catch((error) => safeLog(harper_logger_ts_1.default.error, `liveSubscriptionAuth: sweep failed: ${errorMessage(error)}`));
|
|
48
|
+
}
|
|
28
49
|
function ensureStarted() {
|
|
29
50
|
if (!sweepTimer) {
|
|
30
|
-
sweepTimer = setInterval(
|
|
51
|
+
sweepTimer = setInterval(triggerSweep, RECHECK_INTERVAL_MS);
|
|
31
52
|
// don't keep the worker alive solely for the recheck timer
|
|
32
53
|
sweepTimer.unref?.();
|
|
33
54
|
}
|
|
@@ -37,7 +58,7 @@ function ensureStarted() {
|
|
|
37
58
|
// user/role cache before invoking listeners, so recheck() observes the new permissions.
|
|
38
59
|
const handlers = require('./itc/serverHandlers.js');
|
|
39
60
|
if (handlers?.userHandler?.addListener) {
|
|
40
|
-
handlers.userHandler.addListener(
|
|
61
|
+
handlers.userHandler.addListener(triggerSweep);
|
|
41
62
|
itcListenerInstalled = true;
|
|
42
63
|
}
|
|
43
64
|
}
|
|
@@ -53,86 +74,131 @@ function stopIfIdle() {
|
|
|
53
74
|
}
|
|
54
75
|
}
|
|
55
76
|
/**
|
|
56
|
-
* Register a live subscription for continuous re-authorization.
|
|
57
|
-
*
|
|
77
|
+
* Register a live subscription for continuous re-authorization.
|
|
78
|
+
*
|
|
79
|
+
* Without `revoke`, teardown is end()/close()/emit('close') on `subscription`, and the
|
|
80
|
+
* subscription's own teardown unregisters the entry so callers need not.
|
|
81
|
+
*
|
|
82
|
+
* With `revoke`, that becomes the teardown and `subscription` is never touched — no `end` wrapping,
|
|
83
|
+
* no 'close' listener — because a feed shared by many subscribers must stay revocable per subscriber,
|
|
84
|
+
* so the registry can neither own the shared object nor let every registrant mutate it. A `revoke`
|
|
85
|
+
* caller owns the entry's lifetime: nothing detects a leaked registration, and a forgotten
|
|
86
|
+
* `unregister()` degrades sweep latency for every other tracked subscriber. It also owns teardown
|
|
87
|
+
* recovery — the entry is untracked before `revoke` runs and `revoke` is invoked exactly once, so one
|
|
88
|
+
* that throws, rejects or never settles is logged and never retried. A `recheck` shared across
|
|
89
|
+
* subscribers must not mutate state shared across them: `registerLiveSubscriptionForContext` in
|
|
90
|
+
* resources/Resource.ts mutates `context.user`, which is safe only while each context has exactly
|
|
91
|
+
* one subscriber.
|
|
58
92
|
*/
|
|
59
93
|
function registerLiveSubscription(opts) {
|
|
60
|
-
const { subscription, username, authExpiresAt, recheck } = opts;
|
|
61
|
-
if (!subscription || typeof subscription !== 'object' || subscription.closed)
|
|
62
|
-
return;
|
|
94
|
+
const { subscription, username, authExpiresAt, recheck, revoke } = opts;
|
|
95
|
+
if (!revoke && (!subscription || typeof subscription !== 'object' || subscription.closed))
|
|
96
|
+
return NOOP_HANDLE;
|
|
63
97
|
const entry = {
|
|
64
98
|
username,
|
|
65
99
|
authExpiresAt,
|
|
66
100
|
recheck,
|
|
67
|
-
terminate:
|
|
68
|
-
|
|
69
|
-
|
|
101
|
+
terminate: revoke ??
|
|
102
|
+
(() => {
|
|
103
|
+
// end() removes the subscription from the broadcast loop and closes its iterable queue.
|
|
70
104
|
if (subscription.end)
|
|
71
105
|
subscription.end();
|
|
72
106
|
else if (subscription.close)
|
|
73
107
|
subscription.close();
|
|
74
108
|
else
|
|
75
109
|
subscription.emit?.('close');
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
/* ignore */
|
|
79
|
-
}
|
|
80
|
-
},
|
|
110
|
+
}),
|
|
81
111
|
};
|
|
82
112
|
registry.add(entry);
|
|
83
113
|
const unregister = () => {
|
|
84
114
|
registry.delete(entry);
|
|
85
115
|
stopIfIdle();
|
|
86
116
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
117
|
+
if (!revoke) {
|
|
118
|
+
// Both transports ultimately call end() on normal teardown (MQTT unsubscribe/disconnect; SSE close
|
|
119
|
+
// is wired to end()); wrap it so a closed stream never leaks a registry entry. Also listen for
|
|
120
|
+
// 'close' to cover any iterable that closes without an end(). Skipped when `revoke` is supplied:
|
|
121
|
+
// the caller owns unregistration, and a subscription shared by many subscribers must not be
|
|
122
|
+
// mutated once per registrant.
|
|
123
|
+
const originalEnd = typeof subscription.end === 'function' ? subscription.end.bind(subscription) : null;
|
|
124
|
+
if (originalEnd) {
|
|
125
|
+
subscription.end = function (...args) {
|
|
126
|
+
unregister();
|
|
127
|
+
return originalEnd(...args);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
subscription.on?.('close', unregister);
|
|
96
131
|
}
|
|
97
|
-
subscription.on?.('close', unregister);
|
|
98
132
|
ensureStarted();
|
|
133
|
+
return { unregister };
|
|
134
|
+
}
|
|
135
|
+
/** Untrack first: a `terminate` that hangs or fails must not wedge the sweep or be re-entered by a later one. */
|
|
136
|
+
function terminateEntry(entry, reason, notice = harper_logger_ts_1.default.info) {
|
|
137
|
+
registry.delete(entry);
|
|
138
|
+
safeLog(notice, `liveSubscriptionAuth: revoking subscription for ${entry.username} (${reason})`);
|
|
139
|
+
const failed = (error) => safeLog(harper_logger_ts_1.default.error, `liveSubscriptionAuth: terminate failed for ${entry.username} (${reason}): ${errorMessage(error)}`);
|
|
140
|
+
try {
|
|
141
|
+
// an async terminate's rejection would otherwise surface as an unhandled rejection on the timer's stack
|
|
142
|
+
Promise.resolve(entry.terminate()).catch(failed);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
failed(error);
|
|
146
|
+
}
|
|
99
147
|
}
|
|
100
148
|
async function sweep() {
|
|
101
149
|
if (sweeping)
|
|
102
150
|
return; // a slow recheck must not overlap with the next tick/event
|
|
103
151
|
sweeping = true;
|
|
152
|
+
// the per-subscriber lines are info, which the shipped default (logging.level: warn) drops; one
|
|
153
|
+
// aggregate keeps the pass visible without making a mass role change a warn per subscriber
|
|
154
|
+
const revokedByReason = new Map();
|
|
155
|
+
const countRevocation = (reason) => revokedByReason.set(reason, (revokedByReason.get(reason) ?? 0) + 1);
|
|
104
156
|
try {
|
|
105
|
-
|
|
106
|
-
for (const entry of registry) {
|
|
157
|
+
// snapshot bounds the pass to entries present at its start; the has() guards cover the rest
|
|
158
|
+
for (const entry of Array.from(registry)) {
|
|
159
|
+
if (!registry.has(entry))
|
|
160
|
+
continue;
|
|
107
161
|
try {
|
|
108
|
-
const expired = entry.authExpiresAt != null && now >= entry.authExpiresAt * 1000;
|
|
162
|
+
const expired = entry.authExpiresAt != null && Date.now() >= entry.authExpiresAt * 1000;
|
|
109
163
|
const stillAuthorized = expired ? false : await entry.recheck();
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
164
|
+
if (!registry.has(entry))
|
|
165
|
+
continue;
|
|
166
|
+
if (expired || !stillAuthorized) {
|
|
167
|
+
const reason = expired ? 'token expired' : 'no longer authorized';
|
|
168
|
+
terminateEntry(entry, reason);
|
|
169
|
+
countRevocation(reason);
|
|
114
170
|
}
|
|
115
171
|
}
|
|
116
172
|
catch (error) {
|
|
117
173
|
// fail closed: if authorization can't be confirmed, revoke
|
|
118
|
-
registry.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
catch {
|
|
123
|
-
/* ignore */
|
|
174
|
+
if (registry.has(entry)) {
|
|
175
|
+
terminateEntry(entry, `recheck error: ${errorMessage(error)}`, harper_logger_ts_1.default.warn);
|
|
176
|
+
countRevocation('recheck error');
|
|
124
177
|
}
|
|
125
|
-
harper_logger_ts_1.default.warn?.(`liveSubscriptionAuth: revoked subscription for ${entry.username} after recheck error: ${error.message}`);
|
|
126
178
|
}
|
|
127
179
|
}
|
|
128
180
|
}
|
|
129
181
|
finally {
|
|
130
182
|
sweeping = false;
|
|
131
183
|
stopIfIdle();
|
|
184
|
+
if (revokedByReason.size > 0) {
|
|
185
|
+
let total = 0;
|
|
186
|
+
for (const count of revokedByReason.values())
|
|
187
|
+
total += count;
|
|
188
|
+
const breakdown = Array.from(revokedByReason, ([reason, count]) => `${reason}: ${count}`).join(', ');
|
|
189
|
+
safeLog(harper_logger_ts_1.default.warn,
|
|
190
|
+
// "revoking", like the per-subscriber line: teardown is dispatched, not awaited, and a
|
|
191
|
+
// failure surfaces on its own error line
|
|
192
|
+
`liveSubscriptionAuth: revoking ${total} live subscription${total === 1 ? '' : 's'} (${breakdown})`);
|
|
193
|
+
}
|
|
132
194
|
}
|
|
133
195
|
}
|
|
134
196
|
/** Test-only: current number of tracked subscriptions. */
|
|
135
197
|
function _liveSubscriptionCount() {
|
|
136
198
|
return registry.size;
|
|
137
199
|
}
|
|
200
|
+
/** Test-only: run a sweep synchronously, bypassing the interval/ITC triggers. */
|
|
201
|
+
function _sweepNow() {
|
|
202
|
+
return sweep();
|
|
203
|
+
}
|
|
138
204
|
//# sourceMappingURL=liveSubscriptionAuth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveSubscriptionAuth.js","sourceRoot":"","sources":["../../server/liveSubscriptionAuth.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"liveSubscriptionAuth.js","sourceRoot":"","sources":["../../server/liveSubscriptionAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const { isMainThread } = require('worker_threads');
|
|
3
3
|
const { getTables } = require("../resources/databases.js");
|
|
4
|
-
const { loadComponentDirectories, loadComponent } = require("../components/componentLoader.js");
|
|
4
|
+
const { loadComponentDirectories, loadComponent, readyComponentModules } = require("../components/componentLoader.js");
|
|
5
5
|
const { resetResources } = require("../resources/Resources.js");
|
|
6
6
|
const configUtils = require("../config/configUtils.js");
|
|
7
7
|
const { dirname } = require('path');
|
|
8
8
|
const { loadCertificates } = require("../security/keys.js");
|
|
9
|
-
const { installApplications } = require("../components/Application.js");
|
|
9
|
+
const { installApplications, recoverInterruptedActivations } = require("../components/Application.js");
|
|
10
10
|
const { errorForLog } = require("../utility/logging/harper_logger.js");
|
|
11
|
+
const { CONFIG_PARAMS } = require("../utility/hdbTerms.js");
|
|
11
12
|
let loadedComponents = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Map every component directory to the reason activation recovery could not run. Used only when the scan
|
|
15
|
+
* fails globally, where the safe answer is "none of these are known-good" rather than "all of these are".
|
|
16
|
+
*/
|
|
17
|
+
async function failEveryComponentClosed(cause) {
|
|
18
|
+
const failures = new Map();
|
|
19
|
+
const reason = cause instanceof Error ? cause : new Error(`Activation recovery could not run: ${String(cause)}`);
|
|
20
|
+
try {
|
|
21
|
+
const { readdir } = require('node:fs/promises');
|
|
22
|
+
const componentsRoot = configUtils.getConfigPath(CONFIG_PARAMS.COMPONENTSROOT);
|
|
23
|
+
for (const entry of await readdir(componentsRoot, { withFileTypes: true })) {
|
|
24
|
+
if (!entry.name.startsWith('.') && (entry.isDirectory() || entry.isSymbolicLink())) {
|
|
25
|
+
failures.set(entry.name, reason);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(errorForLog(error));
|
|
31
|
+
}
|
|
32
|
+
return failures;
|
|
33
|
+
}
|
|
12
34
|
/**
|
|
13
35
|
* This is main entry point for loading the main set of global server modules that power Harper.
|
|
14
36
|
* @returns {Promise<void>}
|
|
15
37
|
*/
|
|
16
38
|
async function loadRootComponents(isWorkerThread = false) {
|
|
39
|
+
// Interrupted activations are settled FIRST, before installApplications() — not merely before the
|
|
40
|
+
// component scan. installApplications() installs whatever the root config names, so a candidate left
|
|
41
|
+
// half-swapped by a crash has to be resolved before that runs, or boot reinstalls over it. Failures are
|
|
42
|
+
// per component and returned, not thrown: the loader fails those components closed and loads the rest.
|
|
43
|
+
// Undefined, not an empty Map: a worker skips this branch entirely, and handing the loader an empty map
|
|
44
|
+
// would assert "nothing is unreconciled" on a thread that never checked. The loader treats undefined as
|
|
45
|
+
// "no verdict from boot" instead.
|
|
46
|
+
let interruptedActivationFailures;
|
|
47
|
+
try {
|
|
48
|
+
if (isMainThread && !process.env.HARPER_SAFE_MODE) {
|
|
49
|
+
interruptedActivationFailures = await recoverInterruptedActivations(configUtils.getConfigPath(CONFIG_PARAMS.COMPONENTSROOT));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// The scan itself failed, so WHICH components are unsettled is unknown — loading them all would
|
|
54
|
+
// defeat the fail-closed contract this pass exists for. Every component present is failed closed
|
|
55
|
+
// instead, and a later reload cycle retries once the cause is gone.
|
|
56
|
+
console.error(errorForLog(error));
|
|
57
|
+
interruptedActivationFailures = await failEveryComponentClosed(error);
|
|
58
|
+
}
|
|
17
59
|
try {
|
|
18
60
|
if (isMainThread && !process.env.HARPER_SAFE_MODE)
|
|
19
61
|
await installApplications();
|
|
@@ -33,15 +75,12 @@ async function loadRootComponents(isWorkerThread = false) {
|
|
|
33
75
|
});
|
|
34
76
|
if (!process.env.HARPER_SAFE_MODE) {
|
|
35
77
|
// once the global plugins are loaded, we now load all the CF and run applications (and their components)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (serverModule.ready)
|
|
41
|
-
allReady.push(serverModule.ready());
|
|
78
|
+
const readyComponentPromises = new WeakMap();
|
|
79
|
+
await loadComponentDirectories(loadedComponents, resources, readyComponentPromises, interruptedActivationFailures);
|
|
80
|
+
await readyComponentModules(loadedComponents.keys(), readyComponentPromises);
|
|
81
|
+
return;
|
|
42
82
|
}
|
|
43
|
-
|
|
44
|
-
await Promise.all(allReady);
|
|
83
|
+
await readyComponentModules(loadedComponents.keys());
|
|
45
84
|
}
|
|
46
85
|
module.exports.loadRootComponents = loadRootComponents;
|
|
47
86
|
//# sourceMappingURL=loadRootComponents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadRootComponents.js","sourceRoot":"","sources":["../../server/loadRootComponents.js"],"names":[],"mappings":";AAAA,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACnD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAC3D,MAAM,EAAE,wBAAwB,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"loadRootComponents.js","sourceRoot":"","sources":["../../server/loadRootComponents.js"],"names":[],"mappings":"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"}
|
package/dist/server/mqtt.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export declare function bypassAuth(): void;
|
|
2
2
|
export declare function handleApplication(scope: import('../components/Scope.ts').Scope): void;
|
|
3
|
+
/** v3.1.1 has no server-to-client DISCONNECT, so those connections are only closed. */
|
|
4
|
+
export declare function disconnectClientsForShutdown(): void;
|