@harperfast/harper 5.0.30 → 5.1.0-beta.2
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/README.md +11 -10
- package/agent/agent.ts +203 -0
- package/agent/loop.ts +205 -0
- package/agent/operations.ts +148 -0
- package/agent/session.ts +187 -0
- package/agent/tools/fsTools.ts +276 -0
- package/agent/tools/httpFetchTool.ts +112 -0
- package/agent/tools/scheduleTool.ts +68 -0
- package/agent/toolset.ts +43 -0
- package/agent/types.ts +85 -0
- package/bin/{BinObjects.js → BinObjects.ts} +4 -5
- package/bin/cliCredentials.ts +133 -0
- package/bin/cliOperations.ts +339 -0
- package/bin/copyDb.ts +10 -10
- package/bin/deployRenderer.ts +196 -0
- package/bin/{harper.js → harper.ts} +43 -19
- package/bin/{install.js → install.ts} +3 -3
- package/bin/lite.ts +2 -0
- package/bin/login.ts +134 -0
- package/bin/logout.ts +11 -0
- package/bin/mcp/client.ts +407 -0
- package/bin/mcp/doctor.ts +189 -0
- package/bin/mcp/index.ts +80 -0
- package/bin/mcp/options.ts +122 -0
- package/bin/mcp/printConfig.ts +89 -0
- package/bin/multipartBuilder.ts +74 -0
- package/bin/{restart.js → restart.ts} +27 -28
- package/bin/{run.js → run.ts} +41 -30
- package/bin/sseConsumer.ts +126 -0
- package/bin/{status.js → status.ts} +10 -10
- package/bin/{stop.js → stop.ts} +5 -5
- package/bin/upgrade.js +17 -24
- package/components/Application.ts +144 -18
- package/components/ApplicationScope.ts +2 -2
- package/components/ComponentV1.ts +2 -2
- package/components/EntryHandler.ts +159 -9
- package/components/OptionsWatcher.ts +75 -11
- package/components/Scope.ts +132 -18
- package/components/anthropic/index.ts +547 -0
- package/components/bedrock/index.ts +823 -0
- package/components/componentLoader.ts +64 -32
- package/components/deployLifecycle.ts +161 -0
- package/components/deploymentOperations.ts +173 -0
- package/components/deploymentRecorder.ts +427 -0
- package/components/deriveURLPath.ts +4 -4
- package/components/mcp/adapters/fastify.ts +87 -0
- package/components/mcp/adapters/harperHttp.ts +103 -0
- package/components/mcp/audit.ts +75 -0
- package/components/mcp/index.ts +134 -0
- package/components/mcp/jsonrpc.ts +134 -0
- package/components/mcp/lifecycle.ts +105 -0
- package/components/mcp/listChanged.ts +270 -0
- package/components/mcp/rateLimit.ts +217 -0
- package/components/mcp/resources.ts +607 -0
- package/components/mcp/session.ts +151 -0
- package/components/mcp/sessionRegistry.ts +140 -0
- package/components/mcp/toolRegistry.ts +294 -0
- package/components/mcp/tools/application.ts +761 -0
- package/components/mcp/tools/operations.ts +311 -0
- package/components/mcp/tools/schemas/derive.ts +356 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +241 -0
- package/components/mcp/tools/schemas/operations.ts +301 -0
- package/components/mcp/transport.ts +517 -0
- package/components/ollama/index.ts +316 -0
- package/components/openai/index.ts +563 -0
- package/components/operations.js +217 -60
- package/components/operationsValidation.js +12 -4
- package/components/packageComponent.ts +97 -29
- package/components/requestRestart.ts +17 -2
- package/components/status/crossThread.ts +14 -5
- package/components/status/errors.ts +1 -1
- package/config/RootConfigWatcher.ts +56 -2
- package/config/configUtils.js +29 -8
- package/config/harperConfigEnvVars.ts +1 -1
- package/config-root.schema.json +78 -4
- package/dataLayer/{CreateAttributeObject.js → CreateAttributeObject.ts} +4 -3
- package/dataLayer/{CreateTableObject.js → CreateTableObject.ts} +2 -1
- package/dataLayer/{DataLayerObjects.js → DataLayerObjects.ts} +17 -9
- package/dataLayer/{DeleteBeforeObject.js → DeleteBeforeObject.ts} +2 -1
- package/dataLayer/{DeleteObject.js → DeleteObject.ts} +3 -2
- package/dataLayer/{DropAttributeObject.js → DropAttributeObject.ts} +2 -1
- package/dataLayer/{GetBackupObject.js → GetBackupObject.ts} +3 -2
- package/dataLayer/{InsertObject.js → InsertObject.ts} +3 -2
- package/dataLayer/{ReadAuditLogObject.js → ReadAuditLogObject.ts} +3 -2
- package/dataLayer/{SQLSearch.js → SQLSearch.ts} +97 -43
- package/dataLayer/{SearchByConditionsObject.js → SearchByConditionsObject.ts} +5 -6
- package/dataLayer/{SearchByHashObject.js → SearchByHashObject.ts} +2 -1
- package/dataLayer/{SearchObject.js → SearchObject.ts} +2 -1
- package/dataLayer/{SqlSearchObject.js → SqlSearchObject.ts} +2 -1
- package/dataLayer/{UpdateObject.js → UpdateObject.ts} +3 -2
- package/dataLayer/{UpsertObject.js → UpsertObject.ts} +3 -2
- package/dataLayer/{bulkLoad.js → bulkLoad.ts} +40 -49
- package/dataLayer/{delete.js → delete.ts} +21 -26
- package/dataLayer/{export.js → export.ts} +22 -26
- package/dataLayer/{getBackup.js → getBackup.ts} +7 -9
- package/dataLayer/harperBridge/BridgeMethods.ts +102 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +27 -26
- package/dataLayer/harperBridge/TableSizeObject.ts +1 -0
- package/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dataLayer/harperBridge/{harperBridge.js → harperBridge.ts} +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +8 -6
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +6 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +6 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +3 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +10 -8
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +4 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +6 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +2 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +3 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +5 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +6 -3
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.ts +1 -1
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dataLayer/{hdbInfoController.js → hdbInfoController.ts} +20 -26
- package/dataLayer/{insert.js → insert.ts} +24 -24
- package/dataLayer/{readAuditLog.js → readAuditLog.ts} +8 -10
- package/dataLayer/{schema.js → schema.ts} +32 -44
- package/dataLayer/{schemaDescribe.js → schemaDescribe.ts} +23 -26
- package/dataLayer/{search.js → search.ts} +9 -15
- package/dataLayer/{transaction.js → transaction.ts} +2 -5
- package/dataLayer/{update.js → update.ts} +19 -22
- package/dist/agent/agent.d.ts +35 -0
- package/dist/agent/agent.js +175 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/loop.d.ts +34 -0
- package/dist/agent/loop.js +176 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/operations.d.ts +17 -0
- package/dist/agent/operations.js +137 -0
- package/dist/agent/operations.js.map +1 -0
- package/dist/agent/session.d.ts +36 -0
- package/dist/agent/session.js +182 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/tools/fsTools.d.ts +19 -0
- package/dist/agent/tools/fsTools.js +286 -0
- package/dist/agent/tools/fsTools.js.map +1 -0
- package/dist/agent/tools/httpFetchTool.d.ts +9 -0
- package/dist/agent/tools/httpFetchTool.js +116 -0
- package/dist/agent/tools/httpFetchTool.js.map +1 -0
- package/dist/agent/tools/scheduleTool.d.ts +22 -0
- package/dist/agent/tools/scheduleTool.js +54 -0
- package/dist/agent/tools/scheduleTool.js.map +1 -0
- package/dist/agent/toolset.d.ts +24 -0
- package/dist/agent/toolset.js +33 -0
- package/dist/agent/toolset.js.map +1 -0
- package/dist/agent/types.d.ts +75 -0
- package/dist/agent/types.js +10 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bin/BinObjects.d.ts +2 -2
- package/dist/bin/BinObjects.js +6 -3
- package/dist/bin/BinObjects.js.map +1 -1
- package/dist/bin/cliCredentials.d.ts +27 -0
- package/dist/bin/cliCredentials.js +130 -0
- package/dist/bin/cliCredentials.js.map +1 -0
- package/dist/bin/cliOperations.d.ts +7 -7
- package/dist/bin/cliOperations.js +251 -37
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/copyDb.js +16 -16
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/deployRenderer.d.ts +47 -0
- package/dist/bin/deployRenderer.js +185 -0
- package/dist/bin/deployRenderer.js.map +1 -0
- package/dist/bin/harper.d.ts +2 -1
- package/dist/bin/harper.js +87 -26
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/install.d.ts +1 -1
- package/dist/bin/install.js +41 -4
- package/dist/bin/install.js.map +1 -1
- package/dist/bin/lite.js +3 -4
- package/dist/bin/lite.js.map +1 -1
- package/dist/bin/login.d.ts +4 -0
- package/dist/bin/login.js +123 -0
- package/dist/bin/login.js.map +1 -0
- package/dist/bin/logout.d.ts +4 -0
- package/dist/bin/logout.js +16 -0
- package/dist/bin/logout.js.map +1 -0
- package/dist/bin/mcp/client.d.ts +34 -0
- package/dist/bin/mcp/client.js +395 -0
- package/dist/bin/mcp/client.js.map +1 -0
- package/dist/bin/mcp/doctor.d.ts +11 -0
- package/dist/bin/mcp/doctor.js +193 -0
- package/dist/bin/mcp/doctor.js.map +1 -0
- package/dist/bin/mcp/index.d.ts +10 -0
- package/dist/bin/mcp/index.js +81 -0
- package/dist/bin/mcp/index.js.map +1 -0
- package/dist/bin/mcp/options.d.ts +33 -0
- package/dist/bin/mcp/options.js +113 -0
- package/dist/bin/mcp/options.js.map +1 -0
- package/dist/bin/mcp/printConfig.d.ts +14 -0
- package/dist/bin/mcp/printConfig.js +85 -0
- package/dist/bin/mcp/printConfig.js.map +1 -0
- package/dist/bin/multipartBuilder.d.ts +26 -0
- package/dist/bin/multipartBuilder.js +55 -0
- package/dist/bin/multipartBuilder.js.map +1 -0
- package/dist/bin/restart.d.ts +3 -2
- package/dist/bin/restart.js +82 -45
- package/dist/bin/restart.js.map +1 -1
- package/dist/bin/run.d.ts +13 -9
- package/dist/bin/run.js +111 -65
- package/dist/bin/run.js.map +1 -1
- package/dist/bin/sseConsumer.d.ts +24 -0
- package/dist/bin/sseConsumer.js +127 -0
- package/dist/bin/sseConsumer.js.map +1 -0
- package/dist/bin/status.d.ts +1 -1
- package/dist/bin/status.js +48 -11
- package/dist/bin/status.js.map +1 -1
- package/dist/bin/stop.d.ts +1 -1
- package/dist/bin/stop.js +43 -6
- package/dist/bin/stop.js.map +1 -1
- package/dist/bin/upgrade.js +14 -22
- package/dist/bin/upgrade.js.map +1 -1
- package/dist/components/Application.d.ts +29 -17
- package/dist/components/Application.js +134 -28
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.js +2 -2
- package/dist/components/ComponentV1.d.ts +1 -1
- package/dist/components/ComponentV1.js +5 -5
- package/dist/components/ComponentV1.js.map +1 -1
- package/dist/components/EntryHandler.d.ts +26 -3
- package/dist/components/EntryHandler.js +153 -13
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/OptionsWatcher.d.ts +7 -2
- package/dist/components/OptionsWatcher.js +72 -10
- package/dist/components/OptionsWatcher.js.map +1 -1
- package/dist/components/Scope.d.ts +11 -6
- package/dist/components/Scope.js +112 -12
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/anthropic/index.d.ts +40 -0
- package/dist/components/anthropic/index.js +428 -0
- package/dist/components/anthropic/index.js.map +1 -0
- package/dist/components/bedrock/index.d.ts +79 -0
- package/dist/components/bedrock/index.js +734 -0
- package/dist/components/bedrock/index.js.map +1 -0
- package/dist/components/componentLoader.d.ts +29 -0
- package/dist/components/componentLoader.js +65 -38
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/deployLifecycle.d.ts +39 -0
- package/dist/components/deployLifecycle.js +156 -0
- package/dist/components/deployLifecycle.js.map +1 -0
- package/dist/components/deploymentOperations.d.ts +19 -0
- package/dist/components/deploymentOperations.js +185 -0
- package/dist/components/deploymentOperations.js.map +1 -0
- package/dist/components/deploymentRecorder.d.ts +97 -0
- package/dist/components/deploymentRecorder.js +425 -0
- package/dist/components/deploymentRecorder.js.map +1 -0
- package/dist/components/deriveURLPath.d.ts +2 -2
- package/dist/components/deriveURLPath.js +2 -2
- package/dist/components/deriveURLPath.js.map +1 -1
- package/dist/components/mcp/adapters/fastify.d.ts +35 -0
- package/dist/components/mcp/adapters/fastify.js +66 -0
- package/dist/components/mcp/adapters/fastify.js.map +1 -0
- package/dist/components/mcp/adapters/harperHttp.d.ts +38 -0
- package/dist/components/mcp/adapters/harperHttp.js +78 -0
- package/dist/components/mcp/adapters/harperHttp.js.map +1 -0
- package/dist/components/mcp/audit.d.ts +27 -0
- package/dist/components/mcp/audit.js +73 -0
- package/dist/components/mcp/audit.js.map +1 -0
- package/dist/components/mcp/index.d.ts +47 -0
- package/dist/components/mcp/index.js +109 -0
- package/dist/components/mcp/index.js.map +1 -0
- package/dist/components/mcp/jsonrpc.d.ts +71 -0
- package/dist/components/mcp/jsonrpc.js +93 -0
- package/dist/components/mcp/jsonrpc.js.map +1 -0
- package/dist/components/mcp/lifecycle.d.ts +69 -0
- package/dist/components/mcp/lifecycle.js +79 -0
- package/dist/components/mcp/lifecycle.js.map +1 -0
- package/dist/components/mcp/listChanged.d.ts +24 -0
- package/dist/components/mcp/listChanged.js +257 -0
- package/dist/components/mcp/listChanged.js.map +1 -0
- package/dist/components/mcp/rateLimit.d.ts +25 -0
- package/dist/components/mcp/rateLimit.js +226 -0
- package/dist/components/mcp/rateLimit.js.map +1 -0
- package/dist/components/mcp/resources.d.ts +90 -0
- package/dist/components/mcp/resources.js +526 -0
- package/dist/components/mcp/resources.js.map +1 -0
- package/dist/components/mcp/session.d.ts +36 -0
- package/dist/components/mcp/session.js +170 -0
- package/dist/components/mcp/session.js.map +1 -0
- package/dist/components/mcp/sessionRegistry.d.ts +63 -0
- package/dist/components/mcp/sessionRegistry.js +124 -0
- package/dist/components/mcp/sessionRegistry.js.map +1 -0
- package/dist/components/mcp/toolRegistry.d.ts +151 -0
- package/dist/components/mcp/toolRegistry.js +177 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -0
- package/dist/components/mcp/tools/application.d.ts +72 -0
- package/dist/components/mcp/tools/application.js +660 -0
- package/dist/components/mcp/tools/application.js.map +1 -0
- package/dist/components/mcp/tools/operations.d.ts +23 -0
- package/dist/components/mcp/tools/operations.js +331 -0
- package/dist/components/mcp/tools/operations.js.map +1 -0
- package/dist/components/mcp/tools/schemas/derive.d.ts +50 -0
- package/dist/components/mcp/tools/schemas/derive.js +291 -0
- package/dist/components/mcp/tools/schemas/derive.js.map +1 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.d.ts +32 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +179 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -0
- package/dist/components/mcp/tools/schemas/operations.d.ts +27 -0
- package/dist/components/mcp/tools/schemas/operations.js +299 -0
- package/dist/components/mcp/tools/schemas/operations.js.map +1 -0
- package/dist/components/mcp/transport.d.ts +38 -0
- package/dist/components/mcp/transport.js +467 -0
- package/dist/components/mcp/transport.js.map +1 -0
- package/dist/components/ollama/index.d.ts +46 -0
- package/dist/components/ollama/index.js +239 -0
- package/dist/components/ollama/index.js.map +1 -0
- package/dist/components/openai/index.d.ts +51 -0
- package/dist/components/openai/index.js +475 -0
- package/dist/components/openai/index.js.map +1 -0
- package/dist/components/operations.d.ts +6 -6
- package/dist/components/operations.js +205 -52
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.d.ts +2 -2
- package/dist/components/operationsValidation.js +13 -4
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/packageComponent.d.ts +28 -6
- package/dist/components/packageComponent.js +87 -26
- package/dist/components/packageComponent.js.map +1 -1
- package/dist/components/requestRestart.d.ts +1 -0
- package/dist/components/requestRestart.js +12 -1
- package/dist/components/requestRestart.js.map +1 -1
- package/dist/components/status/crossThread.d.ts +5 -1
- package/dist/components/status/crossThread.js +12 -5
- package/dist/components/status/crossThread.js.map +1 -1
- package/dist/components/status/errors.js +7 -7
- package/dist/config/RootConfigWatcher.d.ts +3 -0
- package/dist/config/RootConfigWatcher.js +52 -1
- package/dist/config/RootConfigWatcher.js.map +1 -1
- package/dist/config/configUtils.js +31 -8
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +1 -1
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/CreateAttributeObject.d.ts +3 -7
- package/dist/dataLayer/CreateAttributeObject.js +4 -3
- package/dist/dataLayer/CreateAttributeObject.js.map +1 -1
- package/dist/dataLayer/CreateTableObject.d.ts +2 -4
- package/dist/dataLayer/CreateTableObject.js +2 -1
- package/dist/dataLayer/CreateTableObject.js.map +1 -1
- package/dist/dataLayer/DataLayerObjects.d.ts +17 -16
- package/dist/dataLayer/DataLayerObjects.js +19 -5
- package/dist/dataLayer/DataLayerObjects.js.map +1 -1
- package/dist/dataLayer/DeleteBeforeObject.d.ts +3 -5
- package/dist/dataLayer/DeleteBeforeObject.js +2 -1
- package/dist/dataLayer/DeleteBeforeObject.js.map +1 -1
- package/dist/dataLayer/DeleteObject.d.ts +3 -7
- package/dist/dataLayer/DeleteObject.js +4 -3
- package/dist/dataLayer/DeleteObject.js.map +1 -1
- package/dist/dataLayer/DropAttributeObject.d.ts +2 -4
- package/dist/dataLayer/DropAttributeObject.js +2 -1
- package/dist/dataLayer/DropAttributeObject.js.map +1 -1
- package/dist/dataLayer/GetBackupObject.d.ts +3 -5
- package/dist/dataLayer/GetBackupObject.js +4 -3
- package/dist/dataLayer/GetBackupObject.js.map +1 -1
- package/dist/dataLayer/InsertObject.d.ts +3 -8
- package/dist/dataLayer/InsertObject.js +4 -3
- package/dist/dataLayer/InsertObject.js.map +1 -1
- package/dist/dataLayer/ReadAuditLogObject.d.ts +3 -7
- package/dist/dataLayer/ReadAuditLogObject.js +4 -3
- package/dist/dataLayer/ReadAuditLogObject.js.map +1 -1
- package/dist/dataLayer/SQLSearch.d.ts +68 -38
- package/dist/dataLayer/SQLSearch.js +140 -78
- package/dist/dataLayer/SQLSearch.js.map +1 -1
- package/dist/dataLayer/SearchByConditionsObject.d.ts +10 -58
- package/dist/dataLayer/SearchByConditionsObject.js +5 -7
- package/dist/dataLayer/SearchByConditionsObject.js.map +1 -1
- package/dist/dataLayer/SearchByHashObject.d.ts +3 -6
- package/dist/dataLayer/SearchByHashObject.js +2 -1
- package/dist/dataLayer/SearchByHashObject.js.map +1 -1
- package/dist/dataLayer/SearchObject.d.ts +3 -12
- package/dist/dataLayer/SearchObject.js +2 -1
- package/dist/dataLayer/SearchObject.js.map +1 -1
- package/dist/dataLayer/SqlSearchObject.d.ts +2 -4
- package/dist/dataLayer/SqlSearchObject.js +2 -1
- package/dist/dataLayer/SqlSearchObject.js.map +1 -1
- package/dist/dataLayer/UpdateObject.d.ts +3 -7
- package/dist/dataLayer/UpdateObject.js +4 -3
- package/dist/dataLayer/UpdateObject.js.map +1 -1
- package/dist/dataLayer/UpsertObject.d.ts +3 -7
- package/dist/dataLayer/UpsertObject.js +4 -3
- package/dist/dataLayer/UpsertObject.js.map +1 -1
- package/dist/dataLayer/bulkLoad.d.ts +4 -4
- package/dist/dataLayer/bulkLoad.js +122 -88
- package/dist/dataLayer/bulkLoad.js.map +1 -1
- package/dist/dataLayer/delete.d.ts +10 -11
- package/dist/dataLayer/delete.js +74 -39
- package/dist/dataLayer/delete.js.map +1 -1
- package/dist/dataLayer/export.d.ts +8 -8
- package/dist/dataLayer/export.js +90 -55
- package/dist/dataLayer/export.js.map +1 -1
- package/dist/dataLayer/getBackup.d.ts +4 -3
- package/dist/dataLayer/getBackup.js +43 -11
- package/dist/dataLayer/getBackup.js.map +1 -1
- package/dist/dataLayer/harperBridge/BridgeMethods.d.ts +39 -21
- package/dist/dataLayer/harperBridge/BridgeMethods.js +41 -20
- package/dist/dataLayer/harperBridge/BridgeMethods.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +2 -2
- package/dist/dataLayer/harperBridge/ResourceBridge.js +26 -25
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/TableSizeObject.d.ts +1 -0
- package/dist/dataLayer/harperBridge/TableSizeObject.js.map +1 -1
- package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.d.ts +4 -4
- package/dist/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dist/dataLayer/harperBridge/harperBridge.d.ts +2 -3
- package/dist/dataLayer/harperBridge/harperBridge.js +38 -4
- package/dist/dataLayer/harperBridge/harperBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +7 -6
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +5 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +8 -8
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.d.ts +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +5 -3
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +2 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.d.ts +1 -2
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dist/dataLayer/hdbInfoController.d.ts +4 -8
- package/dist/dataLayer/hdbInfoController.js +66 -31
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/insert.d.ts +14 -26
- package/dist/dataLayer/insert.js +63 -28
- package/dist/dataLayer/insert.js.map +1 -1
- package/dist/dataLayer/readAuditLog.d.ts +1 -3
- package/dist/dataLayer/readAuditLog.js +45 -13
- package/dist/dataLayer/readAuditLog.js.map +1 -1
- package/dist/dataLayer/schema.d.ts +10 -10
- package/dist/dataLayer/schema.js +124 -89
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.d.ts +4 -4
- package/dist/dataLayer/schemaDescribe.js +78 -41
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/dataLayer/search.d.ts +4 -4
- package/dist/dataLayer/search.js +12 -13
- package/dist/dataLayer/search.js.map +1 -1
- package/dist/dataLayer/transaction.d.ts +1 -1
- package/dist/dataLayer/transaction.js +3 -4
- package/dist/dataLayer/transaction.js.map +1 -1
- package/dist/dataLayer/update.d.ts +2 -8
- package/dist/dataLayer/update.js +53 -18
- package/dist/dataLayer/update.js.map +1 -1
- package/dist/globals.d.ts +1 -1
- package/dist/globals.js +1 -0
- package/dist/globals.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +65 -0
- package/dist/launchServiceScripts/launchHarperDB.d.ts +1 -0
- package/dist/launchServiceScripts/launchHarperDB.js +3 -0
- package/dist/launchServiceScripts/launchHarperDB.js.map +1 -0
- package/dist/launchServiceScripts/utility/checkNodeVersion.js +3 -0
- package/dist/launchServiceScripts/utility/checkNodeVersion.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +14 -6
- package/dist/resources/DatabaseTransaction.js +39 -15
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ErrorResource.d.ts +1 -1
- package/dist/resources/ErrorResource.js +3 -1
- package/dist/resources/ErrorResource.js.map +1 -1
- package/dist/resources/LMDBTransaction.d.ts +10 -13
- package/dist/resources/LMDBTransaction.js +18 -7
- package/dist/resources/LMDBTransaction.js.map +1 -1
- package/dist/resources/RecordEncoder.d.ts +10 -12
- package/dist/resources/RecordEncoder.js +38 -38
- package/dist/resources/RecordEncoder.js.map +1 -1
- package/dist/resources/RequestTarget.d.ts +1 -0
- package/dist/resources/RequestTarget.js.map +1 -1
- package/dist/resources/Resource.d.ts +25 -5
- package/dist/resources/Resource.js +43 -10
- package/dist/resources/Resource.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +24 -5
- package/dist/resources/ResourceInterface.js +20 -0
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Resources.d.ts +3 -4
- package/dist/resources/Resources.js +7 -6
- package/dist/resources/Resources.js.map +1 -1
- package/dist/resources/RocksIndexStore.js +3 -0
- package/dist/resources/RocksIndexStore.js.map +1 -1
- package/dist/resources/RocksTransactionLogStore.d.ts +1 -1
- package/dist/resources/RocksTransactionLogStore.js +10 -3
- package/dist/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/resources/Table.d.ts +76 -329
- package/dist/resources/Table.js +306 -116
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/metadata.d.ts +1 -0
- package/dist/resources/analytics/metadata.js +1 -0
- package/dist/resources/analytics/metadata.js.map +1 -1
- package/dist/resources/analytics/read.d.ts +8 -1
- package/dist/resources/analytics/read.js +69 -8
- package/dist/resources/analytics/read.js.map +1 -1
- package/dist/resources/analytics/write.d.ts +28 -0
- package/dist/resources/analytics/write.js +232 -20
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.d.ts +18 -13
- package/dist/resources/auditStore.js +16 -8
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +16 -27
- package/dist/resources/blob.js +8 -8
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/dataLoader.d.ts +1 -1
- package/dist/resources/dataLoader.js +13 -13
- package/dist/resources/databases.d.ts +17 -0
- package/dist/resources/databases.js +175 -59
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/graphql.d.ts +1 -7
- package/dist/resources/graphql.js +267 -173
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +17 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +327 -59
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/indexes/vector.d.ts +1 -0
- package/dist/resources/indexes/vector.js +14 -0
- package/dist/resources/indexes/vector.js.map +1 -1
- package/dist/resources/jsonSchemaTypes.d.ts +60 -0
- package/dist/resources/jsonSchemaTypes.js +78 -0
- package/dist/resources/jsonSchemaTypes.js.map +1 -0
- package/dist/resources/loadEnv.d.ts +2 -5
- package/dist/resources/loadEnv.js +21 -18
- package/dist/resources/loadEnv.js.map +1 -1
- package/dist/resources/login.d.ts +2 -3
- package/dist/resources/login.js +5 -4
- package/dist/resources/login.js.map +1 -1
- package/dist/resources/models/Models.d.ts +45 -0
- package/dist/resources/models/Models.js +265 -0
- package/dist/resources/models/Models.js.map +1 -0
- package/dist/resources/models/TestBackend.d.ts +15 -0
- package/dist/resources/models/TestBackend.js +71 -0
- package/dist/resources/models/TestBackend.js.map +1 -0
- package/dist/resources/models/agentLoop.d.ts +125 -0
- package/dist/resources/models/agentLoop.js +746 -0
- package/dist/resources/models/agentLoop.js.map +1 -0
- package/dist/resources/models/analyticsTable.d.ts +65 -0
- package/dist/resources/models/analyticsTable.js +166 -0
- package/dist/resources/models/analyticsTable.js.map +1 -0
- package/dist/resources/models/backendHelpers.d.ts +57 -0
- package/dist/resources/models/backendHelpers.js +109 -0
- package/dist/resources/models/backendHelpers.js.map +1 -0
- package/dist/resources/models/backendRegistry.d.ts +36 -0
- package/dist/resources/models/backendRegistry.js +54 -0
- package/dist/resources/models/backendRegistry.js.map +1 -0
- package/dist/resources/models/bootstrap.d.ts +24 -0
- package/dist/resources/models/bootstrap.js +112 -0
- package/dist/resources/models/bootstrap.js.map +1 -0
- package/dist/resources/models/embedHook.d.ts +33 -0
- package/dist/resources/models/embedHook.js +127 -0
- package/dist/resources/models/embedHook.js.map +1 -0
- package/dist/resources/models/types.d.ts +301 -0
- package/dist/resources/models/types.js +11 -0
- package/dist/resources/models/types.js.map +1 -0
- package/dist/resources/openApi.js +74 -34
- package/dist/resources/openApi.js.map +1 -1
- package/dist/resources/replayLogs.js +7 -1
- package/dist/resources/replayLogs.js.map +1 -1
- package/dist/resources/replayLogsGuards.d.ts +9 -0
- package/dist/resources/replayLogsGuards.js +47 -0
- package/dist/resources/replayLogsGuards.js.map +1 -1
- package/dist/resources/roles.d.ts +1 -7
- package/dist/resources/roles.js +67 -71
- package/dist/resources/roles.js.map +1 -1
- package/dist/resources/search.d.ts +18 -1
- package/dist/resources/search.js +349 -140
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/tracked.d.ts +1 -1
- package/dist/resources/tracked.js +23 -15
- package/dist/resources/tracked.js.map +1 -1
- package/dist/resources/transaction.d.ts +1 -1
- package/dist/resources/transaction.js +1 -1
- package/dist/resources/transaction.js.map +1 -1
- package/dist/resources/transactionBroadcast.d.ts +1 -1
- package/dist/resources/transactionBroadcast.js.map +1 -1
- package/dist/security/auth.d.ts +1 -5
- package/dist/security/auth.js +34 -25
- package/dist/security/auth.js.map +1 -1
- package/dist/security/certificateVerification/crlVerification.js +7 -1
- package/dist/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/security/cryptoHash.d.ts +2 -2
- package/dist/security/cryptoHash.js +37 -5
- package/dist/security/cryptoHash.js.map +1 -1
- package/dist/security/data_objects/PermissionAttributeResponseObject.d.ts +3 -4
- package/dist/security/data_objects/PermissionAttributeResponseObject.js +4 -1
- package/dist/security/data_objects/PermissionAttributeResponseObject.js.map +1 -1
- package/dist/security/data_objects/PermissionResponseObject.d.ts +9 -9
- package/dist/security/data_objects/PermissionResponseObject.js +15 -8
- package/dist/security/data_objects/PermissionResponseObject.js.map +1 -1
- package/dist/security/data_objects/PermissionTableResponseObject.d.ts +5 -6
- package/dist/security/data_objects/PermissionTableResponseObject.js +6 -1
- package/dist/security/data_objects/PermissionTableResponseObject.js.map +1 -1
- package/dist/security/fastifyAuth.d.ts +2 -2
- package/dist/security/fastifyAuth.js +131 -22
- package/dist/security/fastifyAuth.js.map +1 -1
- package/dist/security/impersonation.js +15 -15
- package/dist/security/jsLoader.js +18 -5
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.d.ts +45 -48
- package/dist/security/keys.js +160 -114
- package/dist/security/keys.js.map +1 -1
- package/dist/security/permissionsTranslator.js +2 -2
- package/dist/security/role.d.ts +5 -5
- package/dist/security/role.js +70 -35
- package/dist/security/role.js.map +1 -1
- package/dist/security/tokenAuthentication.d.ts +13 -0
- package/dist/security/tokenAuthentication.js +57 -27
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.js +74 -38
- package/dist/security/user.js.map +1 -1
- package/dist/server/DurableSubscriptionsSession.d.ts +4 -2
- package/dist/server/DurableSubscriptionsSession.js +71 -55
- package/dist/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/server/REST.d.ts +1 -8
- package/dist/server/REST.js +17 -16
- package/dist/server/REST.js.map +1 -1
- package/dist/server/Server.d.ts +23 -4
- package/dist/server/Server.js +1 -1
- package/dist/server/Server.js.map +1 -1
- package/dist/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/dist/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/dist/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/dist/server/fastifyRoutes.d.ts +1 -4
- package/dist/server/fastifyRoutes.js +34 -30
- package/dist/server/fastifyRoutes.js.map +1 -1
- package/dist/server/graphqlQuerying.d.ts +1 -1
- package/dist/server/graphqlQuerying.js +8 -7
- package/dist/server/graphqlQuerying.js.map +1 -1
- package/dist/server/http.d.ts +9 -4
- package/dist/server/http.js +523 -47
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +66 -15
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/JobObject.d.ts +3 -3
- package/dist/server/jobs/JobObject.js +53 -7
- package/dist/server/jobs/JobObject.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +64 -24
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobRunner.d.ts +7 -6
- package/dist/server/jobs/jobRunner.js +68 -30
- package/dist/server/jobs/jobRunner.js.map +1 -1
- package/dist/server/jobs/jobs.d.ts +18 -7
- package/dist/server/jobs/jobs.js +93 -61
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/loadRootComponents.js +1 -1
- package/dist/server/middlewareChain.d.ts +80 -0
- package/dist/server/middlewareChain.js +252 -0
- package/dist/server/middlewareChain.js.map +1 -0
- package/dist/server/mqtt.d.ts +1 -8
- package/dist/server/mqtt.js +22 -17
- package/dist/server/mqtt.js.map +1 -1
- package/dist/server/nodeName.js +46 -13
- package/dist/server/nodeName.js.map +1 -1
- package/dist/server/operationsServer.d.ts +2 -2
- package/dist/server/operationsServer.js +106 -33
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/Headers.d.ts +4 -4
- package/dist/server/serverHelpers/Headers.js +2 -0
- package/dist/server/serverHelpers/Headers.js.map +1 -1
- package/dist/server/serverHelpers/JSONStream.d.ts +7 -1
- package/dist/server/serverHelpers/JSONStream.js +12 -3
- package/dist/server/serverHelpers/JSONStream.js.map +1 -1
- package/dist/server/serverHelpers/Request.d.ts +106 -8
- package/dist/server/serverHelpers/Request.js +370 -9
- package/dist/server/serverHelpers/Request.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.d.ts +1 -1
- package/dist/server/serverHelpers/contentTypes.js +36 -7
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/multipartParser.d.ts +21 -0
- package/dist/server/serverHelpers/multipartParser.js +142 -0
- package/dist/server/serverHelpers/multipartParser.js.map +1 -0
- package/dist/server/serverHelpers/progressEmitter.d.ts +25 -0
- package/dist/server/serverHelpers/progressEmitter.js +103 -0
- package/dist/server/serverHelpers/progressEmitter.js.map +1 -0
- package/dist/server/serverHelpers/serverHandlers.d.ts +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +38 -7
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +4 -2
- package/dist/server/serverHelpers/serverUtilities.js +97 -93
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +8 -5
- package/dist/server/static.js.map +1 -1
- package/dist/server/status/index.js +3 -3
- package/dist/server/storageReclamation.d.ts +10 -0
- package/dist/server/storageReclamation.js +68 -9
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/itc.js +7 -4
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +1 -1
- package/dist/server/threads/manageThreads.js +110 -26
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.d.ts +0 -1
- package/dist/server/threads/socketRouter.js +8 -271
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadServer.d.ts +1 -0
- package/dist/server/threads/threadServer.js +360 -118
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/server/threads/workerProcessGuard.d.ts +42 -0
- package/dist/server/threads/workerProcessGuard.js +114 -0
- package/dist/server/threads/workerProcessGuard.js.map +1 -0
- package/dist/server/throttle.js +17 -0
- package/dist/server/throttle.js.map +1 -1
- package/dist/sqlTranslator/SelectValidator.d.ts +21 -24
- package/dist/sqlTranslator/SelectValidator.js +86 -47
- package/dist/sqlTranslator/SelectValidator.js.map +1 -1
- package/dist/sqlTranslator/alasqlFunctionImporter.d.ts +6 -2
- package/dist/sqlTranslator/alasqlFunctionImporter.js +40 -3
- package/dist/sqlTranslator/alasqlFunctionImporter.js.map +1 -1
- package/dist/sqlTranslator/deleteTranslator.d.ts +4 -7
- package/dist/sqlTranslator/deleteTranslator.js +48 -14
- package/dist/sqlTranslator/deleteTranslator.js.map +1 -1
- package/dist/sqlTranslator/index.d.ts +10 -9
- package/dist/sqlTranslator/index.js +69 -30
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/sqlTranslator/sql_statement_bucket.d.ts +10 -10
- package/dist/sqlTranslator/sql_statement_bucket.js +55 -13
- package/dist/sqlTranslator/sql_statement_bucket.js.map +1 -1
- package/dist/upgrade/UpgradeObjects.d.ts +2 -3
- package/dist/upgrade/UpgradeObjects.js +37 -4
- package/dist/upgrade/UpgradeObjects.js.map +1 -1
- package/dist/upgrade/directives/5-1-0.d.ts +6 -0
- package/dist/upgrade/directives/5-1-0.js +114 -0
- package/dist/upgrade/directives/5-1-0.js.map +1 -0
- package/dist/upgrade/directives/directivesController.d.ts +10 -10
- package/dist/upgrade/directives/directivesController.js +52 -11
- package/dist/upgrade/directives/directivesController.js.map +1 -1
- package/dist/upgrade/directivesManager.d.ts +1 -1
- package/dist/upgrade/directivesManager.js +53 -18
- package/dist/upgrade/directivesManager.js.map +1 -1
- package/dist/upgrade/upgradePrompt.d.ts +2 -8
- package/dist/upgrade/upgradePrompt.js +55 -60
- package/dist/upgrade/upgradePrompt.js.map +1 -1
- package/dist/upgrade/upgradeUtilities.d.ts +1 -1
- package/dist/upgrade/upgradeUtilities.js +37 -5
- package/dist/upgrade/upgradeUtilities.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.d.ts +1 -1
- package/dist/utility/OperationFunctionCaller.js +45 -10
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/assignCmdEnvVariables.d.ts +1 -2
- package/dist/utility/assignCmdEnvVariables.js +8 -4
- package/dist/utility/assignCmdEnvVariables.js.map +1 -1
- package/dist/utility/common_utils.d.ts +80 -77
- package/dist/utility/common_utils.js +140 -79
- package/dist/utility/common_utils.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +12 -11
- package/dist/utility/environment/environmentManager.js +75 -29
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/environment/systemInformation.d.ts +4 -0
- package/dist/utility/environment/systemInformation.js +27 -16
- package/dist/utility/environment/systemInformation.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +192 -168
- package/dist/utility/errors/commonErrors.js +49 -18
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +37 -51
- package/dist/utility/errors/hdbError.js +65 -26
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/expandEnvVar.d.ts +61 -0
- package/dist/utility/expandEnvVar.js +113 -0
- package/dist/utility/expandEnvVar.js.map +1 -0
- package/dist/utility/functions/geo.js +2 -2
- package/dist/utility/functions/sql/alaSQLExtension.js +1 -1
- package/dist/utility/globalSchema.d.ts +13 -4
- package/dist/utility/globalSchema.js +14 -11
- package/dist/utility/globalSchema.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +54 -1
- package/dist/utility/hdbTerms.js +54 -1
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/install/checkJWTTokensExist.js +1 -1
- package/dist/utility/install/installer.d.ts +9 -12
- package/dist/utility/install/installer.js +117 -54
- package/dist/utility/install/installer.js.map +1 -1
- package/dist/utility/installation.js +3 -3
- package/dist/utility/lmdb/DBIDefinition.d.ts +4 -4
- package/dist/utility/lmdb/DBIDefinition.js +5 -1
- package/dist/utility/lmdb/DBIDefinition.js.map +1 -1
- package/dist/utility/lmdb/DeleteRecordsResponseObject.d.ts +3 -6
- package/dist/utility/lmdb/DeleteRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/InsertRecordsResponseObject.d.ts +3 -5
- package/dist/utility/lmdb/InsertRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/InsertRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/OpenDBIObject.d.ts +12 -15
- package/dist/utility/lmdb/OpenDBIObject.js +68 -6
- package/dist/utility/lmdb/OpenDBIObject.js.map +1 -1
- package/dist/utility/lmdb/OpenEnvironmentObject.d.ts +5 -8
- package/dist/utility/lmdb/OpenEnvironmentObject.js +52 -4
- package/dist/utility/lmdb/OpenEnvironmentObject.js.map +1 -1
- package/dist/utility/lmdb/UpdateRecordsResponseObject.d.ts +3 -6
- package/dist/utility/lmdb/UpdateRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/UpsertRecordsResponseObject.d.ts +3 -5
- package/dist/utility/lmdb/UpsertRecordsResponseObject.js +2 -1
- package/dist/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -1
- package/dist/utility/lmdb/cleanLMDBMap.d.ts +1 -1
- package/dist/utility/lmdb/cleanLMDBMap.js +44 -7
- package/dist/utility/lmdb/cleanLMDBMap.js.map +1 -1
- package/dist/utility/lmdb/commonUtility.d.ts +8 -9
- package/dist/utility/lmdb/commonUtility.js +46 -17
- package/dist/utility/lmdb/commonUtility.js.map +1 -1
- package/dist/utility/lmdb/deleteUtility.d.ts +2 -3
- package/dist/utility/lmdb/deleteUtility.js +51 -16
- package/dist/utility/lmdb/deleteUtility.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.d.ts +69 -36
- package/dist/utility/lmdb/environmentUtility.js +91 -51
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/utility/lmdb/searchCursorFunctions.d.ts +19 -19
- package/dist/utility/lmdb/searchCursorFunctions.js +46 -14
- package/dist/utility/lmdb/searchCursorFunctions.js.map +1 -1
- package/dist/utility/lmdb/searchUtility.d.ts +142 -73
- package/dist/utility/lmdb/searchUtility.js +91 -55
- package/dist/utility/lmdb/searchUtility.js.map +1 -1
- package/dist/utility/lmdb/terms.d.ts +34 -34
- package/dist/utility/lmdb/terms.js +12 -22
- package/dist/utility/lmdb/terms.js.map +1 -1
- package/dist/utility/lmdb/writeUtility.d.ts +3 -6
- package/dist/utility/lmdb/writeUtility.js +61 -28
- package/dist/utility/lmdb/writeUtility.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +87 -103
- package/dist/utility/logging/harper_logger.js +177 -82
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/logging/logRotator.d.ts +2 -10
- package/dist/utility/logging/logRotator.js +67 -32
- package/dist/utility/logging/logRotator.js.map +1 -1
- package/dist/utility/logging/logger.js +4 -4
- package/dist/utility/logging/readLog.d.ts +1 -1
- package/dist/utility/logging/readLog.js +54 -17
- package/dist/utility/logging/readLog.js.map +1 -1
- package/dist/utility/logging/transactionLog.d.ts +2 -2
- package/dist/utility/logging/transactionLog.js +51 -16
- package/dist/utility/logging/transactionLog.js.map +1 -1
- package/dist/utility/mount_hdb.d.ts +1 -2
- package/dist/utility/mount_hdb.js +54 -17
- package/dist/utility/mount_hdb.js.map +1 -1
- package/dist/utility/npmUtilities.d.ts +1 -1
- package/dist/utility/npmUtilities.js +54 -19
- package/dist/utility/npmUtilities.js.map +1 -1
- package/dist/utility/operation_authorization.d.ts +36 -9
- package/dist/utility/operation_authorization.js +135 -86
- package/dist/utility/operation_authorization.js.map +1 -1
- package/dist/utility/packageUtils.d.ts +0 -2
- package/dist/utility/packageUtils.js +7 -17
- package/dist/utility/packageUtils.js.map +1 -1
- package/dist/utility/password.js +2 -2
- package/dist/utility/processManagement/processManagement.js +2 -2
- package/dist/utility/processManagement/servicesConfig.js +1 -1
- package/dist/utility/signalling.d.ts +2 -2
- package/dist/utility/signalling.js +51 -16
- package/dist/utility/signalling.js.map +1 -1
- package/dist/utility/watcherFallback.d.ts +36 -0
- package/dist/utility/watcherFallback.js +73 -0
- package/dist/utility/watcherFallback.js.map +1 -0
- package/dist/validation/analyticsValidator.d.ts +1 -0
- package/dist/validation/analyticsValidator.js +80 -0
- package/dist/validation/analyticsValidator.js.map +1 -0
- package/dist/validation/bulkDeleteValidator.d.ts +1 -2
- package/dist/validation/bulkDeleteValidator.js +49 -11
- package/dist/validation/bulkDeleteValidator.js.map +1 -1
- package/dist/validation/check_permissions.d.ts +1 -2
- package/dist/validation/check_permissions.js +38 -3
- package/dist/validation/check_permissions.js.map +1 -1
- package/dist/validation/common_validators.d.ts +20 -20
- package/dist/validation/common_validators.js +62 -31
- package/dist/validation/common_validators.js.map +1 -1
- package/dist/validation/configValidator.d.ts +4 -4
- package/dist/validation/configValidator.js +189 -54
- package/dist/validation/configValidator.js.map +1 -1
- package/dist/validation/deleteValidator.d.ts +1 -2
- package/dist/validation/deleteValidator.js +49 -11
- package/dist/validation/deleteValidator.js.map +1 -1
- package/dist/validation/fileLoadValidator.d.ts +4 -4
- package/dist/validation/fileLoadValidator.js +67 -32
- package/dist/validation/fileLoadValidator.js.map +1 -1
- package/dist/validation/insertValidator.d.ts +1 -2
- package/dist/validation/insertValidator.js +48 -10
- package/dist/validation/insertValidator.js.map +1 -1
- package/dist/validation/installValidator.d.ts +2 -2
- package/dist/validation/installValidator.js +47 -10
- package/dist/validation/installValidator.js.map +1 -1
- package/dist/validation/readLogValidator.d.ts +1 -2
- package/dist/validation/readLogValidator.js +60 -22
- package/dist/validation/readLogValidator.js.map +1 -1
- package/dist/validation/role_validation.d.ts +3 -3
- package/dist/validation/role_validation.js +55 -19
- package/dist/validation/role_validation.js.map +1 -1
- package/dist/validation/schemaMetadataValidator.d.ts +3 -4
- package/dist/validation/schemaMetadataValidator.js +11 -12
- package/dist/validation/schemaMetadataValidator.js.map +1 -1
- package/dist/validation/searchValidator.d.ts +1 -2
- package/dist/validation/searchValidator.js +82 -43
- package/dist/validation/searchValidator.js.map +1 -1
- package/dist/validation/statusValidator.d.ts +1 -1
- package/dist/validation/transactionLogValidator.d.ts +3 -3
- package/dist/validation/transactionLogValidator.js +52 -17
- package/dist/validation/transactionLogValidator.js.map +1 -1
- package/dist/validation/user_validation.d.ts +3 -3
- package/dist/validation/user_validation.js +38 -6
- package/dist/validation/user_validation.js.map +1 -1
- package/dist/validation/validationWrapper.d.ts +3 -3
- package/dist/validation/validationWrapper.js +4 -5
- package/dist/validation/validationWrapper.js.map +1 -1
- package/index.ts +5 -0
- package/json/systemSchema.json +65 -0
- package/launchServiceScripts/utility/checkNodeVersion.js +2 -0
- package/package.json +38 -24
- package/resources/DESIGN.md +98 -0
- package/resources/DatabaseTransaction.ts +58 -30
- package/resources/ErrorResource.ts +2 -1
- package/resources/LMDBTransaction.ts +38 -29
- package/resources/RecordEncoder.ts +41 -39
- package/resources/RequestTarget.ts +2 -0
- package/resources/Resource.ts +96 -56
- package/resources/ResourceInterface.ts +44 -21
- package/resources/Resources.ts +8 -8
- package/resources/RocksIndexStore.ts +3 -0
- package/resources/RocksTransactionLogStore.ts +13 -4
- package/resources/Table.ts +440 -223
- package/resources/analytics/metadata.ts +1 -0
- package/resources/analytics/read.ts +99 -10
- package/resources/analytics/write.ts +240 -17
- package/resources/auditStore.ts +30 -19
- package/resources/blob.ts +53 -53
- package/resources/dataLoader.ts +4 -4
- package/resources/databases.ts +208 -74
- package/resources/graphql.ts +267 -165
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +310 -65
- package/resources/indexes/vector.ts +17 -0
- package/resources/jsonSchemaTypes.ts +102 -0
- package/resources/loadEnv.ts +21 -17
- package/resources/login.ts +5 -3
- package/resources/models/Models.ts +304 -0
- package/resources/models/TestBackend.ts +83 -0
- package/resources/models/agentLoop.ts +895 -0
- package/resources/models/analyticsTable.ts +199 -0
- package/resources/models/backendHelpers.ts +116 -0
- package/resources/models/backendRegistry.ts +66 -0
- package/resources/models/bootstrap.ts +135 -0
- package/resources/models/embedHook.ts +138 -0
- package/resources/models/types.ts +296 -0
- package/resources/openApi.ts +65 -31
- package/resources/replayLogs.ts +20 -9
- package/resources/replayLogsGuards.ts +45 -0
- package/resources/roles.ts +62 -67
- package/resources/search.ts +355 -135
- package/resources/tracked.ts +18 -9
- package/resources/transaction.ts +8 -8
- package/resources/transactionBroadcast.ts +3 -3
- package/schema.graphql +7 -0
- package/security/auth.ts +35 -26
- package/security/certificateVerification/crlVerification.ts +11 -4
- package/security/{cryptoHash.js → cryptoHash.ts} +3 -8
- package/security/data_objects/{PermissionAttributeResponseObject.js → PermissionAttributeResponseObject.ts} +4 -4
- package/security/data_objects/{PermissionResponseObject.js → PermissionResponseObject.ts} +12 -11
- package/security/data_objects/{PermissionTableResponseObject.js → PermissionTableResponseObject.ts} +6 -4
- package/security/{fastifyAuth.js → fastifyAuth.ts} +93 -20
- package/security/impersonation.ts +3 -3
- package/security/jsLoader.ts +22 -8
- package/security/{keys.js → keys.ts} +113 -121
- package/security/permissionsTranslator.js +2 -2
- package/security/{role.js → role.ts} +26 -33
- package/security/tokenAuthentication.ts +34 -7
- package/security/user.ts +26 -22
- package/server/DESIGN.md +139 -0
- package/server/DurableSubscriptionsSession.ts +67 -50
- package/server/REST.ts +120 -107
- package/server/Server.ts +31 -12
- package/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/server/fastifyRoutes.ts +37 -33
- package/server/graphqlQuerying.ts +6 -5
- package/server/http.ts +517 -26
- package/server/itc/serverHandlers.js +75 -14
- package/server/jobs/{JobObject.js → JobObject.ts} +13 -6
- package/server/jobs/{jobProcess.js → jobProcess.ts} +20 -16
- package/server/jobs/{jobRunner.js → jobRunner.ts} +20 -21
- package/server/jobs/{jobs.js → jobs.ts} +41 -44
- package/server/loadRootComponents.js +1 -1
- package/server/middlewareChain.ts +270 -0
- package/server/mqtt.ts +35 -26
- package/server/nodeName.ts +3 -1
- package/server/operationsServer.ts +85 -10
- package/server/serverHelpers/Headers.ts +10 -8
- package/server/serverHelpers/JSONStream.ts +15 -5
- package/server/serverHelpers/Request.ts +370 -13
- package/server/serverHelpers/contentTypes.ts +42 -11
- package/server/serverHelpers/multipartParser.ts +152 -0
- package/server/serverHelpers/progressEmitter.ts +110 -0
- package/server/serverHelpers/serverHandlers.js +43 -7
- package/server/serverHelpers/serverUtilities.ts +40 -30
- package/server/static.ts +9 -6
- package/server/status/index.ts +2 -2
- package/server/storageReclamation.ts +39 -2
- package/server/threads/itc.js +7 -4
- package/server/threads/manageThreads.js +100 -26
- package/server/threads/socketRouter.ts +12 -275
- package/server/threads/threadServer.js +345 -105
- package/server/threads/workerProcessGuard.ts +93 -0
- package/server/throttle.ts +18 -0
- package/sqlTranslator/{SelectValidator.js → SelectValidator.ts} +41 -49
- package/sqlTranslator/{alasqlFunctionImporter.js → alasqlFunctionImporter.ts} +5 -5
- package/sqlTranslator/{deleteTranslator.js → deleteTranslator.ts} +13 -18
- package/sqlTranslator/{index.js → index.ts} +30 -33
- package/sqlTranslator/{sql_statement_bucket.js → sql_statement_bucket.ts} +49 -20
- package/static/README.md +10 -9
- package/static/defaultConfig.yaml +0 -1
- package/studio/web/assets/{index-CybLScHg.js → index-Dqr9oVhe.js} +5 -5
- package/studio/web/assets/index-Dqr9oVhe.js.map +1 -0
- package/studio/web/assets/{index.lazy-DKx5-iXF.js → index.lazy-CpKcKb7M.js} +2 -2
- package/studio/web/assets/{index.lazy-DKx5-iXF.js.map → index.lazy-CpKcKb7M.js.map} +1 -1
- package/studio/web/assets/{profile-BOjes0Wl.js → profile-C1cujdsg.js} +2 -2
- package/studio/web/assets/{profile-BOjes0Wl.js.map → profile-C1cujdsg.js.map} +1 -1
- package/studio/web/assets/{status-EWKUIrjT.js → status-CTiIIQlY.js} +2 -2
- package/studio/web/assets/{status-EWKUIrjT.js.map → status-CTiIIQlY.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/{UpgradeObjects.js → UpgradeObjects.ts} +3 -6
- package/upgrade/directives/5-1-0.ts +89 -0
- package/upgrade/directives/{directivesController.js → directivesController.ts} +16 -16
- package/upgrade/{directivesManager.js → directivesManager.ts} +7 -11
- package/upgrade/{upgradePrompt.js → upgradePrompt.ts} +6 -54
- package/upgrade/{upgradeUtilities.js → upgradeUtilities.ts} +3 -7
- package/utility/{OperationFunctionCaller.js → OperationFunctionCaller.ts} +7 -7
- package/utility/{assignCmdEnvVariables.js → assignCmdEnvVariables.ts} +6 -8
- package/utility/{common_utils.js → common_utils.ts} +113 -139
- package/utility/environment/{environmentManager.js → environmentManager.ts} +34 -33
- package/utility/environment/systemInformation.ts +18 -4
- package/utility/errors/{commonErrors.js → commonErrors.ts} +9 -9
- package/utility/errors/{hdbError.js → hdbError.ts} +39 -45
- package/utility/expandEnvVar.ts +110 -0
- package/utility/functions/geo.js +2 -2
- package/utility/functions/sql/alaSQLExtension.js +1 -1
- package/utility/globalSchema.ts +30 -0
- package/utility/hdbTerms.ts +54 -1
- package/utility/install/checkJWTTokensExist.js +1 -1
- package/utility/install/{installer.js → installer.ts} +66 -42
- package/utility/installation.ts +2 -2
- package/utility/lmdb/{DBIDefinition.js → DBIDefinition.ts} +4 -1
- package/utility/lmdb/{DeleteRecordsResponseObject.js → DeleteRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{InsertRecordsResponseObject.js → InsertRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/OpenDBIObject.ts +57 -0
- package/utility/lmdb/{OpenEnvironmentObject.js → OpenEnvironmentObject.ts} +19 -6
- package/utility/lmdb/{UpdateRecordsResponseObject.js → UpdateRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{UpsertRecordsResponseObject.js → UpsertRecordsResponseObject.ts} +2 -1
- package/utility/lmdb/{cleanLMDBMap.js → cleanLMDBMap.ts} +5 -5
- package/utility/lmdb/{commonUtility.js → commonUtility.ts} +13 -21
- package/utility/lmdb/{deleteUtility.js → deleteUtility.ts} +8 -12
- package/utility/lmdb/{environmentUtility.js → environmentUtility.ts} +43 -52
- package/utility/lmdb/{searchCursorFunctions.js → searchCursorFunctions.ts} +12 -26
- package/utility/lmdb/{searchUtility.js → searchUtility.ts} +75 -64
- package/utility/lmdb/{terms.js → terms.ts} +10 -23
- package/utility/lmdb/{writeUtility.js → writeUtility.ts} +37 -22
- package/utility/logging/{harper_logger.js → harper_logger.ts} +137 -90
- package/utility/logging/{logRotator.js → logRotator.ts} +15 -18
- package/utility/logging/logger.ts +1 -1
- package/utility/logging/{readLog.js → readLog.ts} +19 -19
- package/utility/logging/{transactionLog.js → transactionLog.ts} +10 -14
- package/utility/{mount_hdb.js → mount_hdb.ts} +15 -16
- package/utility/{npmUtilities.js → npmUtilities.ts} +14 -17
- package/utility/{operation_authorization.js → operation_authorization.ts} +173 -124
- package/utility/packageUtils.js +7 -16
- package/utility/password.ts +1 -1
- package/utility/processManagement/processManagement.js +2 -2
- package/utility/processManagement/servicesConfig.js +1 -1
- package/utility/{signalling.js → signalling.ts} +6 -11
- package/utility/watcherFallback.ts +74 -0
- package/validation/analyticsValidator.ts +44 -0
- package/validation/{bulkDeleteValidator.js → bulkDeleteValidator.ts} +5 -5
- package/validation/{check_permissions.js → check_permissions.ts} +3 -3
- package/validation/{common_validators.js → common_validators.ts} +12 -24
- package/validation/{configValidator.js → configValidator.ts} +114 -18
- package/validation/{deleteValidator.js → deleteValidator.ts} +5 -5
- package/validation/{fileLoadValidator.js → fileLoadValidator.ts} +12 -19
- package/validation/{insertValidator.js → insertValidator.ts} +5 -5
- package/validation/{installValidator.js → installValidator.ts} +8 -8
- package/validation/{readLogValidator.js → readLogValidator.ts} +10 -10
- package/validation/{role_validation.js → role_validation.ts} +26 -32
- package/validation/{schemaMetadataValidator.js → schemaMetadataValidator.ts} +5 -11
- package/validation/{searchValidator.js → searchValidator.ts} +12 -11
- package/validation/statusValidator.ts +1 -1
- package/validation/{transactionLogValidator.js → transactionLogValidator.ts} +4 -9
- package/validation/{user_validation.js → user_validation.ts} +4 -10
- package/validation/{validationWrapper.js → validationWrapper.ts} +3 -9
- package/bin/cliOperations.js +0 -159
- package/bin/lite.js +0 -5
- package/dataLayer/harperBridge/BridgeMethods.js +0 -85
- package/studio/web/assets/index-CybLScHg.js.map +0 -1
- package/utility/globalSchema.js +0 -35
- package/utility/lmdb/OpenDBIObject.js +0 -31
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import type { Metric } from './write.ts';
|
|
2
|
-
import harperLogger from '../../utility/logging/harper_logger.
|
|
2
|
+
import harperLogger from '../../utility/logging/harper_logger.ts';
|
|
3
3
|
const { forComponent } = harperLogger;
|
|
4
4
|
import { getAnalyticsHostnameTable, stableNodeId } from './hostnames.ts';
|
|
5
5
|
import type { Condition, Conditions } from '../ResourceInterface.ts';
|
|
6
6
|
import { METRIC, type BuiltInMetricName } from './metadata.ts';
|
|
7
7
|
import { CONFIG_PARAMS } from '../../utility/hdbTerms.ts';
|
|
8
|
-
import { get as envGet } from '../../utility/environment/environmentManager.
|
|
8
|
+
import { get as envGet } from '../../utility/environment/environmentManager.ts';
|
|
9
|
+
import { validateGetAnalytics } from '../../validation/analyticsValidator.ts';
|
|
10
|
+
import { handleHDBError, hdbErrors } from '../../utility/errors/hdbError.ts';
|
|
11
|
+
import { getThisNodeName } from '../../server/nodeName.ts';
|
|
9
12
|
|
|
10
13
|
// default to one week time window for finding custom metrics
|
|
11
14
|
const defaultCustomMetricWindow = 1000 * 60 * 60 * 24 * 7;
|
|
12
15
|
|
|
13
|
-
const
|
|
16
|
+
const logger = forComponent('analytics');
|
|
17
|
+
const log = logger.conditional;
|
|
14
18
|
|
|
15
19
|
async function lookupHostname(nodeId: number): Promise<string | undefined> {
|
|
16
20
|
const result = await getAnalyticsHostnameTable().get(nodeId);
|
|
@@ -24,25 +28,110 @@ function isSelected(querySelect: string[], attr: string) {
|
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
interface GetAnalyticsRequest {
|
|
31
|
+
operation?: string;
|
|
27
32
|
metric: string;
|
|
28
33
|
start_time?: number;
|
|
29
34
|
end_time?: number;
|
|
30
35
|
get_attributes?: string[];
|
|
31
36
|
coalesce_time?: boolean;
|
|
32
37
|
conditions?: Conditions;
|
|
38
|
+
// When true, fan the query out to every peer node and merge the results into one
|
|
39
|
+
// cluster-wide response. Cleared before forwarding so peers only return their own.
|
|
40
|
+
replicated?: boolean;
|
|
33
41
|
}
|
|
34
42
|
|
|
35
|
-
type GetAnalyticsResponse = Metric[];
|
|
43
|
+
type GetAnalyticsResponse = AsyncIterable<Metric> | Metric[];
|
|
36
44
|
|
|
37
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Validates the `get_analytics` request and returns the analytics results.
|
|
47
|
+
* @param req
|
|
48
|
+
* @returns
|
|
49
|
+
*/
|
|
50
|
+
export async function getOp(req: GetAnalyticsRequest): Promise<GetAnalyticsResponse> {
|
|
38
51
|
log.trace?.('get_analytics request:', req);
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
const validationError = validateGetAnalytics(req);
|
|
53
|
+
if (validationError) {
|
|
54
|
+
throw handleHDBError(
|
|
55
|
+
validationError,
|
|
56
|
+
validationError.message,
|
|
57
|
+
hdbErrors.HTTP_STATUS_CODES.BAD_REQUEST,
|
|
58
|
+
undefined,
|
|
59
|
+
undefined,
|
|
60
|
+
true
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
// `replicated` fans the query out to every peer node and merges each node's
|
|
64
|
+
// analytics into one cluster-wide result set. Fan-out is skipped when:
|
|
65
|
+
// - the request did not ask for it;
|
|
66
|
+
// - this is standalone core, which has no `server.nodes` (harper-pro populates it);
|
|
67
|
+
// - `hdb_analytics` already replicates across the cluster, in which case a local
|
|
68
|
+
// query already holds every node's rows and fanning out would double-count.
|
|
69
|
+
// The DB layer marks the table `replicate === false` only when it is *not*
|
|
70
|
+
// replicated (`analytics_replicate: false`), which is exactly when fan-out helps.
|
|
71
|
+
const analyticsReplicatedByDb = databases.system.hdb_analytics.replicate !== false;
|
|
72
|
+
const peers = req.replicated && !analyticsReplicatedByDb && server.nodes?.length ? server.nodes : undefined;
|
|
73
|
+
|
|
74
|
+
// When merging across the cluster, make sure every row keeps its origin `node`
|
|
75
|
+
// attribute so callers can tell the nodes apart. An empty/absent `get_attributes`
|
|
76
|
+
// already selects everything (including `node`), so only an explicit list needs it.
|
|
77
|
+
let getAttributes = req.get_attributes;
|
|
78
|
+
if (peers && getAttributes?.length && !getAttributes.includes('node')) {
|
|
79
|
+
getAttributes = [...getAttributes, 'node'];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const localResults = await get(req.metric, {
|
|
83
|
+
getAttributes,
|
|
41
84
|
startTime: req.start_time,
|
|
42
85
|
endTime: req.end_time,
|
|
43
86
|
coalesceTime: req.coalesce_time,
|
|
44
87
|
additionalConditions: req.conditions,
|
|
45
88
|
});
|
|
89
|
+
|
|
90
|
+
if (!peers) return localResults;
|
|
91
|
+
return mergeAnalyticsFromPeers(localResults, { ...req, get_attributes: getAttributes }, peers);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Streams the local analytics, then appends each peer node's analytics. The same
|
|
96
|
+
* query is forwarded to every peer with `replicated` cleared so each returns only
|
|
97
|
+
* its own local metrics (no recursive fan-out). Best-effort: a peer that fails is
|
|
98
|
+
* logged and omitted rather than failing the whole query.
|
|
99
|
+
*/
|
|
100
|
+
async function* mergeAnalyticsFromPeers(
|
|
101
|
+
localResults: AsyncIterable<Metric> | Iterable<Metric>,
|
|
102
|
+
req: GetAnalyticsRequest,
|
|
103
|
+
peers: { name: string }[]
|
|
104
|
+
): AsyncGenerator<Metric> {
|
|
105
|
+
const thisNode = getThisNodeName();
|
|
106
|
+
const peerReq = { ...req, replicated: false };
|
|
107
|
+
// `sendOperationToNode` is typed for a node name string, but the replication
|
|
108
|
+
// implementation expects the full node object (the stub-vs-impl mismatch that
|
|
109
|
+
// `restart` works around the same way).
|
|
110
|
+
const sendOperationToNode = server.replication.sendOperationToNode as unknown as (
|
|
111
|
+
node: { name: string },
|
|
112
|
+
operation: unknown
|
|
113
|
+
) => Promise<{ results?: Metric[] } | Metric[]>;
|
|
114
|
+
|
|
115
|
+
const peerResults = peers
|
|
116
|
+
.filter((node) => node.name !== thisNode)
|
|
117
|
+
.map((node) =>
|
|
118
|
+
sendOperationToNode(node, peerReq).then(
|
|
119
|
+
// an array response is wrapped as `{ results }` over the replication channel;
|
|
120
|
+
// fall back to an empty list for any other (malformed) shape so a bad peer
|
|
121
|
+
// can't break the merge
|
|
122
|
+
(response): Metric[] =>
|
|
123
|
+
Array.isArray(response) ? response : Array.isArray(response?.results) ? response.results : [],
|
|
124
|
+
(error: Error): Metric[] => {
|
|
125
|
+
logger.warn(`get_analytics replication to node '${node.name}' failed; omitting its results`, error);
|
|
126
|
+
return [];
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
yield* localResults;
|
|
132
|
+
for (const peerResult of peerResults) {
|
|
133
|
+
yield* await peerResult;
|
|
134
|
+
}
|
|
46
135
|
}
|
|
47
136
|
|
|
48
137
|
function conformCondition(condition: Condition): Condition {
|
|
@@ -120,7 +209,7 @@ export async function get(metric: string, opts?: GetAnalyticsOpts): Promise<Metr
|
|
|
120
209
|
}
|
|
121
210
|
}
|
|
122
211
|
|
|
123
|
-
const request = { conditions, allowConditionsOnDynamicAttributes: true };
|
|
212
|
+
const request: any = { conditions, allowConditionsOnDynamicAttributes: true };
|
|
124
213
|
if (select.length > 0) {
|
|
125
214
|
request['select'] = select;
|
|
126
215
|
}
|
|
@@ -192,7 +281,7 @@ export async function listMetrics(
|
|
|
192
281
|
} as Condition;
|
|
193
282
|
});
|
|
194
283
|
conditions.push(...metricConditions);
|
|
195
|
-
const customMetricsSearch = {
|
|
284
|
+
const customMetricsSearch: any = {
|
|
196
285
|
select: ['metric'],
|
|
197
286
|
conditions: conditions,
|
|
198
287
|
};
|
|
@@ -226,7 +315,7 @@ export function describeMetricOp(req: DescribeMetricRequest): Promise<DescribeMe
|
|
|
226
315
|
}
|
|
227
316
|
|
|
228
317
|
export async function describeMetric(metric: string): Promise<DescribeMetricResponse> {
|
|
229
|
-
const lastEntrySearch = {
|
|
318
|
+
const lastEntrySearch: any = {
|
|
230
319
|
conditions: [{ attribute: 'metric', comparator: 'equals', value: metric }],
|
|
231
320
|
sort: {
|
|
232
321
|
attribute: 'id',
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { parentPort, threadId } from 'worker_threads';
|
|
2
2
|
import { onMessageByType } from '../../server/threads/manageThreads.js';
|
|
3
|
-
import { getDatabases, table } from '../databases.ts';
|
|
3
|
+
import { getDatabases, table, isReadOnlyMode } from '../databases.ts';
|
|
4
4
|
import type { Databases, Table, Tables } from '../databases.ts';
|
|
5
|
-
import harperLogger from '../../utility/logging/harper_logger.
|
|
5
|
+
import harperLogger from '../../utility/logging/harper_logger.ts';
|
|
6
6
|
import { stat, readdir } from 'node:fs/promises';
|
|
7
7
|
const { getLogFilePath, forComponent } = harperLogger;
|
|
8
8
|
import { dirname, join } from 'path';
|
|
9
9
|
import { open } from 'fs/promises';
|
|
10
|
-
import { getNextMonotonicTime } from '../../utility/lmdb/commonUtility.
|
|
11
|
-
import { get as envGet, getHdbBasePath, initSync } from '../../utility/environment/environmentManager.
|
|
10
|
+
import { getNextMonotonicTime } from '../../utility/lmdb/commonUtility.ts';
|
|
11
|
+
import { get as envGet, getHdbBasePath, initSync } from '../../utility/environment/environmentManager.ts';
|
|
12
12
|
import { CONFIG_PARAMS } from '../../utility/hdbTerms.ts';
|
|
13
13
|
import { server } from '../../server/Server.ts';
|
|
14
14
|
import * as fs from 'node:fs';
|
|
@@ -17,6 +17,7 @@ import { METRIC } from './metadata.ts';
|
|
|
17
17
|
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
18
18
|
|
|
19
19
|
const log = forComponent('analytics').conditional;
|
|
20
|
+
const isBun = typeof globalThis.Bun !== 'undefined';
|
|
20
21
|
|
|
21
22
|
initSync();
|
|
22
23
|
|
|
@@ -37,8 +38,20 @@ interface Action {
|
|
|
37
38
|
|
|
38
39
|
let activeActions = new Map<string, Action>();
|
|
39
40
|
let analyticsEnabled = envGet(CONFIG_PARAMS.ANALYTICS_AGGREGATEPERIOD) > -1;
|
|
41
|
+
let analyticsReadOnlyChecked = false;
|
|
40
42
|
let sendAnalyticsTimeout: NodeJS.Timeout;
|
|
41
43
|
|
|
44
|
+
// Check read-only mode lazily to avoid circular dependency at module load time
|
|
45
|
+
function checkAnalyticsEnabled(): boolean {
|
|
46
|
+
if (!analyticsReadOnlyChecked) {
|
|
47
|
+
analyticsReadOnlyChecked = true;
|
|
48
|
+
if (isReadOnlyMode()) {
|
|
49
|
+
analyticsEnabled = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return analyticsEnabled;
|
|
53
|
+
}
|
|
54
|
+
|
|
42
55
|
export function setAnalyticsEnabled(enabled: boolean) {
|
|
43
56
|
analyticsEnabled = enabled;
|
|
44
57
|
clearTimeout(sendAnalyticsTimeout); // reset this
|
|
@@ -47,7 +60,7 @@ export function setAnalyticsEnabled(enabled: boolean) {
|
|
|
47
60
|
|
|
48
61
|
function recordExistingAction(value: Value, action: Action) {
|
|
49
62
|
if (typeof value === 'number') {
|
|
50
|
-
let values:
|
|
63
|
+
let values: any = action.values;
|
|
51
64
|
const index = values.index++;
|
|
52
65
|
if (index >= values.length) {
|
|
53
66
|
const oldValues = values;
|
|
@@ -71,7 +84,7 @@ function recordNewAction(key: string, value: Value, metric?: string, path?: stri
|
|
|
71
84
|
if (typeof value === 'number') {
|
|
72
85
|
action.total = value;
|
|
73
86
|
action.values = new Float32Array(4);
|
|
74
|
-
action.values.index = 1;
|
|
87
|
+
(action.values as any).index = 1;
|
|
75
88
|
action.values[0] = value;
|
|
76
89
|
action.total = value;
|
|
77
90
|
} else if (typeof value === 'boolean') {
|
|
@@ -101,7 +114,7 @@ function recordNewAction(key: string, value: Value, metric?: string, path?: stri
|
|
|
101
114
|
* @param type
|
|
102
115
|
*/
|
|
103
116
|
export function recordAction(value: Value, metric: string, path?: string, method?: string, type?: string) {
|
|
104
|
-
if (!
|
|
117
|
+
if (!checkAnalyticsEnabled()) return;
|
|
105
118
|
// TODO: May want to consider nested paths, as they may yield faster hashing of (fixed) strings that hashing concatenated strings
|
|
106
119
|
let key = metric + (path ? '-' + path : '');
|
|
107
120
|
if (method !== undefined) key += '-' + method;
|
|
@@ -151,7 +164,7 @@ function sendAnalytics() {
|
|
|
151
164
|
};
|
|
152
165
|
for (const [_name, action] of activeActions) {
|
|
153
166
|
if (action.values) {
|
|
154
|
-
const values = action.values.subarray(0, action.values.index);
|
|
167
|
+
const values = action.values.subarray(0, (action.values as any).index);
|
|
155
168
|
values.sort();
|
|
156
169
|
const count = values.length;
|
|
157
170
|
// compute the stats
|
|
@@ -214,6 +227,8 @@ function sendAnalytics() {
|
|
|
214
227
|
}
|
|
215
228
|
|
|
216
229
|
export async function recordHostname() {
|
|
230
|
+
// Skip writes in read-only mode
|
|
231
|
+
if (isReadOnlyMode()) return;
|
|
217
232
|
const hostname = server.hostname;
|
|
218
233
|
log.trace?.('recordHostname server.hostname:', hostname);
|
|
219
234
|
const nodeId = stableNodeId(hostname);
|
|
@@ -224,7 +239,7 @@ export async function recordHostname() {
|
|
|
224
239
|
hostname,
|
|
225
240
|
};
|
|
226
241
|
log.trace?.(`recordHostname storing hostname: ${JSON.stringify(hostnameRecord)}`);
|
|
227
|
-
await hostnamesTable.put(hostnameRecord.id, hostnameRecord);
|
|
242
|
+
await (hostnamesTable as any).put(hostnameRecord.id, hostnameRecord);
|
|
228
243
|
}
|
|
229
244
|
|
|
230
245
|
export interface Metric {
|
|
@@ -244,6 +259,8 @@ function getHostNodeId(hostname: string) {
|
|
|
244
259
|
}
|
|
245
260
|
|
|
246
261
|
function storeMetric(table: Table, metric: Metric) {
|
|
262
|
+
// Skip writes in read-only mode
|
|
263
|
+
if (isReadOnlyMode()) return;
|
|
247
264
|
const nodeId = getHostNodeId(server.hostname);
|
|
248
265
|
const metricValue = {
|
|
249
266
|
id: [getNextMonotonicTime(), nodeId],
|
|
@@ -379,6 +396,194 @@ function storeVolumeMetrics(analyticsTable: Table, databases: Databases) {
|
|
|
379
396
|
}
|
|
380
397
|
}
|
|
381
398
|
|
|
399
|
+
// RocksDB stat names are kebab-case with a "rocksdb." prefix (e.g. "rocksdb.block.cache.hit");
|
|
400
|
+
// camelCase them to match the field shape used throughout systemInformation.
|
|
401
|
+
export function toRocksDBCamelCase(key: string): string {
|
|
402
|
+
return key.replace(/^rocksdb\./, '').replace(/[-.]([a-z])/g, (_, c: string) => c.toUpperCase());
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// Every column family on the same physical RocksDB shares one Statistics object, so all ticker
|
|
406
|
+
// counters returned by getStats() — including memtableHit/memtableMiss — are DB-wide, not per-CF.
|
|
407
|
+
// Listing them as DB-level avoids emitting the same delta on every table row.
|
|
408
|
+
const ROCKSDB_DB_COUNTERS = [
|
|
409
|
+
'bytesRead',
|
|
410
|
+
'bytesWritten',
|
|
411
|
+
'numberKeysRead',
|
|
412
|
+
'numberKeysWritten',
|
|
413
|
+
'blockCacheHit',
|
|
414
|
+
'blockCacheMiss',
|
|
415
|
+
'blockCacheDataHit',
|
|
416
|
+
'blockCacheDataMiss',
|
|
417
|
+
'blockCacheIndexHit',
|
|
418
|
+
'blockCacheIndexMiss',
|
|
419
|
+
'blockCacheFilterHit',
|
|
420
|
+
'blockCacheFilterMiss',
|
|
421
|
+
'stallMicros',
|
|
422
|
+
'memtableHit',
|
|
423
|
+
'memtableMiss',
|
|
424
|
+
] as const;
|
|
425
|
+
// Gauges are scalar values that are not cumulative. They go up and down over time.
|
|
426
|
+
const ROCKSDB_DB_GAUGES = ['blockCacheUsage', 'blockCacheCapacity', 'numRunningFlushes'] as const;
|
|
427
|
+
const ROCKSDB_TABLE_GAUGES = ['numRunningCompactions', 'compactionPending'] as const;
|
|
428
|
+
|
|
429
|
+
const lastRocksDBDbStats = new Map<string, Record<string, number>>();
|
|
430
|
+
let lastRocksDBStatsTime = 0;
|
|
431
|
+
|
|
432
|
+
export function diffRocksDBCounter(curr: number, last: number | undefined): number {
|
|
433
|
+
// A negative delta means RocksDB itself reset the counter mid-process (e.g. an internal
|
|
434
|
+
// statistics reset). Process restarts are handled separately because the module-level
|
|
435
|
+
// last-stats maps are reinitialized, which takes the no-prior-reading path below.
|
|
436
|
+
if (last === undefined || curr < last) return curr;
|
|
437
|
+
return curr - last;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Filter a raw RocksDB stats record to numeric scalar entries, camelCasing the keys.
|
|
442
|
+
* Histogram entries (objects) are dropped — they don't fit the flat analytics row model.
|
|
443
|
+
* @param raw - The raw RocksDB stats record to normalize.
|
|
444
|
+
* @returns The normalized RocksDB stats record.
|
|
445
|
+
*/
|
|
446
|
+
export function normalizeRocksDBStats(raw: Record<string, unknown>): Record<string, number> {
|
|
447
|
+
const out: Record<string, number> = {};
|
|
448
|
+
if (!raw) return out;
|
|
449
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
450
|
+
if (typeof value === 'number') out[toRocksDBCamelCase(key)] = value;
|
|
451
|
+
}
|
|
452
|
+
return out;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* Gathers metrics for a RocksDB database.
|
|
457
|
+
* @param dbName - The name of the database.
|
|
458
|
+
* @param stats - The stats to build the metric from.
|
|
459
|
+
* @param lastStats - The last stats to diff the stats from.
|
|
460
|
+
* @param now - The current time.
|
|
461
|
+
* @param period - The period to store the metrics for.
|
|
462
|
+
*/
|
|
463
|
+
export function buildRocksDBDbMetric(
|
|
464
|
+
dbName: string,
|
|
465
|
+
stats: Record<string, number>,
|
|
466
|
+
lastStats: Record<string, number> | undefined,
|
|
467
|
+
now: number,
|
|
468
|
+
period: number | undefined
|
|
469
|
+
): Record<string, unknown> {
|
|
470
|
+
const metric: Record<string, unknown> = {
|
|
471
|
+
metric: METRIC.ROCKSDB_STATS,
|
|
472
|
+
database: dbName,
|
|
473
|
+
time: now,
|
|
474
|
+
};
|
|
475
|
+
if (period !== undefined) metric.period = period;
|
|
476
|
+
for (const field of ROCKSDB_DB_COUNTERS) {
|
|
477
|
+
metric[field] = diffRocksDBCounter(stats[field] ?? 0, lastStats?.[field]);
|
|
478
|
+
}
|
|
479
|
+
for (const field of ROCKSDB_DB_GAUGES) {
|
|
480
|
+
metric[field] = stats[field] ?? 0;
|
|
481
|
+
}
|
|
482
|
+
return metric;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Gathers metrics for a RocksDB table. Only gauges are reported per-table; ticker counters
|
|
487
|
+
* are DB-wide (see ROCKSDB_DB_COUNTERS comment) and live on the DB-level metric.
|
|
488
|
+
* @param dbName - The name of the database.
|
|
489
|
+
* @param tableName - The name of the table.
|
|
490
|
+
* @param stats - The stats to build the metric from.
|
|
491
|
+
* @param now - The current time.
|
|
492
|
+
* @param period - The period to store the metrics for.
|
|
493
|
+
*/
|
|
494
|
+
export function buildRocksDBTableMetric(
|
|
495
|
+
dbName: string,
|
|
496
|
+
tableName: string,
|
|
497
|
+
stats: Record<string, number>,
|
|
498
|
+
now: number,
|
|
499
|
+
period: number | undefined
|
|
500
|
+
): Record<string, unknown> {
|
|
501
|
+
const metric: Record<string, unknown> = {
|
|
502
|
+
metric: METRIC.ROCKSDB_STATS,
|
|
503
|
+
database: dbName,
|
|
504
|
+
table: tableName,
|
|
505
|
+
time: now,
|
|
506
|
+
};
|
|
507
|
+
if (period !== undefined) metric.period = period;
|
|
508
|
+
for (const field of ROCKSDB_TABLE_GAUGES) {
|
|
509
|
+
metric[field] = stats[field] ?? 0;
|
|
510
|
+
}
|
|
511
|
+
return metric;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Stores the RocksDB stats metrics for the given databases.
|
|
516
|
+
* @param analyticsTable - The analytics table to store the metrics in.
|
|
517
|
+
* @param databases - The databases to store the metrics for.
|
|
518
|
+
* @param now - The current time.
|
|
519
|
+
* @param period - The period to store the metrics for.
|
|
520
|
+
*/
|
|
521
|
+
function storeRocksDBStatsMetrics(
|
|
522
|
+
analyticsTable: Table,
|
|
523
|
+
databases: Databases,
|
|
524
|
+
now: number,
|
|
525
|
+
period: number | undefined
|
|
526
|
+
) {
|
|
527
|
+
for (const [db, tables] of Object.entries(databases)) {
|
|
528
|
+
if (!tables) continue; // no tables or not loaded/initialized yet
|
|
529
|
+
const tableEntries = Object.entries(tables);
|
|
530
|
+
const [, firstTable] = tableEntries[0] ?? [];
|
|
531
|
+
if (!(firstTable?.primaryStore instanceof RocksDatabase)) continue;
|
|
532
|
+
|
|
533
|
+
let firstNormalizedStats: Record<string, number> | undefined;
|
|
534
|
+
for (const [tableName, tbl] of tableEntries) {
|
|
535
|
+
try {
|
|
536
|
+
const tableStats = normalizeRocksDBStats(tbl.primaryStore.getStats());
|
|
537
|
+
if (!firstNormalizedStats) firstNormalizedStats = tableStats;
|
|
538
|
+
const tableMetric = buildRocksDBTableMetric(db, tableName, tableStats, now, period);
|
|
539
|
+
storeMetric(analyticsTable, tableMetric);
|
|
540
|
+
} catch (error) {
|
|
541
|
+
// A table may be removed mid-collection — keep iterating siblings.
|
|
542
|
+
log.warn?.(`Error getting RocksDB stats for table ${db}.${tableName}`, error);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
if (firstNormalizedStats) {
|
|
547
|
+
// Any table's getStats() returns the same DB-wide counters; reuse the first one's.
|
|
548
|
+
const lastDbStats = lastRocksDBDbStats.get(db);
|
|
549
|
+
// Skip the first sample for a db — counters are cumulative since process start,
|
|
550
|
+
// so reporting them as a delta would produce a misleading spike.
|
|
551
|
+
if (lastDbStats !== undefined) {
|
|
552
|
+
const dbMetric = buildRocksDBDbMetric(db, firstNormalizedStats, lastDbStats, now, period);
|
|
553
|
+
storeMetric(analyticsTable, dbMetric);
|
|
554
|
+
log.trace?.(`db ${db} rocksdb stats metric: ${JSON.stringify(dbMetric)}`);
|
|
555
|
+
}
|
|
556
|
+
lastRocksDBDbStats.set(db, firstNormalizedStats);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Drop cached counter readings for databases that no longer exist, to bound memory
|
|
563
|
+
* growth across drop/recreate cycles and prevent stale baselines from producing wrong diffs.
|
|
564
|
+
* @param databases - The databases to prune the stats cache for.
|
|
565
|
+
*/
|
|
566
|
+
function pruneRocksDBStatsCache(databases: Databases) {
|
|
567
|
+
const activeDbs = new Set<string>(Object.keys(databases));
|
|
568
|
+
for (const key of lastRocksDBDbStats.keys()) {
|
|
569
|
+
if (!activeDbs.has(key)) lastRocksDBDbStats.delete(key);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Returns a Databases view that includes the `system` database as an enumerable property.
|
|
575
|
+
* getDatabases() marks `system` non-enumerable so general consumers skip it; analytics
|
|
576
|
+
* needs to iterate over it like any other database.
|
|
577
|
+
*/
|
|
578
|
+
function getDatabasesIncludingSystem(): Databases {
|
|
579
|
+
const databases = getDatabases();
|
|
580
|
+
if (!databases.system) return databases;
|
|
581
|
+
const all: Databases = Object.create(null);
|
|
582
|
+
Object.assign(all, databases);
|
|
583
|
+
all.system = databases.system;
|
|
584
|
+
return all;
|
|
585
|
+
}
|
|
586
|
+
|
|
382
587
|
export async function getDirectorySizeAsync(dirPath: string): Promise<number> {
|
|
383
588
|
try {
|
|
384
589
|
const entries = await readdir(dirPath, { withFileTypes: true });
|
|
@@ -425,7 +630,7 @@ async function aggregation(fromPeriod, toPeriod = 60000) {
|
|
|
425
630
|
await stat(getLogFilePath());
|
|
426
631
|
const delay = performance.now() - start;
|
|
427
632
|
if (delay > 5000) {
|
|
428
|
-
log.warn?.('Unusually high task queue latency on the main thread of ' + Math.round(
|
|
633
|
+
log.warn?.('Unusually high task queue latency on the main thread of ' + Math.round(delay) + 'ms');
|
|
429
634
|
}
|
|
430
635
|
return delay;
|
|
431
636
|
})();
|
|
@@ -565,7 +770,9 @@ async function aggregation(fromPeriod, toPeriod = 60000) {
|
|
|
565
770
|
}
|
|
566
771
|
}
|
|
567
772
|
const now = Date.now();
|
|
568
|
-
const { idle, active } =
|
|
773
|
+
const { idle, active } = (globalThis as any).Bun
|
|
774
|
+
? { idle: 0, active: 0 }
|
|
775
|
+
: (performance as any).eventLoopUtilization();
|
|
569
776
|
// don't record boring entries
|
|
570
777
|
if (hasUpdates || active * 10 > idle) {
|
|
571
778
|
const value = {
|
|
@@ -600,14 +807,21 @@ async function aggregation(fromPeriod, toPeriod = 60000) {
|
|
|
600
807
|
storeMetric(analyticsTable, cruMetric);
|
|
601
808
|
lastResourceUsage = resourceUsage;
|
|
602
809
|
|
|
810
|
+
// `system` is set as non-enumerable on the object returned by getDatabases() so most
|
|
811
|
+
// callers skip it; for analytics we want it included, so build a view where it's enumerable.
|
|
812
|
+
const databases = getDatabasesIncludingSystem();
|
|
813
|
+
|
|
603
814
|
// database-size & table-size metrics
|
|
604
|
-
const databases = getDatabases();
|
|
605
815
|
storeDBSizeMetrics(analyticsTable, databases);
|
|
606
|
-
storeDBSizeMetrics(analyticsTable, { system: databases.system });
|
|
607
816
|
|
|
608
817
|
// database storage volume metrics
|
|
609
818
|
storeVolumeMetrics(analyticsTable, databases);
|
|
610
|
-
|
|
819
|
+
|
|
820
|
+
// rocksdb engine stats (only for RocksDB-backed databases)
|
|
821
|
+
const rocksDBPeriod = lastRocksDBStatsTime ? now - lastRocksDBStatsTime : undefined;
|
|
822
|
+
storeRocksDBStatsMetrics(analyticsTable, databases, now, rocksDBPeriod);
|
|
823
|
+
pruneRocksDBStatsCache(databases);
|
|
824
|
+
lastRocksDBStatsTime = now;
|
|
611
825
|
|
|
612
826
|
// node storage metric (total HDB directory size)
|
|
613
827
|
await storeNodeStorageMetric(analyticsTable);
|
|
@@ -622,6 +836,8 @@ let lastResourceUsage: ResourceUsage = {
|
|
|
622
836
|
const rest = () => new Promise(setImmediate);
|
|
623
837
|
|
|
624
838
|
async function cleanup(AnalyticsTable, expiration) {
|
|
839
|
+
// Skip writes in read-only mode
|
|
840
|
+
if (isReadOnlyMode()) return;
|
|
625
841
|
const end = Date.now() - expiration;
|
|
626
842
|
for (const key of AnalyticsTable.primaryStore.getKeys({ start: false, end })) {
|
|
627
843
|
AnalyticsTable.primaryStore.remove(key);
|
|
@@ -694,11 +910,16 @@ function startScheduledTasks() {
|
|
|
694
910
|
nodeStorageInterval = envGet(CONFIG_PARAMS.ANALYTICS_STORAGEINTERVAL) ?? DEFAULT_STORAGE_INTERVAL;
|
|
695
911
|
const AGGREGATE_PERIOD = envGet(CONFIG_PARAMS.ANALYTICS_AGGREGATEPERIOD) * 1000;
|
|
696
912
|
if (AGGREGATE_PERIOD) {
|
|
913
|
+
// Clamp raw retention to at least one full aggregation period so raw records
|
|
914
|
+
// are never deleted before they can be rolled up.
|
|
915
|
+
const rawRetentionMs = Math.max(envGet(CONFIG_PARAMS.ANALYTICS_RAWRETENTIONMS) ?? RAW_EXPIRATION, AGGREGATE_PERIOD);
|
|
916
|
+
const aggregateRetentionMs = envGet(CONFIG_PARAMS.ANALYTICS_AGGREGATERETENTIONMS) ?? AGGREGATE_EXPIRATION;
|
|
697
917
|
setInterval(
|
|
698
918
|
async () => {
|
|
699
919
|
await aggregation(analyticsDelay, AGGREGATE_PERIOD);
|
|
700
|
-
await cleanup(getRawAnalyticsTable(),
|
|
701
|
-
|
|
920
|
+
await cleanup(getRawAnalyticsTable(), rawRetentionMs);
|
|
921
|
+
// 0 means "keep forever" — skip aggregate cleanup, matching storageInterval: 0 convention
|
|
922
|
+
if (aggregateRetentionMs) await cleanup(getAnalyticsTable(), aggregateRetentionMs);
|
|
702
923
|
},
|
|
703
924
|
Math.min(AGGREGATE_PERIOD / 2, 0x7fffffff)
|
|
704
925
|
).unref();
|
|
@@ -709,6 +930,8 @@ let totalBytesProcessed = 0;
|
|
|
709
930
|
const lastUtilizations = new Map();
|
|
710
931
|
const LOG_ANALYTICS = false; // TODO: Make this a config option if we really want this
|
|
711
932
|
function recordAnalytics(message, worker?) {
|
|
933
|
+
// Skip writes in read-only mode
|
|
934
|
+
if (isReadOnlyMode()) return;
|
|
712
935
|
const report = message.report;
|
|
713
936
|
report.threadId = worker?.threadId || threadId;
|
|
714
937
|
// Add system information stats as well
|
|
@@ -718,7 +941,7 @@ function recordAnalytics(message, worker?) {
|
|
|
718
941
|
}
|
|
719
942
|
}
|
|
720
943
|
report.totalBytesProcessed = totalBytesProcessed;
|
|
721
|
-
if (worker) {
|
|
944
|
+
if (worker && !isBun) {
|
|
722
945
|
report.metrics.push({
|
|
723
946
|
metric: METRIC.UTILIZATION,
|
|
724
947
|
...worker.performance.eventLoopUtilization(lastUtilizations.get(worker)),
|
package/resources/auditStore.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { readKey, writeKey } from 'ordered-binary';
|
|
2
|
-
import { initSync, get as envGet } from '../utility/environment/environmentManager.
|
|
3
|
-
import { AUDIT_STORE_NAME } from '../utility/lmdb/terms.
|
|
2
|
+
import { initSync, get as envGet } from '../utility/environment/environmentManager.ts';
|
|
3
|
+
import { AUDIT_STORE_NAME } from '../utility/lmdb/terms.ts';
|
|
4
4
|
import { CONFIG_PARAMS } from '../utility/hdbTerms.ts';
|
|
5
5
|
import { getWorkerIndex, getWorkerCount } from '../server/threads/manageThreads.js';
|
|
6
|
-
import { convertToMS } from '../utility/common_utils.
|
|
6
|
+
import { convertToMS } from '../utility/common_utils.ts';
|
|
7
7
|
import { PREVIOUS_TIMESTAMP_PLACEHOLDER, LAST_TIMESTAMP_PLACEHOLDER } from './RecordEncoder.ts';
|
|
8
|
-
import * as harperLogger from '../utility/logging/harper_logger.
|
|
8
|
+
import * as harperLogger from '../utility/logging/harper_logger.ts';
|
|
9
9
|
import { getRecordAtTime } from './crdt.ts';
|
|
10
10
|
import { decodeFromDatabase } from './blob.ts';
|
|
11
11
|
import { onStorageReclamation } from '../server/storageReclamation.ts';
|
|
12
12
|
import { RocksDatabase } from '@harperfast/rocksdb-js';
|
|
13
13
|
import { RocksTransactionLogStore } from './RocksTransactionLogStore.ts';
|
|
14
|
+
import { isReadOnlyMode } from './databases.ts';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* This module is responsible for the binary representation of audit records in an efficient form.
|
|
@@ -32,24 +33,29 @@ import { RocksTransactionLogStore } from './RocksTransactionLogStore.ts';
|
|
|
32
33
|
initSync();
|
|
33
34
|
|
|
34
35
|
export type AuditRecord = {
|
|
35
|
-
version
|
|
36
|
-
localTime
|
|
36
|
+
version: number;
|
|
37
|
+
localTime: number; // only to be used by LMDB (from the key)
|
|
37
38
|
type: string;
|
|
38
|
-
encodedRecord
|
|
39
|
-
extendedType
|
|
40
|
-
residencyId
|
|
41
|
-
previousResidencyId
|
|
42
|
-
expiresAt:
|
|
39
|
+
encodedRecord?: Buffer;
|
|
40
|
+
extendedType?: number;
|
|
41
|
+
residencyId?: number;
|
|
42
|
+
previousResidencyId?: number;
|
|
43
|
+
expiresAt: number | null;
|
|
43
44
|
originatingOperation: string;
|
|
44
|
-
tableId
|
|
45
|
-
recordId
|
|
46
|
-
previousVersion
|
|
45
|
+
tableId?: number;
|
|
46
|
+
recordId?: number;
|
|
47
|
+
previousVersion?: number;
|
|
47
48
|
user?: string;
|
|
48
49
|
nodeId?: number;
|
|
49
|
-
previousNodeId
|
|
50
|
-
previousAdditionalAuditRefs?: Array<{ version
|
|
51
|
-
|
|
50
|
+
previousNodeId: number;
|
|
51
|
+
previousAdditionalAuditRefs?: Array<{ version?: number; nodeId: number }>;
|
|
52
|
+
key?: any;
|
|
53
|
+
encoded?: any;
|
|
54
|
+
size: number;
|
|
55
|
+
getValue?: any;
|
|
56
|
+
getBinaryValue?: any;
|
|
52
57
|
structureVersion?: number;
|
|
58
|
+
endTxn?: boolean;
|
|
53
59
|
getBinaryRecordId?: any;
|
|
54
60
|
};
|
|
55
61
|
|
|
@@ -156,6 +162,8 @@ export function openAuditStore(rootStore) {
|
|
|
156
162
|
}
|
|
157
163
|
});
|
|
158
164
|
function scheduleAuditCleanup(newCleanupDelay?: number): Promise<void> {
|
|
165
|
+
// Skip audit cleanup/purge in read-only mode
|
|
166
|
+
if (isReadOnlyMode()) return;
|
|
159
167
|
if (auditStore instanceof RocksTransactionLogStore) {
|
|
160
168
|
auditStore.rootStore.purgeLogs({
|
|
161
169
|
before: Date.now() - auditRetention / (1 + cleanupPriority * cleanupPriority),
|
|
@@ -269,6 +277,8 @@ export function setAuditRetention(retentionTime, defaultDelay = DEFAULT_AUDIT_CL
|
|
|
269
277
|
* needs are never removed. Returns the names of the purged files. See harper#1115.
|
|
270
278
|
*/
|
|
271
279
|
export function purgeAgedLogs(rootStore: RocksDatabase): string[] {
|
|
280
|
+
// Mirror the read-only guard in scheduleAuditCleanup: never delete log files in read-only mode.
|
|
281
|
+
if (isReadOnlyMode()) return [];
|
|
272
282
|
return rootStore.purgeLogs({ before: Date.now() - auditRetention });
|
|
273
283
|
}
|
|
274
284
|
|
|
@@ -452,7 +462,8 @@ export function createAuditEntry(auditRecord: AuditRecord, start = 0) {
|
|
|
452
462
|
export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined): AuditRecord {
|
|
453
463
|
try {
|
|
454
464
|
const decoder =
|
|
455
|
-
buffer
|
|
465
|
+
(buffer as any).decoder ||
|
|
466
|
+
((buffer as any).decoder = new Decoder(buffer.buffer, buffer.byteOffset, buffer.byteLength));
|
|
456
467
|
decoder.position = start;
|
|
457
468
|
let previousVersion;
|
|
458
469
|
if (buffer[decoder.position] == 66) {
|
|
@@ -575,7 +586,7 @@ export function readAuditEntry(buffer: Uint8Array, start = 0, end = undefined):
|
|
|
575
586
|
expiresAt,
|
|
576
587
|
originatingOperation,
|
|
577
588
|
previousAdditionalAuditRefs,
|
|
578
|
-
};
|
|
589
|
+
} as any;
|
|
579
590
|
} catch (error) {
|
|
580
591
|
harperLogger.error('Reading audit entry error', error, buffer);
|
|
581
592
|
return createCorruptAuditSentinel(buffer, start, end);
|