@harperfast/harper 5.2.10 → 5.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/mcpTools.ts +1 -1
- package/agent/session.ts +25 -14
- package/bin/cliOperations.ts +46 -9
- package/bin/copyDb.ts +282 -59
- package/bin/deploySetup.ts +16 -5
- package/bin/harper.ts +1 -1
- package/bin/help.ts +4 -1
- package/bin/lite.ts +4 -1
- package/bin/restart.ts +59 -3
- package/bin/run.ts +6 -11
- package/bin/upgrade.js +7 -3
- package/bin/workloadIdentity.ts +119 -0
- package/components/Application.ts +2414 -242
- package/components/ApplicationScope.ts +8 -0
- package/components/EntryHandler.ts +59 -39
- package/components/OptionsWatcher.ts +150 -74
- package/components/RuntimeModuleTracker.ts +38 -7
- package/components/Scope.ts +37 -15
- package/components/awaitRestart.ts +84 -0
- package/components/componentLoader.ts +340 -30
- package/components/componentPreparationLock.ts +16 -5
- package/components/mcp/adapters/harperHttp.ts +4 -0
- package/components/mcp/listChanged.ts +4 -0
- package/components/mcp/toolRegistry.ts +2 -0
- package/components/mcp/tools/operations.ts +9 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
- package/components/operations.js +270 -78
- package/components/operationsValidation.js +49 -1
- package/components/status/ComponentStatusRegistry.ts +59 -0
- package/config/RootConfigWatcher.ts +80 -34
- package/config/configUtils.ts +291 -34
- package/config/harperConfigEnvVars.ts +170 -27
- package/config-root.schema.json +29 -0
- package/dataLayer/blobBackup.ts +160 -50
- package/dataLayer/delete.ts +6 -1
- package/dataLayer/harperBridge/ResourceBridge.ts +52 -8
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dataLayer/hdbInfoController.ts +34 -1
- package/dataLayer/insert.ts +44 -1
- package/dataLayer/rocksdbBackup.ts +53 -10
- package/dataLayer/schema.ts +11 -1
- package/dataLayer/schemaDescribe.ts +8 -1
- package/dist/agent/mcpTools.js +1 -1
- package/dist/agent/mcpTools.js.map +1 -1
- package/dist/agent/session.d.ts +22 -0
- package/dist/agent/session.js +26 -15
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cliOperations.js +48 -9
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.d.ts +12 -1
- package/dist/bin/copyDb.js +248 -60
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deploySetup.d.ts +2 -0
- package/dist/bin/deploySetup.js +11 -3
- package/dist/bin/deploySetup.js.map +1 -1
- package/dist/bin/harper.js +1 -1
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.js +4 -1
- package/dist/bin/help.js.map +1 -1
- package/dist/bin/lite.js +4 -1
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/restart.js +54 -5
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.js +4 -10
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/upgrade.js +4 -3
- package/dist/bin/upgrade.js.map +1 -1
- package/dist/bin/workloadIdentity.d.ts +18 -0
- package/dist/bin/workloadIdentity.js +100 -0
- package/dist/bin/workloadIdentity.js.map +1 -0
- package/dist/components/Application.d.ts +139 -16
- package/dist/components/Application.js +2215 -267
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +8 -0
- package/dist/components/ApplicationScope.js +7 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.js +26 -10
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +1 -0
- package/dist/components/OptionsWatcher.js +141 -74
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.js +40 -6
- package/dist/components/RuntimeModuleTracker.js.map +1 -1
- package/dist/components/Scope.js +38 -13
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/awaitRestart.d.ts +33 -0
- package/dist/components/awaitRestart.js +61 -0
- package/dist/components/awaitRestart.js.map +1 -0
- package/dist/components/componentLoader.d.ts +38 -1
- package/dist/components/componentLoader.js +279 -22
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/componentPreparationLock.d.ts +5 -0
- package/dist/components/componentPreparationLock.js +14 -6
- package/dist/components/componentPreparationLock.js.map +1 -1
- package/dist/components/mcp/adapters/harperHttp.js +4 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
- package/dist/components/mcp/listChanged.js +5 -0
- package/dist/components/mcp/listChanged.js.map +1 -1
- package/dist/components/mcp/toolRegistry.d.ts +1 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -1
- package/dist/components/mcp/tools/operations.d.ts +5 -0
- package/dist/components/mcp/tools/operations.js +9 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
- package/dist/components/operations.js +231 -77
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +49 -1
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
- package/dist/components/status/ComponentStatusRegistry.js +63 -0
- package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
- package/dist/config/RootConfigWatcher.d.ts +7 -1
- package/dist/config/RootConfigWatcher.js +64 -27
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configUtils.d.ts +9 -1
- package/dist/config/configUtils.js +254 -33
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.d.ts +16 -0
- package/dist/config/harperConfigEnvVars.js +162 -25
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/blobBackup.d.ts +49 -20
- package/dist/dataLayer/blobBackup.js +139 -50
- package/dist/dataLayer/blobBackup.js.map +1 -1
- package/dist/dataLayer/delete.js +1 -1
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +51 -10
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.d.ts +10 -0
- package/dist/dataLayer/hdbInfoController.js +30 -1
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +9 -1
- package/dist/dataLayer/insert.js +30 -0
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
- package/dist/dataLayer/rocksdbBackup.js +45 -8
- package/dist/dataLayer/rocksdbBackup.js.map +1 -1
- package/dist/dataLayer/schema.js +8 -0
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +8 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +52 -0
- package/dist/resources/DatabaseTransaction.d.ts +55 -3
- package/dist/resources/DatabaseTransaction.js +460 -134
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/LMDBTransaction.js +22 -4
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
- package/dist/resources/PrimaryRocksDatabase.js +30 -2
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +20 -0
- package/dist/resources/RecordEncoder.js +94 -9
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +2 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.js +20 -11
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +20 -1
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/RocksIndexStore.d.ts +6 -1
- package/dist/resources/RocksIndexStore.js +24 -10
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +14 -1
- package/dist/resources/RocksTransactionLogStore.js +57 -17
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +112 -8
- package/dist/resources/Table.js +1071 -197
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.d.ts +11 -2
- package/dist/resources/auditStore.js +183 -18
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +129 -9
- package/dist/resources/blob.js +992 -114
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/branchDatabase.d.ts +48 -0
- package/dist/resources/branchDatabase.js +892 -0
- package/dist/resources/branchDatabase.js.map +1 -0
- package/dist/resources/crdt.js +50 -12
- package/dist/resources/crdt.js.map +1 -1
- package/dist/resources/databases.d.ts +150 -9
- package/dist/resources/databases.js +1247 -525
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/defineTable.d.ts +10 -2
- package/dist/resources/defineTable.js +9 -1
- package/dist/resources/defineTable.js.map +1 -1
- package/dist/resources/graphql.d.ts +1 -1
- package/dist/resources/graphql.js +50 -15
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +1 -0
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +6 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/longLivedTransactions.d.ts +71 -0
- package/dist/resources/longLivedTransactions.js +358 -0
- package/dist/resources/longLivedTransactions.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +26 -0
- package/dist/resources/models/backendRegistry.js +60 -2
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/bootstrap.d.ts +33 -1
- package/dist/resources/models/bootstrap.js +416 -31
- package/dist/resources/models/bootstrap.js.map +1 -1
- package/dist/resources/recordLock.d.ts +80 -0
- package/dist/resources/recordLock.js +184 -0
- package/dist/resources/recordLock.js.map +1 -0
- package/dist/resources/replayLogs.d.ts +14 -1
- package/dist/resources/replayLogs.js +152 -24
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +94 -7
- package/dist/resources/replayLogsGuards.js +111 -7
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/resources/search.js +158 -32
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js +2 -2
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.js +61 -30
- package/dist/security/auth.js.map +1 -1
- package/dist/security/authn/oidc/claims.d.ts +22 -0
- package/dist/security/authn/oidc/claims.js +71 -0
- package/dist/security/authn/oidc/claims.js.map +1 -0
- package/dist/security/authn/oidc/identityToken.d.ts +27 -0
- package/dist/security/authn/oidc/identityToken.js +111 -0
- package/dist/security/authn/oidc/identityToken.js.map +1 -0
- package/dist/security/authn/oidc/jwks.d.ts +25 -0
- package/dist/security/authn/oidc/jwks.js +261 -0
- package/dist/security/authn/oidc/jwks.js.map +1 -0
- package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
- package/dist/security/authn/oidc/providers/generic.js +34 -0
- package/dist/security/authn/oidc/providers/generic.js.map +1 -0
- package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
- package/dist/security/authn/oidc/providers/githubActions.js +129 -0
- package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
- package/dist/security/authn/oidc/providers/index.d.ts +37 -0
- package/dist/security/authn/oidc/providers/index.js +24 -0
- package/dist/security/authn/oidc/providers/index.js.map +1 -0
- package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
- package/dist/security/authn/oidc/tokenExchange.js +306 -0
- package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
- package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
- package/dist/security/authn/oidc/types.d.ts +38 -0
- package/dist/security/authn/oidc/types.js +6 -0
- package/dist/security/authn/oidc/types.js.map +1 -0
- package/dist/security/certificateVerification/index.js +40 -11
- package/dist/security/certificateVerification/index.js.map +1 -1
- package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
- package/dist/security/certificateVerification/trustedIssuers.js +79 -0
- package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
- package/dist/security/certificateVerification/types.d.ts +1 -0
- package/dist/security/credentialProvenance.d.ts +35 -0
- package/dist/security/credentialProvenance.js +51 -0
- package/dist/security/credentialProvenance.js.map +1 -0
- package/dist/security/credentialRejection.d.ts +4 -0
- package/dist/security/credentialRejection.js +24 -0
- package/dist/security/credentialRejection.js.map +1 -0
- package/dist/security/deferredAuthentication.d.ts +36 -0
- package/dist/security/deferredAuthentication.js +70 -0
- package/dist/security/deferredAuthentication.js.map +1 -0
- package/dist/security/impersonation.d.ts +21 -0
- package/dist/security/impersonation.js +108 -9
- package/dist/security/impersonation.js.map +1 -1
- package/dist/security/jsLoader.d.ts +6 -0
- package/dist/security/jsLoader.js +75 -15
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.js +301 -71
- package/dist/security/keys.js.map +1 -1
- package/dist/security/operationScope.d.ts +21 -0
- package/dist/security/operationScope.js +36 -0
- package/dist/security/operationScope.js.map +1 -0
- package/dist/security/permissionsTranslator.js +21 -0
- package/dist/security/permissionsTranslator.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +19 -1
- package/dist/security/tokenAuthentication.js +191 -10
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +4 -3
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
- package/dist/server/DurableSubscriptionsSession.js +67 -10
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.js +73 -0
- package/dist/server/REST.js.map +1 -1
- package/dist/server/graphqlQuerying.js +4 -0
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +11 -0
- package/dist/server/http.js +88 -15
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +8 -1
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +6 -2
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobs.js +4 -1
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/liveSubscriptionAuth.d.ts +26 -4
- package/dist/server/liveSubscriptionAuth.js +105 -39
- package/dist/server/liveSubscriptionAuth.js.map +1 -1
- package/dist/server/loadRootComponents.js +49 -10
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/mqtt.d.ts +2 -0
- package/dist/server/mqtt.js +165 -30
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.d.ts +2 -0
- package/dist/server/nodeName.js +107 -23
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +25 -0
- package/dist/server/serverHelpers/Headers.js +139 -1
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +9 -0
- package/dist/server/serverHelpers/contentTypes.js +32 -25
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
- package/dist/server/serverHelpers/deployValidationState.js +9 -19
- package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
- package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
- package/dist/server/serverHelpers/registeredOperations.js +74 -21
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
- package/dist/server/serverHelpers/requestSanitization.js +20 -0
- package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.js +6 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
- package/dist/server/serverHelpers/serverUtilities.js +90 -20
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
- package/dist/server/serverHelpers/uwsServer.js +19 -1
- package/dist/server/serverHelpers/uwsServer.js.map +1 -1
- package/dist/server/static.js +24 -28
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +5 -0
- package/dist/server/storageReclamation.js +16 -0
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/itc.d.ts +7 -2
- package/dist/server/threads/itc.js +5 -1
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +26 -4
- package/dist/server/threads/manageThreads.js +517 -72
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.js +89 -26
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadHeapMemory.d.ts +2 -0
- package/dist/server/threads/threadHeapMemory.js +31 -0
- package/dist/server/threads/threadHeapMemory.js.map +1 -0
- package/dist/server/threads/threadServer.js +46 -15
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/config.d.ts +1 -3
- package/dist/sqlEngine/config.js +19 -16
- package/dist/sqlEngine/config.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +1 -1
- package/dist/sqlTranslator/index.js +30 -7
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/directives/5-3-0.d.ts +7 -0
- package/dist/upgrade/directives/5-3-0.js +148 -0
- package/dist/upgrade/directives/5-3-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.js +2 -1
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.js +2 -1
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/common_utils.d.ts +16 -0
- package/dist/utility/common_utils.js +32 -6
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/componentNames.d.ts +8 -0
- package/dist/utility/componentNames.js +12 -1
- package/dist/utility/componentNames.js.map +1 -1
- package/dist/utility/environment/environmentManager.js +3 -6
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +1 -0
- package/dist/utility/environment/systemInformation.js +1 -0
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +2 -0
- package/dist/utility/errors/commonErrors.js +2 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +17 -0
- package/dist/utility/errors/hdbError.js +30 -1
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +16 -0
- package/dist/utility/hdbTerms.js +18 -2
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +2 -0
- package/dist/utility/logging/harper_logger.js +91 -14
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logRotator.js +76 -49
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/nodeIdentity.d.ts +9 -0
- package/dist/utility/nodeIdentity.js +58 -0
- package/dist/utility/nodeIdentity.js.map +1 -0
- package/dist/utility/npmUtilities.js +9 -7
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operationPermissions.d.ts +3 -1
- package/dist/utility/operationPermissions.js +16 -1
- package/dist/utility/operationPermissions.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +10 -7
- package/dist/utility/operation_authorization.js +212 -41
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/watchPath.d.ts +29 -0
- package/dist/utility/watchPath.js +68 -0
- package/dist/utility/watchPath.js.map +1 -0
- package/dist/utility/watcherFallback.d.ts +86 -0
- package/dist/utility/watcherFallback.js +278 -1
- package/dist/utility/watcherFallback.js.map +1 -1
- package/dist/validation/configValidator.d.ts +12 -0
- package/dist/validation/configValidator.js +199 -72
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/installValidator.js +12 -0
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +11 -0
- package/dist/validation/validationWrapper.js +16 -3
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +2 -0
- package/json/systemSchema.json +52 -0
- package/npm-shrinkwrap.json +235 -233
- package/package.json +8 -7
- package/resources/DESIGN.md +114 -52
- package/resources/DatabaseTransaction.ts +522 -130
- package/resources/LMDBTransaction.ts +26 -4
- package/resources/PrimaryRocksDatabase.ts +29 -3
- package/resources/RecordEncoder.ts +103 -8
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +17 -9
- package/resources/ResourceInterface.ts +23 -0
- package/resources/RocksIndexStore.ts +30 -10
- package/resources/RocksTransactionLogStore.ts +78 -21
- package/resources/Table.ts +1107 -164
- package/resources/auditStore.ts +187 -21
- package/resources/blob.ts +1029 -110
- package/resources/branchDatabase.ts +941 -0
- package/resources/crdt.ts +76 -12
- package/resources/databases.ts +1354 -522
- package/resources/defineTable.ts +18 -2
- package/resources/graphql.ts +70 -16
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +6 -2
- package/resources/longLivedTransactions.ts +360 -0
- package/resources/models/backendRegistry.ts +84 -2
- package/resources/models/bootstrap.ts +473 -28
- package/resources/recordLock.ts +253 -0
- package/resources/replayLogs.ts +147 -26
- package/resources/replayLogsGuards.ts +171 -8
- package/resources/search.ts +154 -32
- package/resources/transactionBroadcast.ts +3 -3
- package/security/auth.ts +68 -29
- package/security/authn/oidc/claims.ts +72 -0
- package/security/authn/oidc/identityToken.ts +129 -0
- package/security/authn/oidc/jwks.ts +260 -0
- package/security/authn/oidc/providers/generic.ts +40 -0
- package/security/authn/oidc/providers/githubActions.ts +137 -0
- package/security/authn/oidc/providers/index.ts +52 -0
- package/security/authn/oidc/tokenExchange.ts +300 -0
- package/security/authn/oidc/trustPolicyOperations.ts +343 -0
- package/security/authn/oidc/types.ts +41 -0
- package/security/certificateVerification/index.ts +54 -13
- package/security/certificateVerification/trustedIssuers.ts +76 -0
- package/security/certificateVerification/types.ts +1 -0
- package/security/credentialProvenance.ts +47 -0
- package/security/credentialRejection.ts +22 -0
- package/security/deferredAuthentication.ts +71 -0
- package/security/impersonation.ts +117 -12
- package/security/jsLoader.ts +81 -18
- package/security/keys.ts +298 -72
- package/security/operationScope.ts +33 -0
- package/security/permissionsTranslator.js +23 -0
- package/security/tokenAuthentication.ts +233 -12
- package/security/user.ts +4 -3
- package/server/DESIGN.md +183 -16
- package/server/DurableSubscriptionsSession.ts +71 -11
- package/server/REST.ts +79 -1
- package/server/graphqlQuerying.ts +4 -0
- package/server/http.ts +99 -18
- package/server/itc/serverHandlers.js +8 -1
- package/server/jobs/jobProcess.ts +8 -2
- package/server/jobs/jobs.ts +4 -1
- package/server/liveSubscriptionAuth.ts +129 -46
- package/server/loadRootComponents.js +50 -8
- package/server/mqtt.ts +179 -38
- package/server/nodeName.ts +103 -21
- package/server/serverHelpers/Headers.ts +131 -0
- package/server/serverHelpers/contentTypes.ts +29 -21
- package/server/serverHelpers/deployValidationState.ts +24 -13
- package/server/serverHelpers/operationAuthorizationState.ts +34 -3
- package/server/serverHelpers/registeredOperations.ts +79 -22
- package/server/serverHelpers/requestSanitization.ts +15 -0
- package/server/serverHelpers/serverHandlers.js +6 -3
- package/server/serverHelpers/serverUtilities.ts +104 -31
- package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
- package/server/serverHelpers/uwsServer.ts +17 -2
- package/server/static.ts +23 -29
- package/server/storageReclamation.ts +13 -0
- package/server/threads/itc.js +11 -1
- package/server/threads/manageThreads.js +526 -63
- package/server/threads/socketRouter.ts +81 -26
- package/server/threads/threadHeapMemory.ts +26 -0
- package/server/threads/threadServer.js +43 -15
- package/sqlTranslator/index.ts +31 -8
- package/studio/web/assets/{Chat-Br06zdMA.js → Chat-BnCBegQz.js} +1 -1
- package/studio/web/assets/{FloatingChat-BWImX5fA.js → FloatingChat-CoDW1ySS.js} +3 -3
- package/studio/web/assets/{apiToken-DN0nmDsq.js → apiToken-Bwk5BLXW.js} +1 -1
- package/studio/web/assets/{applications-kSxVoyeU.js → applications-DHxGi7JH.js} +1 -1
- package/studio/web/assets/{cssMode-C1JeufH5.js → cssMode-s0cWI-_M.js} +1 -1
- package/studio/web/assets/{editor-qoo9CrGO.js → editor-DNcRHK54.js} +1 -1
- package/studio/web/assets/{html-Dt4IIy04.js → html-Bdssedlg.js} +1 -1
- package/studio/web/assets/{htmlMode-DXgKKr4C.js → htmlMode-CoDlJ3fw.js} +1 -1
- package/studio/web/assets/{index-6onkYFOG.js → index-D6sxmFLR.js} +5 -5
- package/studio/web/assets/{index.lazy-BrCFnpNJ.js → index.lazy-tmU5BS8s.js} +1 -1
- package/studio/web/assets/{javascript-DNCQGUBc.js → javascript-B8meVSTH.js} +1 -1
- package/studio/web/assets/{jsonMode-CR6HWruP.js → jsonMode-DpIPd35T.js} +1 -1
- package/studio/web/assets/{languageServices-BM4fI4rS.js → languageServices-C_5FMJzQ.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-DSa1ttcD.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
- package/studio/web/assets/{notifications-BHXLnh6x.js → notifications-CQf18QKb.js} +1 -1
- package/studio/web/assets/{notifications-CUmtIA6z.js → notifications-CvZivSbh.js} +1 -1
- package/studio/web/assets/{profile-8BeFSF3j.js → profile-DdOwtntb.js} +1 -1
- package/studio/web/assets/{regions-C8qR0HhD.js → regions-n69fwagr.js} +1 -1
- package/studio/web/assets/{register-B4n5i0SD.js → register-PfWTCXWB.js} +2 -2
- package/studio/web/assets/{setComponentFile-g0_B0lgX.js → setComponentFile-Bg6O7X0S.js} +1 -1
- package/studio/web/assets/{setup-B0CTj_Q5.js → setup-CUx_aUDl.js} +2 -2
- package/studio/web/assets/{status-C6Yib7-K.js → status-D7BVKqX9.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-Dgta7bVi.js → toggleHighContrast-DBSyXzMr.js} +1 -1
- package/studio/web/assets/{tsMode-CH_jHvU-.js → tsMode-BByKCjBS.js} +1 -1
- package/studio/web/assets/{typescript-Co9LCXd5.js → typescript-DDLnLpw9.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-wKC8NsC_.js → useEntityRestURL-31CHGaHk.js} +1 -1
- package/studio/web/assets/{workers-CWeLxCXA.js → workers-pR3jRY9D.js} +1 -1
- package/studio/web/assets/{xml-BadC-0Rk.js → xml-2iRnMhQO.js} +1 -1
- package/studio/web/assets/{yaml-BiUfxPbC.js → yaml-Bf92gJpd.js} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/directives/5-3-0.ts +132 -0
- package/upgrade/directives/directivesController.ts +2 -1
- package/utility/OperationFunctionCaller.ts +2 -1
- package/utility/common_utils.ts +30 -5
- package/utility/componentNames.ts +12 -0
- package/utility/environment/environmentManager.ts +3 -7
- package/utility/environment/systemInformation.ts +7 -0
- package/utility/errors/commonErrors.ts +4 -0
- package/utility/errors/hdbError.ts +29 -0
- package/utility/hdbTerms.ts +17 -0
- package/utility/logging/harper_logger.ts +87 -14
- package/utility/logging/logRotator.ts +72 -45
- package/utility/nodeIdentity.ts +45 -0
- package/utility/npmUtilities.ts +10 -8
- package/utility/operationPermissions.ts +18 -1
- package/utility/operation_authorization.ts +231 -42
- package/utility/watchPath.ts +63 -0
- package/utility/watcherFallback.ts +270 -0
- package/validation/configValidator.ts +209 -72
- package/validation/installValidator.ts +15 -0
- package/validation/validationWrapper.ts +18 -4
|
@@ -4,6 +4,7 @@ import { DatabaseTransaction } from './DatabaseTransaction.ts';
|
|
|
4
4
|
import { IterableEventQueue } from './IterableEventQueue.ts';
|
|
5
5
|
import type { Entry, RecordObject } from './RecordEncoder.ts';
|
|
6
6
|
import { RequestTarget } from './RequestTarget.ts';
|
|
7
|
+
import type { RecordLockOptions } from './recordLock.ts';
|
|
7
8
|
export interface ResourceInterface<Record extends object = any> extends Partial<RecordObject>, Pick<UpdatableRecord<Record>, 'addTo' | 'subtractFrom'> {
|
|
8
9
|
allowRead(user: User, target: RequestTarget, context: Context): boolean | Promise<boolean>;
|
|
9
10
|
get?(target?: RequestTargetOrId): (Record & Partial<RecordObject>) | Promise<Record & Partial<RecordObject>> | AsyncIterable<Record & Partial<RecordObject>> | Promise<AsyncIterable<Record & Partial<RecordObject>>>;
|
|
@@ -18,6 +19,10 @@ export interface ResourceInterface<Record extends object = any> extends Partial<
|
|
|
18
19
|
allowDelete(user: User, target: RequestTarget, context: Context): boolean | Promise<boolean>;
|
|
19
20
|
delete?(target: RequestTargetOrId): boolean | Promise<boolean>;
|
|
20
21
|
invalidate(target: RequestTargetOrId): void | Promise<void>;
|
|
22
|
+
/** Acquire an exclusive lock on a record and return it ready for updates (see `RecordLockOptions`) */
|
|
23
|
+
lock?(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<WritableRecord<Record>>;
|
|
24
|
+
/** Release the lock this instance holds; resolves true when this call cleared it */
|
|
25
|
+
unlock?(): Promise<boolean>;
|
|
21
26
|
publish?(target: RequestTargetOrId, record: Record, options?: any): void;
|
|
22
27
|
subscribe?(request: SubscriptionRequest): AsyncIterable<Record> | Promise<AsyncIterable<Record>>;
|
|
23
28
|
doesExist(): boolean;
|
|
@@ -196,6 +201,21 @@ interface TypedUpdatableRecord<Record extends object, Property extends keyof Rec
|
|
|
196
201
|
addTo(property: Property, value: Record[Property]): void;
|
|
197
202
|
subtractFrom(property: Property, value: Record[Property]): void;
|
|
198
203
|
}
|
|
204
|
+
export type { RecordLockOptions } from './recordLock.ts';
|
|
205
|
+
/**
|
|
206
|
+
* What `lock()` resolves with: the locked record, loaded after the lock committed and tracking
|
|
207
|
+
* changes for `save()`. Inside an explicit `transaction()` scope a scoped lock is released when
|
|
208
|
+
* that transaction commits or aborts. Outside any explicit scope (ImmediateTransaction context),
|
|
209
|
+
* a scoped lock persists until `unlock()` is called or the lease expires. A held lock
|
|
210
|
+
* (`{ hold: true }`) is always released by `unlock()` or its lease, regardless of scope.
|
|
211
|
+
*/
|
|
212
|
+
export type WritableRecord<Record extends object = any> = UpdatableRecord<Record> & {
|
|
213
|
+
save(): void | Promise<void>;
|
|
214
|
+
update(updates?: Partial<Record>): unknown;
|
|
215
|
+
delete(target?: RequestTargetOrId): boolean | Promise<boolean>;
|
|
216
|
+
lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<WritableRecord<Record>>;
|
|
217
|
+
unlock(): Promise<boolean>;
|
|
218
|
+
};
|
|
199
219
|
export interface Subscription<Event extends object = any> extends IterableEventQueue<Event> {
|
|
200
220
|
new (listener: Listener<Event>): any;
|
|
201
221
|
listener: Listener<Event>;
|
|
@@ -215,4 +235,3 @@ export interface ListenerPayload<Payload extends object = any> {
|
|
|
215
235
|
type: string;
|
|
216
236
|
beginTxn: boolean;
|
|
217
237
|
}
|
|
218
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceInterface.js","sourceRoot":"","sources":["../../resources/ResourceInterface.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ResourceInterface.js","sourceRoot":"","sources":["../../resources/ResourceInterface.ts"],"names":[],"mappings":";;;AA4Ka,QAAA,WAAW,GAAG;IAC1B,SAAS;IACT,UAAU;IACV,WAAW;IACX,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,cAAc;IACd,oBAAoB;IACpB,IAAI;IACJ,WAAW;IACX,iBAAiB;IACjB,IAAI;IACJ,WAAW;IACX,aAAa;CACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type StoreIteratorOptions, type StorePutOptions, type StoreRemoveOptions, RocksDatabase } from '@harperfast/rocksdb-js';
|
|
1
|
+
import { type CountEstimate, type CountEstimateOptions, type StoreIteratorOptions, type StorePutOptions, type StoreRemoveOptions, RocksDatabase } from '@harperfast/rocksdb-js';
|
|
2
2
|
import { Id } from './ResourceInterface.ts';
|
|
3
3
|
declare module '@harperfast/rocksdb-js' {
|
|
4
4
|
interface DBI<T> {
|
|
@@ -18,6 +18,11 @@ export declare class RocksIndexStore extends RocksDatabase {
|
|
|
18
18
|
* @param options
|
|
19
19
|
*/
|
|
20
20
|
getRange(options: StoreIteratorOptions): Iterable<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Estimate the entry count of a range of indexed values. Shares `getRange`'s bound translation
|
|
23
|
+
* so a planner estimate always covers exactly the range execution would iterate.
|
|
24
|
+
*/
|
|
25
|
+
estimateCount(options?: CountEstimateOptions): CountEstimate;
|
|
21
26
|
/**
|
|
22
27
|
* Translate a put with indexed value and primary key to an underlying put
|
|
23
28
|
* @param indexedValue - ignored, only used by LMDB
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RocksIndexStore = void 0;
|
|
4
|
-
const DatabaseTransaction_ts_1 = require("./DatabaseTransaction.js");
|
|
5
4
|
const rocksdb_js_1 = require("@harperfast/rocksdb-js");
|
|
6
5
|
const ordered_binary_1 = require("ordered-binary");
|
|
6
|
+
/**
|
|
7
|
+
* Widen value-space bounds to `[value, MAXIMUM_KEY]` composite bounds. The base implementation's
|
|
8
|
+
* encoded-byte successor of the bare indexed value would exclude the wrong entries on composite
|
|
9
|
+
* `[indexedValue, primaryKey]` keys.
|
|
10
|
+
*/
|
|
11
|
+
function translateIndexBounds(options) {
|
|
12
|
+
let { start, end } = options;
|
|
13
|
+
const { exclusiveStart, inclusiveEnd, reverse } = options;
|
|
14
|
+
if ((reverse ? !exclusiveStart : exclusiveStart) && start !== undefined) {
|
|
15
|
+
start = [start, ordered_binary_1.MAXIMUM_KEY];
|
|
16
|
+
}
|
|
17
|
+
if ((reverse ? !inclusiveEnd : inclusiveEnd) && end !== undefined) {
|
|
18
|
+
end = [end, ordered_binary_1.MAXIMUM_KEY];
|
|
19
|
+
}
|
|
20
|
+
return { ...options, start, end };
|
|
21
|
+
}
|
|
7
22
|
/**
|
|
8
23
|
* A specialized RocksDB-based index store that maintains indexed references to primary keys.
|
|
9
24
|
* This store uses composite keys consisting of indexed values and primary keys, enabling
|
|
@@ -17,18 +32,17 @@ class RocksIndexStore extends rocksdb_js_1.RocksDatabase {
|
|
|
17
32
|
* @param options
|
|
18
33
|
*/
|
|
19
34
|
getRange(options) {
|
|
20
|
-
|
|
21
|
-
if ((reverse ? !exclusiveStart : exclusiveStart) && start !== undefined) {
|
|
22
|
-
start = [start, ordered_binary_1.MAXIMUM_KEY];
|
|
23
|
-
}
|
|
24
|
-
if ((reverse ? !inclusiveEnd : inclusiveEnd) && end !== undefined) {
|
|
25
|
-
end = [end, ordered_binary_1.MAXIMUM_KEY];
|
|
26
|
-
}
|
|
27
|
-
const translatedOptions = { ...options, start, end };
|
|
28
|
-
return (0, DatabaseTransaction_ts_1.trackReadRange)(options.transaction, () => super.getRange(translatedOptions)).map(({ key }) => {
|
|
35
|
+
return super.getRange(translateIndexBounds(options)).map(({ key }) => {
|
|
29
36
|
return { key: key[0], value: key.length > 2 ? key.slice(1) : key[1] };
|
|
30
37
|
});
|
|
31
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Estimate the entry count of a range of indexed values. Shares `getRange`'s bound translation
|
|
41
|
+
* so a planner estimate always covers exactly the range execution would iterate.
|
|
42
|
+
*/
|
|
43
|
+
estimateCount(options) {
|
|
44
|
+
return super.estimateCount(translateIndexBounds(options ?? {}));
|
|
45
|
+
}
|
|
32
46
|
/**
|
|
33
47
|
* Translate a put with indexed value and primary key to an underlying put
|
|
34
48
|
* @param indexedValue - ignored, only used by LMDB
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RocksIndexStore.js","sourceRoot":"","sources":["../../resources/RocksIndexStore.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"RocksIndexStore.js","sourceRoot":"","sources":["../../resources/RocksIndexStore.ts"],"names":[],"mappings":";;;AAAA,uDAQgC;AAEhC,mDAA6C;AAQ7C;;;;GAIG;AACH,SAAS,oBAAoB,CAE3B,OAAU;IACX,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC1D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzE,KAAK,GAAG,CAAC,KAAK,EAAE,4BAAW,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACnE,GAAG,GAAG,CAAC,GAAG,EAAE,4BAAW,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAa,eAAgB,SAAQ,0BAAa;IACjD;;;OAGG;IACH,QAAQ,CAAC,OAA6B;QACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YACpE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,OAA8B;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACH,aAAa;IACb,GAAG,CAAC,YAAiB,EAAE,UAAc,EAAE,OAAwB;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,YAAiB,EAAE,UAAc,EAAE,OAAwB;QAClE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,aAAa;IACb,MAAM,CAAC,YAAiB,EAAE,UAAc,EAAE,OAA4B;QACrE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa;IACb,UAAU,CAAC,YAAiB,EAAE,UAAc,EAAE,OAA4B;QACzE,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACD;AA3CD,0CA2CC;AAED;;;GAGG;AACH,gBAAG,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,YAAiB;IACvE,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,4BAAW,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACrE,CAAC,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { TransactionLog, RocksDatabase } from '@harperfast/rocksdb-js';
|
|
2
2
|
import { AuditRecord } from './auditStore.ts';
|
|
3
|
+
import { type CorruptFrameStop } from './replayLogsGuards.ts';
|
|
3
4
|
import { EventEmitter } from 'node:events';
|
|
5
|
+
export type TransactionLogIterable = Iterable<AuditRecord> & {
|
|
6
|
+
/** Corrupt frames that ended a log's iteration during this range. */
|
|
7
|
+
corruptFrameStop: CorruptFrameStop;
|
|
8
|
+
};
|
|
4
9
|
/**
|
|
5
10
|
* Represents a transaction log store backed by RocksDB.
|
|
6
11
|
* This class provides methods that conform to a standard store interface
|
|
@@ -13,6 +18,7 @@ export declare class RocksTransactionLogStore extends EventEmitter {
|
|
|
13
18
|
logByName: Map<string, TransactionLog>;
|
|
14
19
|
updates: number;
|
|
15
20
|
rootStore: RocksDatabase;
|
|
21
|
+
corruptFrameScope: string;
|
|
16
22
|
reusableIterable: boolean;
|
|
17
23
|
structureVersionByLogTable: WeakMap<TransactionLog, Map<number, number>>;
|
|
18
24
|
constructor(rootDatabase: RocksDatabase);
|
|
@@ -46,7 +52,14 @@ export declare class RocksTransactionLogStore extends EventEmitter {
|
|
|
46
52
|
startByLog?: Map<string, number>;
|
|
47
53
|
startFromLastFlushed?: boolean;
|
|
48
54
|
readUncommitted?: boolean;
|
|
49
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Track which version a break truncated, in `corruptFrameStop.truncatedVersions`. Costs two
|
|
57
|
+
* property stores per yielded entry (see below), so it defaults off: only boot replay reads
|
|
58
|
+
* `truncatedVersions`, but this range is also the always-on source for live subscriptions and
|
|
59
|
+
* replication, where every healthy entry would otherwise pay bookkeeping nothing consumes.
|
|
60
|
+
*/
|
|
61
|
+
trackCorruptTransactions?: boolean;
|
|
62
|
+
}): TransactionLogIterable;
|
|
50
63
|
getKeys(_options?: any): any[];
|
|
51
64
|
getStats(): {
|
|
52
65
|
logs: any[];
|
|
@@ -51,11 +51,7 @@ if (!process.env.HARPER_NO_FLUSH_ON_EXIT && node_worker_threads_1.isMainThread)
|
|
|
51
51
|
// reserving 0x80000000 for future use if we need a flag to indicate 64-bits of flag bits for more flags
|
|
52
52
|
const HAS_PREVIOUS_RESIDENCY_ID = 0x40000000;
|
|
53
53
|
const HAS_PREVIOUS_VERSION = 0x20000000;
|
|
54
|
-
|
|
55
|
-
// endIteratorOnCorruptFrame in replayLogsGuards.ts for why this is end-of-log, not a crash.
|
|
56
|
-
function warnCorruptFrame(logName) {
|
|
57
|
-
return (error) => harperLogger.warn(`Stopping transaction log "${logName}" at a corrupt entry during replay`, error);
|
|
58
|
-
}
|
|
54
|
+
const reportCorruptFrame = (0, replayLogsGuards_ts_1.createCorruptFrameReporter)(harperLogger);
|
|
59
55
|
/**
|
|
60
56
|
* Represents a transaction log store backed by RocksDB.
|
|
61
57
|
* This class provides methods that conform to a standard store interface
|
|
@@ -68,6 +64,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
68
64
|
logByName = new Map();
|
|
69
65
|
updates = 0; // the number of updates to the list of logs that have occurred
|
|
70
66
|
rootStore;
|
|
67
|
+
corruptFrameScope;
|
|
71
68
|
reusableIterable = true; // flag indicating that iterable can be reused to resume iterating through audit log
|
|
72
69
|
// Highest structureVersion appended to each per-node TransactionLog, tracked per tableId. Drives the
|
|
73
70
|
// per-log HAS_STRUCTURE_UPDATE flag in put(). Keyed by (log, tableId): a per-node log interleaves entries
|
|
@@ -80,6 +77,10 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
80
77
|
super();
|
|
81
78
|
this.log = rootDatabase.useLog('local');
|
|
82
79
|
this.rootStore = rootDatabase;
|
|
80
|
+
// Break reports are keyed per log name, but every store has its own 'local' log, so they
|
|
81
|
+
// need a scope. The path, not `databaseName`: one root store can back several logical
|
|
82
|
+
// databases and they share these logs, and `databaseName` is not set on it yet here.
|
|
83
|
+
this.corruptFrameScope = rootDatabase.path;
|
|
83
84
|
}
|
|
84
85
|
/**
|
|
85
86
|
* Translate a put to an addEntry
|
|
@@ -145,10 +146,9 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
145
146
|
}
|
|
146
147
|
if (this.listenerCount('aftercommit')) {
|
|
147
148
|
if (!(auditRecord instanceof Uint8Array)) {
|
|
148
|
-
const
|
|
149
|
-
if (
|
|
150
|
-
auditRecord.
|
|
151
|
-
auditRecord.recordVersion = auditRecord.version;
|
|
149
|
+
const txnLogKey = options.transaction.getTimestamp?.();
|
|
150
|
+
if (txnLogKey != null)
|
|
151
|
+
auditRecord.txnLogKey = txnLogKey;
|
|
152
152
|
}
|
|
153
153
|
(options.transaction.logEntries ??= []).push(auditRecord);
|
|
154
154
|
}
|
|
@@ -199,7 +199,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
199
199
|
if (entry.recordId === recordId && entry.tableId === tableId) {
|
|
200
200
|
return entry;
|
|
201
201
|
}
|
|
202
|
-
if (entry.
|
|
202
|
+
if (entry.txnLogKey !== key)
|
|
203
203
|
return; // no longer in this transaction
|
|
204
204
|
}
|
|
205
205
|
}
|
|
@@ -259,6 +259,34 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
259
259
|
getRange(options) {
|
|
260
260
|
let iterable = new extended_iterable_1.ExtendedIterable();
|
|
261
261
|
let aggregateIterator;
|
|
262
|
+
let singleLogIterator;
|
|
263
|
+
const attributeCorruption = options.trackCorruptTransactions === true;
|
|
264
|
+
const corruptFrameStop = { breaks: 0, truncatedVersions: new Set(), midLogBreak: false };
|
|
265
|
+
// Each log's iterator carries the version and endTxn of the last entry it yielded, so a break
|
|
266
|
+
// can be attributed to the source transaction whose remaining entries it swallowed — unless
|
|
267
|
+
// that entry's own endTxn already closed the transaction, in which case the break fell after
|
|
268
|
+
// it, not inside it. On the iterator itself, not in a map keyed by log: this is written per
|
|
269
|
+
// entry on the replay/broadcast path (when `attributeCorruption`), and it stays attached when a
|
|
270
|
+
// removed log is spliced out of the aggregate.
|
|
271
|
+
const trackCorruptFrames = (log, queryOptions) => {
|
|
272
|
+
const report = reportCorruptFrame(`${this.corruptFrameScope}/${log.name}`);
|
|
273
|
+
const iterator = (0, replayLogsGuards_ts_1.endIteratorOnCorruptFrame)(log.query(queryOptions), (error) => {
|
|
274
|
+
corruptFrameStop.breaks++;
|
|
275
|
+
if (iterator.lastVersion !== undefined && iterator.lastEndTxn !== true) {
|
|
276
|
+
corruptFrameStop.truncatedVersions.add(iterator.lastVersion);
|
|
277
|
+
}
|
|
278
|
+
if ((0, replayLogsGuards_ts_1.isMidLogBreak)(error))
|
|
279
|
+
corruptFrameStop.midLogBreak = true;
|
|
280
|
+
report(error);
|
|
281
|
+
});
|
|
282
|
+
// Set here, once, rather than left for the per-entry write sites below to add these fields
|
|
283
|
+
// on their first call: every TrackedIterator then reaches its final shape before any entry
|
|
284
|
+
// is consumed, so the hot per-entry writes hit an already-stable shape instead of each
|
|
285
|
+
// triggering its own transition on that iterator's first entry.
|
|
286
|
+
iterator.lastVersion = undefined;
|
|
287
|
+
iterator.lastEndTxn = undefined;
|
|
288
|
+
return iterator;
|
|
289
|
+
};
|
|
262
290
|
if (options.log !== undefined) {
|
|
263
291
|
let log = typeof options.log === 'number' ? this.nodeLogs?.[options.log] : this.logByName.get(options.log);
|
|
264
292
|
if (!log) {
|
|
@@ -273,7 +301,8 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
273
301
|
log = this.rootStore.useLog(options.log);
|
|
274
302
|
}
|
|
275
303
|
}
|
|
276
|
-
const queryIterator = (
|
|
304
|
+
const queryIterator = trackCorruptFrames(log, options);
|
|
305
|
+
singleLogIterator = queryIterator;
|
|
277
306
|
iterable.iterate = () => queryIterator;
|
|
278
307
|
}
|
|
279
308
|
else {
|
|
@@ -326,7 +355,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
326
355
|
// condition of potentially missing an initial update
|
|
327
356
|
queryOptions = { ...options, start: options.start ?? 0 };
|
|
328
357
|
}
|
|
329
|
-
iterators.push((
|
|
358
|
+
iterators.push(trackCorruptFrames(log, queryOptions));
|
|
330
359
|
}
|
|
331
360
|
}
|
|
332
361
|
latestUpdates = this.updates;
|
|
@@ -382,7 +411,11 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
382
411
|
}
|
|
383
412
|
}
|
|
384
413
|
if (earliestIndex >= 0) {
|
|
385
|
-
|
|
414
|
+
if (attributeCorruption) {
|
|
415
|
+
// before the refill, which is where a break surfaces and needs this entry's version
|
|
416
|
+
iterators[earliestIndex].lastVersion = earliest.timestamp;
|
|
417
|
+
iterators[earliestIndex].lastEndTxn = earliest.endTxn;
|
|
418
|
+
}
|
|
386
419
|
nextEntries[earliestIndex] = safeNext(iterators[earliestIndex], logs[earliestIndex]);
|
|
387
420
|
return {
|
|
388
421
|
value: onlyKeys ? earliest.timestamp : earliest,
|
|
@@ -416,6 +449,13 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
416
449
|
iterable.iterate = () => aggregateIterator;
|
|
417
450
|
}
|
|
418
451
|
const mappedAggregateIterable = iterable.map(({ timestamp, data, endTxn }) => {
|
|
452
|
+
// A break surfaces on the pull after this entry, so recording it here is in time to attribute
|
|
453
|
+
// that break to this entry's transaction. The aggregate branch records its own, per source
|
|
454
|
+
// log, because there this callback cannot tell which log an entry came from.
|
|
455
|
+
if (attributeCorruption && singleLogIterator) {
|
|
456
|
+
singleLogIterator.lastVersion = timestamp;
|
|
457
|
+
singleLogIterator.lastEndTxn = endTxn;
|
|
458
|
+
}
|
|
419
459
|
// Per-entry try/catch: a corrupt rocks prelude (first 4-16 bytes) would otherwise
|
|
420
460
|
// throw a raw `RangeError: Offset is outside the bounds of the DataView` out
|
|
421
461
|
// through `iterable.map`, escape the for-of consumer, and land as an
|
|
@@ -441,10 +481,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
441
481
|
position += 8;
|
|
442
482
|
}
|
|
443
483
|
const auditRecord = (0, auditStore_ts_1.readAuditEntry)(data, position, undefined);
|
|
444
|
-
|
|
445
|
-
// the record's own version survives as recordVersion
|
|
446
|
-
auditRecord.version = timestamp;
|
|
447
|
-
auditRecord.localTime = timestamp;
|
|
484
|
+
auditRecord.txnLogKey = timestamp;
|
|
448
485
|
auditRecord.endTxn = endTxn;
|
|
449
486
|
auditRecord.previousResidencyId = previousResidencyId;
|
|
450
487
|
auditRecord.previousVersion = previousVersion;
|
|
@@ -457,7 +494,9 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
457
494
|
byteLength: data?.byteLength,
|
|
458
495
|
});
|
|
459
496
|
return {
|
|
497
|
+
// the log key is all this entry still yields; its record version is undecodable
|
|
460
498
|
version: timestamp,
|
|
499
|
+
txnLogKey: timestamp,
|
|
461
500
|
endTxn,
|
|
462
501
|
type: undefined,
|
|
463
502
|
tableId: undefined,
|
|
@@ -473,6 +512,7 @@ class RocksTransactionLogStore extends node_events_1.EventEmitter {
|
|
|
473
512
|
mappedAggregateIterable.addLog = aggregateIterator.addLog;
|
|
474
513
|
mappedAggregateIterable.removeLog = aggregateIterator.removeLog;
|
|
475
514
|
}
|
|
515
|
+
mappedAggregateIterable.corruptFrameStop = corruptFrameStop;
|
|
476
516
|
return mappedAggregateIterable;
|
|
477
517
|
}
|
|
478
518
|
getKeys(_options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RocksTransactionLogStore.js","sourceRoot":"","sources":["../../resources/RocksTransactionLogStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RocksTransactionLogStore.js","sourceRoot":"","sources":["../../resources/RocksTransactionLogStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
import { type Database } from 'lmdb';
|
|
7
7
|
import type { ResourceInterface, SubscriptionRequest, Id, Context, Sort, SubSelect, RequestTargetOrId } from './ResourceInterface.ts';
|
|
8
8
|
import type { User } from '../security/user.ts';
|
|
9
|
+
import { type RecordLockHandle, type RecordLockOptions } from './recordLock.ts';
|
|
9
10
|
import { type EmbedAttribute, type Embedder } from './models/embedHook.ts';
|
|
10
|
-
import { RecordObject, type Entry } from './RecordEncoder.ts';
|
|
11
|
+
import { RecordObject, type Entry, type StructureCounts } from './RecordEncoder.ts';
|
|
11
12
|
import { RequestTarget } from './RequestTarget.ts';
|
|
12
|
-
import { Transaction as RocksTransaction } from '@harperfast/rocksdb-js';
|
|
13
|
+
import { RocksDatabase, Transaction as RocksTransaction } from '@harperfast/rocksdb-js';
|
|
13
14
|
import { type JsonSchemaFragment } from './jsonSchemaTypes.ts';
|
|
14
15
|
export type Attribute = {
|
|
15
16
|
name: string;
|
|
@@ -40,6 +41,12 @@ export type Attribute = {
|
|
|
40
41
|
select?: any;
|
|
41
42
|
};
|
|
42
43
|
type MaybePromise<T> = T | Promise<T>;
|
|
44
|
+
export declare const UPDATE_ATTRIBUTES_LOCK_TIMEOUT = 10000;
|
|
45
|
+
export declare const UPDATE_ATTRIBUTES_LOCK_SLOW_WAIT = 1000;
|
|
46
|
+
/** The wait blocks the event loop, so the locked section must stay synchronous. */
|
|
47
|
+
export declare function acquireUpdateAttributesLock(rootStore: RocksDatabase, scopeDescription: string, timeout?: number): void;
|
|
48
|
+
export declare function releaseUpdateAttributesLock(rootStore: RocksDatabase): void;
|
|
49
|
+
export declare function withUpdateAttributesLock<Callback extends () => unknown>(rootStore: RocksDatabase, scopeDescription: string, callback: Callback & (ReturnType<Callback> extends PromiseLike<unknown> ? never : unknown)): ReturnType<Callback>;
|
|
43
50
|
export declare function ignoreAlreadyDropped(error: any): void;
|
|
44
51
|
export declare function freezeRecord(value: any): void;
|
|
45
52
|
export declare function frozenRecordView(record: any): any;
|
|
@@ -73,7 +80,16 @@ export declare function makeTable(options: any): {
|
|
|
73
80
|
"__#private@#version"?: number;
|
|
74
81
|
"__#private@#entry"?: Entry;
|
|
75
82
|
"__#private@#savingOperation"?: any;
|
|
83
|
+
"__#private@#lockHandle"?: RecordLockHandle;
|
|
84
|
+
"__#private@#lockWritable"?: boolean;
|
|
76
85
|
getProperty: (name: string) => any;
|
|
86
|
+
/**
|
|
87
|
+
* Shared guard: if this instance is lock-writable but the handle is gone (expired or
|
|
88
|
+
* released), throw 409 before staging any write. Covers update/invalidate/relocate/delete
|
|
89
|
+
* in addition to the save() path. Every lock-writable instance carries its own handle in
|
|
90
|
+
* #lockHandle (scoped and hold alike), so we never need to search the registry here.
|
|
91
|
+
*/
|
|
92
|
+
"__#private@#assertLiveHandle"(id: Id): void;
|
|
77
93
|
_loadRecord(target: RequestTarget, request: Context, resourceOptions?: any): MaybePromise</*elided*/ any>;
|
|
78
94
|
/**
|
|
79
95
|
* This is a request to explicitly ensure that the record is loaded from source, rather than only using the local record.
|
|
@@ -129,9 +145,25 @@ export declare function makeTable(options: any): {
|
|
|
129
145
|
_writeInvalidate(id: Id, partialRecord?: any, options?: any): void;
|
|
130
146
|
_writeRelocate(id: Id, options: any): void;
|
|
131
147
|
/**
|
|
132
|
-
*
|
|
148
|
+
* Acquire an exclusive lock on this record (or on `target`'s) and return it ready for updates
|
|
149
|
+
* (harper#483, Phase 0: exclusive across every worker thread of this node). The lock is held
|
|
150
|
+
* in process memory only — no durable writes. Phase 0 contract: lock() is mutually exclusive
|
|
151
|
+
* with other lock() calls on the same key; plain writes (put/patch/delete/create) are never
|
|
152
|
+
* gated or blocked. The generation expires after `lease` if it is never released.
|
|
153
|
+
*
|
|
154
|
+
* Transaction-scoped (default): write through the returned record (or the table's static verbs
|
|
155
|
+
* in the same transaction), and the commit or abort releases it. `{ hold: true }`: the lock
|
|
156
|
+
* outlives the transaction; write through the returned record and release with `unlock()`, or
|
|
157
|
+
* let the lease expire.
|
|
158
|
+
*/
|
|
159
|
+
lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<any>;
|
|
160
|
+
"__#private@#reloadLocked"(id: Id, holdHandle?: RecordLockHandle | null, preserveChanges?: boolean): any;
|
|
161
|
+
/**
|
|
162
|
+
* Release the lock this instance holds. Resolves true when this call cleared the native key lock.
|
|
163
|
+
* Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
|
|
164
|
+
* instance is no longer lock-writable; writes through it require a fresh lock.
|
|
133
165
|
*/
|
|
134
|
-
|
|
166
|
+
unlock(): Promise<boolean>;
|
|
135
167
|
/**
|
|
136
168
|
* Store the provided record data into the current resource. This is not written
|
|
137
169
|
* until the corresponding transaction is committed.
|
|
@@ -237,7 +269,16 @@ export declare function makeTable(options: any): {
|
|
|
237
269
|
"__#private@#version"?: number;
|
|
238
270
|
"__#private@#entry"?: Entry;
|
|
239
271
|
"__#private@#savingOperation"?: any;
|
|
272
|
+
"__#private@#lockHandle"?: RecordLockHandle;
|
|
273
|
+
"__#private@#lockWritable"?: boolean;
|
|
240
274
|
getProperty: (name: string) => any;
|
|
275
|
+
/**
|
|
276
|
+
* Shared guard: if this instance is lock-writable but the handle is gone (expired or
|
|
277
|
+
* released), throw 409 before staging any write. Covers update/invalidate/relocate/delete
|
|
278
|
+
* in addition to the save() path. Every lock-writable instance carries its own handle in
|
|
279
|
+
* #lockHandle (scoped and hold alike), so we never need to search the registry here.
|
|
280
|
+
*/
|
|
281
|
+
"__#private@#assertLiveHandle"(id: Id): void;
|
|
241
282
|
_loadRecord(target: RequestTarget, request: Context, resourceOptions?: any): MaybePromise</*elided*/ any>;
|
|
242
283
|
/**
|
|
243
284
|
* This is a request to explicitly ensure that the record is loaded from source, rather than only using the local record.
|
|
@@ -293,9 +334,25 @@ export declare function makeTable(options: any): {
|
|
|
293
334
|
_writeInvalidate(id: Id, partialRecord?: any, options?: any): void;
|
|
294
335
|
_writeRelocate(id: Id, options: any): void;
|
|
295
336
|
/**
|
|
296
|
-
*
|
|
337
|
+
* Acquire an exclusive lock on this record (or on `target`'s) and return it ready for updates
|
|
338
|
+
* (harper#483, Phase 0: exclusive across every worker thread of this node). The lock is held
|
|
339
|
+
* in process memory only — no durable writes. Phase 0 contract: lock() is mutually exclusive
|
|
340
|
+
* with other lock() calls on the same key; plain writes (put/patch/delete/create) are never
|
|
341
|
+
* gated or blocked. The generation expires after `lease` if it is never released.
|
|
342
|
+
*
|
|
343
|
+
* Transaction-scoped (default): write through the returned record (or the table's static verbs
|
|
344
|
+
* in the same transaction), and the commit or abort releases it. `{ hold: true }`: the lock
|
|
345
|
+
* outlives the transaction; write through the returned record and release with `unlock()`, or
|
|
346
|
+
* let the lease expire.
|
|
347
|
+
*/
|
|
348
|
+
lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<any>;
|
|
349
|
+
"__#private@#reloadLocked"(id: Id, holdHandle?: RecordLockHandle | null, preserveChanges?: boolean): any;
|
|
350
|
+
/**
|
|
351
|
+
* Release the lock this instance holds. Resolves true when this call cleared the native key lock.
|
|
352
|
+
* Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
|
|
353
|
+
* instance is no longer lock-writable; writes through it require a fresh lock.
|
|
297
354
|
*/
|
|
298
|
-
|
|
355
|
+
unlock(): Promise<boolean>;
|
|
299
356
|
/**
|
|
300
357
|
* Store the provided record data into the current resource. This is not written
|
|
301
358
|
* until the corresponding transaction is committed.
|
|
@@ -335,7 +392,16 @@ export declare function makeTable(options: any): {
|
|
|
335
392
|
"__#private@#version"?: number;
|
|
336
393
|
"__#private@#entry"?: Entry;
|
|
337
394
|
"__#private@#savingOperation"?: any;
|
|
395
|
+
"__#private@#lockHandle"?: RecordLockHandle;
|
|
396
|
+
"__#private@#lockWritable"?: boolean;
|
|
338
397
|
getProperty: (name: string) => any;
|
|
398
|
+
/**
|
|
399
|
+
* Shared guard: if this instance is lock-writable but the handle is gone (expired or
|
|
400
|
+
* released), throw 409 before staging any write. Covers update/invalidate/relocate/delete
|
|
401
|
+
* in addition to the save() path. Every lock-writable instance carries its own handle in
|
|
402
|
+
* #lockHandle (scoped and hold alike), so we never need to search the registry here.
|
|
403
|
+
*/
|
|
404
|
+
"__#private@#assertLiveHandle"(id: Id): void;
|
|
339
405
|
_loadRecord(target: RequestTarget, request: Context, resourceOptions?: any): MaybePromise</*elided*/ any>;
|
|
340
406
|
/**
|
|
341
407
|
* This is a request to explicitly ensure that the record is loaded from source, rather than only using the local record.
|
|
@@ -391,9 +457,25 @@ export declare function makeTable(options: any): {
|
|
|
391
457
|
_writeInvalidate(id: Id, partialRecord?: any, options?: any): void;
|
|
392
458
|
_writeRelocate(id: Id, options: any): void;
|
|
393
459
|
/**
|
|
394
|
-
*
|
|
460
|
+
* Acquire an exclusive lock on this record (or on `target`'s) and return it ready for updates
|
|
461
|
+
* (harper#483, Phase 0: exclusive across every worker thread of this node). The lock is held
|
|
462
|
+
* in process memory only — no durable writes. Phase 0 contract: lock() is mutually exclusive
|
|
463
|
+
* with other lock() calls on the same key; plain writes (put/patch/delete/create) are never
|
|
464
|
+
* gated or blocked. The generation expires after `lease` if it is never released.
|
|
465
|
+
*
|
|
466
|
+
* Transaction-scoped (default): write through the returned record (or the table's static verbs
|
|
467
|
+
* in the same transaction), and the commit or abort releases it. `{ hold: true }`: the lock
|
|
468
|
+
* outlives the transaction; write through the returned record and release with `unlock()`, or
|
|
469
|
+
* let the lease expire.
|
|
470
|
+
*/
|
|
471
|
+
lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions): Promise<any>;
|
|
472
|
+
"__#private@#reloadLocked"(id: Id, holdHandle?: RecordLockHandle | null, preserveChanges?: boolean): any;
|
|
473
|
+
/**
|
|
474
|
+
* Release the lock this instance holds. Resolves true when this call cleared the native key lock.
|
|
475
|
+
* Works for both held (`{ hold: true }`) and transaction-scoped locks. After unlock() the
|
|
476
|
+
* instance is no longer lock-writable; writes through it require a fresh lock.
|
|
395
477
|
*/
|
|
396
|
-
|
|
478
|
+
unlock(): Promise<boolean>;
|
|
397
479
|
/**
|
|
398
480
|
* Store the provided record data into the current resource. This is not written
|
|
399
481
|
* until the corresponding transaction is committed.
|
|
@@ -456,6 +538,14 @@ export declare function makeTable(options: any): {
|
|
|
456
538
|
* @returns
|
|
457
539
|
*/
|
|
458
540
|
coerceId(id: string): number | string;
|
|
541
|
+
/**
|
|
542
|
+
* A branch's Table classes deliberately carry the BASE's logical database name so an
|
|
543
|
+
* application's schema and code resolve unchanged (harper#643). That makes every schema
|
|
544
|
+
* mutation resolve against the global catalog — a `dropTable()` through a branch would delete
|
|
545
|
+
* the live base table. Reads and writes are per-branch and unaffected; DDL is refused until a
|
|
546
|
+
* branch owns a schema identity of its own.
|
|
547
|
+
*/
|
|
548
|
+
assertSchemaMutable(operation: string): void;
|
|
459
549
|
dropTable(): Promise<void>;
|
|
460
550
|
/**
|
|
461
551
|
* Record the relocation of an entry (when a record is moved to a different node), return true if it is now located locally
|
|
@@ -467,6 +557,17 @@ export declare function makeTable(options: any): {
|
|
|
467
557
|
* Evicting a record will remove it from a caching table. This is not considered a canonical data change, and it is assumed that retrieving this record from the source will still yield the same record, this is only removing the local copy of the record.
|
|
468
558
|
*/
|
|
469
559
|
evict(id: any, existingRecord: any, existingVersion: any): any;
|
|
560
|
+
/**
|
|
561
|
+
* Static entry point: `Table.lock(id, options?, context?)` — creates an instance in the given,
|
|
562
|
+
* ambient, or a fresh context and delegates to the instance lock(). This shadows Resource.static
|
|
563
|
+
* lock so that both callers share the same transaction link (required for cross-instance upgrade
|
|
564
|
+
* detection). lock() is an in-process API with no authorization hook of its own; it is not
|
|
565
|
+
* protocol-dispatched, so no allowUpdate/allowCreate check runs on acquisition.
|
|
566
|
+
*
|
|
567
|
+
* Dropping the trailing `context` leaks the key: the bare `{}` fallback is an
|
|
568
|
+
* ImmediateTransaction, which releases no record locks.
|
|
569
|
+
*/
|
|
570
|
+
lock(target?: RequestTargetOrId | RecordLockOptions, options?: RecordLockOptions, context?: any): Promise<any>;
|
|
470
571
|
operation(operation: any, context: any): any;
|
|
471
572
|
/**
|
|
472
573
|
* This is responsible for ordering and select()ing the attributes/properties from returned entries
|
|
@@ -518,6 +619,8 @@ export declare function makeTable(options: any): {
|
|
|
518
619
|
* @param options
|
|
519
620
|
*/
|
|
520
621
|
getSize(): number;
|
|
622
|
+
/** Sizes of this table's durable record-structure dictionaries. */
|
|
623
|
+
getStructureCounts(): StructureCounts | undefined;
|
|
521
624
|
getAuditSize(): number;
|
|
522
625
|
/**
|
|
523
626
|
* Get available/free/size storage stats for the table's underlying volume. Async because
|
|
@@ -556,6 +659,7 @@ export declare function makeTable(options: any): {
|
|
|
556
659
|
}, void, unknown>;
|
|
557
660
|
getHistoryOfRecord(id: any): Promise<any[]>;
|
|
558
661
|
clear(): Promise<any[]>;
|
|
662
|
+
/** Release everything makeTable() registered process-wide; the class must not be used afterwards. */
|
|
559
663
|
cleanup(): void;
|
|
560
664
|
_readTxnForContext(context: any): (RocksTransaction | import("lmdb").Transaction) & {
|
|
561
665
|
openTimer?: number;
|