@harperfast/harper 5.2.13 → 5.3.0-beta.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 +58 -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 +120 -4
- package/bin/run.ts +6 -11
- package/bin/upgrade.js +7 -3
- package/bin/workloadIdentity.ts +119 -0
- package/components/Application.ts +3436 -242
- package/components/ApplicationScope.ts +8 -0
- package/components/EntryHandler.ts +59 -39
- package/components/OptionsWatcher.ts +440 -98
- package/components/RuntimeModuleTracker.ts +38 -7
- package/components/Scope.ts +56 -15
- package/components/awaitRestart.ts +84 -0
- package/components/componentLoader.ts +381 -32
- package/components/componentPreparationLock.ts +16 -5
- package/components/deploymentOperations.ts +4 -1
- package/components/deploymentRecorder.ts +9 -2
- 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 +537 -113
- package/components/operationsValidation.js +98 -3
- package/components/packageComponent.ts +25 -1
- package/components/requestRestart.ts +11 -0
- package/components/status/ComponentStatusRegistry.ts +59 -0
- package/config/RootConfigWatcher.ts +240 -40
- package/config/configReadRetry.ts +62 -0
- package/config/configUtils.ts +357 -48
- package/config/harperConfigEnvVars.ts +170 -27
- package/config/parseConfigFile.ts +34 -0
- package/config/readConfigFileSync.ts +44 -0
- package/config/watcherArming.ts +59 -0
- package/config-root.schema.json +33 -0
- package/dataLayer/blobBackup.ts +160 -50
- package/dataLayer/delete.ts +6 -1
- package/dataLayer/harperBridge/ResourceBridge.ts +80 -10
- 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 +61 -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 +91 -6
- 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 +235 -17
- package/dist/components/Application.js +3038 -238
- 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 +4 -0
- package/dist/components/OptionsWatcher.js +440 -99
- 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 +52 -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 +313 -24
- 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/deploymentOperations.js +4 -1
- package/dist/components/deploymentOperations.js.map +1 -1
- package/dist/components/deploymentRecorder.d.ts +4 -2
- package/dist/components/deploymentRecorder.js +1 -0
- package/dist/components/deploymentRecorder.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.d.ts +28 -0
- package/dist/components/operations.js +476 -113
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +97 -3
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/packageComponent.js +24 -0
- package/dist/components/packageComponent.js.map +1 -1
- package/dist/components/requestRestart.d.ts +1 -0
- package/dist/components/requestRestart.js +7 -0
- package/dist/components/requestRestart.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 +9 -1
- package/dist/config/RootConfigWatcher.js +228 -37
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configReadRetry.d.ts +8 -0
- package/dist/config/configReadRetry.js +62 -0
- package/dist/config/configReadRetry.js.map +1 -0
- package/dist/config/configUtils.d.ts +11 -2
- package/dist/config/configUtils.js +304 -47
- 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/config/parseConfigFile.d.ts +4 -0
- package/dist/config/parseConfigFile.js +35 -0
- package/dist/config/parseConfigFile.js.map +1 -0
- package/dist/config/readConfigFileSync.d.ts +1 -0
- package/dist/config/readConfigFileSync.js +47 -0
- package/dist/config/readConfigFileSync.js.map +1 -0
- package/dist/config/watcherArming.d.ts +15 -0
- package/dist/config/watcherArming.js +59 -0
- package/dist/config/watcherArming.js.map +1 -0
- 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 +72 -12
- 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 +2 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +55 -0
- package/dist/resources/DatabaseTransaction.d.ts +77 -0
- package/dist/resources/DatabaseTransaction.js +586 -54
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/LMDBTransaction.d.ts +2 -1
- package/dist/resources/LMDBTransaction.js +43 -6
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
- package/dist/resources/PrimaryRocksDatabase.js +49 -5
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +20 -0
- package/dist/resources/RecordEncoder.js +110 -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 +117 -24
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +28 -1
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/RocksIndexStore.d.ts +6 -1
- package/dist/resources/RocksIndexStore.js +24 -9
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +24 -1
- package/dist/resources/RocksTransactionLogStore.js +160 -49
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +165 -10
- package/dist/resources/Table.js +1805 -303
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/write.js +10 -3
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.d.ts +181 -2
- package/dist/resources/auditStore.js +640 -29
- 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/dataLoader.js +3 -4
- package/dist/resources/dataLoader.js.map +1 -1
- package/dist/resources/databases.d.ts +157 -14
- package/dist/resources/databases.js +1462 -325
- 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/derivedIndexRegistry.d.ts +5 -0
- package/dist/resources/derivedIndexRegistry.js +68 -0
- package/dist/resources/derivedIndexRegistry.js.map +1 -0
- package/dist/resources/derivedIndexRuntime.d.ts +215 -0
- package/dist/resources/derivedIndexRuntime.js +2027 -0
- package/dist/resources/derivedIndexRuntime.js.map +1 -0
- package/dist/resources/graphql.d.ts +1 -1
- package/dist/resources/graphql.js +52 -16
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +103 -9
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +854 -41
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/indexes/hnswDerivedIndex.d.ts +67 -0
- package/dist/resources/indexes/hnswDerivedIndex.js +464 -0
- package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -0
- package/dist/resources/indexes/hnswPlaneBinding.d.ts +65 -0
- package/dist/resources/indexes/hnswPlaneBinding.js +91 -0
- package/dist/resources/indexes/hnswPlaneBinding.js.map +1 -0
- 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/nodeIdMapping.d.ts +5 -0
- package/dist/resources/nodeIdMapping.js +49 -0
- package/dist/resources/nodeIdMapping.js.map +1 -1
- package/dist/resources/recordLock.d.ts +123 -0
- package/dist/resources/recordLock.js +315 -0
- package/dist/resources/recordLock.js.map +1 -0
- package/dist/resources/recordLockCoordinator.d.ts +557 -0
- package/dist/resources/recordLockCoordinator.js +2565 -0
- package/dist/resources/recordLockCoordinator.js.map +1 -0
- package/dist/resources/replayLogs.d.ts +14 -1
- package/dist/resources/replayLogs.js +157 -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/replicatedApplyFailure.d.ts +16 -0
- package/dist/resources/replicatedApplyFailure.js +63 -0
- package/dist/resources/replicatedApplyFailure.js.map +1 -0
- package/dist/resources/scheduler/scheduler.js +3 -3
- package/dist/resources/scheduler/scheduler.js.map +1 -1
- package/dist/resources/search.d.ts +10 -4
- package/dist/resources/search.js +283 -37
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/tracked.d.ts +5 -1
- package/dist/resources/tracked.js +74 -23
- package/dist/resources/tracked.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 +77 -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 +106 -2
- 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 +16 -1
- package/dist/server/http.js +122 -17
- 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 +27 -0
- package/dist/server/serverHelpers/Headers.js +145 -1
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/NodeAdapterResponse.d.ts +48 -0
- package/dist/server/serverHelpers/NodeAdapterResponse.js +220 -0
- package/dist/server/serverHelpers/NodeAdapterResponse.js.map +1 -0
- package/dist/server/serverHelpers/Request.d.ts +5 -10
- package/dist/server/serverHelpers/Request.js +38 -136
- package/dist/server/serverHelpers/Request.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +11 -0
- package/dist/server/serverHelpers/contentTypes.js +221 -40
- 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 +178 -29
- 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 +17 -1
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/isolatedApplications.d.ts +47 -0
- package/dist/server/threads/isolatedApplications.js +171 -0
- package/dist/server/threads/isolatedApplications.js.map +1 -0
- 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/logRotationTransport.d.ts +1 -0
- package/dist/server/threads/logRotationTransport.js +33 -0
- package/dist/server/threads/logRotationTransport.js.map +1 -0
- package/dist/server/threads/manageThreads.d.ts +83 -3
- package/dist/server/threads/manageThreads.js +769 -75
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.d.ts +1 -0
- package/dist/server/threads/socketRouter.js +277 -31
- 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 +76 -22
- 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 +33 -0
- package/dist/utility/errors/hdbError.js +58 -1
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +18 -0
- package/dist/utility/hdbTerms.js +20 -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 +286 -30
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logGenerationCoordinator.d.ts +35 -0
- package/dist/utility/logging/logGenerationCoordinator.js +184 -0
- package/dist/utility/logging/logGenerationCoordinator.js.map +1 -0
- package/dist/utility/logging/logRotation.d.ts +46 -0
- package/dist/utility/logging/logRotation.js +365 -0
- package/dist/utility/logging/logRotation.js.map +1 -0
- package/dist/utility/logging/logRotator.d.ts +1 -1
- package/dist/utility/logging/logRotator.js +192 -85
- 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 +11 -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 +41 -0
- package/dist/utility/watcherFallback.js +153 -0
- package/dist/utility/watcherFallback.js.map +1 -1
- package/dist/validation/configValidator.d.ts +12 -0
- package/dist/validation/configValidator.js +205 -75
- 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 +8 -0
- package/json/systemSchema.json +55 -0
- package/npm-shrinkwrap.json +286 -194
- package/package.json +15 -7
- package/resources/DESIGN.md +219 -52
- package/resources/DatabaseTransaction.ts +657 -52
- package/resources/LMDBTransaction.ts +46 -6
- package/resources/PrimaryRocksDatabase.ts +46 -7
- package/resources/RecordEncoder.ts +124 -9
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +114 -22
- package/resources/ResourceInterface.ts +31 -0
- package/resources/RocksIndexStore.ts +30 -9
- package/resources/RocksTransactionLogStore.ts +188 -51
- package/resources/Table.ts +1960 -301
- package/resources/analytics/write.ts +10 -3
- package/resources/auditStore.ts +647 -32
- package/resources/blob.ts +1029 -110
- package/resources/branchDatabase.ts +941 -0
- package/resources/crdt.ts +76 -12
- package/resources/dataLoader.ts +3 -4
- package/resources/databases.ts +1584 -320
- package/resources/defineTable.ts +18 -2
- package/resources/derivedIndexRegistry.ts +56 -0
- package/resources/derivedIndexRuntime.ts +2292 -0
- package/resources/graphql.ts +72 -17
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +911 -48
- package/resources/indexes/hnswDerivedIndex.ts +531 -0
- package/resources/indexes/hnswPlaneBinding.ts +174 -0
- package/resources/longLivedTransactions.ts +360 -0
- package/resources/models/backendRegistry.ts +84 -2
- package/resources/models/bootstrap.ts +473 -28
- package/resources/nodeIdMapping.ts +50 -0
- package/resources/recordLock.ts +419 -0
- package/resources/recordLockCoordinator.ts +3043 -0
- package/resources/replayLogs.ts +152 -26
- package/resources/replayLogsGuards.ts +171 -8
- package/resources/replicatedApplyFailure.ts +77 -0
- package/resources/scheduler/scheduler.ts +4 -4
- package/resources/search.ts +288 -46
- package/resources/tracked.ts +73 -22
- 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 +83 -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 +194 -16
- package/server/DurableSubscriptionsSession.ts +71 -11
- package/server/REST.ts +115 -4
- package/server/graphqlQuerying.ts +4 -0
- package/server/http.ts +133 -20
- 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 +135 -0
- package/server/serverHelpers/NodeAdapterResponse.ts +221 -0
- package/server/serverHelpers/Request.ts +33 -131
- package/server/serverHelpers/contentTypes.ts +217 -36
- 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 +232 -40
- package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
- package/server/serverHelpers/uwsServer.ts +17 -2
- package/server/static.ts +23 -29
- package/server/storageReclamation.ts +15 -2
- package/server/threads/isolatedApplications.ts +157 -0
- package/server/threads/itc.js +11 -1
- package/server/threads/logRotationTransport.ts +40 -0
- package/server/threads/manageThreads.js +771 -66
- package/server/threads/socketRouter.ts +291 -30
- package/server/threads/threadHeapMemory.ts +26 -0
- package/server/threads/threadServer.js +73 -22
- package/sqlTranslator/index.ts +31 -8
- package/studio/web/assets/{Chat-4RrB5134.js → Chat-D3j-1yY1.js} +1 -1
- package/studio/web/assets/{FloatingChat-omlNMDcJ.js → FloatingChat-BxJGYcfB.js} +3 -3
- package/studio/web/assets/{apiToken-Bke3wvfZ.js → apiToken-CT55oWOe.js} +1 -1
- package/studio/web/assets/{applications-DvFDYJgK.js → applications-D9Ct9_vm.js} +1 -1
- package/studio/web/assets/{cssMode-C1vRa7zh.js → cssMode-DV8H7VwA.js} +1 -1
- package/studio/web/assets/{editor-3XRWEDWX.js → editor-uatc0unt.js} +1 -1
- package/studio/web/assets/{html-CTY5tdMr.js → html-Bm6D6paN.js} +1 -1
- package/studio/web/assets/{htmlMode-CG1vSD9t.js → htmlMode-CEn7tpLG.js} +1 -1
- package/studio/web/assets/{index-Dfpeofdu.js → index-BIXW6Pu4.js} +5 -5
- package/studio/web/assets/{index.lazy-B1VOIv-t.js → index.lazy-UI7L-Vrk.js} +1 -1
- package/studio/web/assets/{javascript-CJeJzGnI.js → javascript-CJ0G3AFZ.js} +1 -1
- package/studio/web/assets/{jsonMode-CYPBwM82.js → jsonMode-DQADAYEa.js} +1 -1
- package/studio/web/assets/{languageServices-IKH4GUHl.js → languageServices-CAQJXWcI.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-BC8_gxKG.js → lspLanguageFeatures-CCQ8P5sY.js} +1 -1
- package/studio/web/assets/{notifications-BfKBpYcq.js → notifications-BbxTU6Aw.js} +1 -1
- package/studio/web/assets/{notifications-DFbArTfC.js → notifications-Cvb3P1lB.js} +1 -1
- package/studio/web/assets/{profile-Q4-T6c-S.js → profile-Yyb7gsvL.js} +1 -1
- package/studio/web/assets/{regions-CtkV0xje.js → regions-OgjGHlU5.js} +1 -1
- package/studio/web/assets/{register-1ZZuMsiA.js → register-6qwNEOY3.js} +2 -2
- package/studio/web/assets/{setComponentFile-ZWLcWv5X.js → setComponentFile-BilDMtgB.js} +1 -1
- package/studio/web/assets/{setup-DWprJyJy.js → setup-J6qJ7OIU.js} +2 -2
- package/studio/web/assets/{status--aNm8isn.js → status-0RWGcfyD.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-Cq_lt3XD.js → toggleHighContrast-BIn-vErT.js} +1 -1
- package/studio/web/assets/{tsMode-pjgytARx.js → tsMode-DgUXku4d.js} +1 -1
- package/studio/web/assets/{typescript-Cdg0mqUh.js → typescript-C9orXcsM.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-RZhaY8Rn.js → useEntityRestURL-BEoXXbUB.js} +1 -1
- package/studio/web/assets/{workers-BgoXIqQe.js → workers-JVzSDmgx.js} +1 -1
- package/studio/web/assets/{xml-BwSeDMiP.js → xml-Cq-S8S4X.js} +1 -1
- package/studio/web/assets/{yaml-DotCUG5l.js → yaml-sfoRdh1M.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 +57 -0
- package/utility/hdbTerms.ts +19 -0
- package/utility/logging/harper_logger.ts +278 -26
- package/utility/logging/logGenerationCoordinator.ts +196 -0
- package/utility/logging/logRotation.ts +367 -0
- package/utility/logging/logRotator.ts +213 -81
- package/utility/nodeIdentity.ts +45 -0
- package/utility/npmUtilities.ts +12 -8
- package/utility/operationPermissions.ts +18 -1
- package/utility/operation_authorization.ts +231 -42
- package/utility/watchPath.ts +63 -0
- package/utility/watcherFallback.ts +148 -0
- package/validation/configValidator.ts +215 -75
- package/validation/installValidator.ts +15 -0
- package/validation/validationWrapper.ts +18 -4
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const DEFAULT_MAX_ISOLATED_APPLICATIONS = 8;
|
|
2
|
+
/** The application this thread is dedicated to, if it is a dedicated worker. */
|
|
3
|
+
export declare function thisThreadsIsolatedApplication(): string | undefined;
|
|
4
|
+
export declare function thisThreadOwnsApplication(appName: string | undefined, owner?: string | undefined): boolean;
|
|
5
|
+
export declare function isIsolatedApplication(appName: string, config?: Record<string, any> | undefined): boolean;
|
|
6
|
+
/** Every application the root config marks isolated, in config order. */
|
|
7
|
+
export declare function isolatedApplicationNames(config?: Record<string, any> | undefined): string[];
|
|
8
|
+
export declare function presentIsolatedApplicationNames(config?: Record<string, any> | undefined, componentsRoot?: string, installedRoot?: string, runApplicationPath?: string | undefined): string[];
|
|
9
|
+
export declare function maxIsolatedApplications(): number;
|
|
10
|
+
/** Why `appName` cannot claim a place in the dedicated-worker budget, if the budget is full. */
|
|
11
|
+
export declare function isolatedApplicationCapacityRefusal(appName: string, runningApplications: Iterable<string>, max?: number): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Whether the calling thread is the one that loads the application `appName` (an application: a
|
|
14
|
+
* directory under componentsRoot, or a root-config entry with `package`). A dedicated worker loads
|
|
15
|
+
* only its own application; every other thread -- pool workers and the main thread alike -- loads only
|
|
16
|
+
* the applications that are not isolated. Decided before any of the application's modules are
|
|
17
|
+
* imported, so a skipped application has no side effects on the thread that skipped it.
|
|
18
|
+
*/
|
|
19
|
+
export declare function shouldLoadApplicationHere(appName: string, owner?: string | undefined, config?: Record<string, any> | undefined): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Whether this thread starts the uWS listener for one `uwsServeConfigs` entry (see listenOnPorts()).
|
|
22
|
+
* A dedicated worker starts only its own per-application UDS mirrors -- the entries that carry a
|
|
23
|
+
* `socketPath` -- and never a global port listener, which the kernel would hand connections for every
|
|
24
|
+
* other application.
|
|
25
|
+
*/
|
|
26
|
+
export declare function shouldStartUwsListenerHere(serveConfig: {
|
|
27
|
+
socketPath?: string;
|
|
28
|
+
}, owner?: string | undefined): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether a dedicated worker can be reached at all: it binds only UDS mirrors of the secure port, so
|
|
31
|
+
* without `tls.unixDomainSockets` and a secure port an isolated application would load and answer
|
|
32
|
+
* nothing, silently. Refused at admission instead. Returns the reason, or undefined when reachable.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isolatedApplicationsUnreachableReason(platform?: NodeJS.Platform): string | undefined;
|
|
35
|
+
/** Why `appName` cannot get a dedicated worker on this instance, or undefined when it can. */
|
|
36
|
+
export declare function isolatedApplicationRefusal(appName: string): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* The filesystem name of an isolated worker's UDS mirror for `port`: every UTF-8 byte outside
|
|
39
|
+
* `[A-Za-z0-9._]` becomes a fixed-width `%XX`, which is injective (two application names never share
|
|
40
|
+
* a socket), and the `app-` prefix keeps it apart from the pool's `<workerIndex>-<port>` names.
|
|
41
|
+
*/
|
|
42
|
+
export declare function applicationSocketName(appName: string, port: number | string): string;
|
|
43
|
+
/** What a dedicated worker publishes in its mirror metadata for the proxy to route by. */
|
|
44
|
+
export declare function isolatedApplicationRoute(appName?: string | undefined, config?: Record<string, any> | undefined): {
|
|
45
|
+
application: string;
|
|
46
|
+
hosts: string[];
|
|
47
|
+
} | undefined;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DEFAULT_MAX_ISOLATED_APPLICATIONS = void 0;
|
|
37
|
+
exports.thisThreadsIsolatedApplication = thisThreadsIsolatedApplication;
|
|
38
|
+
exports.thisThreadOwnsApplication = thisThreadOwnsApplication;
|
|
39
|
+
exports.isIsolatedApplication = isIsolatedApplication;
|
|
40
|
+
exports.isolatedApplicationNames = isolatedApplicationNames;
|
|
41
|
+
exports.presentIsolatedApplicationNames = presentIsolatedApplicationNames;
|
|
42
|
+
exports.maxIsolatedApplications = maxIsolatedApplications;
|
|
43
|
+
exports.isolatedApplicationCapacityRefusal = isolatedApplicationCapacityRefusal;
|
|
44
|
+
exports.shouldLoadApplicationHere = shouldLoadApplicationHere;
|
|
45
|
+
exports.shouldStartUwsListenerHere = shouldStartUwsListenerHere;
|
|
46
|
+
exports.isolatedApplicationsUnreachableReason = isolatedApplicationsUnreachableReason;
|
|
47
|
+
exports.isolatedApplicationRefusal = isolatedApplicationRefusal;
|
|
48
|
+
exports.applicationSocketName = applicationSocketName;
|
|
49
|
+
exports.isolatedApplicationRoute = isolatedApplicationRoute;
|
|
50
|
+
/**
|
|
51
|
+
* Isolated applications: an application whose root-config entry carries `isolated: true` runs in a
|
|
52
|
+
* worker thread of its own that loads no other application (harper#642, tier 2).
|
|
53
|
+
*
|
|
54
|
+
* The invariant every helper here serves: an isolated application is loaded by exactly one thread,
|
|
55
|
+
* and that thread loads nothing else. The dedicated worker is an ordinary `http` worker by type --
|
|
56
|
+
* so restarts, overlap rules and shutdown treat it as one -- distinguished only by
|
|
57
|
+
* `workerData.isolatedApplication`. It binds none of the public ports (the kernel would hand it
|
|
58
|
+
* connections for every other application) and is reachable only through its own UDS mirror, whose
|
|
59
|
+
* metadata names the application and its hosts for the fronting proxy to route by.
|
|
60
|
+
*/
|
|
61
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
62
|
+
const manageThreads_js_1 = require("./manageThreads.js");
|
|
63
|
+
const configUtils_ts_1 = require("../../config/configUtils.js");
|
|
64
|
+
const env = __importStar(require("../../utility/environment/environmentManager.js"));
|
|
65
|
+
const hdbTerms_ts_1 = require("../../utility/hdbTerms.js");
|
|
66
|
+
const domainSocket_ts_1 = require("../../utility/domainSocket.js");
|
|
67
|
+
const node_fs_1 = require("node:fs");
|
|
68
|
+
const node_path_1 = require("node:path");
|
|
69
|
+
exports.DEFAULT_MAX_ISOLATED_APPLICATIONS = 8;
|
|
70
|
+
/** The application this thread is dedicated to, if it is a dedicated worker. */
|
|
71
|
+
function thisThreadsIsolatedApplication() {
|
|
72
|
+
return node_worker_threads_1.workerData?.isolatedApplication;
|
|
73
|
+
}
|
|
74
|
+
function thisThreadOwnsApplication(appName, owner = thisThreadsIsolatedApplication()) {
|
|
75
|
+
return owner !== undefined && appName === owner;
|
|
76
|
+
}
|
|
77
|
+
function isIsolatedApplication(appName, config = (0, configUtils_ts_1.getConfigObj)()) {
|
|
78
|
+
const entry = config?.[appName];
|
|
79
|
+
return typeof entry === 'object' && entry !== null && entry.isolated === true;
|
|
80
|
+
}
|
|
81
|
+
/** Every application the root config marks isolated, in config order. */
|
|
82
|
+
function isolatedApplicationNames(config = (0, configUtils_ts_1.getConfigObj)()) {
|
|
83
|
+
if (!config)
|
|
84
|
+
return [];
|
|
85
|
+
return Object.keys(config).filter((name) => isIsolatedApplication(name, config));
|
|
86
|
+
}
|
|
87
|
+
function presentIsolatedApplicationNames(config = (0, configUtils_ts_1.getConfigObj)(), componentsRoot = (0, configUtils_ts_1.getConfigPath)(hdbTerms_ts_1.CONFIG_PARAMS.COMPONENTSROOT), installedRoot = (0, node_path_1.join)(env.get(hdbTerms_ts_1.CONFIG_PARAMS.ROOTPATH), 'components'), runApplicationPath = process.env.RUN_HDB_APP) {
|
|
88
|
+
return isolatedApplicationNames(config).filter((application) => (0, node_fs_1.existsSync)((0, node_path_1.join)(componentsRoot, application)) ||
|
|
89
|
+
(0, node_fs_1.existsSync)((0, node_path_1.join)(installedRoot, application)) ||
|
|
90
|
+
(runApplicationPath && (0, node_path_1.basename)(runApplicationPath) === application));
|
|
91
|
+
}
|
|
92
|
+
function maxIsolatedApplications() {
|
|
93
|
+
const configured = Number(env.get(hdbTerms_ts_1.CONFIG_PARAMS.THREADS_MAXISOLATED));
|
|
94
|
+
return Number.isInteger(configured) && configured >= 0 ? configured : exports.DEFAULT_MAX_ISOLATED_APPLICATIONS;
|
|
95
|
+
}
|
|
96
|
+
/** Why `appName` cannot claim a place in the dedicated-worker budget, if the budget is full. */
|
|
97
|
+
function isolatedApplicationCapacityRefusal(appName, runningApplications, max = maxIsolatedApplications()) {
|
|
98
|
+
const running = new Set(runningApplications);
|
|
99
|
+
if (running.has(appName) || running.size < max)
|
|
100
|
+
return undefined;
|
|
101
|
+
return `the instance already runs ${max} isolated application(s) (threads.maxIsolated)`;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Whether the calling thread is the one that loads the application `appName` (an application: a
|
|
105
|
+
* directory under componentsRoot, or a root-config entry with `package`). A dedicated worker loads
|
|
106
|
+
* only its own application; every other thread -- pool workers and the main thread alike -- loads only
|
|
107
|
+
* the applications that are not isolated. Decided before any of the application's modules are
|
|
108
|
+
* imported, so a skipped application has no side effects on the thread that skipped it.
|
|
109
|
+
*/
|
|
110
|
+
function shouldLoadApplicationHere(appName, owner = thisThreadsIsolatedApplication(), config = (0, configUtils_ts_1.getConfigObj)()) {
|
|
111
|
+
if (owner !== undefined)
|
|
112
|
+
return appName === owner;
|
|
113
|
+
return !isIsolatedApplication(appName, config);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Whether this thread starts the uWS listener for one `uwsServeConfigs` entry (see listenOnPorts()).
|
|
117
|
+
* A dedicated worker starts only its own per-application UDS mirrors -- the entries that carry a
|
|
118
|
+
* `socketPath` -- and never a global port listener, which the kernel would hand connections for every
|
|
119
|
+
* other application.
|
|
120
|
+
*/
|
|
121
|
+
function shouldStartUwsListenerHere(serveConfig, owner = thisThreadsIsolatedApplication()) {
|
|
122
|
+
return owner === undefined || Boolean(serveConfig.socketPath);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether a dedicated worker can be reached at all: it binds only UDS mirrors of the secure port, so
|
|
126
|
+
* without `tls.unixDomainSockets` and a secure port an isolated application would load and answer
|
|
127
|
+
* nothing, silently. Refused at admission instead. Returns the reason, or undefined when reachable.
|
|
128
|
+
*/
|
|
129
|
+
function isolatedApplicationsUnreachableReason(platform = process.platform) {
|
|
130
|
+
if (platform === 'win32')
|
|
131
|
+
return 'Windows does not support per-application UDS mirrors';
|
|
132
|
+
// the main thread standing in as the only worker (threads.count: 0) has no thread to give
|
|
133
|
+
if (node_worker_threads_1.isMainThread && (0, manageThreads_js_1.getWorkerIndex)() === 0)
|
|
134
|
+
return 'threads.count is 0, so there is no worker thread to dedicate';
|
|
135
|
+
if (!env.get(hdbTerms_ts_1.CONFIG_PARAMS.HTTP_SECUREPORT))
|
|
136
|
+
return 'no http.securePort is configured';
|
|
137
|
+
if (!env.get(hdbTerms_ts_1.CONFIG_PARAMS.TLS_UNIXDOMAINSOCKETS))
|
|
138
|
+
return 'tls.unixDomainSockets is not enabled';
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
/** Why `appName` cannot get a dedicated worker on this instance, or undefined when it can. */
|
|
142
|
+
function isolatedApplicationRefusal(appName) {
|
|
143
|
+
const unreachable = isolatedApplicationsUnreachableReason();
|
|
144
|
+
if (unreachable)
|
|
145
|
+
return `its worker would be unreachable: ${unreachable}`;
|
|
146
|
+
const socketPath = (0, node_path_1.join)(env.getHdbBasePath(), 'sockets', `${applicationSocketName(appName, env.get(hdbTerms_ts_1.CONFIG_PARAMS.HTTP_SECUREPORT))}.sock`);
|
|
147
|
+
if ((0, domainSocket_ts_1.isDomainSocketPathTooLong)(socketPath))
|
|
148
|
+
return `its UDS mirror path ${socketPath} exceeds the platform limit`;
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The filesystem name of an isolated worker's UDS mirror for `port`: every UTF-8 byte outside
|
|
153
|
+
* `[A-Za-z0-9._]` becomes a fixed-width `%XX`, which is injective (two application names never share
|
|
154
|
+
* a socket), and the `app-` prefix keeps it apart from the pool's `<workerIndex>-<port>` names.
|
|
155
|
+
*/
|
|
156
|
+
function applicationSocketName(appName, port) {
|
|
157
|
+
let encoded = '';
|
|
158
|
+
for (const byte of Buffer.from(appName, 'utf8')) {
|
|
159
|
+
const c = String.fromCharCode(byte);
|
|
160
|
+
encoded += byte < 0x80 && /[A-Za-z0-9._]/.test(c) ? c : `%${byte.toString(16).toUpperCase().padStart(2, '0')}`;
|
|
161
|
+
}
|
|
162
|
+
return `app-${encoded}-${port}`;
|
|
163
|
+
}
|
|
164
|
+
/** What a dedicated worker publishes in its mirror metadata for the proxy to route by. */
|
|
165
|
+
function isolatedApplicationRoute(appName = thisThreadsIsolatedApplication(), config = (0, configUtils_ts_1.getConfigObj)()) {
|
|
166
|
+
if (!appName)
|
|
167
|
+
return undefined;
|
|
168
|
+
const host = config?.[appName]?.host; // a string, as the mount parser requires
|
|
169
|
+
return { application: appName, hosts: typeof host === 'string' && host ? [host] : [] };
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=isolatedApplications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolatedApplications.js","sourceRoot":"","sources":["../../../server/threads/isolatedApplications.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,11 @@ export function validateEvent(event: any): string;
|
|
|
16
16
|
* @param schema
|
|
17
17
|
* @param table
|
|
18
18
|
* @param attribute
|
|
19
|
+
* @param branchPath the branch directory when the change is to a scope-private branch of `schema`
|
|
20
|
+
* rather than to the database itself (resources/databases.ts `reloadBranchAt`)
|
|
19
21
|
* @constructor
|
|
20
22
|
*/
|
|
21
|
-
export function SchemaEventMsg(originator: any, operation: any, schema: any, table?: any, attribute?: any): void;
|
|
23
|
+
export function SchemaEventMsg(originator: any, operation: any, schema: any, table?: any, attribute?: any, branchPath?: any): void;
|
|
22
24
|
export class SchemaEventMsg {
|
|
23
25
|
/**
|
|
24
26
|
* Constructor function for the message of schema ITC events
|
|
@@ -27,14 +29,17 @@ export class SchemaEventMsg {
|
|
|
27
29
|
* @param schema
|
|
28
30
|
* @param table
|
|
29
31
|
* @param attribute
|
|
32
|
+
* @param branchPath the branch directory when the change is to a scope-private branch of `schema`
|
|
33
|
+
* rather than to the database itself (resources/databases.ts `reloadBranchAt`)
|
|
30
34
|
* @constructor
|
|
31
35
|
*/
|
|
32
|
-
constructor(originator: any, operation: any, schema: any, table?: any, attribute?: any);
|
|
36
|
+
constructor(originator: any, operation: any, schema: any, table?: any, attribute?: any, branchPath?: any);
|
|
33
37
|
originator: any;
|
|
34
38
|
operation: any;
|
|
35
39
|
schema: any;
|
|
36
40
|
table: any;
|
|
37
41
|
attribute: any;
|
|
42
|
+
branchPath: any;
|
|
38
43
|
}
|
|
39
44
|
/**
|
|
40
45
|
* Constructor function for the message of user ITC events
|
|
@@ -64,14 +64,18 @@ function validateEvent(event) {
|
|
|
64
64
|
* @param schema
|
|
65
65
|
* @param table
|
|
66
66
|
* @param attribute
|
|
67
|
+
* @param branchPath the branch directory when the change is to a scope-private branch of `schema`
|
|
68
|
+
* rather than to the database itself (resources/databases.ts `reloadBranchAt`)
|
|
67
69
|
* @constructor
|
|
68
70
|
*/
|
|
69
|
-
function SchemaEventMsg(originator, operation, schema, table = undefined, attribute = undefined) {
|
|
71
|
+
function SchemaEventMsg(originator, operation, schema, table = undefined, attribute = undefined, branchPath = undefined) {
|
|
70
72
|
this.originator = originator;
|
|
71
73
|
this.operation = operation;
|
|
72
74
|
this.schema = schema;
|
|
73
75
|
this.table = table;
|
|
74
76
|
this.attribute = attribute;
|
|
77
|
+
if (branchPath)
|
|
78
|
+
this.branchPath = branchPath;
|
|
75
79
|
}
|
|
76
80
|
/**
|
|
77
81
|
* Constructor function for the message of user ITC events
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itc.js","sourceRoot":"","sources":["../../../server/threads/itc.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACtD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/C,MAAM,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE7F,MAAM,CAAC,OAAO,GAAG;IAChB,YAAY;IACZ,aAAa;IACb,cAAc;IACd,YAAY;CACZ,CAAC;AACF,IAAI,iBAAiB,CAAC;AACtB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAC5C,iBAAiB,GAAG,iBAAiB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC7E,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM;QAC5B,MAAM,CAAC,WAAW,CAAC;YAClB,IAAI,EAAE,KAAK;YACX,EAAE,EAAE,KAAK,CAAC,SAAS;SACnB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAK;IAC1B,sEAAsE;IACtE,mFAAmF;IACnF,uEAAuE;IACvE,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC;IACvD,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAK;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC,qBAAqB,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO,UAAU,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzE,OAAO,UAAU,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/F,OAAO,UAAU,CAAC,cAAc,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"itc.js","sourceRoot":"","sources":["../../../server/threads/itc.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// Hands the log-rotation coordinator the thread mesh it needs, from this side of the dependency
|
|
4
|
+
// edge: manageThreads already imports harper_logger, so logging can never import manageThreads.
|
|
5
|
+
const node_worker_threads_1 = require("node:worker_threads");
|
|
6
|
+
const logGenerationCoordinator_ts_1 = require("../../utility/logging/logGenerationCoordinator.js");
|
|
7
|
+
const manageThreads_js_1 = require("./manageThreads.js");
|
|
8
|
+
(0, logGenerationCoordinator_ts_1.setRotationTransport)({
|
|
9
|
+
threadId: node_worker_threads_1.threadId,
|
|
10
|
+
broadcast(message) {
|
|
11
|
+
(0, manageThreads_js_1.broadcast)(message);
|
|
12
|
+
},
|
|
13
|
+
sendToThread(target, message) {
|
|
14
|
+
threads.sendToThread(target, message);
|
|
15
|
+
},
|
|
16
|
+
onMessage(type, handler) {
|
|
17
|
+
(0, manageThreads_js_1.onMessageByType)(type, handler);
|
|
18
|
+
},
|
|
19
|
+
onThreadExit: manageThreads_js_1.onThreadExit,
|
|
20
|
+
peerThreadIds() {
|
|
21
|
+
// Job workers included: they hold log descriptors whether or not they take part in ITC gossip,
|
|
22
|
+
// and the deadlock that excludes them from the schema broadcast cannot happen here — the
|
|
23
|
+
// handler only closes a descriptor, and no caller blocks its event loop on the answer.
|
|
24
|
+
const ids = new Set();
|
|
25
|
+
for (let i = 0; i < threads.length; i++) {
|
|
26
|
+
const peer = threads[i].threadId;
|
|
27
|
+
if (peer !== undefined && peer !== node_worker_threads_1.threadId)
|
|
28
|
+
ids.add(peer);
|
|
29
|
+
}
|
|
30
|
+
return ids;
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=logRotationTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logRotationTransport.js","sourceRoot":"","sources":["../../../server/threads/logRotationTransport.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,gGAAgG;AAChG,gGAAgG;AAEhG,6DAA+C;AAC/C,mGAAyF;AACzF,yDAA8E;AAS9E,IAAA,kDAAoB,EAAC;IACpB,QAAQ,EAAR,8BAAQ;IACR,SAAS,CAAC,OAAO;QAChB,IAAA,4BAAS,EAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IACD,YAAY,CAAC,MAAM,EAAE,OAAO;QAC3B,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,SAAS,CAAC,IAAI,EAAE,OAAO;QACtB,IAAA,kCAAe,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,YAAY,EAAZ,+BAAY;IACZ,aAAa;QACZ,+FAA+F;QAC/F,yFAAyF;QACzF,uFAAuF;QACvF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,8BAAQ;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -7,14 +7,84 @@ export function startWorker(path: any, options?: {}): Worker;
|
|
|
7
7
|
* threads at the same time we shutdown new ones. However, we usually want to limit how many we do at once to avoid
|
|
8
8
|
* excessive load and to keep things responsive. This parameter throttles the restarts to minimize load from
|
|
9
9
|
* thread startups.
|
|
10
|
-
* @
|
|
10
|
+
* @param onProgress Called each time a worker has been replaced (or its replacement has been given
|
|
11
|
+
* up on), so a caller waiting on a wide pool can tell a slow restart from a stalled one.
|
|
12
|
+
* @returns {Promise<{workersKeptOnOldCode: number, replacementsNotStarted: number}|{declined: true}|undefined>}
|
|
13
|
+
* from the main thread, how many workers were left running the old code and how many replacements
|
|
14
|
+
* never reported that they started — or `{declined: true}` when the process is already shutting down;
|
|
15
|
+
* from a worker, nothing — the restart is handed to the main thread.
|
|
11
16
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
/**
|
|
18
|
+
* `application` selects which workers of the type restart: omitted preserves the historic all-worker
|
|
19
|
+
* behavior, explicit undefined restarts the shared pool only, a name restarts only that application's
|
|
20
|
+
* dedicated worker, and '*' restarts all.
|
|
21
|
+
*/
|
|
22
|
+
export function restartWorkers(name?: any, maxWorkersDown?: number, startReplacementThreads?: boolean, onProgress?: any, application?: any, ...args: any[]): Promise<{
|
|
23
|
+
declined: boolean;
|
|
24
|
+
workersKeptOnOldCode?: undefined;
|
|
25
|
+
replacementsNotStarted?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
workersKeptOnOldCode: number;
|
|
28
|
+
replacementsNotStarted: number;
|
|
29
|
+
declined?: undefined;
|
|
30
|
+
}>;
|
|
31
|
+
export function shutdownWorkers(name: any): Promise<{
|
|
32
|
+
declined: boolean;
|
|
33
|
+
workersKeptOnOldCode?: undefined;
|
|
34
|
+
replacementsNotStarted?: undefined;
|
|
35
|
+
} | {
|
|
36
|
+
workersKeptOnOldCode: number;
|
|
37
|
+
replacementsNotStarted: number;
|
|
38
|
+
declined?: undefined;
|
|
39
|
+
}>;
|
|
14
40
|
export function shutdownWorkersNow(name: any): Promise<void>;
|
|
15
41
|
export const workers: any[];
|
|
16
42
|
export function setMonitorListener(listener: any): void;
|
|
17
43
|
export function onMessageFromWorkers(listener: any): void;
|
|
44
|
+
/** Registered by socketRouter: starts and stops dedicated workers to match the root config's isolated applications. */
|
|
45
|
+
export function setIsolatedWorkerReconciler(reconcile: any): void;
|
|
46
|
+
export function setRunningIsolatedApplicationsGetter(getter: any): void;
|
|
47
|
+
/**
|
|
48
|
+
* The worker that owns `applicationName`'s per-application singletons (its scheduled jobs, its data
|
|
49
|
+
* files): pool worker 0 for a shared application and for root-level plugins (which pass no name), the
|
|
50
|
+
* dedicated worker for an isolated one -- never index 0, so node-wide duties stay on the pool, and
|
|
51
|
+
* never a dedicated worker for anything but its own application.
|
|
52
|
+
*/
|
|
53
|
+
export function isApplicationPrimaryWorker(applicationName: any): boolean;
|
|
54
|
+
/** The worker index as the application sees it: a dedicated worker is its application's worker 0. */
|
|
55
|
+
export function applicationWorkerIndex(): any;
|
|
56
|
+
/**
|
|
57
|
+
* Whether a singleton set up by APPLICATION CODE runs here (a caching table's `sourcedFrom`
|
|
58
|
+
* subscription): pool worker 0, or a dedicated worker -- the only code that runs on one is its own
|
|
59
|
+
* application's, so whatever it sets up is that application's to run. Not for root-level plugins,
|
|
60
|
+
* which load on every thread and must use isApplicationPrimaryWorker(name).
|
|
61
|
+
*/
|
|
62
|
+
export function runsApplicationCodeSingletons(): boolean;
|
|
63
|
+
/** Whether this thread is a worker dedicated to one isolated application. */
|
|
64
|
+
export function isDedicatedWorker(): boolean;
|
|
65
|
+
export function markBranchStorePath(path: any, isBranch?: boolean): void;
|
|
66
|
+
/**
|
|
67
|
+
* Whether this thread runs the "last worker" per-store maintenance for `storePath` (TTL scans, storage
|
|
68
|
+
* reclamation, audit cleanup). Shared stores belong to the last pool worker; a dedicated worker
|
|
69
|
+
* maintains only its own branch stores, which no other thread has open.
|
|
70
|
+
*/
|
|
71
|
+
export function ownsStoreMaintenance(storePath: any): boolean;
|
|
72
|
+
/** The "worker 0" counterpart: expiration eviction for `storePath`. */
|
|
73
|
+
export function ownsStoreExpiration(storePath: any): boolean;
|
|
74
|
+
/** Every started worker dedicated to `application`, including a replacement still booting. */
|
|
75
|
+
export function workersForApplication(application: any): any[];
|
|
76
|
+
/**
|
|
77
|
+
* Stop one worker for good: shut it down, honour the drain extension it may ask for, force it after
|
|
78
|
+
* the same backstop the rolling restart uses (FORCE_EXIT on Bun, where terminate() segfaults), and
|
|
79
|
+
* resolve once it has exited. Marked as shut down first so its exit does not start a replacement.
|
|
80
|
+
*/
|
|
81
|
+
export function stopWorker(worker: any): Promise<any>;
|
|
82
|
+
/**
|
|
83
|
+
* The restart scope on the wire: a worker cannot post `undefined` and have it mean "the pool" (a
|
|
84
|
+
* message with no scope at all means "everything", as every pre-existing sender intends).
|
|
85
|
+
*/
|
|
86
|
+
export function encodeRestartScope(application: any): any;
|
|
87
|
+
export function decodeRestartScope(message: any): any;
|
|
18
88
|
export function onMessageByType(type: any, listener: any): void;
|
|
19
89
|
export function broadcast(message: any, includeSelf: any): Promise<void>;
|
|
20
90
|
export function broadcastWithAcknowledgement(message: any, timeout?: number): Promise<any>;
|
|
@@ -37,11 +107,21 @@ export function beginProcessShutdown(): void;
|
|
|
37
107
|
*/
|
|
38
108
|
export function registerWorkerDataProvider(name: any, provider: any): () => void;
|
|
39
109
|
export function onThreadExit(listener: any): void;
|
|
110
|
+
/**
|
|
111
|
+
* Whether a thread has already been reported dead. Sync, unlike `isThreadRunning`, because it only
|
|
112
|
+
* reads the tombstone `notifyThreadExit` records below — callers on the exit path need an answer
|
|
113
|
+
* without awaiting process-group confirmation.
|
|
114
|
+
*/
|
|
115
|
+
export function hasThreadExited(threadId: any): boolean;
|
|
116
|
+
export function notifyThreadExit(deadThreadId: any): void;
|
|
40
117
|
export function registerProcessGroup(processGroupId: any): void;
|
|
41
118
|
export function unregisterProcessGroup(processGroupId: any): void;
|
|
119
|
+
export function isProcessGroupAlive(processGroupId: any, options: any): boolean;
|
|
42
120
|
export function isThreadRunning(ownerThreadId: any, timeoutMs?: number): Promise<boolean>;
|
|
43
121
|
export function waitUntilConfirmedGone(attemptTermination: any, treeIsAlive: any, pollMs: any): Promise<void>;
|
|
122
|
+
export function sendToThread(threadId: any, message: any): boolean;
|
|
44
123
|
export let getThreadInfo: any;
|
|
124
|
+
export let getRunningIsolatedApplications: any;
|
|
45
125
|
export function watchDir(dir: any, beforeRestartCallback: any): Promise<void>;
|
|
46
126
|
import { Worker } from "node:worker_threads";
|
|
47
127
|
export declare let processIncarnation: any;
|