@harperfast/harper 5.2.13 → 5.3.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent/mcpTools.ts +1 -1
- package/agent/session.ts +25 -14
- package/bin/cliOperations.ts +58 -9
- package/bin/copyDb.ts +282 -59
- package/bin/deploySetup.ts +16 -5
- package/bin/harper.ts +1 -1
- package/bin/help.ts +4 -1
- package/bin/lite.ts +4 -1
- package/bin/restart.ts +120 -4
- package/bin/run.ts +6 -11
- package/bin/upgrade.js +7 -3
- package/bin/workloadIdentity.ts +119 -0
- package/components/Application.ts +3436 -242
- package/components/ApplicationScope.ts +8 -0
- package/components/EntryHandler.ts +59 -39
- package/components/OptionsWatcher.ts +440 -98
- package/components/RuntimeModuleTracker.ts +38 -7
- package/components/Scope.ts +56 -15
- package/components/awaitRestart.ts +84 -0
- package/components/componentLoader.ts +381 -32
- package/components/componentPreparationLock.ts +16 -5
- package/components/deploymentOperations.ts +4 -1
- package/components/deploymentRecorder.ts +9 -2
- package/components/mcp/adapters/harperHttp.ts +4 -0
- package/components/mcp/listChanged.ts +4 -0
- package/components/mcp/toolRegistry.ts +2 -0
- package/components/mcp/tools/operations.ts +9 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +2 -2
- package/components/operations.js +537 -113
- package/components/operationsValidation.js +98 -3
- package/components/packageComponent.ts +25 -1
- package/components/requestRestart.ts +11 -0
- package/components/status/ComponentStatusRegistry.ts +59 -0
- package/config/RootConfigWatcher.ts +240 -40
- package/config/configReadRetry.ts +62 -0
- package/config/configUtils.ts +357 -48
- package/config/harperConfigEnvVars.ts +170 -27
- package/config/parseConfigFile.ts +34 -0
- package/config/readConfigFileSync.ts +44 -0
- package/config/watcherArming.ts +59 -0
- package/config-root.schema.json +33 -0
- package/dataLayer/blobBackup.ts +160 -50
- package/dataLayer/delete.ts +6 -1
- package/dataLayer/harperBridge/ResourceBridge.ts +80 -10
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dataLayer/hdbInfoController.ts +34 -1
- package/dataLayer/insert.ts +44 -1
- package/dataLayer/rocksdbBackup.ts +53 -10
- package/dataLayer/schema.ts +11 -1
- package/dataLayer/schemaDescribe.ts +8 -1
- package/dist/agent/mcpTools.js +1 -1
- package/dist/agent/mcpTools.js.map +1 -1
- package/dist/agent/session.d.ts +22 -0
- package/dist/agent/session.js +26 -15
- package/dist/agent/session.js.map +1 -1
- package/dist/bin/cliOperations.js +61 -9
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.d.ts +12 -1
- package/dist/bin/copyDb.js +248 -60
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deploySetup.d.ts +2 -0
- package/dist/bin/deploySetup.js +11 -3
- package/dist/bin/deploySetup.js.map +1 -1
- package/dist/bin/harper.js +1 -1
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.js +4 -1
- package/dist/bin/help.js.map +1 -1
- package/dist/bin/lite.js +4 -1
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/restart.js +91 -6
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.js +4 -10
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/upgrade.js +4 -3
- package/dist/bin/upgrade.js.map +1 -1
- package/dist/bin/workloadIdentity.d.ts +18 -0
- package/dist/bin/workloadIdentity.js +100 -0
- package/dist/bin/workloadIdentity.js.map +1 -0
- package/dist/components/Application.d.ts +235 -17
- package/dist/components/Application.js +3038 -238
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +8 -0
- package/dist/components/ApplicationScope.js +7 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.js +26 -10
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +4 -0
- package/dist/components/OptionsWatcher.js +440 -99
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.js +40 -6
- package/dist/components/RuntimeModuleTracker.js.map +1 -1
- package/dist/components/Scope.js +52 -13
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/awaitRestart.d.ts +33 -0
- package/dist/components/awaitRestart.js +61 -0
- package/dist/components/awaitRestart.js.map +1 -0
- package/dist/components/componentLoader.d.ts +38 -1
- package/dist/components/componentLoader.js +313 -24
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/componentPreparationLock.d.ts +5 -0
- package/dist/components/componentPreparationLock.js +14 -6
- package/dist/components/componentPreparationLock.js.map +1 -1
- package/dist/components/deploymentOperations.js +4 -1
- package/dist/components/deploymentOperations.js.map +1 -1
- package/dist/components/deploymentRecorder.d.ts +4 -2
- package/dist/components/deploymentRecorder.js +1 -0
- package/dist/components/deploymentRecorder.js.map +1 -1
- package/dist/components/mcp/adapters/harperHttp.js +4 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -1
- package/dist/components/mcp/listChanged.js +5 -0
- package/dist/components/mcp/listChanged.js.map +1 -1
- package/dist/components/mcp/toolRegistry.d.ts +1 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -1
- package/dist/components/mcp/tools/operations.d.ts +5 -0
- package/dist/components/mcp/tools/operations.js +9 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -2
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
- package/dist/components/operations.d.ts +28 -0
- package/dist/components/operations.js +476 -113
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +97 -3
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/packageComponent.js +24 -0
- package/dist/components/packageComponent.js.map +1 -1
- package/dist/components/requestRestart.d.ts +1 -0
- package/dist/components/requestRestart.js +7 -0
- package/dist/components/requestRestart.js.map +1 -1
- package/dist/components/status/ComponentStatusRegistry.d.ts +0 -4
- package/dist/components/status/ComponentStatusRegistry.js +63 -0
- package/dist/components/status/ComponentStatusRegistry.js.map +1 -1
- package/dist/config/RootConfigWatcher.d.ts +9 -1
- package/dist/config/RootConfigWatcher.js +228 -37
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configReadRetry.d.ts +8 -0
- package/dist/config/configReadRetry.js +62 -0
- package/dist/config/configReadRetry.js.map +1 -0
- package/dist/config/configUtils.d.ts +11 -2
- package/dist/config/configUtils.js +304 -47
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.d.ts +16 -0
- package/dist/config/harperConfigEnvVars.js +162 -25
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/config/parseConfigFile.d.ts +4 -0
- package/dist/config/parseConfigFile.js +35 -0
- package/dist/config/parseConfigFile.js.map +1 -0
- package/dist/config/readConfigFileSync.d.ts +1 -0
- package/dist/config/readConfigFileSync.js +47 -0
- package/dist/config/readConfigFileSync.js.map +1 -0
- package/dist/config/watcherArming.d.ts +15 -0
- package/dist/config/watcherArming.js +59 -0
- package/dist/config/watcherArming.js.map +1 -0
- package/dist/dataLayer/blobBackup.d.ts +49 -20
- package/dist/dataLayer/blobBackup.js +139 -50
- package/dist/dataLayer/blobBackup.js.map +1 -1
- package/dist/dataLayer/delete.js +1 -1
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +14 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +72 -12
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.d.ts +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +3 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.d.ts +10 -0
- package/dist/dataLayer/hdbInfoController.js +30 -1
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +9 -1
- package/dist/dataLayer/insert.js +30 -0
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/rocksdbBackup.d.ts +2 -2
- package/dist/dataLayer/rocksdbBackup.js +45 -8
- package/dist/dataLayer/rocksdbBackup.js.map +1 -1
- package/dist/dataLayer/schema.js +8 -0
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +8 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +55 -0
- package/dist/resources/DatabaseTransaction.d.ts +77 -0
- package/dist/resources/DatabaseTransaction.js +586 -54
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/LMDBTransaction.d.ts +2 -1
- package/dist/resources/LMDBTransaction.js +43 -6
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.d.ts +1 -0
- package/dist/resources/PrimaryRocksDatabase.js +49 -5
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +20 -0
- package/dist/resources/RecordEncoder.js +110 -9
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +2 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.js +117 -24
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +28 -1
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/RocksIndexStore.d.ts +6 -1
- package/dist/resources/RocksIndexStore.js +24 -9
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +24 -1
- package/dist/resources/RocksTransactionLogStore.js +160 -49
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +165 -10
- package/dist/resources/Table.js +1805 -303
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/write.js +10 -3
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.d.ts +181 -2
- package/dist/resources/auditStore.js +640 -29
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +129 -9
- package/dist/resources/blob.js +992 -114
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/branchDatabase.d.ts +48 -0
- package/dist/resources/branchDatabase.js +892 -0
- package/dist/resources/branchDatabase.js.map +1 -0
- package/dist/resources/crdt.js +50 -12
- package/dist/resources/crdt.js.map +1 -1
- package/dist/resources/dataLoader.js +3 -4
- package/dist/resources/dataLoader.js.map +1 -1
- package/dist/resources/databases.d.ts +157 -14
- package/dist/resources/databases.js +1462 -325
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/defineTable.d.ts +10 -2
- package/dist/resources/defineTable.js +9 -1
- package/dist/resources/defineTable.js.map +1 -1
- package/dist/resources/derivedIndexRegistry.d.ts +5 -0
- package/dist/resources/derivedIndexRegistry.js +68 -0
- package/dist/resources/derivedIndexRegistry.js.map +1 -0
- package/dist/resources/derivedIndexRuntime.d.ts +215 -0
- package/dist/resources/derivedIndexRuntime.js +2027 -0
- package/dist/resources/derivedIndexRuntime.js.map +1 -0
- package/dist/resources/graphql.d.ts +1 -1
- package/dist/resources/graphql.js +52 -16
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +103 -9
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +854 -41
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/indexes/hnswDerivedIndex.d.ts +67 -0
- package/dist/resources/indexes/hnswDerivedIndex.js +464 -0
- package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -0
- package/dist/resources/indexes/hnswPlaneBinding.d.ts +65 -0
- package/dist/resources/indexes/hnswPlaneBinding.js +91 -0
- package/dist/resources/indexes/hnswPlaneBinding.js.map +1 -0
- package/dist/resources/longLivedTransactions.d.ts +71 -0
- package/dist/resources/longLivedTransactions.js +358 -0
- package/dist/resources/longLivedTransactions.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +26 -0
- package/dist/resources/models/backendRegistry.js +60 -2
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/bootstrap.d.ts +33 -1
- package/dist/resources/models/bootstrap.js +416 -31
- package/dist/resources/models/bootstrap.js.map +1 -1
- package/dist/resources/nodeIdMapping.d.ts +5 -0
- package/dist/resources/nodeIdMapping.js +49 -0
- package/dist/resources/nodeIdMapping.js.map +1 -1
- package/dist/resources/recordLock.d.ts +123 -0
- package/dist/resources/recordLock.js +315 -0
- package/dist/resources/recordLock.js.map +1 -0
- package/dist/resources/recordLockCoordinator.d.ts +557 -0
- package/dist/resources/recordLockCoordinator.js +2565 -0
- package/dist/resources/recordLockCoordinator.js.map +1 -0
- package/dist/resources/replayLogs.d.ts +14 -1
- package/dist/resources/replayLogs.js +157 -24
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +94 -7
- package/dist/resources/replayLogsGuards.js +111 -7
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/resources/replicatedApplyFailure.d.ts +16 -0
- package/dist/resources/replicatedApplyFailure.js +63 -0
- package/dist/resources/replicatedApplyFailure.js.map +1 -0
- package/dist/resources/scheduler/scheduler.js +3 -3
- package/dist/resources/scheduler/scheduler.js.map +1 -1
- package/dist/resources/search.d.ts +10 -4
- package/dist/resources/search.js +283 -37
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/tracked.d.ts +5 -1
- package/dist/resources/tracked.js +74 -23
- package/dist/resources/tracked.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js +2 -2
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.js +61 -30
- package/dist/security/auth.js.map +1 -1
- package/dist/security/authn/oidc/claims.d.ts +22 -0
- package/dist/security/authn/oidc/claims.js +71 -0
- package/dist/security/authn/oidc/claims.js.map +1 -0
- package/dist/security/authn/oidc/identityToken.d.ts +27 -0
- package/dist/security/authn/oidc/identityToken.js +111 -0
- package/dist/security/authn/oidc/identityToken.js.map +1 -0
- package/dist/security/authn/oidc/jwks.d.ts +25 -0
- package/dist/security/authn/oidc/jwks.js +261 -0
- package/dist/security/authn/oidc/jwks.js.map +1 -0
- package/dist/security/authn/oidc/providers/generic.d.ts +13 -0
- package/dist/security/authn/oidc/providers/generic.js +34 -0
- package/dist/security/authn/oidc/providers/generic.js.map +1 -0
- package/dist/security/authn/oidc/providers/githubActions.d.ts +11 -0
- package/dist/security/authn/oidc/providers/githubActions.js +129 -0
- package/dist/security/authn/oidc/providers/githubActions.js.map +1 -0
- package/dist/security/authn/oidc/providers/index.d.ts +37 -0
- package/dist/security/authn/oidc/providers/index.js +24 -0
- package/dist/security/authn/oidc/providers/index.js.map +1 -0
- package/dist/security/authn/oidc/tokenExchange.d.ts +12 -0
- package/dist/security/authn/oidc/tokenExchange.js +306 -0
- package/dist/security/authn/oidc/tokenExchange.js.map +1 -0
- package/dist/security/authn/oidc/trustPolicyOperations.d.ts +49 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js +358 -0
- package/dist/security/authn/oidc/trustPolicyOperations.js.map +1 -0
- package/dist/security/authn/oidc/types.d.ts +38 -0
- package/dist/security/authn/oidc/types.js +6 -0
- package/dist/security/authn/oidc/types.js.map +1 -0
- package/dist/security/certificateVerification/index.js +40 -11
- package/dist/security/certificateVerification/index.js.map +1 -1
- package/dist/security/certificateVerification/trustedIssuers.d.ts +24 -0
- package/dist/security/certificateVerification/trustedIssuers.js +79 -0
- package/dist/security/certificateVerification/trustedIssuers.js.map +1 -0
- package/dist/security/certificateVerification/types.d.ts +1 -0
- package/dist/security/credentialProvenance.d.ts +35 -0
- package/dist/security/credentialProvenance.js +51 -0
- package/dist/security/credentialProvenance.js.map +1 -0
- package/dist/security/credentialRejection.d.ts +4 -0
- package/dist/security/credentialRejection.js +24 -0
- package/dist/security/credentialRejection.js.map +1 -0
- package/dist/security/deferredAuthentication.d.ts +36 -0
- package/dist/security/deferredAuthentication.js +70 -0
- package/dist/security/deferredAuthentication.js.map +1 -0
- package/dist/security/impersonation.d.ts +21 -0
- package/dist/security/impersonation.js +108 -9
- package/dist/security/impersonation.js.map +1 -1
- package/dist/security/jsLoader.d.ts +6 -0
- package/dist/security/jsLoader.js +77 -15
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.js +301 -71
- package/dist/security/keys.js.map +1 -1
- package/dist/security/operationScope.d.ts +21 -0
- package/dist/security/operationScope.js +36 -0
- package/dist/security/operationScope.js.map +1 -0
- package/dist/security/permissionsTranslator.js +21 -0
- package/dist/security/permissionsTranslator.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +19 -1
- package/dist/security/tokenAuthentication.js +191 -10
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +4 -3
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +2 -2
- package/dist/server/DurableSubscriptionsSession.js +67 -10
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.js +106 -2
- package/dist/server/REST.js.map +1 -1
- package/dist/server/graphqlQuerying.js +4 -0
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +16 -1
- package/dist/server/http.js +122 -17
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +8 -1
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +6 -2
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobs.js +4 -1
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/liveSubscriptionAuth.d.ts +26 -4
- package/dist/server/liveSubscriptionAuth.js +105 -39
- package/dist/server/liveSubscriptionAuth.js.map +1 -1
- package/dist/server/loadRootComponents.js +49 -10
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/mqtt.d.ts +2 -0
- package/dist/server/mqtt.js +165 -30
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.d.ts +2 -0
- package/dist/server/nodeName.js +107 -23
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +27 -0
- package/dist/server/serverHelpers/Headers.js +145 -1
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/NodeAdapterResponse.d.ts +48 -0
- package/dist/server/serverHelpers/NodeAdapterResponse.js +220 -0
- package/dist/server/serverHelpers/NodeAdapterResponse.js.map +1 -0
- package/dist/server/serverHelpers/Request.d.ts +5 -10
- package/dist/server/serverHelpers/Request.js +38 -136
- package/dist/server/serverHelpers/Request.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +11 -0
- package/dist/server/serverHelpers/contentTypes.js +221 -40
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/deployValidationState.d.ts +3 -0
- package/dist/server/serverHelpers/deployValidationState.js +9 -19
- package/dist/server/serverHelpers/deployValidationState.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +12 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +24 -2
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -1
- package/dist/server/serverHelpers/registeredOperations.d.ts +5 -4
- package/dist/server/serverHelpers/registeredOperations.js +74 -21
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/requestSanitization.d.ts +11 -0
- package/dist/server/serverHelpers/requestSanitization.js +20 -0
- package/dist/server/serverHelpers/requestSanitization.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.js +6 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +18 -0
- package/dist/server/serverHelpers/serverUtilities.js +178 -29
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/serverHelpers/sharedMessageEncoding.d.ts +67 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js +280 -0
- package/dist/server/serverHelpers/sharedMessageEncoding.js.map +1 -0
- package/dist/server/serverHelpers/uwsServer.js +19 -1
- package/dist/server/serverHelpers/uwsServer.js.map +1 -1
- package/dist/server/static.js +24 -28
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +5 -0
- package/dist/server/storageReclamation.js +17 -1
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/isolatedApplications.d.ts +47 -0
- package/dist/server/threads/isolatedApplications.js +171 -0
- package/dist/server/threads/isolatedApplications.js.map +1 -0
- package/dist/server/threads/itc.d.ts +7 -2
- package/dist/server/threads/itc.js +5 -1
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/logRotationTransport.d.ts +1 -0
- package/dist/server/threads/logRotationTransport.js +33 -0
- package/dist/server/threads/logRotationTransport.js.map +1 -0
- package/dist/server/threads/manageThreads.d.ts +83 -3
- package/dist/server/threads/manageThreads.js +769 -75
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.d.ts +1 -0
- package/dist/server/threads/socketRouter.js +277 -31
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadHeapMemory.d.ts +2 -0
- package/dist/server/threads/threadHeapMemory.js +31 -0
- package/dist/server/threads/threadHeapMemory.js.map +1 -0
- package/dist/server/threads/threadServer.js +76 -22
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/config.d.ts +1 -3
- package/dist/sqlEngine/config.js +19 -16
- package/dist/sqlEngine/config.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +1 -1
- package/dist/sqlTranslator/index.js +30 -7
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/directives/5-3-0.d.ts +7 -0
- package/dist/upgrade/directives/5-3-0.js +148 -0
- package/dist/upgrade/directives/5-3-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.js +2 -1
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.js +2 -1
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/common_utils.d.ts +16 -0
- package/dist/utility/common_utils.js +32 -6
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/componentNames.d.ts +8 -0
- package/dist/utility/componentNames.js +12 -1
- package/dist/utility/componentNames.js.map +1 -1
- package/dist/utility/environment/environmentManager.js +3 -6
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +1 -0
- package/dist/utility/environment/systemInformation.js +1 -0
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +2 -0
- package/dist/utility/errors/commonErrors.js +2 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +33 -0
- package/dist/utility/errors/hdbError.js +58 -1
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +18 -0
- package/dist/utility/hdbTerms.js +20 -2
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +2 -0
- package/dist/utility/logging/harper_logger.js +286 -30
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logGenerationCoordinator.d.ts +35 -0
- package/dist/utility/logging/logGenerationCoordinator.js +184 -0
- package/dist/utility/logging/logGenerationCoordinator.js.map +1 -0
- package/dist/utility/logging/logRotation.d.ts +46 -0
- package/dist/utility/logging/logRotation.js +365 -0
- package/dist/utility/logging/logRotation.js.map +1 -0
- package/dist/utility/logging/logRotator.d.ts +1 -1
- package/dist/utility/logging/logRotator.js +192 -85
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/nodeIdentity.d.ts +9 -0
- package/dist/utility/nodeIdentity.js +58 -0
- package/dist/utility/nodeIdentity.js.map +1 -0
- package/dist/utility/npmUtilities.js +11 -7
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operationPermissions.d.ts +3 -1
- package/dist/utility/operationPermissions.js +16 -1
- package/dist/utility/operationPermissions.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +10 -7
- package/dist/utility/operation_authorization.js +212 -41
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/watchPath.d.ts +29 -0
- package/dist/utility/watchPath.js +68 -0
- package/dist/utility/watchPath.js.map +1 -0
- package/dist/utility/watcherFallback.d.ts +41 -0
- package/dist/utility/watcherFallback.js +153 -0
- package/dist/utility/watcherFallback.js.map +1 -1
- package/dist/validation/configValidator.d.ts +12 -0
- package/dist/validation/configValidator.js +205 -75
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/installValidator.js +12 -0
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +11 -0
- package/dist/validation/validationWrapper.js +16 -3
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +8 -0
- package/json/systemSchema.json +55 -0
- package/npm-shrinkwrap.json +286 -194
- package/package.json +15 -7
- package/resources/DESIGN.md +219 -52
- package/resources/DatabaseTransaction.ts +657 -52
- package/resources/LMDBTransaction.ts +46 -6
- package/resources/PrimaryRocksDatabase.ts +46 -7
- package/resources/RecordEncoder.ts +124 -9
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +114 -22
- package/resources/ResourceInterface.ts +31 -0
- package/resources/RocksIndexStore.ts +30 -9
- package/resources/RocksTransactionLogStore.ts +188 -51
- package/resources/Table.ts +1960 -301
- package/resources/analytics/write.ts +10 -3
- package/resources/auditStore.ts +647 -32
- package/resources/blob.ts +1029 -110
- package/resources/branchDatabase.ts +941 -0
- package/resources/crdt.ts +76 -12
- package/resources/dataLoader.ts +3 -4
- package/resources/databases.ts +1584 -320
- package/resources/defineTable.ts +18 -2
- package/resources/derivedIndexRegistry.ts +56 -0
- package/resources/derivedIndexRuntime.ts +2292 -0
- package/resources/graphql.ts +72 -17
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +911 -48
- package/resources/indexes/hnswDerivedIndex.ts +531 -0
- package/resources/indexes/hnswPlaneBinding.ts +174 -0
- package/resources/longLivedTransactions.ts +360 -0
- package/resources/models/backendRegistry.ts +84 -2
- package/resources/models/bootstrap.ts +473 -28
- package/resources/nodeIdMapping.ts +50 -0
- package/resources/recordLock.ts +419 -0
- package/resources/recordLockCoordinator.ts +3043 -0
- package/resources/replayLogs.ts +152 -26
- package/resources/replayLogsGuards.ts +171 -8
- package/resources/replicatedApplyFailure.ts +77 -0
- package/resources/scheduler/scheduler.ts +4 -4
- package/resources/search.ts +288 -46
- package/resources/tracked.ts +73 -22
- package/resources/transactionBroadcast.ts +3 -3
- package/security/auth.ts +68 -29
- package/security/authn/oidc/claims.ts +72 -0
- package/security/authn/oidc/identityToken.ts +129 -0
- package/security/authn/oidc/jwks.ts +260 -0
- package/security/authn/oidc/providers/generic.ts +40 -0
- package/security/authn/oidc/providers/githubActions.ts +137 -0
- package/security/authn/oidc/providers/index.ts +52 -0
- package/security/authn/oidc/tokenExchange.ts +300 -0
- package/security/authn/oidc/trustPolicyOperations.ts +343 -0
- package/security/authn/oidc/types.ts +41 -0
- package/security/certificateVerification/index.ts +54 -13
- package/security/certificateVerification/trustedIssuers.ts +76 -0
- package/security/certificateVerification/types.ts +1 -0
- package/security/credentialProvenance.ts +47 -0
- package/security/credentialRejection.ts +22 -0
- package/security/deferredAuthentication.ts +71 -0
- package/security/impersonation.ts +117 -12
- package/security/jsLoader.ts +83 -18
- package/security/keys.ts +298 -72
- package/security/operationScope.ts +33 -0
- package/security/permissionsTranslator.js +23 -0
- package/security/tokenAuthentication.ts +233 -12
- package/security/user.ts +4 -3
- package/server/DESIGN.md +194 -16
- package/server/DurableSubscriptionsSession.ts +71 -11
- package/server/REST.ts +115 -4
- package/server/graphqlQuerying.ts +4 -0
- package/server/http.ts +133 -20
- package/server/itc/serverHandlers.js +8 -1
- package/server/jobs/jobProcess.ts +8 -2
- package/server/jobs/jobs.ts +4 -1
- package/server/liveSubscriptionAuth.ts +129 -46
- package/server/loadRootComponents.js +50 -8
- package/server/mqtt.ts +179 -38
- package/server/nodeName.ts +103 -21
- package/server/serverHelpers/Headers.ts +135 -0
- package/server/serverHelpers/NodeAdapterResponse.ts +221 -0
- package/server/serverHelpers/Request.ts +33 -131
- package/server/serverHelpers/contentTypes.ts +217 -36
- package/server/serverHelpers/deployValidationState.ts +24 -13
- package/server/serverHelpers/operationAuthorizationState.ts +34 -3
- package/server/serverHelpers/registeredOperations.ts +79 -22
- package/server/serverHelpers/requestSanitization.ts +15 -0
- package/server/serverHelpers/serverHandlers.js +6 -3
- package/server/serverHelpers/serverUtilities.ts +232 -40
- package/server/serverHelpers/sharedMessageEncoding.ts +307 -0
- package/server/serverHelpers/uwsServer.ts +17 -2
- package/server/static.ts +23 -29
- package/server/storageReclamation.ts +15 -2
- package/server/threads/isolatedApplications.ts +157 -0
- package/server/threads/itc.js +11 -1
- package/server/threads/logRotationTransport.ts +40 -0
- package/server/threads/manageThreads.js +771 -66
- package/server/threads/socketRouter.ts +291 -30
- package/server/threads/threadHeapMemory.ts +26 -0
- package/server/threads/threadServer.js +73 -22
- package/sqlTranslator/index.ts +31 -8
- package/studio/web/assets/{Chat-4RrB5134.js → Chat-D3j-1yY1.js} +1 -1
- package/studio/web/assets/{FloatingChat-omlNMDcJ.js → FloatingChat-BxJGYcfB.js} +3 -3
- package/studio/web/assets/{apiToken-Bke3wvfZ.js → apiToken-CT55oWOe.js} +1 -1
- package/studio/web/assets/{applications-DvFDYJgK.js → applications-D9Ct9_vm.js} +1 -1
- package/studio/web/assets/{cssMode-C1vRa7zh.js → cssMode-DV8H7VwA.js} +1 -1
- package/studio/web/assets/{editor-3XRWEDWX.js → editor-uatc0unt.js} +1 -1
- package/studio/web/assets/{html-CTY5tdMr.js → html-Bm6D6paN.js} +1 -1
- package/studio/web/assets/{htmlMode-CG1vSD9t.js → htmlMode-CEn7tpLG.js} +1 -1
- package/studio/web/assets/{index-Dfpeofdu.js → index-BIXW6Pu4.js} +5 -5
- package/studio/web/assets/{index.lazy-B1VOIv-t.js → index.lazy-UI7L-Vrk.js} +1 -1
- package/studio/web/assets/{javascript-CJeJzGnI.js → javascript-CJ0G3AFZ.js} +1 -1
- package/studio/web/assets/{jsonMode-CYPBwM82.js → jsonMode-DQADAYEa.js} +1 -1
- package/studio/web/assets/{languageServices-IKH4GUHl.js → languageServices-CAQJXWcI.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-BC8_gxKG.js → lspLanguageFeatures-CCQ8P5sY.js} +1 -1
- package/studio/web/assets/{notifications-BfKBpYcq.js → notifications-BbxTU6Aw.js} +1 -1
- package/studio/web/assets/{notifications-DFbArTfC.js → notifications-Cvb3P1lB.js} +1 -1
- package/studio/web/assets/{profile-Q4-T6c-S.js → profile-Yyb7gsvL.js} +1 -1
- package/studio/web/assets/{regions-CtkV0xje.js → regions-OgjGHlU5.js} +1 -1
- package/studio/web/assets/{register-1ZZuMsiA.js → register-6qwNEOY3.js} +2 -2
- package/studio/web/assets/{setComponentFile-ZWLcWv5X.js → setComponentFile-BilDMtgB.js} +1 -1
- package/studio/web/assets/{setup-DWprJyJy.js → setup-J6qJ7OIU.js} +2 -2
- package/studio/web/assets/{status--aNm8isn.js → status-0RWGcfyD.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-Cq_lt3XD.js → toggleHighContrast-BIn-vErT.js} +1 -1
- package/studio/web/assets/{tsMode-pjgytARx.js → tsMode-DgUXku4d.js} +1 -1
- package/studio/web/assets/{typescript-Cdg0mqUh.js → typescript-C9orXcsM.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-RZhaY8Rn.js → useEntityRestURL-BEoXXbUB.js} +1 -1
- package/studio/web/assets/{workers-BgoXIqQe.js → workers-JVzSDmgx.js} +1 -1
- package/studio/web/assets/{xml-BwSeDMiP.js → xml-Cq-S8S4X.js} +1 -1
- package/studio/web/assets/{yaml-DotCUG5l.js → yaml-sfoRdh1M.js} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/directives/5-3-0.ts +132 -0
- package/upgrade/directives/directivesController.ts +2 -1
- package/utility/OperationFunctionCaller.ts +2 -1
- package/utility/common_utils.ts +30 -5
- package/utility/componentNames.ts +12 -0
- package/utility/environment/environmentManager.ts +3 -7
- package/utility/environment/systemInformation.ts +7 -0
- package/utility/errors/commonErrors.ts +4 -0
- package/utility/errors/hdbError.ts +57 -0
- package/utility/hdbTerms.ts +19 -0
- package/utility/logging/harper_logger.ts +278 -26
- package/utility/logging/logGenerationCoordinator.ts +196 -0
- package/utility/logging/logRotation.ts +367 -0
- package/utility/logging/logRotator.ts +213 -81
- package/utility/nodeIdentity.ts +45 -0
- package/utility/npmUtilities.ts +12 -8
- package/utility/operationPermissions.ts +18 -1
- package/utility/operation_authorization.ts +231 -42
- package/utility/watchPath.ts +63 -0
- package/utility/watcherFallback.ts +148 -0
- package/validation/configValidator.ts +215 -75
- package/validation/installValidator.ts +15 -0
- package/validation/validationWrapper.ts +18 -4
|
@@ -11,6 +11,27 @@ interface ApplicationConfig {
|
|
|
11
11
|
allowInstallScripts?: boolean;
|
|
12
12
|
};
|
|
13
13
|
credentials?: CredentialReference[];
|
|
14
|
+
/**
|
|
15
|
+
* Databases this application gets a private fork of (harper#642), declared HERE — on the
|
|
16
|
+
* application's root-config entry, alongside `host` and `urlPath` — because which databases an
|
|
17
|
+
* application forks is a deployment decision, not something the application checks in. Declaring
|
|
18
|
+
* it in the application's own config.yaml is refused rather than ignored.
|
|
19
|
+
*
|
|
20
|
+
* `true` forks every database on the instance except `system` -- a snapshot of what exists when
|
|
21
|
+
* this application loads, not a standing subscription: a database created afterward is not
|
|
22
|
+
* retroactively branched.
|
|
23
|
+
*
|
|
24
|
+
* The fork is durable: it lives at a path derived from the application and database names, is
|
|
25
|
+
* adopted again on restart, and is invisible to other applications.
|
|
26
|
+
*
|
|
27
|
+
* The application must reach its data through `import { databases } from 'harper'`. The bare
|
|
28
|
+
* `databases`/`tables` globals are shared process-wide by the default `vm-current-context` loader
|
|
29
|
+
* and cannot be scoped, so an application that uses them reads and writes the BASE — silently.
|
|
30
|
+
* Per-application globals are a property of thread-level isolation, not of branching.
|
|
31
|
+
*/
|
|
32
|
+
branchedDatabases?: string[] | true;
|
|
33
|
+
/** Run in a worker thread of its own that loads no other application. */
|
|
34
|
+
isolated?: boolean;
|
|
14
35
|
[key: string]: unknown;
|
|
15
36
|
}
|
|
16
37
|
export declare class InvalidPackageIdentifierError extends TypeError {
|
|
@@ -28,10 +49,19 @@ export declare class InvalidInstallTimeoutError extends TypeError {
|
|
|
28
49
|
export declare class InvalidCredentialsPropertyError extends TypeError {
|
|
29
50
|
constructor(applicationName: string, credentials: unknown);
|
|
30
51
|
}
|
|
52
|
+
export declare class InvalidBranchedDatabasesError extends TypeError {
|
|
53
|
+
constructor(applicationName: string, detail: string);
|
|
54
|
+
}
|
|
31
55
|
export declare class InvalidCredentialEntryError extends TypeError {
|
|
32
56
|
constructor(applicationName: string);
|
|
33
57
|
}
|
|
34
58
|
export declare function assertApplicationConfig(applicationName: string, applicationConfig: Record<'package', unknown> & Record<string, unknown>): asserts applicationConfig is ApplicationConfig;
|
|
59
|
+
export declare function assertIsolationConfig(applicationName: string, isolated: unknown): void;
|
|
60
|
+
/**
|
|
61
|
+
* A branch that cannot be honoured fails the application's load: falling back would hand it the
|
|
62
|
+
* shared database it asked not to have, with no signal that it happened.
|
|
63
|
+
*/
|
|
64
|
+
export declare function assertBranchedDatabases(applicationName: string, value: unknown): void;
|
|
35
65
|
/**
|
|
36
66
|
* Returns true when npm/git stderr indicates an SSH authentication failure —
|
|
37
67
|
* git exits 128 with the standard "could not read" message, or the SSH layer
|
|
@@ -58,6 +88,7 @@ interface GitReference {
|
|
|
58
88
|
*/
|
|
59
89
|
export declare function parseGitReference(packageIdentifier: string): GitReference | null;
|
|
60
90
|
export declare const ASIDE_STAGING_DIR = ".deploy-aside";
|
|
91
|
+
export declare const DEPLOY_STAGING_DIR = ".deploy-staging";
|
|
61
92
|
type ExtractionTransaction = {
|
|
62
93
|
commit(): Promise<void>;
|
|
63
94
|
rollback(): Promise<void>;
|
|
@@ -69,6 +100,8 @@ type InstalledPackageMetadata = {
|
|
|
69
100
|
hasLockfile: boolean;
|
|
70
101
|
hasInstallableDependencies: boolean;
|
|
71
102
|
};
|
|
103
|
+
export declare function packageHasProductionInstallWork(packageJSON: any): boolean;
|
|
104
|
+
export declare function packageHasAutomaticInstallWork(packageJSON: any): boolean;
|
|
72
105
|
export declare function readInstalledPackageMetadata(directory: string): Promise<InstalledPackageMetadata>;
|
|
73
106
|
export declare function installedPackageMetadataEqual(previous: InstalledPackageMetadata, current: InstalledPackageMetadata): boolean;
|
|
74
107
|
export declare function installedRuntimeChanged(previous: InstalledPackageMetadata, current: InstalledPackageMetadata, installationIsOpaque: boolean): boolean;
|
|
@@ -83,17 +116,153 @@ export declare function installedRuntimeChanged(previous: InstalledPackageMetada
|
|
|
83
116
|
* threads by the preparation lock below.
|
|
84
117
|
*/
|
|
85
118
|
export declare function extractApplication(application: Application, deferCommit?: boolean): Promise<ExtractionTransaction | undefined>;
|
|
119
|
+
/** `deployment_stagingRetention_maxCount`; 0 keeps none. Only a number or numeric string counts, so `true`/`[]`/blank cannot become "keep nothing". */
|
|
120
|
+
export declare function getStagingRetentionMaxCount(): number;
|
|
121
|
+
type DormantBuild = {
|
|
122
|
+
deploymentDirPath: string;
|
|
123
|
+
deploymentId: string;
|
|
124
|
+
completedAt: number;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Remove the oldest dormant builds beyond `maxCount`. The caller must hold the component's preparation lock;
|
|
128
|
+
* every catalogued build is re-derived under it before the kept set is chosen, so a catalog read unlocked
|
|
129
|
+
* cannot hold or miss a slot. Never throws: a failure must neither fail a component closed nor replace a
|
|
130
|
+
* deploy's own error.
|
|
131
|
+
*
|
|
132
|
+
* `pinnedDeploymentId` is never evicted. A delayed activation runs this preamble under the same lock it is
|
|
133
|
+
* about to activate under, so without the pin retention would delete the artifact the request named —
|
|
134
|
+
* immediately, when the knob is `0`. The pin is applied after the kept set is chosen, so a pinned build in
|
|
135
|
+
* the eviction tail leaves `maxCount + 1` on disk for the life of the request; the next preamble that does
|
|
136
|
+
* not pin it brings the count back down.
|
|
137
|
+
*/
|
|
138
|
+
export declare function pruneDormantBuilds(componentName: string, builds: DormantBuild[], maxCount: number, pinnedDeploymentId?: string): Promise<void>;
|
|
139
|
+
export type ArtifactDescriptor = {
|
|
140
|
+
v: number;
|
|
141
|
+
component: string;
|
|
142
|
+
/** The root-config entry to publish with the activation; `null` for a payload build, which owns none. */
|
|
143
|
+
rootConfig: Record<string, unknown> | null;
|
|
144
|
+
installationIsOpaque: boolean;
|
|
145
|
+
isolated: boolean;
|
|
146
|
+
};
|
|
147
|
+
/** Where a candidate build lives: `<root>/.deploy-staging/<deploymentId>/<component>`. */
|
|
148
|
+
export declare function candidateApplicationPath(componentDirPath: string, deploymentId: string): string;
|
|
149
|
+
export declare function makeRollbackPlaceholderMovable(applicationDirPath: string, placeholderIdentity: {
|
|
150
|
+
dev: bigint;
|
|
151
|
+
ino: bigint;
|
|
152
|
+
} | undefined): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Name the component that owns a deployment directory THIS CALL created, and take the directory back if that
|
|
155
|
+
* cannot be recorded.
|
|
156
|
+
*
|
|
157
|
+
* Ownership is published as part of the claim rather than at certification, because resolving and packing can
|
|
158
|
+
* take minutes and until a tree exists to infer an owner from, a directory answering to nobody is one another
|
|
159
|
+
* component will take for abandoned. Unattributed is a permanent refusal, though, so a failure here — a full
|
|
160
|
+
* disk, an EIO on the temp write or its sync — would burn this deployment id for good, every retry refused by
|
|
161
|
+
* its own wreckage. The removal is scoped to the directory this invocation made, and deliberately not
|
|
162
|
+
* broadened to one found by EEXIST: that directory may be another claimant's, and removing it is the race the
|
|
163
|
+
* refusal exists to prevent. Best-effort, because the claim failure is what the caller needs to see.
|
|
164
|
+
*
|
|
165
|
+
* `write` is a parameter so the failure is testable without a filesystem that can be made to fail on exactly
|
|
166
|
+
* this write and nothing else.
|
|
167
|
+
*/
|
|
168
|
+
export declare function publishClaimOwnership(deploymentDirPath: string, componentName: string, write?: (filePath: string, contents: string) => Promise<void>): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* The components a deployment's evidence implicates, when its journal and its ownership sidecar disagree
|
|
171
|
+
* about whose it is — or `undefined` when there is no disagreement to act on.
|
|
172
|
+
*
|
|
173
|
+
* A sidecar that cannot answer is NOT disagreement: the journal names its own component and can settle it,
|
|
174
|
+
* so an unreadable sidecar must not block that. Only a sidecar that reads and names something else is the
|
|
175
|
+
* wedge, and then BOTH names are returned, sidecar first, because both are stuck — see
|
|
176
|
+
* `splitAttributionError`.
|
|
177
|
+
*
|
|
178
|
+
* Separated from either call site so the decision is testable on its own: the paths that reach it include
|
|
179
|
+
* one that requires a journal to appear between two reads under a lock, which no test can stage.
|
|
180
|
+
*/
|
|
181
|
+
export declare function splitAttributionOwners(journalOwner: string, sidecarOwner: string | undefined): [string, string] | undefined;
|
|
182
|
+
/**
|
|
183
|
+
* Components that on-disk evidence says were left in a state nobody settled — determined READ-ONLY, so any
|
|
184
|
+
* thread can reach the same verdict.
|
|
185
|
+
*
|
|
186
|
+
* Recovery runs on the main thread only, but the components it could not settle still have to be failed
|
|
187
|
+
* closed on the workers that actually serve them, and a worker cannot be handed main's verdict: it boots
|
|
188
|
+
* through its own `loadRootComponents(true)`, potentially before main finished. Recovery deliberately KEEPS
|
|
189
|
+
* the evidence for anything it could not settle, so a worker can read it instead of being told.
|
|
190
|
+
*
|
|
191
|
+
* Only unambiguous evidence counts. A well-formed journal is NOT evidence — every healthy deploy has one
|
|
192
|
+
* in flight — so this reports a journal that cannot be read at all (corrupt, unknown version, or naming
|
|
193
|
+
* something other than its own deployment), which no in-flight deploy ever produces.
|
|
194
|
+
*/
|
|
195
|
+
export declare function unsettleableComponentsFromDisk(componentsRootDirPath: string): Promise<Map<string, Error>>;
|
|
86
196
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* application's `package.json#devEngines`, or falling back to the default
|
|
90
|
-
* package manager, `npm`.
|
|
197
|
+
* Settle activations a crash interrupted, before anything loads. Runs at startup on main and on every
|
|
198
|
+
* worker — a worker can be respawned mid-activation, long after main's pass.
|
|
91
199
|
*
|
|
92
|
-
*
|
|
200
|
+
* Returns failures keyed by COMPONENT so the caller can fail exactly those closed and still load every
|
|
201
|
+
* healthy sibling — a single unreadable journal must not take down the whole node, and must not let a
|
|
202
|
+
* component load over state nobody reconciled.
|
|
93
203
|
*
|
|
94
|
-
* This method may be called from any Harper thread as part of a serialized preparation.
|
|
95
204
|
*/
|
|
96
|
-
export declare function
|
|
205
|
+
export declare function recoverInterruptedActivations(componentsRootDirPath: string): Promise<Map<string, Error>>;
|
|
206
|
+
/**
|
|
207
|
+
* Finish one owner's catalogued dormant builds after the scan. The catalog was read without the lock, so a
|
|
208
|
+
* deploy may have published a journal into one of these directories since — and if it then died mid-swap,
|
|
209
|
+
* only settlement brings the component back. So: settle any journal that appeared, then bound what is still
|
|
210
|
+
* dormant. The lock is taken only when there is something to do; a lock a live deploy holds is the same
|
|
211
|
+
* deferral the residue branch records.
|
|
212
|
+
*/
|
|
213
|
+
export declare function reconcileDormantBuilds(componentsRootDirPath: string, owner: string, builds: DormantBuild[], maxCount: number): Promise<Map<string, Error>>;
|
|
214
|
+
export declare function markCandidateComplete(componentDirPath: string, deploymentId: string, componentName: string): Promise<void>;
|
|
215
|
+
/**
|
|
216
|
+
* Make a built and validated candidate live, as one compensating transaction over two effects: the live tree
|
|
217
|
+
* moves aside, then the candidate takes its place. Root config is NOT one of them — for an immediate deploy
|
|
218
|
+
* it is still published before the build, unchanged, and making it transactional is tracked separately
|
|
219
|
+
* (#2315). A delayed activation hands its artifact's recorded entry in as `afterJournal`, which publishes it
|
|
220
|
+
* from inside the window a crash rolls forward from — see that call site.
|
|
221
|
+
*
|
|
222
|
+
* The candidate must ALREADY be certified: `markCandidateComplete` is the caller's, so a delayed activation
|
|
223
|
+
* does not re-walk and re-fsync a whole dependency tree it certified when it was built. The activation
|
|
224
|
+
* journal is still written and fsynced BEFORE the first rename, so a crash anywhere below is recoverable —
|
|
225
|
+
* see `settleInterruptedActivation` for the state matrix. The second rename is the COMMIT POINT: nothing
|
|
226
|
+
* after it may compensate, because the live path holds the candidate and renaming the aside back over it
|
|
227
|
+
* cannot succeed.
|
|
228
|
+
*/
|
|
229
|
+
export declare function activateCandidateApplication(application: Application, deploymentId: string, options?: {
|
|
230
|
+
afterJournal?: () => Promise<(() => Promise<void>) | void>;
|
|
231
|
+
}): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Build a deploy candidate at `.deploy-staging/<deploymentId>/<component>`, leaving the live tree
|
|
234
|
+
* completely untouched — this is what lets the previous version keep serving through the clone, the
|
|
235
|
+
* extraction and the dependency install.
|
|
236
|
+
*
|
|
237
|
+
* Failure needs no compensation, which is the whole point: nothing about the live component was modified,
|
|
238
|
+
* so the abandoned candidate is simply removed and the error propagates.
|
|
239
|
+
*/
|
|
240
|
+
export declare function buildCandidateApplication(application: Application, deploymentId: string, options?: {
|
|
241
|
+
rejectLinkSource?: boolean;
|
|
242
|
+
}): Promise<string>;
|
|
243
|
+
export declare function recoverInterruptedComponentExtractions(componentsRootDirPath: string): Promise<Map<string, Error>>;
|
|
244
|
+
export declare function recoverInterruptedComponentExtraction(componentsRootDirPath: string, componentName: string, waitForPreparation?: boolean, waitTimeoutMs?: number): Promise<void>;
|
|
245
|
+
export declare function retireComponentExtractionStaging(componentDirPath: string, componentName?: string, componentLogger?: Logger): Promise<void>;
|
|
246
|
+
export declare function dropComponentDirectory(componentDirPath: string, componentName?: string, componentLogger?: Logger): Promise<void>;
|
|
247
|
+
/**
|
|
248
|
+
* The one definition of how Harper invokes a package manager to install dependencies; every npm
|
|
249
|
+
* entry point composes its arguments here rather than assembling its own.
|
|
250
|
+
*/
|
|
251
|
+
export declare function packageManagerInstallArguments(packageManagerName: string, allowInstallScripts: boolean, force?: boolean): string[];
|
|
252
|
+
/**
|
|
253
|
+
* Install a component's dependencies into `buildDirPath` — the live path, or a candidate under
|
|
254
|
+
* `.deploy-staging`. Explicit rather than repointing `application.dirPath`, which is read after preparation
|
|
255
|
+
* too and would name a vanished directory if any failure path skipped the restore.
|
|
256
|
+
*
|
|
257
|
+
* Uses a configured `application.install` command, a package manager derived from the application's
|
|
258
|
+
* `package.json#devEngines`, or the default, `npm`. Returns early when `node_modules` already exists or
|
|
259
|
+
* when the manifest has no automatic install work. An explicitly selected non-npm manager is always
|
|
260
|
+
* allowed to inspect its own workspace configuration, even when the root manifest has no production
|
|
261
|
+
* dependencies.
|
|
262
|
+
*
|
|
263
|
+
* May be called from any Harper thread as part of a serialized preparation.
|
|
264
|
+
*/
|
|
265
|
+
export declare function installApplication(application: Application, buildDirPath?: string): Promise<void>;
|
|
97
266
|
/**
|
|
98
267
|
* Callback invoked once per complete line of install stdout/stderr from
|
|
99
268
|
* `nonInteractiveSpawn`. Threaded through `installApplication` to the underlying spawn
|
|
@@ -119,6 +288,7 @@ export declare class Application {
|
|
|
119
288
|
name: string;
|
|
120
289
|
payload?: Buffer | string | Readable;
|
|
121
290
|
packageIdentifier?: string;
|
|
291
|
+
readonly packLocalDirectory: boolean;
|
|
122
292
|
install?: {
|
|
123
293
|
command?: string;
|
|
124
294
|
timeout?: number;
|
|
@@ -141,12 +311,8 @@ export declare class Application {
|
|
|
141
311
|
cleanupGitCredentialSession(): Promise<void>;
|
|
142
312
|
cleanupTransientNpmrc(): Promise<void>;
|
|
143
313
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Based on an old implementation for a method called `getPkgPrefix()` that was used
|
|
146
|
-
* during the installation process in order to actually resolve what the user specifies for a
|
|
147
|
-
* component matching some of npm's package resolution rules.
|
|
148
|
-
*/
|
|
149
314
|
export declare function derivePackageIdentifier(packageIdentifier: string): string;
|
|
315
|
+
export declare function shouldPackLocalDirectory(packageIdentifier: string | undefined, platform?: NodeJS.Platform): boolean;
|
|
150
316
|
/**
|
|
151
317
|
* Extract and install the specified application.
|
|
152
318
|
*
|
|
@@ -163,7 +329,48 @@ export declare function derivePackageIdentifier(packageIdentifier: string): stri
|
|
|
163
329
|
* @param application The application to prepare.
|
|
164
330
|
* @returns A promise that resolves when all preparation steps complete.
|
|
165
331
|
*/
|
|
166
|
-
export
|
|
332
|
+
export type PrepareApplicationOptions = {
|
|
333
|
+
beforePrepare?: () => Promise<void>;
|
|
334
|
+
/**
|
|
335
|
+
* Runs against the built candidate while the live version is still serving, and BEFORE the swap. A
|
|
336
|
+
* throw here means the candidate never goes live — which is the whole difference from the previous
|
|
337
|
+
* behavior, where the swap committed first and a load failure was reported over an already-live
|
|
338
|
+
* broken release.
|
|
339
|
+
*/
|
|
340
|
+
validateCandidate?: (candidateDirPath: string) => Promise<void>;
|
|
341
|
+
/**
|
|
342
|
+
* Names `.deploy-staging/<artifactId>`, and is not the deploy-lifecycle token: that token de-duplicates
|
|
343
|
+
* overlapping deploys of one component and is released by the first matching end, so two activations of
|
|
344
|
+
* one artifact sharing it would resume watchers while the second is still swapping. Defaults to the
|
|
345
|
+
* lifecycle token, which is unique per invocation.
|
|
346
|
+
*/
|
|
347
|
+
artifactId?: string;
|
|
348
|
+
/**
|
|
349
|
+
* `deploy` builds, certifies and activates. `stage` builds and certifies, then stops, leaving an
|
|
350
|
+
* artifact a later `activate` can address by `artifactId`. `activate` verifies an existing artifact
|
|
351
|
+
* and swaps it in, doing no resolution, no install and no network work at all.
|
|
352
|
+
*/
|
|
353
|
+
mode?: 'deploy' | 'stage' | 'activate';
|
|
354
|
+
/**
|
|
355
|
+
* `stage` only: the build's declared intent, recorded with the artifact for whoever activates it.
|
|
356
|
+
* A callback rather than a value because `beforePrepare` is what determines it, and that runs after
|
|
357
|
+
* these options have been constructed.
|
|
358
|
+
*/
|
|
359
|
+
describeArtifact?: () => {
|
|
360
|
+
rootConfig: Record<string, unknown> | null;
|
|
361
|
+
isolated: boolean;
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* `activate` only: publish the artifact's recorded root-config entry, immediately before the swap. May
|
|
365
|
+
* return an undo, run if the activation then fails before it commits — otherwise a failed activation
|
|
366
|
+
* leaves config naming a release that is not live, which the next boot install would resolve and build
|
|
367
|
+
* from scratch over a component whose certified artifact is sitting beside it.
|
|
368
|
+
*/
|
|
369
|
+
publishRootConfig?: (entry: Record<string, unknown>) => Promise<(() => Promise<void>) | void>;
|
|
370
|
+
/** `activate` only: admit the artifact's isolation intent under the preparation lock, before the swap. */
|
|
371
|
+
admitIsolation?: (descriptor: ArtifactDescriptor) => Promise<void>;
|
|
372
|
+
};
|
|
373
|
+
export declare function prepareApplication(application: Application, options?: PrepareApplicationOptions): Promise<void>;
|
|
167
374
|
/**
|
|
168
375
|
* Install all applications specified in the root config.
|
|
169
376
|
*
|
|
@@ -228,11 +435,22 @@ export declare function materializeGitSSH(): Promise<{
|
|
|
228
435
|
} | undefined>;
|
|
229
436
|
export declare function buildNpmrcContent(registryCredentials: ResolvedRegistryCredential[]): string;
|
|
230
437
|
/**
|
|
231
|
-
*
|
|
232
|
-
* spawn. The keys are decrypted to a transient 0700 dir
|
|
233
|
-
* soon as the process settles — on success, failure, and
|
|
438
|
+
* Execute a command (using `spawn`) with stdin ignored, with the deploy's SSH key material
|
|
439
|
+
* materialized only for the duration of the spawn. The keys are decrypted to a transient 0700 dir
|
|
440
|
+
* (see `materializeGitSSH`) and removed as soon as the process settles — on success, failure, and
|
|
441
|
+
* timeout alike.
|
|
442
|
+
*
|
|
443
|
+
* Stdout is logged chunk-by-chunk. Stderr is buffered and then logged line-by-line.
|
|
444
|
+
*
|
|
445
|
+
* Rejects with an error if the command fails or times out.
|
|
446
|
+
*
|
|
447
|
+
* @param command The command to run.
|
|
448
|
+
* @param args The arguments to pass to the command.
|
|
449
|
+
* @param cwd The working directory for the command.
|
|
450
|
+
* @param timeoutMs The timeout for the command in milliseconds. Defaults to DEFAULT_COMMAND_TIMEOUT_MS.
|
|
451
|
+
* @returns A promise that resolves when the command completes.
|
|
234
452
|
*/
|
|
235
|
-
export declare function nonInteractiveSpawn(applicationName: string, command: string, args: string[], cwd: string, timeoutMs?: number, onLine?: (stream: 'stdout' | 'stderr', line: string) => void, npmUserconfigPath?: string, gitCredentialEnv?: Record<string, string
|
|
453
|
+
export declare function nonInteractiveSpawn(applicationName: string, command: string, args: string[], cwd: string, timeoutMs?: number, onLine?: (stream: 'stdout' | 'stderr', line: string) => void, npmUserconfigPath?: string, gitCredentialEnv?: Record<string, string>, ignoreNpmScripts?: boolean): Promise<{
|
|
236
454
|
stdout: string;
|
|
237
455
|
stderr: string;
|
|
238
456
|
code: number;
|