@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
|
@@ -36,7 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.OPERATION_FUNCTION_MAP = void 0;
|
|
39
|
+
exports.OPERATION_FUNCTION_MAP = exports.UNLOGGABLE_OPERATION_FIELDS = void 0;
|
|
40
|
+
exports.redactForOperationLog = redactForOperationLog;
|
|
40
41
|
exports.processLocalTransaction = processLocalTransaction;
|
|
41
42
|
exports.chooseOperation = chooseOperation;
|
|
42
43
|
exports.getOperationFunction = getOperationFunction;
|
|
@@ -83,10 +84,13 @@ const status = __importStar(require("../status/index.js"));
|
|
|
83
84
|
const regDeprecated = __importStar(require("../../resources/registrationDeprecated.js"));
|
|
84
85
|
const deploymentOperations = __importStar(require("../../components/deploymentOperations.js"));
|
|
85
86
|
const secretOperations = __importStar(require("../../components/secretOperations.js"));
|
|
87
|
+
const trustPolicyOperations = __importStar(require("../../security/authn/oidc/trustPolicyOperations.js"));
|
|
88
|
+
const tokenExchange = __importStar(require("../../security/authn/oidc/tokenExchange.js"));
|
|
86
89
|
const transaction_ts_1 = require("../../resources/transaction.js");
|
|
87
90
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
88
91
|
const registeredOperations_ts_1 = require("./registeredOperations.js");
|
|
89
92
|
const operationAuthorizationState_ts_1 = require("./operationAuthorizationState.js");
|
|
93
|
+
const requestSanitization_ts_1 = require("./requestSanitization.js");
|
|
90
94
|
const pSearchSearch = util.promisify(search.search);
|
|
91
95
|
let pEvaluateSql;
|
|
92
96
|
function evaluateSQL(command) {
|
|
@@ -110,25 +114,48 @@ const OperationFunctionObject_ts_1 = require("./OperationFunctionObject.js");
|
|
|
110
114
|
* handles the response to the sender.
|
|
111
115
|
*/
|
|
112
116
|
// TODO: Replace Function type with an actual function type (e.g. (): Thingy)
|
|
117
|
+
/**
|
|
118
|
+
* Fields stripped from an operation body before it reaches the operations log.
|
|
119
|
+
*
|
|
120
|
+
* `credentials` carries a transient token on deploy_component (`registryAuth` is its pre-rename
|
|
121
|
+
* name — still stripped, since this runs ahead of the validation that now rejects it). `value` /
|
|
122
|
+
* `values` carry .env secrets from set_env_value; `value` / `envelope` carry secrets from
|
|
123
|
+
* set_secret. `token` is the login-purpose token (login) and the CI identity token
|
|
124
|
+
* (exchange_oidc_token), and is also stripped defensively — no operation declares a top-level `token`,
|
|
125
|
+
* but validation allows unknown keys, so a mistyped `harper deploy setup token=…` must not log a live
|
|
126
|
+
* credential. `refresh_token` is the 30-day credential (refresh_operation_token).
|
|
127
|
+
*
|
|
128
|
+
* Redaction runs *before* the handler, so a rejected request logs a still-spendable credential —
|
|
129
|
+
* which is why a new secret-bearing field belongs here rather than left to the default (harper#1527
|
|
130
|
+
* was this same miss for set_env_value).
|
|
131
|
+
*/
|
|
132
|
+
exports.UNLOGGABLE_OPERATION_FIELDS = [
|
|
133
|
+
'hdb_user',
|
|
134
|
+
'hdbAuthHeader',
|
|
135
|
+
'password',
|
|
136
|
+
'payload',
|
|
137
|
+
'credentials',
|
|
138
|
+
'registryAuth',
|
|
139
|
+
'value',
|
|
140
|
+
'values',
|
|
141
|
+
'envelope',
|
|
142
|
+
'token',
|
|
143
|
+
'refresh_token',
|
|
144
|
+
];
|
|
145
|
+
/** Callers gate this on log level: it allocates, and the operations log is often off. */
|
|
146
|
+
function redactForOperationLog(body) {
|
|
147
|
+
const clean = { ...body };
|
|
148
|
+
for (const field of exports.UNLOGGABLE_OPERATION_FIELDS)
|
|
149
|
+
delete clean[field];
|
|
150
|
+
return clean;
|
|
151
|
+
}
|
|
113
152
|
async function processLocalTransaction(req, operationFunction) {
|
|
114
153
|
try {
|
|
115
154
|
if (req.body.operation !== 'read_log' &&
|
|
116
155
|
(harper_logger_ts_1.default.logLevel === terms.LOG_LEVELS.INFO ||
|
|
117
156
|
harper_logger_ts_1.default.logLevel === terms.LOG_LEVELS.DEBUG ||
|
|
118
157
|
harper_logger_ts_1.default.logLevel === terms.LOG_LEVELS.TRACE)) {
|
|
119
|
-
|
|
120
|
-
// an object unless the logging is actually going to happen. credentials carries a
|
|
121
|
-
// transient token on deploy_component (registryAuth is its pre-rename name — still
|
|
122
|
-
// stripped, since this runs ahead of the validation that now rejects it, and a stale
|
|
123
|
-
// caller's token must not reach the log); value/values carry .env secrets from
|
|
124
|
-
// set_env_value; value/envelope carry secrets from set_secret — none may reach the
|
|
125
|
-
// operations log. `token` is stripped defensively: no operation declares one at the top
|
|
126
|
-
// level today, but validation allows unknown keys, so a caller that sends one anyway (a
|
|
127
|
-
// mistyped `harper deploy setup token=…`) would otherwise log a live credential.
|
|
128
|
-
/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
129
|
-
const { hdb_user, hdbAuthHeader, password, payload, credentials, registryAuth, value, values, envelope, token, ...cleanBody } = req.body;
|
|
130
|
-
/* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
131
|
-
operationLog.info(cleanBody);
|
|
158
|
+
operationLog.info(redactForOperationLog(req.body));
|
|
132
159
|
}
|
|
133
160
|
}
|
|
134
161
|
catch (e) {
|
|
@@ -166,6 +193,9 @@ async function processLocalTransaction(req, operationFunction) {
|
|
|
166
193
|
}
|
|
167
194
|
exports.OPERATION_FUNCTION_MAP = initializeOperationFunctionMap();
|
|
168
195
|
Server_ts_1.server.operation = operation;
|
|
196
|
+
// Operation names this API installed a permission entry for, so a later registration that drops
|
|
197
|
+
// `requiresSuperUser` can retract exactly that entry and nothing else.
|
|
198
|
+
const declaredPermissionNames = new Set();
|
|
169
199
|
/**
|
|
170
200
|
* Register an operation function with the server.
|
|
171
201
|
* @param operationDefinition
|
|
@@ -176,7 +206,16 @@ Server_ts_1.server.registerOperation = (operationDefinition) => {
|
|
|
176
206
|
return;
|
|
177
207
|
const { name, execute, requiresSuperUser } = operationDefinition;
|
|
178
208
|
let handler = execute;
|
|
179
|
-
if (requiresSuperUser
|
|
209
|
+
if (requiresSuperUser === undefined) {
|
|
210
|
+
// A re-registration that drops the flag must also drop the entry the earlier one installed, or
|
|
211
|
+
// declaration and enforcement disagree: main retracts the grantable mark while this worker keeps
|
|
212
|
+
// honouring an already-persisted role grant. Scoped to names declared through this API, so one it
|
|
213
|
+
// never declared is untouched — a component that declared a built-in's name already overwrote
|
|
214
|
+
// that entry by declaring it, and this only follows.
|
|
215
|
+
if (declaredPermissionNames.delete(name))
|
|
216
|
+
opAuth.unregisterOperationPermission(name);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
180
219
|
// verifyPerms keys requiredPermissions by the handler's function `.name`, but registered ops
|
|
181
220
|
// are typically anonymous arrows (all named "execute") which collide and can't be keyed. Wrap
|
|
182
221
|
// in a FRESH function named after the op so the lookup resolves the right entry. Wrap rather
|
|
@@ -186,13 +225,15 @@ Server_ts_1.server.registerOperation = (operationDefinition) => {
|
|
|
186
225
|
handler = (...args) => execute(...args);
|
|
187
226
|
Object.defineProperty(handler, 'name', { value: name, configurable: true });
|
|
188
227
|
opAuth.registerOperationPermission(name, { requiresSu: requiresSuperUser });
|
|
228
|
+
declaredPermissionNames.add(name);
|
|
189
229
|
}
|
|
190
230
|
exports.OPERATION_FUNCTION_MAP.set(name, new OperationFunctionObject_ts_1.OperationFunctionObject(handler));
|
|
191
231
|
// Components load per-worker, so a registration made there is invisible to the main-thread
|
|
192
232
|
// ops-API dispatcher (each thread has its own OPERATION_FUNCTION_MAP instance). Announce it
|
|
193
|
-
// so the main thread can forward calls
|
|
233
|
+
// so the main thread can forward calls here (#1736), and can mirror the role-allowlist mark that
|
|
234
|
+
// registerOperationPermission above made only in this thread's scope.
|
|
194
235
|
if (!node_worker_threads_1.isMainThread)
|
|
195
|
-
(0, registeredOperations_ts_1.announceRegisteredOperation)(name);
|
|
236
|
+
(0, registeredOperations_ts_1.announceRegisteredOperation)(name, requiresSuperUser !== undefined);
|
|
196
237
|
};
|
|
197
238
|
// Register the durable MCP quota policy as a function (see components/mcp/quota.ts). Worker-local,
|
|
198
239
|
// like the tool dispatch that consults it, so no cross-thread announcement is needed. Skipped during
|
|
@@ -202,6 +243,16 @@ Server_ts_1.server.setMcpQuotaHandler = (handler) => {
|
|
|
202
243
|
return;
|
|
203
244
|
(0, quota_ts_1.setMcpQuotaHandler)(handler);
|
|
204
245
|
};
|
|
246
|
+
// The nested `search_operation` operations dataLayer/export.ts's getRecords can actually run (its
|
|
247
|
+
// VALID_SEARCH_OPERATIONS). Validated at dispatch so an unsupported or missing nested operation is a
|
|
248
|
+
// request-time 400 rather than an async job failure, and so the nested authorization below always
|
|
249
|
+
// resolves a real handler.
|
|
250
|
+
const EXPORT_SEARCH_OPERATIONS = new Set([
|
|
251
|
+
terms.OPERATIONS_ENUM.SEARCH_BY_VALUE,
|
|
252
|
+
terms.OPERATIONS_ENUM.SEARCH_BY_HASH,
|
|
253
|
+
terms.OPERATIONS_ENUM.SEARCH_BY_CONDITIONS,
|
|
254
|
+
terms.OPERATIONS_ENUM.SQL,
|
|
255
|
+
]);
|
|
205
256
|
function chooseOperation(json, bypassAuth = false) {
|
|
206
257
|
let getOpResult;
|
|
207
258
|
try {
|
|
@@ -222,16 +273,80 @@ function chooseOperation(json, bypassAuth = false) {
|
|
|
222
273
|
throw err;
|
|
223
274
|
}
|
|
224
275
|
const { operation_function, job_operation_function } = getOpResult;
|
|
225
|
-
|
|
226
|
-
//
|
|
276
|
+
const isSqlOperation = json.operation === terms.OPERATIONS_ENUM.SQL;
|
|
277
|
+
// `verifyPerms` derives the tables it checks from the object it is handed, so the caller-supplied
|
|
278
|
+
// `search_operation` may only stand in as the permission subject for the operations that actually
|
|
279
|
+
// run it (dataLayer/export.ts is its only consumer). For anything else it would check the nested
|
|
280
|
+
// tables while the handler runs against the top-level ones.
|
|
281
|
+
const nestedSearch = json.operation === terms.OPERATIONS_ENUM.EXPORT_LOCAL || json.operation === terms.OPERATIONS_ENUM.EXPORT_TO_S3
|
|
282
|
+
? json.search_operation
|
|
283
|
+
: undefined;
|
|
284
|
+
if (nestedSearch !== undefined) {
|
|
285
|
+
// It becomes the permission subject below, and a primitive would throw on the principal
|
|
286
|
+
// assignment — a 400 rather than a wrapped 500.
|
|
287
|
+
if (nestedSearch === null || typeof nestedSearch !== 'object' || Array.isArray(nestedSearch)) {
|
|
288
|
+
throw (0, hdbError_ts_1.handleHDBError)(new Error(), `'search_operation' must be an object`, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST, undefined, undefined, true);
|
|
289
|
+
}
|
|
290
|
+
// The object check alone lets `{}` and unsupported operations through — they would then fail
|
|
291
|
+
// asynchronously in the export worker (or dereference `search_operation.operation`). Require a
|
|
292
|
+
// supported operation at request time; the nested authorization below relies on it resolving.
|
|
293
|
+
if (typeof nestedSearch.operation !== 'string' || !EXPORT_SEARCH_OPERATIONS.has(nestedSearch.operation)) {
|
|
294
|
+
throw (0, hdbError_ts_1.handleHDBError)(new Error(), `'search_operation.operation' must be one of: ${[...EXPORT_SEARCH_OPERATIONS].join(', ')}`, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST, undefined, undefined, true);
|
|
295
|
+
}
|
|
296
|
+
// Dispatch state, never client input: the export worker re-reads `parsed_sql_object` off this
|
|
297
|
+
// same object (evaluateSQL), and it carries `permissions_checked`, so a body-supplied one would
|
|
298
|
+
// execute an AST no check ever saw. Deleting it rather than replacing it with the authorized
|
|
299
|
+
// parse is deliberate — the worker then re-parses and re-runs the check itself.
|
|
300
|
+
delete nestedSearch.parsed_sql_object;
|
|
301
|
+
}
|
|
302
|
+
// The AST check below covers only the statement's tables, never the caller's right to invoke the
|
|
303
|
+
// job operation, so it is additive to verifyPerms rather than an alternative to it.
|
|
304
|
+
const hasNestedSqlSearch = nestedSearch?.operation === terms.OPERATIONS_ENUM.SQL;
|
|
227
305
|
try {
|
|
228
|
-
if (
|
|
306
|
+
if (isSqlOperation || hasNestedSqlSearch) {
|
|
229
307
|
const sql = require('../../sqlTranslator/index');
|
|
230
|
-
const sqlStatement =
|
|
308
|
+
const sqlStatement = isSqlOperation ? json.sql : nestedSearch.sql;
|
|
309
|
+
// Before this dispatch's own parse is assigned, so a body-supplied object cannot survive it.
|
|
310
|
+
(0, requestSanitization_ts_1.stripSuppliedParsedSqlObject)(json);
|
|
231
311
|
const parsedSqlObject = sql.convertSQLToAST(sqlStatement);
|
|
232
|
-
|
|
312
|
+
if (hasNestedSqlSearch && parsedSqlObject.variant !== terms.VALID_SQL_OPS_ENUM.SELECT) {
|
|
313
|
+
throw (0, hdbError_ts_1.handleHDBError)(new Error(), `'search_operation.sql' must be a SELECT statement`, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST, undefined, undefined, true);
|
|
314
|
+
}
|
|
315
|
+
// Only the direct-SQL path consumes `json.parsed_sql_object` (evaluateSQL). A nested export
|
|
316
|
+
// re-parses off `search_operation` — whose `parsed_sql_object` was deleted above — so setting
|
|
317
|
+
// it here for a job would be inert.
|
|
318
|
+
if (isSqlOperation) {
|
|
319
|
+
json.parsed_sql_object = parsedSqlObject;
|
|
320
|
+
}
|
|
233
321
|
if (!bypassAuth) {
|
|
234
|
-
|
|
322
|
+
if (hasNestedSqlSearch) {
|
|
323
|
+
// A nested-SQL export's outer op (export_local/export_to_s3) is `requires_su`, which the
|
|
324
|
+
// AST table check below does not enforce. Authorize invoking it through verifyPerms
|
|
325
|
+
// exactly as the non-SQL job path does — otherwise SQL is a way around the requires_su
|
|
326
|
+
// gate that path enforces. The nested table reads are then covered additively by the AST
|
|
327
|
+
// check. verifyPerms also runs the allowlist (gate 1) and the export token scope.
|
|
328
|
+
const functionToCheck = job_operation_function === undefined ? operation_function : job_operation_function;
|
|
329
|
+
const outerDenial = opAuth.verifyPerms(json, functionToCheck, { apiOperation: json.operation });
|
|
330
|
+
if (outerDenial) {
|
|
331
|
+
operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
|
|
332
|
+
operationLog.warn(`User '${json.hdb_user?.username}' is not permitted to ${json.operation}`);
|
|
333
|
+
throw (0, hdbError_ts_1.handleHDBError)(new Error(), outerDenial, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.FORBIDDEN, undefined, false, true);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
// Direct SQL: the invoked operation IS `sql`, so the role `operations` allowlist is the
|
|
338
|
+
// operation-invocation check — otherwise an allowlisted role reaches unlisted operations
|
|
339
|
+
// via `sql`. json.operation is already the API name.
|
|
340
|
+
const allowlistDenial = opAuth.verifyOperationsAllowlist(json, json.operation);
|
|
341
|
+
if (allowlistDenial) {
|
|
342
|
+
operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
|
|
343
|
+
operationLog.warn(`User '${json.hdb_user?.username}' is not permitted to ${json.operation}`);
|
|
344
|
+
throw (0, hdbError_ts_1.handleHDBError)(new Error(), allowlistDenial, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.FORBIDDEN, undefined, undefined, true);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// `json.operation` explicitly — the operation this dispatch already resolved, not a
|
|
348
|
+
// field read back off the request body.
|
|
349
|
+
const astPermCheck = sql.checkASTPermissions(json, parsedSqlObject, json.operation);
|
|
235
350
|
if (astPermCheck) {
|
|
236
351
|
operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
|
|
237
352
|
operationLog.warn(`User '${json.hdb_user?.username}' is not permitted to ${json.operation}`);
|
|
@@ -243,18 +358,44 @@ function chooseOperation(json, bypassAuth = false) {
|
|
|
243
358
|
else if (!bypassAuth &&
|
|
244
359
|
json.operation !== terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS &&
|
|
245
360
|
json.operation !== terms.OPERATIONS_ENUM.LOGIN &&
|
|
246
|
-
json.operation !== terms.OPERATIONS_ENUM.LOGOUT
|
|
361
|
+
json.operation !== terms.OPERATIONS_ENUM.LOGOUT &&
|
|
362
|
+
// Same rationale: the OIDC exchange authenticates its own caller (#2171), so there is no
|
|
363
|
+
// hdb_user for verifyPerms to check against.
|
|
364
|
+
json.operation !== terms.OPERATIONS_ENUM.EXCHANGE_OIDC_TOKEN) {
|
|
247
365
|
const functionToCheck = job_operation_function === undefined ? operation_function : job_operation_function;
|
|
248
|
-
const operation_json =
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
366
|
+
const operation_json = nestedSearch ?? json;
|
|
367
|
+
// Authentication is the only source of the principal; a nested one is overwritten, not honored.
|
|
368
|
+
operation_json.hdb_user = json.hdb_user;
|
|
369
|
+
// Pass the top-level operation for the token-scope check: for an export job, operation_json
|
|
370
|
+
// is the nested search_operation, so json.operation (export_local/export_to_s3) is the op the
|
|
371
|
+
// scope must gate — not the inner search.
|
|
372
|
+
const verifyPermsResult = opAuth.verifyPerms(operation_json, functionToCheck, {
|
|
373
|
+
apiOperation: json.operation,
|
|
374
|
+
});
|
|
253
375
|
if (verifyPermsResult) {
|
|
254
376
|
operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
|
|
255
377
|
operationLog.warn(`User '${operation_json.hdb_user?.username}' is not permitted to ${operation_json.operation}`);
|
|
256
378
|
throw (0, hdbError_ts_1.handleHDBError)(new Error(), verifyPermsResult, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.FORBIDDEN, undefined, false, true);
|
|
257
379
|
}
|
|
380
|
+
// The check above authorizes invoking the operation, but for a non-SQL export it returns
|
|
381
|
+
// before any table check — a requires_su export is granted the moment its `operations`
|
|
382
|
+
// allowlist lists it (verifyPerms gate 2) — and the job worker then runs `search_operation`
|
|
383
|
+
// through searchByValue/Hash/Conditions, none of which check permissions. So the nested read
|
|
384
|
+
// is only enforceable here: authorize it additively against its real search handler and the
|
|
385
|
+
// authenticated principal (assigned above via operation_json), so a role that may invoke the
|
|
386
|
+
// export but lacks read on the table is denied. A nested SQL search is covered by the AST
|
|
387
|
+
// branch above instead.
|
|
388
|
+
if (nestedSearch) {
|
|
389
|
+
const nestedFunction = getOperationFunction(nestedSearch).operation_function;
|
|
390
|
+
const nestedPermsResult = opAuth.verifyPerms(nestedSearch, nestedFunction, {
|
|
391
|
+
apiOperation: json.operation,
|
|
392
|
+
});
|
|
393
|
+
if (nestedPermsResult) {
|
|
394
|
+
operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
|
|
395
|
+
operationLog.warn(`User '${operation_json.hdb_user?.username}' is not permitted to ${nestedSearch.operation} within ${json.operation}`);
|
|
396
|
+
throw (0, hdbError_ts_1.handleHDBError)(new Error(), nestedPermsResult, hdbError_ts_1.hdbErrors.HTTP_STATUS_CODES.FORBIDDEN, undefined, false, true);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
258
399
|
}
|
|
259
400
|
}
|
|
260
401
|
catch (err) {
|
|
@@ -305,6 +446,9 @@ async function catchup(req) {
|
|
|
305
446
|
case terms.OPERATIONS_ENUM.UPSERT:
|
|
306
447
|
await insert.upsert(transaction);
|
|
307
448
|
break;
|
|
449
|
+
case terms.OPERATIONS_ENUM.PUT:
|
|
450
|
+
await insert.put(transaction);
|
|
451
|
+
break;
|
|
308
452
|
case terms.OPERATIONS_ENUM.DELETE:
|
|
309
453
|
await delete_.deleteRecord(transaction);
|
|
310
454
|
break;
|
|
@@ -352,6 +496,7 @@ function initializeOperationFunctionMap() {
|
|
|
352
496
|
opFuncMap.set(terms.OPERATIONS_ENUM.INSERT, new OperationFunctionObject_ts_1.OperationFunctionObject(insert.insert));
|
|
353
497
|
opFuncMap.set(terms.OPERATIONS_ENUM.UPDATE, new OperationFunctionObject_ts_1.OperationFunctionObject(insert.update));
|
|
354
498
|
opFuncMap.set(terms.OPERATIONS_ENUM.UPSERT, new OperationFunctionObject_ts_1.OperationFunctionObject(insert.upsert));
|
|
499
|
+
opFuncMap.set(terms.OPERATIONS_ENUM.PUT, new OperationFunctionObject_ts_1.OperationFunctionObject(insert.put));
|
|
355
500
|
opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_CONDITIONS, new OperationFunctionObject_ts_1.OperationFunctionObject(search.searchByConditions));
|
|
356
501
|
opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_HASH, new OperationFunctionObject_ts_1.OperationFunctionObject(search.searchByHash));
|
|
357
502
|
opFuncMap.set(terms.OPERATIONS_ENUM.SEARCH_BY_ID, new OperationFunctionObject_ts_1.OperationFunctionObject(search.searchByHash));
|
|
@@ -433,6 +578,10 @@ function initializeOperationFunctionMap() {
|
|
|
433
578
|
opFuncMap.set(terms.OPERATIONS_ENUM.LIST_SECRETS, new OperationFunctionObject_ts_1.OperationFunctionObject(secretOperations.listSecrets));
|
|
434
579
|
opFuncMap.set(terms.OPERATIONS_ENUM.DELETE_SECRET, new OperationFunctionObject_ts_1.OperationFunctionObject(secretOperations.deleteSecret));
|
|
435
580
|
opFuncMap.set(terms.OPERATIONS_ENUM.GET_SECRETS_PUBLIC_KEY, new OperationFunctionObject_ts_1.OperationFunctionObject(secretOperations.getSecretsPublicKey));
|
|
581
|
+
opFuncMap.set(terms.OPERATIONS_ENUM.ADD_OIDC_TRUST, new OperationFunctionObject_ts_1.OperationFunctionObject(trustPolicyOperations.addOidcTrust));
|
|
582
|
+
opFuncMap.set(terms.OPERATIONS_ENUM.LIST_OIDC_TRUST, new OperationFunctionObject_ts_1.OperationFunctionObject(trustPolicyOperations.listOidcTrust));
|
|
583
|
+
opFuncMap.set(terms.OPERATIONS_ENUM.DROP_OIDC_TRUST, new OperationFunctionObject_ts_1.OperationFunctionObject(trustPolicyOperations.dropOidcTrust));
|
|
584
|
+
opFuncMap.set(terms.OPERATIONS_ENUM.EXCHANGE_OIDC_TOKEN, new OperationFunctionObject_ts_1.OperationFunctionObject(tokenExchange.exchangeOidcToken));
|
|
436
585
|
opFuncMap.set(terms.OPERATIONS_ENUM.READ_TRANSACTION_LOG, new OperationFunctionObject_ts_1.OperationFunctionObject(transactionLog.readTransactionLog));
|
|
437
586
|
opFuncMap.set(terms.OPERATIONS_ENUM.DELETE_TRANSACTION_LOGS_BEFORE, new OperationFunctionObject_ts_1.OperationFunctionObject(executeJob, transactionLog.deleteTransactionLogsBefore));
|
|
438
587
|
opFuncMap.set(terms.OPERATIONS_ENUM.INSTALL_NODE_MODULES, new OperationFunctionObject_ts_1.OperationFunctionObject(npmUtilities.installModules));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverUtilities.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverUtilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serverUtilities.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverUtilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The encoding work that every subscriber of a topic would otherwise redo for the same message.
|
|
3
|
+
* `payload` is the serialized message body; `frames` holds fully encoded protocol frames that are
|
|
4
|
+
* byte-identical across subscribers (MQTT QoS 0 PUBLISH packets), keyed by whatever the frame
|
|
5
|
+
* still varies on. `next` chains the encodings for any further content types the same message was
|
|
6
|
+
* delivered in — a chain rather than a map because a topic's subscribers realistically negotiate
|
|
7
|
+
* one or two content types, and this keeps the single-content-type case to one allocation.
|
|
8
|
+
*
|
|
9
|
+
* `hits` counts the subscribers after the first, so a caller can skip caching anything derived
|
|
10
|
+
* from the payload until a fan-out is known to exist. `failed` is a distinct state from an
|
|
11
|
+
* undefined `payload`, which a serializer can legitimately return (JSON of `undefined`).
|
|
12
|
+
* `bytes` is everything this entry holds — payload plus frames — and `epoch` records which
|
|
13
|
+
* generation those bytes are charged to, so work that lands after a rotation (a serialization that
|
|
14
|
+
* resolves late) is not charged to a budget it does not belong to, and a promotion re-charges the
|
|
15
|
+
* entry exactly once. That is what makes the budget an actual accounting rather than an estimate.
|
|
16
|
+
*/
|
|
17
|
+
export interface SharedMessageEncoding {
|
|
18
|
+
serializer: Function;
|
|
19
|
+
version: number | undefined;
|
|
20
|
+
payload: Buffer | string | Promise<Buffer | string> | undefined;
|
|
21
|
+
failed: boolean;
|
|
22
|
+
hits: number;
|
|
23
|
+
bytes: number;
|
|
24
|
+
epoch: number;
|
|
25
|
+
frames: Map<number, Map<string, Buffer>> | undefined;
|
|
26
|
+
next: SharedMessageEncoding | undefined;
|
|
27
|
+
}
|
|
28
|
+
export declare const MAX_RETAINED_BYTES = 4000000;
|
|
29
|
+
/** Retire the older generation. Exported for the rotation timer and for tests. */
|
|
30
|
+
export declare function rotateSharedEncodings(): void;
|
|
31
|
+
/** Whether the rotation timer is currently armed. Introspection for tests. */
|
|
32
|
+
export declare function isRotationScheduled(): boolean;
|
|
33
|
+
/** Bytes charged to the live generation. Introspection so tests can pin the accounting exactly. */
|
|
34
|
+
export declare function getRetainedBytes(): number;
|
|
35
|
+
/**
|
|
36
|
+
* Get the encoding shared by every subscriber that negotiated the same content type. Keyed on the
|
|
37
|
+
* message object's identity, the serializer function (which is what `serializeMessage` output
|
|
38
|
+
* varies on), and the event's record `version`.
|
|
39
|
+
*
|
|
40
|
+
* The version is part of the key, not a permission to share. Identity alone would be unsafe for a
|
|
41
|
+
* producer that reuses one mutable envelope across publishes — an app Resource wrapping a table
|
|
42
|
+
* subscription to enrich events can easily do that, and copies the version straight through with a
|
|
43
|
+
* spread — so a cached entry whose version does not match is treated as a miss and re-encoded.
|
|
44
|
+
* That leaves only same-object-and-same-version mutation, which is indistinguishable from "the same
|
|
45
|
+
* message". An event with no version at all is not shared: nothing then distinguishes one publish
|
|
46
|
+
* from the next.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getSharedMessageEncoding(message: any, request?: any, version?: number): SharedMessageEncoding;
|
|
49
|
+
/**
|
|
50
|
+
* Resolve a still-pending shared serialization, retrying once through a fresh lookup if it failed.
|
|
51
|
+
* Every subscriber currently in the fan-out awaits the same promise, so without this one transient
|
|
52
|
+
* failure would disconnect all of them, where before the encoding was shared each subscriber
|
|
53
|
+
* serialized — and so retried — on its own.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveSharedPayload(encoding: SharedMessageEncoding, message: any, request: any, version?: number): Promise<Buffer | string>;
|
|
56
|
+
/**
|
|
57
|
+
* Look up a fully encoded frame shared across subscribers, or undefined if it has not been
|
|
58
|
+
* generated yet. Split from `setSharedFrame` so a cache hit — the whole point on a fan-out —
|
|
59
|
+
* allocates nothing, not even a generator closure.
|
|
60
|
+
*/
|
|
61
|
+
export declare function getSharedFrame(encoding: SharedMessageEncoding, version: number, topic: string): Buffer | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Store a generated frame for reuse by the remaining subscribers, and return it. Call only when
|
|
64
|
+
* `encoding.hits > 0`: a frame stored for a fan-out of one is never read, and would keep a whole
|
|
65
|
+
* PUBLISH buffer reachable from the message object for the rest of its retention window.
|
|
66
|
+
*/
|
|
67
|
+
export declare function setSharedFrame(encoding: SharedMessageEncoding, version: number, topic: string, frame: Buffer): Buffer;
|