@harperfast/harper 5.2.10 → 5.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/mcpTools.ts +1 -1
- package/agent/session.ts +25 -14
- package/bin/cliOperations.ts +46 -9
- package/bin/copyDb.ts +282 -59
- package/bin/deploySetup.ts +16 -5
- package/bin/harper.ts +1 -1
- package/bin/help.ts +4 -1
- package/bin/lite.ts +4 -1
- package/bin/restart.ts +59 -3
- package/bin/run.ts +6 -11
- package/bin/upgrade.js +7 -3
- package/bin/workloadIdentity.ts +119 -0
- package/components/Application.ts +2414 -242
- package/components/ApplicationScope.ts +8 -0
- package/components/EntryHandler.ts +59 -39
- package/components/OptionsWatcher.ts +150 -74
- package/components/RuntimeModuleTracker.ts +38 -7
- package/components/Scope.ts +37 -15
- package/components/awaitRestart.ts +84 -0
- package/components/componentLoader.ts +340 -30
- package/components/componentPreparationLock.ts +16 -5
- package/components/mcp/adapters/harperHttp.ts +4 -0
- package/components/mcp/listChanged.ts +4 -0
- package/components/mcp/toolRegistry.ts +2 -0
- package/components/mcp/tools/operations.ts +9 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
- package/components/operations.js +270 -78
- package/components/operationsValidation.js +49 -1
- package/components/status/ComponentStatusRegistry.ts +59 -0
- package/config/RootConfigWatcher.ts +80 -34
- package/config/configUtils.ts +291 -34
- package/config/harperConfigEnvVars.ts +170 -27
- package/config-root.schema.json +29 -0
- package/dataLayer/blobBackup.ts +160 -50
- package/dataLayer/delete.ts +6 -1
- package/dataLayer/harperBridge/ResourceBridge.ts +52 -8
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dataLayer/hdbInfoController.ts +34 -1
- package/dataLayer/insert.ts +44 -1
- package/dataLayer/rocksdbBackup.ts +53 -10
- package/dataLayer/schema.ts +11 -1
- package/dataLayer/schemaDescribe.ts +8 -1
- package/dist/agent/mcpTools.js +1 -1
- package/dist/agent/mcpTools.js.map +1 -1
- package/dist/agent/session.d.ts +22 -0
- package/dist/agent/session.js +26 -15
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cliOperations.js +48 -9
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.d.ts +12 -1
- package/dist/bin/copyDb.js +248 -60
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deploySetup.d.ts +2 -0
- package/dist/bin/deploySetup.js +11 -3
- package/dist/bin/deploySetup.js.map +1 -1
- package/dist/bin/harper.js +1 -1
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.js +4 -1
- package/dist/bin/help.js.map +1 -1
- package/dist/bin/lite.js +4 -1
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/restart.js +54 -5
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.js +4 -10
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/upgrade.js +4 -3
- package/dist/bin/upgrade.js.map +1 -1
- package/dist/bin/workloadIdentity.d.ts +18 -0
- package/dist/bin/workloadIdentity.js +100 -0
- package/dist/bin/workloadIdentity.js.map +1 -0
- package/dist/components/Application.d.ts +139 -16
- package/dist/components/Application.js +2215 -267
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +8 -0
- package/dist/components/ApplicationScope.js +7 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.js +26 -10
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +1 -0
- package/dist/components/OptionsWatcher.js +141 -74
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.js +40 -6
- package/dist/components/RuntimeModuleTracker.js.map +1 -1
- package/dist/components/Scope.js +38 -13
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/awaitRestart.d.ts +33 -0
- package/dist/components/awaitRestart.js +61 -0
- package/dist/components/awaitRestart.js.map +1 -0
- package/dist/components/componentLoader.d.ts +38 -1
- package/dist/components/componentLoader.js +279 -22
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/componentPreparationLock.d.ts +5 -0
- package/dist/components/componentPreparationLock.js +14 -6
- package/dist/components/componentPreparationLock.js.map +1 -1
- package/dist/components/mcp/adapters/harperHttp.js +4 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
- package/dist/components/mcp/listChanged.js +5 -0
- package/dist/components/mcp/listChanged.js.map +1 -1
- package/dist/components/mcp/toolRegistry.d.ts +1 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -1
- package/dist/components/mcp/tools/operations.d.ts +5 -0
- package/dist/components/mcp/tools/operations.js +9 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
- package/dist/components/operations.js +231 -77
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +49 -1
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
- package/dist/components/status/ComponentStatusRegistry.js +63 -0
- package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
- package/dist/config/RootConfigWatcher.d.ts +7 -1
- package/dist/config/RootConfigWatcher.js +64 -27
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configUtils.d.ts +9 -1
- package/dist/config/configUtils.js +254 -33
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.d.ts +16 -0
- package/dist/config/harperConfigEnvVars.js +162 -25
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/blobBackup.d.ts +49 -20
- package/dist/dataLayer/blobBackup.js +139 -50
- package/dist/dataLayer/blobBackup.js.map +1 -1
- package/dist/dataLayer/delete.js +1 -1
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +51 -10
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.d.ts +10 -0
- package/dist/dataLayer/hdbInfoController.js +30 -1
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +9 -1
- package/dist/dataLayer/insert.js +30 -0
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
- package/dist/dataLayer/rocksdbBackup.js +45 -8
- package/dist/dataLayer/rocksdbBackup.js.map +1 -1
- package/dist/dataLayer/schema.js +8 -0
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +8 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +52 -0
- package/dist/resources/DatabaseTransaction.d.ts +55 -3
- package/dist/resources/DatabaseTransaction.js +460 -134
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/LMDBTransaction.js +22 -4
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
- package/dist/resources/PrimaryRocksDatabase.js +30 -2
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +20 -0
- package/dist/resources/RecordEncoder.js +94 -9
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +2 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.js +20 -11
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +20 -1
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/RocksIndexStore.d.ts +6 -1
- package/dist/resources/RocksIndexStore.js +24 -10
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +14 -1
- package/dist/resources/RocksTransactionLogStore.js +57 -17
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +112 -8
- package/dist/resources/Table.js +1071 -197
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.d.ts +11 -2
- package/dist/resources/auditStore.js +183 -18
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +129 -9
- package/dist/resources/blob.js +992 -114
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/branchDatabase.d.ts +48 -0
- package/dist/resources/branchDatabase.js +892 -0
- package/dist/resources/branchDatabase.js.map +1 -0
- package/dist/resources/crdt.js +50 -12
- package/dist/resources/crdt.js.map +1 -1
- package/dist/resources/databases.d.ts +150 -9
- package/dist/resources/databases.js +1247 -525
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/defineTable.d.ts +10 -2
- package/dist/resources/defineTable.js +9 -1
- package/dist/resources/defineTable.js.map +1 -1
- package/dist/resources/graphql.d.ts +1 -1
- package/dist/resources/graphql.js +50 -15
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +1 -0
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +6 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/longLivedTransactions.d.ts +71 -0
- package/dist/resources/longLivedTransactions.js +358 -0
- package/dist/resources/longLivedTransactions.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +26 -0
- package/dist/resources/models/backendRegistry.js +60 -2
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/bootstrap.d.ts +33 -1
- package/dist/resources/models/bootstrap.js +416 -31
- package/dist/resources/models/bootstrap.js.map +1 -1
- package/dist/resources/recordLock.d.ts +80 -0
- package/dist/resources/recordLock.js +184 -0
- package/dist/resources/recordLock.js.map +1 -0
- package/dist/resources/replayLogs.d.ts +14 -1
- package/dist/resources/replayLogs.js +152 -24
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +94 -7
- package/dist/resources/replayLogsGuards.js +111 -7
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/resources/search.js +158 -32
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js +2 -2
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.js +61 -30
- package/dist/security/auth.js.map +1 -1
- package/dist/security/authn/oidc/claims.d.ts +22 -0
- package/dist/security/authn/oidc/claims.js +71 -0
- package/dist/security/authn/oidc/claims.js.map +1 -0
- package/dist/security/authn/oidc/identityToken.d.ts +27 -0
- package/dist/security/authn/oidc/identityToken.js +111 -0
- package/dist/security/authn/oidc/identityToken.js.map +1 -0
- package/dist/security/authn/oidc/jwks.d.ts +25 -0
- package/dist/security/authn/oidc/jwks.js +261 -0
- package/dist/security/authn/oidc/jwks.js.map +1 -0
- package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
- package/dist/security/authn/oidc/providers/generic.js +34 -0
- package/dist/security/authn/oidc/providers/generic.js.map +1 -0
- package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
- package/dist/security/authn/oidc/providers/githubActions.js +129 -0
- package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
- package/dist/security/authn/oidc/providers/index.d.ts +37 -0
- package/dist/security/authn/oidc/providers/index.js +24 -0
- package/dist/security/authn/oidc/providers/index.js.map +1 -0
- package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
- package/dist/security/authn/oidc/tokenExchange.js +306 -0
- package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
- package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
- package/dist/security/authn/oidc/types.d.ts +38 -0
- package/dist/security/authn/oidc/types.js +6 -0
- package/dist/security/authn/oidc/types.js.map +1 -0
- package/dist/security/certificateVerification/index.js +40 -11
- package/dist/security/certificateVerification/index.js.map +1 -1
- package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
- package/dist/security/certificateVerification/trustedIssuers.js +79 -0
- package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
- package/dist/security/certificateVerification/types.d.ts +1 -0
- package/dist/security/credentialProvenance.d.ts +35 -0
- package/dist/security/credentialProvenance.js +51 -0
- package/dist/security/credentialProvenance.js.map +1 -0
- package/dist/security/credentialRejection.d.ts +4 -0
- package/dist/security/credentialRejection.js +24 -0
- package/dist/security/credentialRejection.js.map +1 -0
- package/dist/security/deferredAuthentication.d.ts +36 -0
- package/dist/security/deferredAuthentication.js +70 -0
- package/dist/security/deferredAuthentication.js.map +1 -0
- package/dist/security/impersonation.d.ts +21 -0
- package/dist/security/impersonation.js +108 -9
- package/dist/security/impersonation.js.map +1 -1
- package/dist/security/jsLoader.d.ts +6 -0
- package/dist/security/jsLoader.js +75 -15
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.js +301 -71
- package/dist/security/keys.js.map +1 -1
- package/dist/security/operationScope.d.ts +21 -0
- package/dist/security/operationScope.js +36 -0
- package/dist/security/operationScope.js.map +1 -0
- package/dist/security/permissionsTranslator.js +21 -0
- package/dist/security/permissionsTranslator.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +19 -1
- package/dist/security/tokenAuthentication.js +191 -10
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +4 -3
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
- package/dist/server/DurableSubscriptionsSession.js +67 -10
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.js +73 -0
- package/dist/server/REST.js.map +1 -1
- package/dist/server/graphqlQuerying.js +4 -0
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +11 -0
- package/dist/server/http.js +88 -15
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +8 -1
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +6 -2
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobs.js +4 -1
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/liveSubscriptionAuth.d.ts +26 -4
- package/dist/server/liveSubscriptionAuth.js +105 -39
- package/dist/server/liveSubscriptionAuth.js.map +1 -1
- package/dist/server/loadRootComponents.js +49 -10
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/mqtt.d.ts +2 -0
- package/dist/server/mqtt.js +165 -30
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.d.ts +2 -0
- package/dist/server/nodeName.js +107 -23
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +25 -0
- package/dist/server/serverHelpers/Headers.js +139 -1
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +9 -0
- package/dist/server/serverHelpers/contentTypes.js +32 -25
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
- package/dist/server/serverHelpers/deployValidationState.js +9 -19
- package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
- package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
- package/dist/server/serverHelpers/registeredOperations.js +74 -21
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
- package/dist/server/serverHelpers/requestSanitization.js +20 -0
- package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.js +6 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
- package/dist/server/serverHelpers/serverUtilities.js +90 -20
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
- package/dist/server/serverHelpers/uwsServer.js +19 -1
- package/dist/server/serverHelpers/uwsServer.js.map +1 -1
- package/dist/server/static.js +24 -28
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +5 -0
- package/dist/server/storageReclamation.js +16 -0
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/itc.d.ts +7 -2
- package/dist/server/threads/itc.js +5 -1
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +26 -4
- package/dist/server/threads/manageThreads.js +517 -72
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.js +89 -26
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadHeapMemory.d.ts +2 -0
- package/dist/server/threads/threadHeapMemory.js +31 -0
- package/dist/server/threads/threadHeapMemory.js.map +1 -0
- package/dist/server/threads/threadServer.js +46 -15
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/config.d.ts +1 -3
- package/dist/sqlEngine/config.js +19 -16
- package/dist/sqlEngine/config.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +1 -1
- package/dist/sqlTranslator/index.js +30 -7
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/directives/5-3-0.d.ts +7 -0
- package/dist/upgrade/directives/5-3-0.js +148 -0
- package/dist/upgrade/directives/5-3-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.js +2 -1
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.js +2 -1
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/common_utils.d.ts +16 -0
- package/dist/utility/common_utils.js +32 -6
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/componentNames.d.ts +8 -0
- package/dist/utility/componentNames.js +12 -1
- package/dist/utility/componentNames.js.map +1 -1
- package/dist/utility/environment/environmentManager.js +3 -6
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +1 -0
- package/dist/utility/environment/systemInformation.js +1 -0
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +2 -0
- package/dist/utility/errors/commonErrors.js +2 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +17 -0
- package/dist/utility/errors/hdbError.js +30 -1
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +16 -0
- package/dist/utility/hdbTerms.js +18 -2
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +2 -0
- package/dist/utility/logging/harper_logger.js +91 -14
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logRotator.js +76 -49
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/nodeIdentity.d.ts +9 -0
- package/dist/utility/nodeIdentity.js +58 -0
- package/dist/utility/nodeIdentity.js.map +1 -0
- package/dist/utility/npmUtilities.js +9 -7
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operationPermissions.d.ts +3 -1
- package/dist/utility/operationPermissions.js +16 -1
- package/dist/utility/operationPermissions.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +10 -7
- package/dist/utility/operation_authorization.js +212 -41
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/watchPath.d.ts +29 -0
- package/dist/utility/watchPath.js +68 -0
- package/dist/utility/watchPath.js.map +1 -0
- package/dist/utility/watcherFallback.d.ts +86 -0
- package/dist/utility/watcherFallback.js +278 -1
- package/dist/utility/watcherFallback.js.map +1 -1
- package/dist/validation/configValidator.d.ts +12 -0
- package/dist/validation/configValidator.js +199 -72
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/installValidator.js +12 -0
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +11 -0
- package/dist/validation/validationWrapper.js +16 -3
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +2 -0
- package/json/systemSchema.json +52 -0
- package/npm-shrinkwrap.json +235 -233
- package/package.json +8 -7
- package/resources/DESIGN.md +114 -52
- package/resources/DatabaseTransaction.ts +522 -130
- package/resources/LMDBTransaction.ts +26 -4
- package/resources/PrimaryRocksDatabase.ts +29 -3
- package/resources/RecordEncoder.ts +103 -8
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +17 -9
- package/resources/ResourceInterface.ts +23 -0
- package/resources/RocksIndexStore.ts +30 -10
- package/resources/RocksTransactionLogStore.ts +78 -21
- package/resources/Table.ts +1107 -164
- package/resources/auditStore.ts +187 -21
- package/resources/blob.ts +1029 -110
- package/resources/branchDatabase.ts +941 -0
- package/resources/crdt.ts +76 -12
- package/resources/databases.ts +1354 -522
- package/resources/defineTable.ts +18 -2
- package/resources/graphql.ts +70 -16
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +6 -2
- package/resources/longLivedTransactions.ts +360 -0
- package/resources/models/backendRegistry.ts +84 -2
- package/resources/models/bootstrap.ts +473 -28
- package/resources/recordLock.ts +253 -0
- package/resources/replayLogs.ts +147 -26
- package/resources/replayLogsGuards.ts +171 -8
- package/resources/search.ts +154 -32
- package/resources/transactionBroadcast.ts +3 -3
- package/security/auth.ts +68 -29
- package/security/authn/oidc/claims.ts +72 -0
- package/security/authn/oidc/identityToken.ts +129 -0
- package/security/authn/oidc/jwks.ts +260 -0
- package/security/authn/oidc/providers/generic.ts +40 -0
- package/security/authn/oidc/providers/githubActions.ts +137 -0
- package/security/authn/oidc/providers/index.ts +52 -0
- package/security/authn/oidc/tokenExchange.ts +300 -0
- package/security/authn/oidc/trustPolicyOperations.ts +343 -0
- package/security/authn/oidc/types.ts +41 -0
- package/security/certificateVerification/index.ts +54 -13
- package/security/certificateVerification/trustedIssuers.ts +76 -0
- package/security/certificateVerification/types.ts +1 -0
- package/security/credentialProvenance.ts +47 -0
- package/security/credentialRejection.ts +22 -0
- package/security/deferredAuthentication.ts +71 -0
- package/security/impersonation.ts +117 -12
- package/security/jsLoader.ts +81 -18
- package/security/keys.ts +298 -72
- package/security/operationScope.ts +33 -0
- package/security/permissionsTranslator.js +23 -0
- package/security/tokenAuthentication.ts +233 -12
- package/security/user.ts +4 -3
- package/server/DESIGN.md +183 -16
- package/server/DurableSubscriptionsSession.ts +71 -11
- package/server/REST.ts +79 -1
- package/server/graphqlQuerying.ts +4 -0
- package/server/http.ts +99 -18
- package/server/itc/serverHandlers.js +8 -1
- package/server/jobs/jobProcess.ts +8 -2
- package/server/jobs/jobs.ts +4 -1
- package/server/liveSubscriptionAuth.ts +129 -46
- package/server/loadRootComponents.js +50 -8
- package/server/mqtt.ts +179 -38
- package/server/nodeName.ts +103 -21
- package/server/serverHelpers/Headers.ts +131 -0
- package/server/serverHelpers/contentTypes.ts +29 -21
- package/server/serverHelpers/deployValidationState.ts +24 -13
- package/server/serverHelpers/operationAuthorizationState.ts +34 -3
- package/server/serverHelpers/registeredOperations.ts +79 -22
- package/server/serverHelpers/requestSanitization.ts +15 -0
- package/server/serverHelpers/serverHandlers.js +6 -3
- package/server/serverHelpers/serverUtilities.ts +104 -31
- package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
- package/server/serverHelpers/uwsServer.ts +17 -2
- package/server/static.ts +23 -29
- package/server/storageReclamation.ts +13 -0
- package/server/threads/itc.js +11 -1
- package/server/threads/manageThreads.js +526 -63
- package/server/threads/socketRouter.ts +81 -26
- package/server/threads/threadHeapMemory.ts +26 -0
- package/server/threads/threadServer.js +43 -15
- package/sqlTranslator/index.ts +31 -8
- package/studio/web/assets/{Chat-Br06zdMA.js → Chat-BnCBegQz.js} +1 -1
- package/studio/web/assets/{FloatingChat-BWImX5fA.js → FloatingChat-CoDW1ySS.js} +3 -3
- package/studio/web/assets/{apiToken-DN0nmDsq.js → apiToken-Bwk5BLXW.js} +1 -1
- package/studio/web/assets/{applications-kSxVoyeU.js → applications-DHxGi7JH.js} +1 -1
- package/studio/web/assets/{cssMode-C1JeufH5.js → cssMode-s0cWI-_M.js} +1 -1
- package/studio/web/assets/{editor-qoo9CrGO.js → editor-DNcRHK54.js} +1 -1
- package/studio/web/assets/{html-Dt4IIy04.js → html-Bdssedlg.js} +1 -1
- package/studio/web/assets/{htmlMode-DXgKKr4C.js → htmlMode-CoDlJ3fw.js} +1 -1
- package/studio/web/assets/{index-6onkYFOG.js → index-D6sxmFLR.js} +5 -5
- package/studio/web/assets/{index.lazy-BrCFnpNJ.js → index.lazy-tmU5BS8s.js} +1 -1
- package/studio/web/assets/{javascript-DNCQGUBc.js → javascript-B8meVSTH.js} +1 -1
- package/studio/web/assets/{jsonMode-CR6HWruP.js → jsonMode-DpIPd35T.js} +1 -1
- package/studio/web/assets/{languageServices-BM4fI4rS.js → languageServices-C_5FMJzQ.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-DSa1ttcD.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
- package/studio/web/assets/{notifications-BHXLnh6x.js → notifications-CQf18QKb.js} +1 -1
- package/studio/web/assets/{notifications-CUmtIA6z.js → notifications-CvZivSbh.js} +1 -1
- package/studio/web/assets/{profile-8BeFSF3j.js → profile-DdOwtntb.js} +1 -1
- package/studio/web/assets/{regions-C8qR0HhD.js → regions-n69fwagr.js} +1 -1
- package/studio/web/assets/{register-B4n5i0SD.js → register-PfWTCXWB.js} +2 -2
- package/studio/web/assets/{setComponentFile-g0_B0lgX.js → setComponentFile-Bg6O7X0S.js} +1 -1
- package/studio/web/assets/{setup-B0CTj_Q5.js → setup-CUx_aUDl.js} +2 -2
- package/studio/web/assets/{status-C6Yib7-K.js → status-D7BVKqX9.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-Dgta7bVi.js → toggleHighContrast-DBSyXzMr.js} +1 -1
- package/studio/web/assets/{tsMode-CH_jHvU-.js → tsMode-BByKCjBS.js} +1 -1
- package/studio/web/assets/{typescript-Co9LCXd5.js → typescript-DDLnLpw9.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-wKC8NsC_.js → useEntityRestURL-31CHGaHk.js} +1 -1
- package/studio/web/assets/{workers-CWeLxCXA.js → workers-pR3jRY9D.js} +1 -1
- package/studio/web/assets/{xml-BadC-0Rk.js → xml-2iRnMhQO.js} +1 -1
- package/studio/web/assets/{yaml-BiUfxPbC.js → yaml-Bf92gJpd.js} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/directives/5-3-0.ts +132 -0
- package/upgrade/directives/directivesController.ts +2 -1
- package/utility/OperationFunctionCaller.ts +2 -1
- package/utility/common_utils.ts +30 -5
- package/utility/componentNames.ts +12 -0
- package/utility/environment/environmentManager.ts +3 -7
- package/utility/environment/systemInformation.ts +7 -0
- package/utility/errors/commonErrors.ts +4 -0
- package/utility/errors/hdbError.ts +29 -0
- package/utility/hdbTerms.ts +17 -0
- package/utility/logging/harper_logger.ts +87 -14
- package/utility/logging/logRotator.ts +72 -45
- package/utility/nodeIdentity.ts +45 -0
- package/utility/npmUtilities.ts +10 -8
- package/utility/operationPermissions.ts +18 -1
- package/utility/operation_authorization.ts +231 -42
- package/utility/watchPath.ts +63 -0
- package/utility/watcherFallback.ts +270 -0
- package/validation/configValidator.ts +209 -72
- package/validation/installValidator.ts +15 -0
- package/validation/validationWrapper.ts +18 -4
package/dist/resources/blob.d.ts
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* - While the file is being written, 0xffffffffffff is used as a placeholder to indicate that the file is not finished being written (this nicely matches the logic that if the written content size is less than the indicated content size, it is not finished)
|
|
11
11
|
* - Note that for compressed data, the size is the uncompressed size, and the compressed size in the file
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import { watch, type FSWatcher } from 'node:fs';
|
|
14
|
+
import { Readable, Transform } from 'node:stream';
|
|
14
15
|
import type { RootDatabase } from 'lmdb';
|
|
15
16
|
type StorageInfo = {
|
|
16
17
|
storageIndex: number;
|
|
@@ -18,9 +19,10 @@ type StorageInfo = {
|
|
|
18
19
|
store?: any;
|
|
19
20
|
filePath?: string;
|
|
20
21
|
recordId?: number;
|
|
21
|
-
contentBuffer?:
|
|
22
|
+
contentBuffer?: Buffer;
|
|
22
23
|
source?: Readable;
|
|
23
24
|
compress?: boolean;
|
|
25
|
+
storedCodec?: 'deflate';
|
|
24
26
|
flush?: boolean;
|
|
25
27
|
start?: number;
|
|
26
28
|
end?: number;
|
|
@@ -28,7 +30,15 @@ type StorageInfo = {
|
|
|
28
30
|
saved?: boolean;
|
|
29
31
|
asString?: string;
|
|
30
32
|
deleteOnFailure?: boolean;
|
|
33
|
+
fileState?: {
|
|
34
|
+
discarded?: boolean;
|
|
35
|
+
};
|
|
36
|
+
probedDamage?: {
|
|
37
|
+
fileSize: number;
|
|
38
|
+
header: Buffer;
|
|
39
|
+
};
|
|
31
40
|
};
|
|
41
|
+
export declare const DEFLATE_TYPE = 1;
|
|
32
42
|
export declare function registerBlobReceiveInFlight(fileId: string | null | undefined, store: any): void;
|
|
33
43
|
export declare function unregisterBlobReceiveInFlight(fileId: string | null | undefined, store: any): void;
|
|
34
44
|
export declare function isBlobReceiveInFlight(fileId: string | null | undefined, store: any): boolean;
|
|
@@ -73,6 +83,22 @@ export declare function createPendingMarkerBarrier(options: {
|
|
|
73
83
|
onWriteError?: (writeError: unknown) => void;
|
|
74
84
|
}): (writeError?: unknown) => void;
|
|
75
85
|
export declare const BLOB_UNAVAILABLE_STATUS = 503;
|
|
86
|
+
/**
|
|
87
|
+
* Arm the one-shot watch that wakes an in-progress blob read of `filePath`, or return `undefined`
|
|
88
|
+
* for a read that has to poll instead. `isLive` decides whether the read still owns a callback's
|
|
89
|
+
* watcher: a callback from one it has already replaced must not act, or it would close the live
|
|
90
|
+
* watcher and start a second read at the same position. `onFailure` runs only for a live watcher
|
|
91
|
+
* that fails after registration — a registration that throws latches `mustPoll` and leaves the
|
|
92
|
+
* caller in its own no-watcher branch.
|
|
93
|
+
*/
|
|
94
|
+
export declare function watchInProgressFile(filePath: string, watchTarget: {
|
|
95
|
+
path: string;
|
|
96
|
+
mustPoll: boolean;
|
|
97
|
+
}, handlers: {
|
|
98
|
+
isLive: (watcher: FSWatcher) => boolean;
|
|
99
|
+
onChange: () => void;
|
|
100
|
+
onFailure: () => void;
|
|
101
|
+
}, watchFile?: typeof watch): FSWatcher | undefined;
|
|
76
102
|
declare const FileBackedBlob_base: {
|
|
77
103
|
new (): Blob;
|
|
78
104
|
};
|
|
@@ -140,14 +166,44 @@ export type BlobCreationOptions = {
|
|
|
140
166
|
size?: number;
|
|
141
167
|
saveBeforeCommit?: boolean;
|
|
142
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* Whether a new blob of `type` and (uncompressed) `size` should be deflate-compressed on disk,
|
|
171
|
+
* per the opt-in `storage.blobs.compression` map. Absent config means never. Matching precedence
|
|
172
|
+
* is exact type, then `type/*`, then `default`. An unknown size never compresses: the threshold
|
|
173
|
+
* cannot be evaluated, and compressing a small streamed write under a large configured threshold
|
|
174
|
+
* would violate the operator's limit.
|
|
175
|
+
*/
|
|
176
|
+
export declare function resolveBlobCompression(type: string | undefined, size: number | undefined): boolean;
|
|
143
177
|
/**
|
|
144
178
|
* Create a blob from a readable stream or a buffer by creating a file in the blob storage path with a new unique internal id, that
|
|
145
179
|
* can be saved/stored.
|
|
146
180
|
* @param source
|
|
147
181
|
*/
|
|
148
182
|
export declare function createBlob(source: Uint8Array | NodeJS.ReadableStream | string | Iterable<Uint8Array> | AsyncIterator<Uint8Array>, options?: BlobCreationOptions): Blob;
|
|
183
|
+
/**
|
|
184
|
+
* Create a blob whose source stream carries the STORED representation — an already-deflated body —
|
|
185
|
+
* rather than content bytes, so a replication receiver can land a peer's compressed blob without
|
|
186
|
+
* recompressing it. `size` is the uncompressed content length (it goes in the header; a raw
|
|
187
|
+
* compressed source cannot derive it) and the body is verified on write: it must be a well-formed
|
|
188
|
+
* deflate stream inflating to exactly `size` bytes, or the save rejects (see
|
|
189
|
+
* createStoredDeflateVerifier). Internal to replication on purpose — not part of BlobCreationOptions
|
|
190
|
+
* and not exported to components.
|
|
191
|
+
*/
|
|
192
|
+
export declare function createBlobFromStoredBody(source: NodeJS.ReadableStream, options: {
|
|
193
|
+
type?: string;
|
|
194
|
+
size: number;
|
|
195
|
+
codec: 'deflate';
|
|
196
|
+
}): Blob;
|
|
149
197
|
export declare function saveBlob(blob: FileBackedBlob, deleteOnFailure?: boolean): StorageInfo;
|
|
150
198
|
export declare function shouldDestroyIdleBlobSource(paused: boolean, bytesWritten: number, lastProgressBytes: number): boolean;
|
|
199
|
+
/**
|
|
200
|
+
* Pass-through for a pre-compressed (stored deflate) blob body that concurrently inflates what it
|
|
201
|
+
* forwards and fails the pipeline unless the body is a well-formed deflate stream inflating to
|
|
202
|
+
* exactly `expectedSize` bytes. This is what lets a raw peer-preserved body land under a finalized
|
|
203
|
+
* DEFLATE header without trusting the peer: a truncated, corrupt, oversized (bomb), or trailing-
|
|
204
|
+
* garbage body rejects the save instead of being published.
|
|
205
|
+
*/
|
|
206
|
+
export declare function createStoredDeflateVerifier(expectedSize: number, fileId: string): Transform;
|
|
151
207
|
export declare function getFileId(blob: Blob): string;
|
|
152
208
|
export declare function isSaving(blob: Blob): Promise<void>;
|
|
153
209
|
export declare function getFilePathForBlob(blob: FileBackedBlob): string;
|
|
@@ -155,17 +211,49 @@ export declare function getFilePathForBlob(blob: FileBackedBlob): string;
|
|
|
155
211
|
* Repairs a damaged file-backed blob under its existing fileId. The damage check and atomic file
|
|
156
212
|
* replacement share the blob lock, so a failed repair never modifies the referenced file. Callers
|
|
157
213
|
* must establish an exact record identity tie (same version and source node) and positional blob
|
|
158
|
-
* pairing before calling
|
|
159
|
-
*
|
|
160
|
-
*
|
|
214
|
+
* pairing before calling, and classify the file with `blobFileMissingOrIncompleteAsync` first — a
|
|
215
|
+
* compressed body's damage is only provable by inflating it, which the locked recheck here will
|
|
216
|
+
* not do. The received byte count must match the reported source size and, when present, the
|
|
217
|
+
* stored descriptor. On a synchronous `undefined`, no repair started and `source` remains owned
|
|
218
|
+
* by the caller.
|
|
161
219
|
*/
|
|
162
220
|
export declare function repairBlobFile(blob: Blob, source: Readable, sourceSize?: number | (() => number | undefined) | undefined): Promise<void> | undefined;
|
|
221
|
+
export declare function isSystemicIoError(error: unknown): boolean;
|
|
222
|
+
/**
|
|
223
|
+
* How a consumer that captures a blob root (backup snapshot, backup archive) should treat one file.
|
|
224
|
+
* `skip` is not a blob to capture at all; `pending` and `gone` require markers; `capture` is taken as-is.
|
|
225
|
+
* `capture` means settled as far as the path can show, which is short of a guarantee: a known-size write
|
|
226
|
+
* that has landed every byte is indistinguishable here from a finished one, and if it then aborts, the
|
|
227
|
+
* PENDING stamp rewrites that inode in place, truncating any same-filesystem hard link taken from it.
|
|
228
|
+
* Telling the two apart needs the blob write lock, which is keyed by file id and unreachable from a walk.
|
|
229
|
+
*/
|
|
230
|
+
export declare function classifyBlobFileForCapture(filePath: string): Promise<BlobCaptureDisposition>;
|
|
231
|
+
/**
|
|
232
|
+
* What a consumer capturing a blob root should do with one file. `pending` is a blob that was not
|
|
233
|
+
* whole *yet* (retryable 503); `gone` is absent from this capture and represented as terminal 500.
|
|
234
|
+
* Both still put a file at the id, because `getNextFileId` recovers the counter by scanning the
|
|
235
|
+
* directory and an absent file lets a restored record's id be reissued.
|
|
236
|
+
*/
|
|
237
|
+
export type BlobCaptureDisposition = 'skip' | 'capture' | 'pending' | 'gone';
|
|
238
|
+
/** The stand-in bytes for a blob that could not be captured whole. */
|
|
239
|
+
export declare function createCaptureMarker(disposition: 'pending' | 'gone', message: string): Buffer;
|
|
163
240
|
export declare function blobHeaderIndicatesIncomplete(header: Buffer, fileSize: number): boolean;
|
|
164
241
|
/**
|
|
165
|
-
* Whether a file-backed blob's backing file is missing or incomplete on disk — the
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
242
|
+
* Whether a file-backed blob's backing file is missing or incomplete on disk — the unlocked,
|
|
243
|
+
* non-blocking classification a copy-delivery repair candidate gets first (harper-pro#699). A deflate
|
|
244
|
+
* body is inflated (streamed, off the event loop) to decide; the file it judged damaged is remembered
|
|
245
|
+
* so the locked recheck in `repairBlobFile` can recognize it without inflating again. Returns
|
|
246
|
+
* undefined for blobs the question does not apply to, or that could not be inspected.
|
|
247
|
+
*/
|
|
248
|
+
export declare function blobFileMissingOrIncompleteAsync(blob: Blob): Promise<boolean | undefined>;
|
|
249
|
+
/**
|
|
250
|
+
* The locked, synchronous recheck of `blobFileMissingOrIncompleteAsync`'s verdict, run by
|
|
251
|
+
* `repairBlobFile` under the blob's write lock so a repair can only replace a file no writer is
|
|
252
|
+
* still producing. It repeats the header classification, and for a deflate body — which it cannot
|
|
253
|
+
* afford to inflate on the event loop — answers `true` only while the file is still the one the
|
|
254
|
+
* probe found damaged: a body can only grow (writers append; a repair replaces the file) so an
|
|
255
|
+
* unchanged length and header mean unchanged bytes, and anything else is `undefined` (not provably
|
|
256
|
+
* damaged — decline, and let the next probe or the repair sweep classify it).
|
|
169
257
|
*/
|
|
170
258
|
export declare function blobFileMissingOrIncomplete(blob: Blob): boolean | undefined;
|
|
171
259
|
export declare const databasePaths: Map<RootDatabase<any, import("lmdb").Key>, string[]>;
|
|
@@ -294,6 +382,14 @@ export declare function collectRetainedFileIds(record: any): Set<string> | undef
|
|
|
294
382
|
* @param database
|
|
295
383
|
*/
|
|
296
384
|
export declare function cleanupOrphans(database: any, databaseName?: string): Promise<number>;
|
|
385
|
+
/**
|
|
386
|
+
* Whether the deflate body after the header inflates to exactly `size` bytes. A compressed blob's
|
|
387
|
+
* header records the uncompressed length, so it cannot be compared to the on-disk body; a truncated
|
|
388
|
+
* stream errors (Z_BUF_ERROR) or yields fewer bytes. Streamed rather than inflateSync so memory stays
|
|
389
|
+
* bounded over a sweep that may touch many large blobs, and abandoned as soon as the output passes
|
|
390
|
+
* `size` so a body that lies about its length costs no more than the length it claimed.
|
|
391
|
+
*/
|
|
392
|
+
export declare function inflatesToExactly(filePath: string, size: number): Promise<boolean>;
|
|
297
393
|
/**
|
|
298
394
|
* Resolves true if the given blob's backing file is present and complete: no error stub, not an
|
|
299
395
|
* in-flight placeholder, and the content matches the header (uncompressed blobs by body length,
|
|
@@ -301,6 +397,30 @@ export declare function cleanupOrphans(database: any, databaseName?: string): Pr
|
|
|
301
397
|
* written after a peer fetch.
|
|
302
398
|
*/
|
|
303
399
|
export declare function isBlobComplete(blob: Blob): Promise<boolean>;
|
|
400
|
+
export type StoredBlobBody = {
|
|
401
|
+
codec: 'deflate';
|
|
402
|
+
size: number;
|
|
403
|
+
/** The raw post-header bytes. Single-use; releases the file on completion, error, or teardown. */
|
|
404
|
+
stream: () => AsyncGenerator<Buffer>;
|
|
405
|
+
/** Release the descriptor and file hold without streaming. */
|
|
406
|
+
close: () => void;
|
|
407
|
+
};
|
|
408
|
+
/**
|
|
409
|
+
* Open a blob's STORED body for transfer, without inflating it — the sender half of replication's
|
|
410
|
+
* codec preservation. Returns undefined whenever the stored form is not a settled deflate file
|
|
411
|
+
* (uncompressed, sliced, still being written, missing, or already condemned); the caller then falls
|
|
412
|
+
* back to the ordinary content stream, which knows how to wait and how to report errors.
|
|
413
|
+
*
|
|
414
|
+
* Deliberately synchronous through the decision: the caller decides raw-vs-inflated inside the same
|
|
415
|
+
* synchronous block that puts the owning record frame on the wire. The stream opens its own
|
|
416
|
+
* descriptor later and re-reads the header first: a settled file's header never changes except by
|
|
417
|
+
* a repair publishing a fresh (uncompressed) file over the path, so a header that differs from the
|
|
418
|
+
* sniffed one means the announced form is gone — reported as transient (503), since a retry
|
|
419
|
+
* re-decides against the new file. The stream verifies as it sends — a concurrent inflate must
|
|
420
|
+
* land on exactly `size` bytes — so a torn body that survived the header checks becomes a loud,
|
|
421
|
+
* permanently-classified error instead of replicated garbage.
|
|
422
|
+
*/
|
|
423
|
+
export declare function openStoredBlobBody(blob: Blob): StoredBlobBody | undefined;
|
|
304
424
|
/**
|
|
305
425
|
* Async generator that yields records whose referenced blob files are missing, truncated, or in an
|
|
306
426
|
* error state. Used by the blob repair sweep to find candidates for peer-fetched recovery.
|