@harperfast/harper 5.2.9 → 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 -0
- package/dist/resources/DatabaseTransaction.js +459 -45
- 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 +29 -0
- 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 -9
- 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 +1073 -191
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.d.ts +11 -2
- package/dist/resources/auditStore.js +325 -71
- 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 -0
- package/dist/resources/databases.js +1200 -239
- 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 -6
- 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 +12 -0
- package/dist/server/storageReclamation.js +26 -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 -3
- package/dist/server/threads/manageThreads.js +517 -65
- 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 +196 -194
- package/package.json +7 -6
- package/resources/DESIGN.md +114 -52
- package/resources/DatabaseTransaction.ts +521 -43
- package/resources/LMDBTransaction.ts +26 -4
- package/resources/PrimaryRocksDatabase.ts +28 -1
- 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 -9
- package/resources/RocksTransactionLogStore.ts +78 -21
- package/resources/Table.ts +1110 -159
- package/resources/auditStore.ts +331 -73
- package/resources/blob.ts +1029 -110
- package/resources/branchDatabase.ts +941 -0
- package/resources/crdt.ts +76 -12
- package/resources/databases.ts +1310 -252
- 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 -7
- 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 +23 -0
- package/server/threads/itc.js +11 -1
- package/server/threads/manageThreads.js +526 -56
- 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-BnCBegQz.js +2267 -0
- package/studio/web/assets/FloatingChat-CoDW1ySS.js +23 -0
- package/studio/web/assets/{abnfDiagram-VCTEODGH-C0_BAZyO.js → abnfDiagram-VCTEODGH-B0BebmD2.js} +1 -1
- package/studio/web/assets/{alertDialog-DIHt7Z0r.js → alertDialog-CQyAJJhl.js} +1 -1
- package/studio/web/assets/{apiToken-c3Rd-w6g.js → apiToken-Bwk5BLXW.js} +1 -1
- package/studio/web/assets/applications-DHxGi7JH.js +296 -0
- package/studio/web/assets/architecture-7GRP2DOG-LB-MLAAb.js +1 -0
- package/studio/web/assets/{architectureDiagram-5GKGNRK7-BWzrASgm.js → architectureDiagram-5GKGNRK7-7SW3GD-K.js} +1 -1
- package/studio/web/assets/authStore-C3Nfubqr.js +3 -0
- package/studio/web/assets/{blockDiagram-NRAW4CY4-BdJX9Khj.js → blockDiagram-I7D4REHJ-BqguiadH.js} +2 -2
- package/studio/web/assets/{button-DhiX-njv.js → button-BIsUKRZq.js} +2 -2
- package/studio/web/assets/{c4Diagram-UCG6FXSJ-CI6MzGmQ.js → c4Diagram-7LVT6UL2-LBNf8t_X.js} +1 -1
- package/studio/web/assets/channel-yictG-U-.js +1 -0
- package/studio/web/assets/{chevron-up-Df2c8uoU.js → chevron-up-DtKGqDn3.js} +1 -1
- package/studio/web/assets/{chunk-TEH6E4GO-P87k5mNi.js → chunk-4HAMMTFA-DWtTut21.js} +1 -1
- package/studio/web/assets/{chunk-75Z2AOVW-BT8tVmks.js → chunk-75Z2AOVW-QGQD6th2.js} +1 -1
- package/studio/web/assets/{chunk-DU6HZSFF-9kAOOmI6.js → chunk-DU6HZSFF-Chq20Ba5.js} +1 -1
- package/studio/web/assets/{chunk-F27PBJKO-BW7ao8AY.js → chunk-F27PBJKO-BVA5EPhV.js} +1 -1
- package/studio/web/assets/{chunk-GMAD6QVW-BNyXpoQO.js → chunk-GMAD6QVW-BeS7S07A.js} +1 -1
- package/studio/web/assets/{chunk-OBVCFTLP-D4wWOqDQ.js → chunk-GVQU2GXP-sbwVIQ8i.js} +1 -1
- package/studio/web/assets/{chunk-G27WJ6UU-COyLMcgK.js → chunk-IMKFNOWR-Bnh3tAVd.js} +1 -1
- package/studio/web/assets/{chunk-JQ64N6SF-Cyz1IeLf.js → chunk-L3NEJ4N5-COfUyKII.js} +1 -1
- package/studio/web/assets/chunk-OSK3NFVY-ByciRftO.js +10 -0
- package/studio/web/assets/{chunk-P2QGCYS3-DmIFY4d7.js → chunk-P2QGCYS3-CP1VhG_c.js} +1 -1
- package/studio/web/assets/{chunk-POPQ4Y6H-BPrvMyKz.js → chunk-POPQ4Y6H-ClWhhkwW.js} +1 -1
- package/studio/web/assets/{chunk-PWAF6VOD-2zB6IW9i.js → chunk-PWAF6VOD-1z1THyS5.js} +1 -1
- package/studio/web/assets/{chunk-RHFEMEQ7-2FgyI8YU.js → chunk-SHT3W25Y-LpQkMsah.js} +2 -2
- package/studio/web/assets/{chunk-SVP7TREG-FwtbH2QC.js → chunk-SVP7TREG-jtdAHw0S.js} +1 -1
- package/studio/web/assets/{chunk-LCL6LL3I-HOzK_ppE.js → chunk-TICWLB2K-VOwzetX-.js} +1 -1
- package/studio/web/assets/classDiagram-ZZMXUADV-VaEwSy_g.js +1 -0
- package/studio/web/assets/classDiagram-v2-VYDZK3BY-VaEwSy_g.js +1 -0
- package/studio/web/assets/{createLucideIcon-BKGPfjm2.js → createLucideIcon-CzW9508A.js} +1 -1
- package/studio/web/assets/{cssMode-CEN2mzSA.js → cssMode-s0cWI-_M.js} +1 -1
- package/studio/web/assets/{cynefin-OW5HDTMX-BRkpLFQV.js → cynefin-OW5HDTMX-BbdbCvub.js} +1 -1
- package/studio/web/assets/{cynefinDiagram-5FMLGOSQ-CHT1DaX6.js → cynefinDiagram-5FMLGOSQ-TP-aIqbt.js} +1 -1
- package/studio/web/assets/{dagre-3AP2YEHR-DpUXBh63.js → dagre-GXQ25YYZ-DShnGpGo.js} +1 -1
- package/studio/web/assets/{diagram-S7CK7UJ4-BuymVFZT.js → diagram-S7CK7UJ4-aoCVTtcy.js} +1 -1
- package/studio/web/assets/{diagram-UQ7AKVKN-CyP148RM.js → diagram-UQ7AKVKN-DglXtQ6x.js} +1 -1
- package/studio/web/assets/{diagram-VSXAHHWV-CoCAg3M9.js → diagram-VSXAHHWV-fhEdmkwM.js} +1 -1
- package/studio/web/assets/{diagram-VX7I27RA-BpOqCFca.js → diagram-VX7I27RA-DccVJet6.js} +1 -1
- package/studio/web/assets/{diagram-Z3DM3KII-Bfpw7Vbj.js → diagram-Z3DM3KII-D-RyJJb7.js} +1 -1
- package/studio/web/assets/{dialog-CBf0Mr1d.js → dialog-Cn2uWgD4.js} +1 -1
- package/studio/web/assets/{dist-lkA3O3eM.js → dist-DP8UjMB_.js} +1 -1
- package/studio/web/assets/{download-BtTOBem-.js → download-B5T5r7ss.js} +1 -1
- package/studio/web/assets/{ebnfDiagram-PWID7BFC-DS_6aWqL.js → ebnfDiagram-PWID7BFC-DJGpIpz_.js} +1 -1
- package/studio/web/assets/{editor-D8oDeCTL.js → editor-DNcRHK54.js} +1 -1
- package/studio/web/assets/{erDiagram-SSCWMZ5O-DJNk6Fgw.js → erDiagram-RLTQ6QDP-CIfNlgkC.js} +1 -1
- package/studio/web/assets/eventmodeling-NTZA5JFV-CLxnp2CR.js +1 -0
- package/studio/web/assets/flowDiagram-HODETNUW-BIbhmz9f.js +1 -0
- package/studio/web/assets/{ganttDiagram-EL5Y4UJY-2pOExxMY.js → ganttDiagram-EL5Y4UJY-BxToTzzD.js} +1 -1
- package/studio/web/assets/{getAnalytics-D4LKGeVy.js → getAnalytics-GHK8ORfM.js} +1 -1
- package/studio/web/assets/{gitGraph-4MIJSDKK-CH5ZxwzF.js → gitGraph-4MIJSDKK-D2s2w8lE.js} +1 -1
- package/studio/web/assets/{gitGraphDiagram-WWUBYQGX-DVIsIhbO.js → gitGraphDiagram-WWUBYQGX-Dwntd4-x.js} +1 -1
- package/studio/web/assets/{html-u3vOg7LJ.js → html-Bdssedlg.js} +1 -1
- package/studio/web/assets/{htmlMode-DyO31v-P.js → htmlMode-CoDlJ3fw.js} +1 -1
- package/studio/web/assets/{index-Cxj2_wsl.css → index-7RMEgVG1.css} +1 -1
- package/studio/web/assets/index-D6sxmFLR.js +824 -0
- package/studio/web/assets/index.lazy-tmU5BS8s.js +2 -0
- package/studio/web/assets/{info-A6RAGUB7-CPQfTnaG.js → info-A6RAGUB7-DYjkvb0C.js} +1 -1
- package/studio/web/assets/{infoDiagram-RXCK75RN-DlwLYlwm.js → infoDiagram-27XIBGKW-Bnp1FJE5.js} +1 -1
- package/studio/web/assets/{ishikawaDiagram-5VMMS53U-BRXRp29U.js → ishikawaDiagram-5VMMS53U-D9Xh2r6X.js} +1 -1
- package/studio/web/assets/{javascript-CUvxOyTC.js → javascript-B8meVSTH.js} +1 -1
- package/studio/web/assets/{journeyDiagram-EYS64GPL-B0ou8k0n.js → journeyDiagram-3NMN7TZE-CokIi6ll.js} +2 -2
- package/studio/web/assets/{jsonMode-f_IwbF3D.js → jsonMode-DpIPd35T.js} +1 -1
- package/studio/web/assets/{kanban-definition-3QL26DDD-uYg7iYzp.js → kanban-definition-UXKFOSKX-CukSFJfX.js} +1 -1
- package/studio/web/assets/{languageServices-DXtZ6rEF.js → languageServices-C_5FMJzQ.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-B4pCF1zO.js → lspLanguageFeatures-BIzNBzPK.js} +1 -1
- package/studio/web/assets/{mermaid-parser.core-Ck-fC8b7.js → mermaid-parser.core-BlEsOWNO.js} +3 -3
- package/studio/web/assets/{mermaid.core-CP8aNNYm.js → mermaid.core-BlkGaMIH.js} +5 -5
- package/studio/web/assets/{mindmap-definition-FBJOCRG2-CgTZ-rit.js → mindmap-definition-YA3MSWOX-IprMc_0j.js} +1 -1
- package/studio/web/assets/{notifications-D3tIQ4sg.js → notifications-CQf18QKb.js} +1 -1
- package/studio/web/assets/notifications-CvZivSbh.js +1 -0
- package/studio/web/assets/{packet-AYTQ26CC-DEyoPtPb.js → packet-AYTQ26CC-Bi3V04Zi.js} +1 -1
- package/studio/web/assets/{pegDiagram-XKGWAZYB-DrD-7sD9.js → pegDiagram-XKGWAZYB-BNuPDLZY.js} +1 -1
- package/studio/web/assets/{pie-WAS4IAKB-wjj-EI1d.js → pie-WAS4IAKB-_6DoDbng.js} +1 -1
- package/studio/web/assets/{pieDiagram-E7YTZNPT-GntqDCzv.js → pieDiagram-E7YTZNPT-DqNb6Ht2.js} +1 -1
- package/studio/web/assets/{profile-DZWU7MgT.js → profile-DdOwtntb.js} +1 -1
- package/studio/web/assets/{quadrantDiagram-AXDQQJYC-0UeqXQGd.js → quadrantDiagram-AXDQQJYC-BGH9E2YR.js} +1 -1
- package/studio/web/assets/{radar-RG4KPBEZ-DFSA5h7k.js → radar-RG4KPBEZ-DDdVczcL.js} +1 -1
- package/studio/web/assets/{railroad-74A4TZTK-CaOUG9wR.js → railroad-74A4TZTK-BJUP4Jds.js} +1 -1
- package/studio/web/assets/railroad-abnf-HS5TGJTU-Bm3L1L0h.js +1 -0
- package/studio/web/assets/railroad-ebnf-LZEXJU2U-CKzLGlkw.js +1 -0
- package/studio/web/assets/railroad-peg-WCYAUIDC-S8xLjslx.js +1 -0
- package/studio/web/assets/{railroadDiagram-O6MQD6OU-yHUELZaV.js → railroadDiagram-O6MQD6OU-DGTPh2KZ.js} +1 -1
- package/studio/web/assets/{regions-CkyurXzE.js → regions-n69fwagr.js} +1 -1
- package/studio/web/assets/{register-BUyhWjBO.js → register-PfWTCXWB.js} +3 -3
- package/studio/web/assets/{requirementDiagram-EFPCY7ZU-DNEGFjuW.js → requirementDiagram-BXWQKSXE-BJnO6uLz.js} +1 -1
- package/studio/web/assets/{sankeyDiagram-P5KCCOFB-DpyAmSVR.js → sankeyDiagram-P5KCCOFB-0vSOdymH.js} +1 -1
- package/studio/web/assets/{sequenceDiagram-WJ2MYXX4-TyaT7xNk.js → sequenceDiagram-WJ2MYXX4-hETizDWE.js} +1 -1
- package/studio/web/assets/{setComponentFile-CeyKSZAa.js → setComponentFile-Bg6O7X0S.js} +1 -1
- package/studio/web/assets/{setup-D2kn7cAA.js → setup-CUx_aUDl.js} +2 -2
- package/studio/web/assets/{stateDiagram-HBIQ2CUA-CeEdTArZ.js → stateDiagram-D77RDMKH-CdYQ_KtC.js} +1 -1
- package/studio/web/assets/stateDiagram-v2-MP3YSRHH-CdKuzQMT.js +1 -0
- package/studio/web/assets/status-D7BVKqX9.js +61 -0
- package/studio/web/assets/{swimlanes-XN3QIQJK-B54FmF46.js → swimlanes-42K2YHIH-B8cHIpU4.js} +1 -1
- package/studio/web/assets/swimlanesDiagram-VR7AAH4N-DmOSJwaH.js +8 -0
- package/studio/web/assets/{tabs-B_G5zscN.js → tabs-BrHu7gJi.js} +1 -1
- package/studio/web/assets/{timeline-definition-24CTP7MA-D-a9ujbo.js → timeline-definition-24CTP7MA-BJWYSXqF.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-C0UW6rI2.js → toggleHighContrast-DBSyXzMr.js} +1 -1
- package/studio/web/assets/{treeView-Q6P3EWNA-CrW_6JnS.js → treeView-Q6P3EWNA-qxe_v6CQ.js} +1 -1
- package/studio/web/assets/{treemap-WGGIJYW6-BxyYLdP_.js → treemap-WGGIJYW6-dDo97XXF.js} +1 -1
- package/studio/web/assets/{tsMode-DBC0zmDx.js → tsMode-BByKCjBS.js} +1 -1
- package/studio/web/assets/{typescript-DApRQir3.js → typescript-DDLnLpw9.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-DB6JStU1.js → useEntityRestURL-31CHGaHk.js} +1 -1
- package/studio/web/assets/{useLocalStorage-Dtj1QS8_.js → useLocalStorage-BqMR3D8_.js} +1 -1
- package/studio/web/assets/vendor-core-c2JRRJpV.js +58 -0
- package/studio/web/assets/vendor-datadog-CLUcJXOo.js +6 -0
- package/studio/web/assets/{vendor-react-Dyj4O3HE.js → vendor-react-CJV_K1u4.js} +1 -1
- package/studio/web/assets/vendor-tanstack-DxzraizX.js +1 -0
- package/studio/web/assets/{vendor-ui-vhu-UHhF.js → vendor-ui-BUjK0h8a.js} +2 -2
- package/studio/web/assets/{vennDiagram-4TSXK5OY-Cy7s7Mpy.js → vennDiagram-4TSXK5OY-A3i-lCdl.js} +1 -1
- package/studio/web/assets/{wardley-WFR3VGLG-BeBL35g2.js → wardley-WFR3VGLG-B0ik-_6g.js} +1 -1
- package/studio/web/assets/{wardleyDiagram-VM6X3IG4-BylmIGSg.js → wardleyDiagram-VM6X3IG4-CjrkKWUR.js} +1 -1
- package/studio/web/assets/{workers-C0bFIedw.js → workers-pR3jRY9D.js} +1 -1
- package/studio/web/assets/x-DIzaLEdK.js +1 -0
- package/studio/web/assets/{xml-HWd01lU-.js → xml-2iRnMhQO.js} +1 -1
- package/studio/web/assets/{xychartDiagram-S5SC5T6Z-CoKALMXr.js → xychartDiagram-S5SC5T6Z-Biok4GYV.js} +1 -1
- package/studio/web/assets/{yaml-CIH0Nt-h.js → yaml-Bf92gJpd.js} +1 -1
- package/studio/web/index.html +14 -14
- 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/studio/web/assets/Chat-JpO8EtUu.js +0 -2067
- package/studio/web/assets/FloatingChat-Bcj3xSZu.js +0 -23
- package/studio/web/assets/applications-ByqLRKyZ.js +0 -296
- package/studio/web/assets/architecture-7GRP2DOG-DNdx5tEU.js +0 -1
- package/studio/web/assets/authStore-qKmCZcaf.js +0 -3
- package/studio/web/assets/channel-DtCV8PTL.js +0 -1
- package/studio/web/assets/chunk-R7TYR2AO-Irip67yr.js +0 -10
- package/studio/web/assets/classDiagram-DTDB5LWJ-DbO_dCNE.js +0 -1
- package/studio/web/assets/classDiagram-v2-JRS7N3AN-DbO_dCNE.js +0 -1
- package/studio/web/assets/eventmodeling-NTZA5JFV-5jbe4A5P.js +0 -1
- package/studio/web/assets/flowDiagram-A5DVABFB-Dp9Ezlow.js +0 -1
- package/studio/web/assets/index-aSt5tY-L.js +0 -824
- package/studio/web/assets/index.lazy-B9jiPwT8.js +0 -2
- package/studio/web/assets/notifications-CUoYgU98.js +0 -1
- package/studio/web/assets/railroad-abnf-HS5TGJTU-Bc0Qi0WH.js +0 -1
- package/studio/web/assets/railroad-ebnf-LZEXJU2U-G8rVVZ2C.js +0 -1
- package/studio/web/assets/railroad-peg-WCYAUIDC-CrehKBhC.js +0 -1
- package/studio/web/assets/stateDiagram-v2-4QOOHH4V-D4tuw9Su.js +0 -1
- package/studio/web/assets/status-D7Xn5ePA.js +0 -61
- package/studio/web/assets/swimlanesDiagram-VK2B7HYN-XOhmNEvq.js +0 -8
- package/studio/web/assets/vendor-core-RCcadM3e.js +0 -73
- package/studio/web/assets/vendor-datadog-BRv-mOv1.js +0 -6
- package/studio/web/assets/vendor-tanstack-BiFWSB3W.js +0 -1
- package/studio/web/assets/x-B9o9hsep.js +0 -1
- /package/studio/web/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
|
@@ -43,6 +43,7 @@ const util_1 = require("util");
|
|
|
43
43
|
const stream_1 = require("stream");
|
|
44
44
|
const pipe = (0, util_1.promisify)(stream_1.pipeline);
|
|
45
45
|
const path = __importStar(require("path"));
|
|
46
|
+
const crypto_1 = require("crypto");
|
|
46
47
|
const envMgr = __importStar(require("../environment/environmentManager.js"));
|
|
47
48
|
envMgr.initSync();
|
|
48
49
|
const harper_logger_ts_1 = __importDefault(require("./harper_logger.js"));
|
|
@@ -94,70 +95,80 @@ function logRotator({ logger, maxSize, interval, retention, enabled, path: rotat
|
|
|
94
95
|
let lastRotationTime = Date.now();
|
|
95
96
|
harper_logger_ts_1.default.trace('Log rotate enabled, maxSize:', maxSize, 'interval:', interval);
|
|
96
97
|
const setIntervalId = setInterval(async () => {
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
throw err;
|
|
108
|
-
}
|
|
109
|
-
if (fileStats && fileStats.size >= maxBytes) {
|
|
98
|
+
// The tick is async but setInterval doesn't await it, so any error that escapes this callback
|
|
99
|
+
// becomes an unhandled rejection rather than surfacing anywhere useful — and since it isn't
|
|
100
|
+
// caught, it also skips the retention cleanup below. Contain everything here and report via
|
|
101
|
+
// the logger instead, so one bad tick (e.g. an unexpected fs error) never kills rotation for
|
|
102
|
+
// the rest of the process's life.
|
|
103
|
+
try {
|
|
104
|
+
// A missing/relocated active log file only invalidates the rotation checks below — retention cleanup
|
|
105
|
+
// must still run. So skip the individual check on ENOENT rather than returning from the whole tick.
|
|
106
|
+
if (maxBytes) {
|
|
107
|
+
let fileStats;
|
|
110
108
|
try {
|
|
111
|
-
|
|
109
|
+
fileStats = await fs_1.promises.stat(logger.path);
|
|
112
110
|
}
|
|
113
111
|
catch (err) {
|
|
114
|
-
// If the log file doesn't exist, skip rotation
|
|
112
|
+
// If the log file doesn't exist, skip the size-based rotation check
|
|
115
113
|
if (err.code !== 'ENOENT')
|
|
116
114
|
throw err;
|
|
117
115
|
}
|
|
116
|
+
if (fileStats && fileStats.size >= maxBytes) {
|
|
117
|
+
try {
|
|
118
|
+
lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
// If the log file doesn't exist, skip rotation
|
|
122
|
+
if (err.code !== 'ENOENT')
|
|
123
|
+
throw err;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
118
126
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
if (maxInterval) {
|
|
128
|
+
const minSinceLastRotate = Date.now() - lastRotationTime;
|
|
129
|
+
if (minSinceLastRotate >= maxInterval) {
|
|
130
|
+
try {
|
|
131
|
+
lastRotatedLogPath = await moveLogFile(logger.path, rotatedLogDir, logger);
|
|
132
|
+
lastRotationTime = Date.now();
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
// If the log file doesn't exist, skip rotation
|
|
136
|
+
if (err.code !== 'ENOENT')
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (retention || reclamationPriority) {
|
|
142
|
+
// remove old logs after retention time
|
|
143
|
+
// adjust retention time if there is a reclamation priority in place
|
|
144
|
+
const retentionMs = (0, common_utils_ts_1.convertToMS)(retention ?? '1M') / (1 + reclamationPriority);
|
|
145
|
+
reclamationPriority = 0; // reset it after use
|
|
146
|
+
let files;
|
|
123
147
|
try {
|
|
124
|
-
|
|
125
|
-
lastRotationTime = Date.now();
|
|
148
|
+
files = await fs_1.promises.readdir(rotatedLogDir);
|
|
126
149
|
}
|
|
127
150
|
catch (err) {
|
|
128
|
-
//
|
|
151
|
+
// The rotated log dir may not exist yet (nothing rotated so far); nothing to clean up
|
|
129
152
|
if (err.code !== 'ENOENT')
|
|
130
|
-
|
|
153
|
+
harper_logger_ts_1.default.error('Error reading rotated log directory', rotatedLogDir, err);
|
|
154
|
+
files = [];
|
|
131
155
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
files = await fs_1.promises.readdir(rotatedLogDir);
|
|
142
|
-
}
|
|
143
|
-
catch (err) {
|
|
144
|
-
// The rotated log dir may not exist yet (nothing rotated so far); nothing to clean up
|
|
145
|
-
if (err.code !== 'ENOENT')
|
|
146
|
-
harper_logger_ts_1.default.error('Error reading rotated log directory', rotatedLogDir, err);
|
|
147
|
-
files = [];
|
|
148
|
-
}
|
|
149
|
-
for (const file of files) {
|
|
150
|
-
try {
|
|
151
|
-
const fileStats = await fs_1.promises.stat(path.join(rotatedLogDir, file));
|
|
152
|
-
if (Date.now() - fileStats.mtimeMs > retentionMs) {
|
|
153
|
-
await fs_1.promises.unlink(path.join(rotatedLogDir, file));
|
|
156
|
+
for (const file of files) {
|
|
157
|
+
try {
|
|
158
|
+
const fileStats = await fs_1.promises.stat(path.join(rotatedLogDir, file));
|
|
159
|
+
if (Date.now() - fileStats.mtimeMs > retentionMs) {
|
|
160
|
+
await fs_1.promises.unlink(path.join(rotatedLogDir, file));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
harper_logger_ts_1.default.error('Error trying to remove log', file, err);
|
|
154
165
|
}
|
|
155
|
-
}
|
|
156
|
-
catch (err) {
|
|
157
|
-
harper_logger_ts_1.default.error('Error trying to remove log', file, err);
|
|
158
166
|
}
|
|
159
167
|
}
|
|
160
168
|
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
harper_logger_ts_1.default.error('Error during log rotation audit tick for', logger.path, err);
|
|
171
|
+
}
|
|
161
172
|
}, auditInterval ?? LOG_AUDIT_INTERVAL).unref();
|
|
162
173
|
return {
|
|
163
174
|
end() {
|
|
@@ -168,9 +179,25 @@ function logRotator({ logger, maxSize, interval, retention, enabled, path: rotat
|
|
|
168
179
|
},
|
|
169
180
|
};
|
|
170
181
|
}
|
|
182
|
+
// Monotonically increasing across every rotation in this process, regardless of which logger/source
|
|
183
|
+
// triggered it — combined with the pid, this guarantees two archive names can never collide even if
|
|
184
|
+
// two rotations for two different sources race concurrently within the same audit-interval tick.
|
|
185
|
+
let rotationSequence = 0;
|
|
171
186
|
async function moveLogFile(logPath, rotatedLogPath, logger) {
|
|
172
187
|
const compress = envMgr.get(hdbTerms_ts_1.CONFIG_PARAMS.LOGGING_ROTATION_COMPRESS);
|
|
173
|
-
|
|
188
|
+
// Name the archive after its source log (hdb, external, a component name, ...), not a fixed
|
|
189
|
+
// "HDB" literal — external/component loggers can now inherit rotation from the main logger
|
|
190
|
+
// (#1877) and default to the same rotated directory as it, so distinct sources rotating in
|
|
191
|
+
// the same audit tick must not collide on the same timestamp-only filename. A basename alone
|
|
192
|
+
// is not enough either: two distinct source paths can share a basename (e.g. `/logs/a/hdb.log`
|
|
193
|
+
// and `/logs/b/hdb.log`), so a hash of the full resolved source path plus a pid+sequence suffix
|
|
194
|
+
// give every archive a name POSIX rename() can never clobber, even under a same-millisecond race.
|
|
195
|
+
const sourceName = path.basename(logPath, path.extname(logPath)) || 'HDB';
|
|
196
|
+
// sha256, not sha1: this only needs a stable identifier, not cryptographic strength, but a FIPS-mode
|
|
197
|
+
// OpenSSL provider disables sha1 and throws synchronously, which would crash every rotation tick.
|
|
198
|
+
const sourceId = (0, crypto_1.createHash)('sha256').update(path.resolve(logPath)).digest('hex').slice(0, 8);
|
|
199
|
+
const uniqueSuffix = `${process.pid}-${rotationSequence++}`;
|
|
200
|
+
let fullRotateLogPath = path.join(rotatedLogPath, `${sourceName}-${sourceId}-${new Date(Date.now()).toISOString().replaceAll(':', '-')}-${uniqueSuffix}.log`);
|
|
174
201
|
// Move log file to rotated log path first (if we crash
|
|
175
202
|
// during compression, we don't want to restart the compression with a new file)
|
|
176
203
|
await fs_1.promises.rename(logPath, fullRotateLogPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logRotator.js","sourceRoot":"","sources":["../../../utility/logging/logRotator.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"logRotator.js","sourceRoot":"","sources":["../../../utility/logging/logRotator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A node's identity — node.hostname, and the replication.hostname / certificate it falls back to —
|
|
3
|
+
* must be a bare hostname or IP literal, not a URL: it becomes the certificate common name and the
|
|
4
|
+
* host replication advertises and dials, so a scheme/port/path/non-string corrupts both (harper#2218,
|
|
5
|
+
* where "ws://http://host:9926:9925" resolves to host "http"). Returns a reason clause when `value`
|
|
6
|
+
* is not a bare host, else undefined. An empty string is "unset" (a caller's cue to fall back), not a
|
|
7
|
+
* violation.
|
|
8
|
+
*/
|
|
9
|
+
export declare function bareHostViolation(value: unknown): string | undefined;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bareHostViolation = bareHostViolation;
|
|
4
|
+
const node_net_1 = require("node:net");
|
|
5
|
+
/**
|
|
6
|
+
* A node's identity — node.hostname, and the replication.hostname / certificate it falls back to —
|
|
7
|
+
* must be a bare hostname or IP literal, not a URL: it becomes the certificate common name and the
|
|
8
|
+
* host replication advertises and dials, so a scheme/port/path/non-string corrupts both (harper#2218,
|
|
9
|
+
* where "ws://http://host:9926:9925" resolves to host "http"). Returns a reason clause when `value`
|
|
10
|
+
* is not a bare host, else undefined. An empty string is "unset" (a caller's cue to fall back), not a
|
|
11
|
+
* violation.
|
|
12
|
+
*/
|
|
13
|
+
function bareHostViolation(value) {
|
|
14
|
+
if (typeof value !== 'string')
|
|
15
|
+
return `must be a string, but is a ${value === null ? 'null' : typeof value}`;
|
|
16
|
+
if (value === '')
|
|
17
|
+
return undefined;
|
|
18
|
+
// The identity is stored unbracketed (bracketing belongs to URL construction). Reject a bracketed
|
|
19
|
+
// form so it is never cached — otherwise net.isIP fails on it and the certificate SAN is mistyped
|
|
20
|
+
// as DNS rather than IP, and the same node's identity string would differ by source.
|
|
21
|
+
if (value.includes('[') || value.includes(']'))
|
|
22
|
+
return 'must be an unbracketed IPv6 literal (e.g. "::1", not "[::1]")';
|
|
23
|
+
// A zone id ("fe80::1%eth0") passes net.isIP but has no valid URL authority, so exclude it here.
|
|
24
|
+
if ((0, node_net_1.isIP)(value) && !value.includes('%'))
|
|
25
|
+
return undefined; // a bare IPv4/IPv6 literal is a valid identity
|
|
26
|
+
if (value.includes('://'))
|
|
27
|
+
return 'must not include a URL scheme';
|
|
28
|
+
let url;
|
|
29
|
+
try {
|
|
30
|
+
// Parse under a special scheme so the host grammar matches the ws:// replication URLs that
|
|
31
|
+
// consume this value — a host this accepts is one the consumer accepts (a non-special scheme is
|
|
32
|
+
// more lenient and would pass e.g. "node%20" or "0x7f.1"). A port or path makes url.hostname
|
|
33
|
+
// differ from the input and is caught by the round-trip check below.
|
|
34
|
+
url = new URL(`https://${value}`);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return 'is not a valid hostname';
|
|
38
|
+
}
|
|
39
|
+
// Report the port before the round-trip check: the parser strips a default port for the scheme it
|
|
40
|
+
// was given (":443" under https), which would otherwise surface as a vaguer "is not a bare hostname".
|
|
41
|
+
if (url.port || (url.hostname && value.slice(url.hostname.length).startsWith(':'))) {
|
|
42
|
+
return 'must not include a port';
|
|
43
|
+
}
|
|
44
|
+
if (url.username || url.password)
|
|
45
|
+
return 'must not include credentials';
|
|
46
|
+
if (url.search)
|
|
47
|
+
return 'must not include a query string';
|
|
48
|
+
if (url.hash)
|
|
49
|
+
return 'must not include a fragment';
|
|
50
|
+
if (url.pathname && url.pathname !== '/')
|
|
51
|
+
return 'must not include a path';
|
|
52
|
+
// The host must survive parsing unchanged (compared case-insensitively, since URL lowercases it);
|
|
53
|
+
// anything that does not round-trip carried extra syntax and is not a bare host.
|
|
54
|
+
if (url.hostname.toLowerCase() !== value.toLowerCase())
|
|
55
|
+
return 'is not a bare hostname';
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=nodeIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeIdentity.js","sourceRoot":"","sources":["../../utility/nodeIdentity.ts"],"names":[],"mappings":";;AAUA,8CAkCC;AA5CD,uCAAgC;AAEhC;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,8BAA8B,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;IAC7G,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,kGAAkG;IAClG,kGAAkG;IAClG,qFAAqF;IACrF,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC7C,OAAO,+DAA+D,CAAC;IACxE,iGAAiG;IACjG,IAAI,IAAA,eAAI,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,+CAA+C;IAC1G,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,+BAA+B,CAAC;IAClE,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACJ,2FAA2F;QAC3F,gGAAgG;QAChG,6FAA6F;QAC7F,qEAAqE;QACrE,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,yBAAyB,CAAC;IAClC,CAAC;IACD,kGAAkG;IAClG,sGAAsG;IACtG,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,yBAAyB,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,8BAA8B,CAAC;IACxE,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,iCAAiC,CAAC;IACzD,IAAI,GAAG,CAAC,IAAI;QAAE,OAAO,6BAA6B,CAAC;IACnD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;QAAE,OAAO,yBAAyB,CAAC;IAC3E,kGAAkG;IAClG,iFAAiF;IACjF,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;QAAE,OAAO,wBAAwB,CAAC;IACxF,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -57,14 +57,15 @@ async function installModules(req) {
|
|
|
57
57
|
const deprecationWarning = 'install_node_modules is deprecated. Dependencies are automatically installed on' +
|
|
58
58
|
' deploy, and install_node_modules can lead to inconsistent behavior';
|
|
59
59
|
harper_logger_ts_1.default.warn(deprecationWarning, req.projects);
|
|
60
|
-
const validation = modulesValidator(req);
|
|
60
|
+
const { error: validation, value: validatedRequest } = modulesValidator(req);
|
|
61
61
|
if (validation) {
|
|
62
62
|
throw (0, hdbError_ts_1.handleHDBError)(validation, validation.message, HTTP_STATUS_CODES.BAD_REQUEST);
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
const { projects, dry_run: dryRun } = validatedRequest;
|
|
65
65
|
const componentsRootDirPath = (0, configUtils_ts_1.getConfigPath)(hdbTerms_ts_1.CONFIG_PARAMS.COMPONENTSROOT);
|
|
66
66
|
const responseObject = {};
|
|
67
|
-
|
|
67
|
+
// `allowInstallScripts` is true because this operation has always run a project's install lifecycle
|
|
68
|
+
const args = [...(0, Application_ts_1.packageManagerInstallArguments)('npm', true, true), '--json'];
|
|
68
69
|
if (dryRun)
|
|
69
70
|
args.push('--dry-run');
|
|
70
71
|
for (const project of projects) {
|
|
@@ -114,15 +115,16 @@ function parseNPMStdErr(stderr) {
|
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
/**
|
|
117
|
-
* Validator for
|
|
118
|
+
* Validator for installModules
|
|
118
119
|
* @param {Object} req
|
|
119
|
-
* @returns {*}
|
|
120
120
|
*/
|
|
121
121
|
function modulesValidator(req) {
|
|
122
|
+
// `dryRun` was the only spelling that worked before dry_run was honored; keep it accepted, but
|
|
123
|
+
// reject a request that carries both rather than picking a winner
|
|
122
124
|
const funcSchema = joi_1.default.object({
|
|
123
125
|
projects: joi_1.default.array().min(1).items(joi_1.default.string()).required(),
|
|
124
126
|
dry_run: joi_1.default.boolean().default(false),
|
|
125
|
-
});
|
|
126
|
-
return validator.
|
|
127
|
+
}).rename('dryRun', 'dry_run', { ignoreUndefined: true });
|
|
128
|
+
return validator.validateAndConvertBySchema(req, funcSchema);
|
|
127
129
|
}
|
|
128
130
|
//# sourceMappingURL=npmUtilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npmUtilities.js","sourceRoot":"","sources":["../../utility/npmUtilities.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBb,
|
|
1
|
+
{"version":3,"file":"npmUtilities.js","sourceRoot":"","sources":["../../utility/npmUtilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export declare const OPERATION_PERMISSION_GROUPS: {
|
|
|
22
22
|
* and bulk load. Does NOT include schema DDL (create_attribute), user/role management,
|
|
23
23
|
* or admin reads (get_configuration, logs). Add those explicitly when needed.
|
|
24
24
|
*/
|
|
25
|
-
readonly standard_user: readonly ["search", "search_by_conditions", "search_by_hash", "search_by_id", "search_by_value", "sql", "describe_all", "describe_schema", "describe_database", "describe_table", "user_info", "get_job", "get_analytics", "list_metrics", "describe_metric", "insert", "update", "upsert", "delete", "csv_data_load", "csv_file_load", "csv_url_load", "import_from_s3"];
|
|
25
|
+
readonly standard_user: readonly ["search", "search_by_conditions", "search_by_hash", "search_by_id", "search_by_value", "sql", "describe_all", "describe_schema", "describe_database", "describe_table", "user_info", "get_job", "get_analytics", "list_metrics", "describe_metric", "insert", "update", "upsert", "put", "delete", "csv_data_load", "csv_file_load", "csv_url_load", "import_from_s3"];
|
|
26
26
|
/**
|
|
27
27
|
* Drive the built-in agent (#626): send prompts, read/list sessions, and approve/cancel
|
|
28
28
|
* runs. Grants a scoped, non-super_user "delegation" role access to the agent without full
|
|
@@ -42,6 +42,8 @@ export declare function registerGrantableOperation(name: string): void;
|
|
|
42
42
|
* primarily for tests that register throwaway ops and must not leak them into the global set.
|
|
43
43
|
*/
|
|
44
44
|
export declare function unregisterGrantableOperation(name: string): void;
|
|
45
|
+
export declare function registerWorkerGrantableOperation(name: string): void;
|
|
46
|
+
export declare function unregisterWorkerGrantableOperation(name: string): void;
|
|
45
47
|
/**
|
|
46
48
|
* Validates that every entry in an operations array is a known operation name or group name.
|
|
47
49
|
* Returns the first invalid entry, or null if all entries are valid.
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OPERATION_PERMISSION_GROUPS = void 0;
|
|
4
4
|
exports.registerGrantableOperation = registerGrantableOperation;
|
|
5
5
|
exports.unregisterGrantableOperation = unregisterGrantableOperation;
|
|
6
|
+
exports.registerWorkerGrantableOperation = registerWorkerGrantableOperation;
|
|
7
|
+
exports.unregisterWorkerGrantableOperation = unregisterWorkerGrantableOperation;
|
|
6
8
|
exports.validateOperations = validateOperations;
|
|
7
9
|
exports.expandOperationsPerms = expandOperationsPerms;
|
|
8
10
|
const hdbTerms_ts_1 = require("./hdbTerms.js");
|
|
@@ -75,6 +77,7 @@ exports.OPERATION_PERMISSION_GROUPS = {
|
|
|
75
77
|
hdbTerms_ts_1.OPERATIONS_ENUM.INSERT,
|
|
76
78
|
hdbTerms_ts_1.OPERATIONS_ENUM.UPDATE,
|
|
77
79
|
hdbTerms_ts_1.OPERATIONS_ENUM.UPSERT,
|
|
80
|
+
hdbTerms_ts_1.OPERATIONS_ENUM.PUT,
|
|
78
81
|
hdbTerms_ts_1.OPERATIONS_ENUM.DELETE,
|
|
79
82
|
// Bulk load
|
|
80
83
|
hdbTerms_ts_1.OPERATIONS_ENUM.CSV_DATA_LOAD,
|
|
@@ -102,6 +105,11 @@ const validGroups = new Set(Object.keys(exports.OPERATION_PERMISSION_GROUPS));
|
|
|
102
105
|
// permission) whose names may fall outside OPERATIONS_ENUM. Tracked so they're grantable in a
|
|
103
106
|
// role's `operations` allowlist (add_role/alter_role/impersonation validate against this set too).
|
|
104
107
|
const dynamicallyRegisteredOps = new Set();
|
|
108
|
+
// The same, for ops registered on a WORKER and mirrored here by the OPERATION_REGISTERED bridge.
|
|
109
|
+
// Deliberately a separate set: the two threads can register the same name independently (a hot
|
|
110
|
+
// deploy can add a `startOnMainThread` component while the worker offering that name is retiring),
|
|
111
|
+
// so worker-lifecycle cleanup must not be able to revoke a mark this thread made itself.
|
|
112
|
+
const workerRegisteredOps = new Set();
|
|
105
113
|
/**
|
|
106
114
|
* Mark a dynamically-registered operation name as a valid target for role `operations` grants.
|
|
107
115
|
* Called by registerOperationPermission so a component op declaring a permission can actually be
|
|
@@ -117,13 +125,20 @@ function registerGrantableOperation(name) {
|
|
|
117
125
|
function unregisterGrantableOperation(name) {
|
|
118
126
|
dynamicallyRegisteredOps.delete(name);
|
|
119
127
|
}
|
|
128
|
+
function registerWorkerGrantableOperation(name) {
|
|
129
|
+
workerRegisteredOps.add(name);
|
|
130
|
+
}
|
|
131
|
+
function unregisterWorkerGrantableOperation(name) {
|
|
132
|
+
workerRegisteredOps.delete(name);
|
|
133
|
+
}
|
|
120
134
|
/**
|
|
121
135
|
* Validates that every entry in an operations array is a known operation name or group name.
|
|
122
136
|
* Returns the first invalid entry, or null if all entries are valid.
|
|
123
137
|
*/
|
|
124
138
|
function validateOperations(operations) {
|
|
125
139
|
for (const op of operations) {
|
|
126
|
-
if (typeof op !== 'string' ||
|
|
140
|
+
if (typeof op !== 'string' ||
|
|
141
|
+
(!validOps.has(op) && !validGroups.has(op) && !dynamicallyRegisteredOps.has(op) && !workerRegisteredOps.has(op))) {
|
|
127
142
|
return String(op);
|
|
128
143
|
}
|
|
129
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operationPermissions.js","sourceRoot":"","sources":["../../utility/operationPermissions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"operationPermissions.js","sourceRoot":"","sources":["../../utility/operationPermissions.ts"],"names":[],"mappings":";;;AA+GA,gEAEC;AAMD,oEAEC;AAED,4EAEC;AAED,gFAEC;AAMD,gDAUC;AAMD,sDAWC;AAlKD,+CAAgD;AAEhD;;;GAGG;AACU,QAAA,2BAA2B,GAAG;IAC1C;;;;;OAKG;IACH,SAAS,EAAE;QACV,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;KAC/B;IACD;;;;;OAKG;IACH,UAAU,EAAE;QACX,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,QAAQ;QACxB,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,kBAAkB;KAClC;IACD;;;;OAIG;IACH,aAAa,EAAE;QACd,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,oBAAoB;QACpC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,cAAc;QAC9B,6BAAe,CAAC,SAAS;QACzB,6BAAe,CAAC,OAAO;QACvB,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,eAAe;QAC/B,oBAAoB;QACpB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,MAAM;QACtB,6BAAe,CAAC,GAAG;QACnB,6BAAe,CAAC,MAAM;QACtB,YAAY;QACZ,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,aAAa;QAC7B,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,cAAc;KAC9B;IACD;;;;;OAKG;IACH,KAAK,EAAE;QACN,6BAAe,CAAC,YAAY;QAC5B,6BAAe,CAAC,iBAAiB;QACjC,6BAAe,CAAC,mBAAmB;QACnC,6BAAe,CAAC,gBAAgB;QAChC,6BAAe,CAAC,oBAAoB;KACpC;CACQ,CAAC;AAEX,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,6BAAe,CAAC,CAAC,CAAC;AACtE,MAAM,WAAW,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mCAA2B,CAAC,CAAC,CAAC;AACnF,yFAAyF;AACzF,8FAA8F;AAC9F,mGAAmG;AACnG,MAAM,wBAAwB,GAAgB,IAAI,GAAG,EAAE,CAAC;AACxD,iGAAiG;AACjG,+FAA+F;AAC/F,mGAAmG;AACnG,yFAAyF;AACzF,MAAM,mBAAmB,GAAgB,IAAI,GAAG,EAAE,CAAC;AAEnD;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,IAAY;IACtD,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,IAAY;IACxD,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,gCAAgC,CAAC,IAAY;IAC5D,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,kCAAkC,CAAC,IAAY;IAC9D,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,UAA8B;IAChE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7B,IACC,OAAO,EAAE,KAAK,QAAQ;YACtB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAC/G,CAAC;YACF,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,mCAA2B,CAAC,IAAgD,CAAC,CAAC;QAC5F,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,KAAK;gBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import PermissionResponseObject from '../security/data_objects/PermissionResponseObject.ts';
|
|
1
2
|
/**
|
|
2
3
|
* Register an authorization entry for a dynamically-registered operation (via
|
|
3
4
|
* server.registerOperation), so it flows through verifyPerms and the role `operations`
|
|
@@ -15,14 +16,14 @@ export declare function registerOperationPermission(apiName: string, { requiresS
|
|
|
15
16
|
* register throwaway ops and must not leak them into the process-global registries.
|
|
16
17
|
*/
|
|
17
18
|
export declare function unregisterOperationPermission(apiName: string): void;
|
|
19
|
+
export declare function verifyPermsAST(ast: any, userObject: any, operation: any, apiOperation?: "sql"): any;
|
|
18
20
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* @returns {null | PermissionResponseObject} - null if permissions match, errors returned in the PermissionResponseObject
|
|
21
|
+
* Gate 1 of the role `operations` allowlist, callable from every authorization path. The SQL path
|
|
22
|
+
* (chooseOperation → checkASTPermissions) never reaches verifyPerms, so it must call this
|
|
23
|
+
* directly — otherwise an allowlisted role could reach unlisted operations through `sql`.
|
|
24
|
+
* Returns null when allowed (or no allowlist present), a PermissionResponseObject denial otherwise.
|
|
24
25
|
*/
|
|
25
|
-
export declare function
|
|
26
|
+
export declare function verifyOperationsAllowlist(requestJson: any, operationFunctionName: string): PermissionResponseObject;
|
|
26
27
|
/**
|
|
27
28
|
* Verifies permissions and restrictions for the NoSQL operation based on the user's assigned role.
|
|
28
29
|
*
|
|
@@ -30,7 +31,9 @@ export declare function verifyPermsAST(ast: any, userObject: any, operation: any
|
|
|
30
31
|
* @param operation - The name of the operation specified in the request.
|
|
31
32
|
* @returns { null | PermissionResponseObject } - null if permissions match, errors are consolidated into PermissionResponseObj.
|
|
32
33
|
*/
|
|
33
|
-
export declare function verifyPerms(requestJson: any, operation: any,
|
|
34
|
+
export declare function verifyPerms(requestJson: any, operation: any, options?: {
|
|
35
|
+
apiOperation?: string;
|
|
36
|
+
}): any;
|
|
34
37
|
/**
|
|
35
38
|
* Checks if the user's role has the required permissions for the operation specified.
|
|
36
39
|
* @param userObject - the hdb_user specified in the request body
|