@harperfast/harper-pro 5.0.25 → 5.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analytics/profile.ts +4 -0
- package/core/AGENTS.md +92 -6
- package/core/DESIGN.md +24 -0
- package/core/README.md +11 -10
- package/core/agent/agent.ts +203 -0
- package/core/agent/loop.ts +205 -0
- package/core/agent/operations.ts +148 -0
- package/core/agent/session.ts +187 -0
- package/core/agent/tools/fsTools.ts +276 -0
- package/core/agent/tools/httpFetchTool.ts +112 -0
- package/core/agent/tools/scheduleTool.ts +68 -0
- package/core/agent/toolset.ts +43 -0
- package/core/agent/types.ts +85 -0
- package/core/benchmarks/hnsw-search.js +157 -0
- package/core/benchmarks/ycsb/README.md +144 -0
- package/core/benchmarks/ycsb/analyze-profile.mts +120 -0
- package/core/benchmarks/ycsb/app/config.yaml +3 -0
- package/core/benchmarks/ycsb/app/schema.graphql +17 -0
- package/core/benchmarks/ycsb/harness.mts +328 -0
- package/core/benchmarks/ycsb/restClient.mts +120 -0
- package/core/benchmarks/ycsb/run-single-node.mts +97 -0
- package/core/benchmarks/ycsb/to-benchmark-json.mts +58 -0
- package/core/benchmarks/ycsb/workload.mts +499 -0
- package/core/benchmarks/ycsb/workload.test.mts +174 -0
- package/core/bin/{BinObjects.js → BinObjects.ts} +4 -5
- package/core/bin/cliCredentials.ts +133 -0
- package/core/bin/cliOperations.ts +339 -0
- package/core/bin/copyDb.ts +10 -10
- package/core/bin/deployRenderer.ts +196 -0
- package/core/bin/{harper.js → harper.ts} +48 -24
- package/core/bin/{install.js → install.ts} +3 -3
- package/core/bin/lite.ts +2 -0
- package/core/bin/login.ts +168 -0
- package/core/bin/logout.ts +11 -0
- package/core/bin/mcp/client.ts +407 -0
- package/core/bin/mcp/doctor.ts +189 -0
- package/core/bin/mcp/index.ts +80 -0
- package/core/bin/mcp/options.ts +122 -0
- package/core/bin/mcp/printConfig.ts +89 -0
- package/core/bin/multipartBuilder.ts +74 -0
- package/core/bin/{restart.js → restart.ts} +31 -32
- package/core/bin/{run.js → run.ts} +57 -46
- package/core/bin/sseConsumer.ts +126 -0
- package/core/bin/{status.js → status.ts} +10 -10
- package/core/bin/stop.ts +21 -0
- package/core/bin/upgrade.js +6 -6
- package/core/components/Application.ts +144 -18
- package/core/components/ApplicationScope.ts +2 -2
- package/core/components/ComponentV1.ts +2 -2
- package/core/components/EntryHandler.ts +159 -9
- package/core/components/OptionsWatcher.ts +75 -11
- package/core/components/Scope.ts +125 -15
- package/core/components/anthropic/index.ts +547 -0
- package/core/components/bedrock/index.ts +823 -0
- package/core/components/componentLoader.ts +63 -32
- package/core/components/deployLifecycle.ts +161 -0
- package/core/components/deploymentOperations.ts +173 -0
- package/core/components/deploymentRecorder.ts +402 -0
- package/core/components/deriveURLPath.ts +4 -4
- package/core/components/mcp/adapters/fastify.ts +87 -0
- package/core/components/mcp/adapters/harperHttp.ts +103 -0
- package/core/components/mcp/audit.ts +75 -0
- package/core/components/mcp/index.ts +134 -0
- package/core/components/mcp/jsonrpc.ts +134 -0
- package/core/components/mcp/lifecycle.ts +105 -0
- package/core/components/mcp/listChanged.ts +270 -0
- package/core/components/mcp/rateLimit.ts +217 -0
- package/core/components/mcp/resources.ts +593 -0
- package/core/components/mcp/session.ts +151 -0
- package/core/components/mcp/sessionRegistry.ts +140 -0
- package/core/components/mcp/toolRegistry.ts +292 -0
- package/core/components/mcp/tools/application.ts +603 -0
- package/core/components/mcp/tools/operations.ts +283 -0
- package/core/components/mcp/tools/schemas/derive.ts +256 -0
- package/core/components/mcp/tools/schemas/operations.ts +245 -0
- package/core/components/mcp/transport.ts +517 -0
- package/core/components/ollama/index.ts +316 -0
- package/core/components/openai/index.ts +563 -0
- package/core/components/operations.js +211 -60
- package/core/components/operationsValidation.js +3 -3
- package/core/components/packageComponent.ts +97 -29
- package/core/components/requestRestart.ts +17 -2
- package/core/components/status/crossThread.ts +14 -5
- package/core/components/status/errors.ts +1 -1
- package/core/config/RootConfigWatcher.ts +56 -2
- package/core/config/configUtils.js +29 -8
- package/core/config/harperConfigEnvVars.ts +1 -1
- package/core/dataLayer/{CreateAttributeObject.js → CreateAttributeObject.ts} +4 -3
- package/core/dataLayer/{CreateTableObject.js → CreateTableObject.ts} +2 -1
- package/core/dataLayer/{DataLayerObjects.js → DataLayerObjects.ts} +17 -9
- package/core/dataLayer/{DeleteBeforeObject.js → DeleteBeforeObject.ts} +2 -1
- package/core/dataLayer/{DeleteObject.js → DeleteObject.ts} +3 -2
- package/core/dataLayer/{DropAttributeObject.js → DropAttributeObject.ts} +2 -1
- package/core/dataLayer/{GetBackupObject.js → GetBackupObject.ts} +3 -2
- package/core/dataLayer/{InsertObject.js → InsertObject.ts} +3 -2
- package/core/dataLayer/{ReadAuditLogObject.js → ReadAuditLogObject.ts} +3 -2
- package/core/dataLayer/{SQLSearch.js → SQLSearch.ts} +97 -43
- package/core/dataLayer/{SearchByConditionsObject.js → SearchByConditionsObject.ts} +5 -6
- package/core/dataLayer/{SearchByHashObject.js → SearchByHashObject.ts} +2 -1
- package/core/dataLayer/{SearchObject.js → SearchObject.ts} +2 -1
- package/core/dataLayer/{SqlSearchObject.js → SqlSearchObject.ts} +2 -1
- package/core/dataLayer/{UpdateObject.js → UpdateObject.ts} +3 -2
- package/core/dataLayer/{UpsertObject.js → UpsertObject.ts} +3 -2
- package/core/dataLayer/{bulkLoad.js → bulkLoad.ts} +40 -49
- package/core/dataLayer/{delete.js → delete.ts} +21 -26
- package/core/dataLayer/{export.js → export.ts} +22 -26
- package/core/dataLayer/{getBackup.js → getBackup.ts} +7 -9
- package/core/dataLayer/harperBridge/BridgeMethods.ts +102 -0
- package/core/dataLayer/harperBridge/ResourceBridge.ts +27 -26
- package/core/dataLayer/harperBridge/TableSizeObject.ts +1 -0
- package/core/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/core/dataLayer/harperBridge/{harperBridge.js → harperBridge.ts} +3 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +8 -6
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +6 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +5 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +6 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +5 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +3 -2
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +10 -8
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +4 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +6 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +2 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +3 -2
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +5 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +6 -3
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.ts +1 -1
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/core/dataLayer/{hdbInfoController.js → hdbInfoController.ts} +20 -26
- package/core/dataLayer/{insert.js → insert.ts} +24 -24
- package/core/dataLayer/{readAuditLog.js → readAuditLog.ts} +8 -10
- package/core/dataLayer/{schema.js → schema.ts} +32 -44
- package/core/dataLayer/{schemaDescribe.js → schemaDescribe.ts} +23 -26
- package/core/dataLayer/{search.js → search.ts} +9 -15
- package/core/dataLayer/{transaction.js → transaction.ts} +2 -5
- package/core/dataLayer/{update.js → update.ts} +19 -22
- package/core/index.ts +5 -0
- package/core/json/systemSchema.json +65 -0
- package/core/launchServiceScripts/utility/checkNodeVersion.js +2 -0
- package/core/package-lock.json +9051 -4318
- package/core/resources/DESIGN.md +98 -0
- package/core/resources/DatabaseTransaction.ts +58 -30
- package/core/resources/ErrorResource.ts +2 -1
- package/core/resources/LMDBTransaction.ts +38 -29
- package/core/resources/RecordEncoder.ts +12 -4
- package/core/resources/RequestTarget.ts +2 -0
- package/core/resources/Resource.ts +89 -56
- package/core/resources/ResourceInterface.ts +44 -21
- package/core/resources/Resources.ts +8 -8
- package/core/resources/RocksIndexStore.ts +3 -0
- package/core/resources/RocksTransactionLogStore.ts +47 -28
- package/core/resources/Table.ts +386 -214
- package/core/resources/analytics/metadata.ts +1 -0
- package/core/resources/analytics/read.ts +24 -6
- package/core/resources/analytics/write.ts +240 -17
- package/core/resources/auditStore.ts +28 -19
- package/core/resources/blob.ts +53 -53
- package/core/resources/dataLoader.ts +4 -4
- package/core/resources/databases.ts +190 -71
- package/core/resources/graphql.ts +227 -164
- package/core/resources/indexes/HierarchicalNavigableSmallWorld.ts +294 -65
- package/core/resources/indexes/vector.ts +17 -0
- package/core/resources/loadEnv.ts +21 -17
- package/core/resources/login.ts +5 -3
- package/core/resources/models/Models.ts +304 -0
- package/core/resources/models/TestBackend.ts +83 -0
- package/core/resources/models/agentLoop.ts +895 -0
- package/core/resources/models/analyticsTable.ts +199 -0
- package/core/resources/models/backendHelpers.ts +116 -0
- package/core/resources/models/backendRegistry.ts +66 -0
- package/core/resources/models/bootstrap.ts +135 -0
- package/core/resources/models/embedHook.ts +138 -0
- package/core/resources/models/types.ts +296 -0
- package/core/resources/replayLogs.ts +15 -7
- package/core/resources/roles.ts +62 -67
- package/core/resources/search.ts +355 -135
- package/core/resources/tracked.ts +8 -8
- package/core/resources/transaction.ts +8 -8
- package/core/resources/transactionBroadcast.ts +3 -3
- package/core/security/auth.ts +35 -26
- package/core/security/certificateVerification/crlVerification.ts +11 -4
- package/core/security/{cryptoHash.js → cryptoHash.ts} +3 -8
- package/core/security/data_objects/{PermissionAttributeResponseObject.js → PermissionAttributeResponseObject.ts} +4 -4
- package/core/security/data_objects/{PermissionResponseObject.js → PermissionResponseObject.ts} +12 -11
- package/core/security/data_objects/{PermissionTableResponseObject.js → PermissionTableResponseObject.ts} +6 -4
- package/core/security/{fastifyAuth.js → fastifyAuth.ts} +93 -20
- package/core/security/impersonation.ts +3 -3
- package/core/security/jsLoader.ts +22 -8
- package/core/security/{keys.js → keys.ts} +113 -121
- package/core/security/permissionsTranslator.js +2 -2
- package/core/security/{role.js → role.ts} +26 -33
- package/core/security/tokenAuthentication.ts +34 -7
- package/core/security/user.ts +26 -22
- package/core/server/DESIGN.md +139 -0
- package/core/server/DurableSubscriptionsSession.ts +67 -50
- package/core/server/REST.ts +120 -107
- package/core/server/Server.ts +31 -12
- package/core/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/core/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/core/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/core/server/fastifyRoutes.ts +37 -33
- package/core/server/graphqlQuerying.ts +6 -5
- package/core/server/http.ts +517 -26
- package/core/server/itc/serverHandlers.js +75 -14
- package/core/server/jobs/{JobObject.js → JobObject.ts} +13 -6
- package/core/server/jobs/{jobProcess.js → jobProcess.ts} +20 -16
- package/core/server/jobs/{jobRunner.js → jobRunner.ts} +20 -21
- package/core/server/jobs/{jobs.js → jobs.ts} +41 -44
- package/core/server/loadRootComponents.js +1 -1
- package/core/server/middlewareChain.ts +270 -0
- package/core/server/mqtt.ts +35 -26
- package/core/server/nodeName.ts +2 -1
- package/core/server/operationsServer.ts +85 -10
- package/core/server/serverHelpers/Headers.ts +10 -8
- package/core/server/serverHelpers/JSONStream.ts +15 -5
- package/core/server/serverHelpers/Request.ts +370 -13
- package/core/server/serverHelpers/contentTypes.ts +42 -11
- package/core/server/serverHelpers/multipartParser.ts +152 -0
- package/core/server/serverHelpers/progressEmitter.ts +110 -0
- package/core/server/serverHelpers/serverHandlers.js +43 -7
- package/core/server/serverHelpers/serverUtilities.ts +40 -30
- package/core/server/static.ts +9 -6
- package/core/server/status/index.ts +2 -2
- package/core/server/storageReclamation.ts +39 -2
- package/core/server/threads/itc.js +7 -4
- package/core/server/threads/manageThreads.js +100 -26
- package/core/server/threads/socketRouter.ts +12 -275
- package/core/server/threads/threadServer.js +345 -105
- package/core/server/threads/workerProcessGuard.ts +93 -0
- package/core/server/throttle.ts +18 -0
- package/core/sqlTranslator/{SelectValidator.js → SelectValidator.ts} +41 -49
- package/core/sqlTranslator/{alasqlFunctionImporter.js → alasqlFunctionImporter.ts} +5 -5
- package/core/sqlTranslator/{deleteTranslator.js → deleteTranslator.ts} +13 -18
- package/core/sqlTranslator/{index.js → index.ts} +30 -33
- package/core/sqlTranslator/{sql_statement_bucket.js → sql_statement_bucket.ts} +49 -20
- package/core/static/README.md +10 -9
- package/core/system/000004.log +0 -0
- package/core/system/CURRENT +1 -0
- package/core/system/IDENTITY +1 -0
- package/core/system/LOCK +0 -0
- package/core/system/LOG +1351 -0
- package/core/system/MANIFEST-000005 +0 -0
- package/core/system/OPTIONS-000013 +607 -0
- package/core/system/OPTIONS-000015 +734 -0
- package/core/upgrade/{UpgradeObjects.js → UpgradeObjects.ts} +3 -6
- package/core/upgrade/directives/5-2-0.ts +49 -0
- package/core/upgrade/directives/{directivesController.js → directivesController.ts} +16 -16
- package/core/upgrade/{directivesManager.js → directivesManager.ts} +7 -11
- package/core/upgrade/{upgradePrompt.js → upgradePrompt.ts} +8 -14
- package/core/upgrade/{upgradeUtilities.js → upgradeUtilities.ts} +3 -7
- package/core/utility/{OperationFunctionCaller.js → OperationFunctionCaller.ts} +7 -7
- package/core/utility/{assignCmdEnvVariables.js → assignCmdEnvVariables.ts} +6 -8
- package/core/utility/{common_utils.js → common_utils.ts} +113 -139
- package/core/utility/environment/{environmentManager.js → environmentManager.ts} +34 -33
- package/core/utility/environment/systemInformation.ts +18 -4
- package/core/utility/errors/{commonErrors.js → commonErrors.ts} +9 -9
- package/core/utility/errors/{hdbError.js → hdbError.ts} +39 -45
- package/core/utility/expandEnvVar.ts +110 -0
- package/core/utility/functions/geo.js +2 -2
- package/core/utility/functions/sql/alaSQLExtension.js +1 -1
- package/core/utility/globalSchema.ts +30 -0
- package/core/utility/hdbTerms.ts +56 -0
- package/core/utility/install/checkJWTTokensExist.js +1 -1
- package/core/utility/install/{installer.js → installer.ts} +58 -59
- package/core/utility/installation.ts +2 -2
- package/core/utility/lmdb/{DBIDefinition.js → DBIDefinition.ts} +4 -1
- package/core/utility/lmdb/{DeleteRecordsResponseObject.js → DeleteRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/{InsertRecordsResponseObject.js → InsertRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/OpenDBIObject.ts +43 -0
- package/core/utility/lmdb/{OpenEnvironmentObject.js → OpenEnvironmentObject.ts} +19 -6
- package/core/utility/lmdb/{UpdateRecordsResponseObject.js → UpdateRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/{UpsertRecordsResponseObject.js → UpsertRecordsResponseObject.ts} +2 -1
- package/core/utility/lmdb/{cleanLMDBMap.js → cleanLMDBMap.ts} +5 -5
- package/core/utility/lmdb/{commonUtility.js → commonUtility.ts} +13 -21
- package/core/utility/lmdb/{deleteUtility.js → deleteUtility.ts} +8 -12
- package/core/utility/lmdb/{environmentUtility.js → environmentUtility.ts} +43 -52
- package/core/utility/lmdb/{searchCursorFunctions.js → searchCursorFunctions.ts} +12 -26
- package/core/utility/lmdb/{searchUtility.js → searchUtility.ts} +75 -64
- package/core/utility/lmdb/{terms.js → terms.ts} +10 -23
- package/core/utility/lmdb/{writeUtility.js → writeUtility.ts} +37 -22
- package/core/utility/logging/{harper_logger.js → harper_logger.ts} +136 -89
- package/core/utility/logging/{logRotator.js → logRotator.ts} +13 -13
- package/core/utility/logging/logger.ts +1 -1
- package/core/utility/logging/{readLog.js → readLog.ts} +19 -19
- package/core/utility/logging/{transactionLog.js → transactionLog.ts} +10 -14
- package/core/utility/{mount_hdb.js → mount_hdb.ts} +15 -16
- package/core/utility/{npmUtilities.js → npmUtilities.ts} +14 -17
- package/core/utility/{operation_authorization.js → operation_authorization.ts} +173 -124
- package/core/utility/packageUtils.js +7 -16
- package/core/utility/password.ts +1 -1
- package/core/utility/processManagement/processManagement.js +2 -2
- package/core/utility/processManagement/servicesConfig.js +1 -1
- package/core/utility/{signalling.js → signalling.ts} +6 -11
- package/core/utility/watcherFallback.ts +74 -0
- package/core/validation/analyticsValidator.ts +43 -0
- package/core/validation/{bulkDeleteValidator.js → bulkDeleteValidator.ts} +5 -5
- package/core/validation/{check_permissions.js → check_permissions.ts} +3 -3
- package/core/validation/{common_validators.js → common_validators.ts} +12 -24
- package/core/validation/{configValidator.js → configValidator.ts} +114 -18
- package/core/validation/{deleteValidator.js → deleteValidator.ts} +5 -5
- package/core/validation/{fileLoadValidator.js → fileLoadValidator.ts} +12 -19
- package/core/validation/{insertValidator.js → insertValidator.ts} +5 -5
- package/core/validation/{installValidator.js → installValidator.ts} +8 -8
- package/core/validation/{readLogValidator.js → readLogValidator.ts} +10 -10
- package/core/validation/{role_validation.js → role_validation.ts} +26 -32
- package/core/validation/{schemaMetadataValidator.js → schemaMetadataValidator.ts} +5 -11
- package/core/validation/{searchValidator.js → searchValidator.ts} +12 -11
- package/core/validation/statusValidator.ts +1 -1
- package/core/validation/{transactionLogValidator.js → transactionLogValidator.ts} +4 -9
- package/core/validation/{user_validation.js → user_validation.ts} +4 -10
- package/core/validation/{validationWrapper.js → validationWrapper.ts} +3 -9
- package/dist/analytics/profile.js +4 -0
- package/dist/analytics/profile.js.map +1 -1
- package/dist/cloneNode/cloneNode.js +224 -12
- package/dist/cloneNode/cloneNode.js.map +1 -1
- package/dist/core/agent/agent.js +175 -0
- package/dist/core/agent/agent.js.map +1 -0
- package/dist/core/agent/loop.js +176 -0
- package/dist/core/agent/loop.js.map +1 -0
- package/dist/core/agent/operations.js +137 -0
- package/dist/core/agent/operations.js.map +1 -0
- package/dist/core/agent/session.js +182 -0
- package/dist/core/agent/session.js.map +1 -0
- package/dist/core/agent/tools/fsTools.js +286 -0
- package/dist/core/agent/tools/fsTools.js.map +1 -0
- package/dist/core/agent/tools/httpFetchTool.js +116 -0
- package/dist/core/agent/tools/httpFetchTool.js.map +1 -0
- package/dist/core/agent/tools/scheduleTool.js +54 -0
- package/dist/core/agent/tools/scheduleTool.js.map +1 -0
- package/dist/core/agent/toolset.js +33 -0
- package/dist/core/agent/toolset.js.map +1 -0
- package/dist/core/agent/types.js +10 -0
- package/dist/core/agent/types.js.map +1 -0
- package/dist/core/bin/BinObjects.js +6 -3
- package/dist/core/bin/BinObjects.js.map +1 -1
- package/dist/core/bin/cliCredentials.js +130 -0
- package/dist/core/bin/cliCredentials.js.map +1 -0
- package/dist/core/bin/cliOperations.js +254 -40
- package/dist/core/bin/cliOperations.js.map +1 -1
- package/dist/core/bin/copyDb.js +16 -16
- package/dist/core/bin/copyDb.js.map +1 -1
- package/dist/core/bin/deployRenderer.js +185 -0
- package/dist/core/bin/deployRenderer.js.map +1 -0
- package/dist/core/bin/harper.js +92 -31
- package/dist/core/bin/harper.js.map +1 -1
- package/dist/core/bin/install.js +41 -4
- package/dist/core/bin/install.js.map +1 -1
- package/dist/core/bin/lite.js +3 -4
- package/dist/core/bin/lite.js.map +1 -1
- package/dist/core/bin/login.js +158 -0
- package/dist/core/bin/login.js.map +1 -0
- package/dist/core/bin/logout.js +16 -0
- package/dist/core/bin/logout.js.map +1 -0
- package/dist/core/bin/mcp/client.js +395 -0
- package/dist/core/bin/mcp/client.js.map +1 -0
- package/dist/core/bin/mcp/doctor.js +193 -0
- package/dist/core/bin/mcp/doctor.js.map +1 -0
- package/dist/core/bin/mcp/index.js +81 -0
- package/dist/core/bin/mcp/index.js.map +1 -0
- package/dist/core/bin/mcp/options.js +113 -0
- package/dist/core/bin/mcp/options.js.map +1 -0
- package/dist/core/bin/mcp/printConfig.js +85 -0
- package/dist/core/bin/mcp/printConfig.js.map +1 -0
- package/dist/core/bin/multipartBuilder.js +55 -0
- package/dist/core/bin/multipartBuilder.js.map +1 -0
- package/dist/core/bin/restart.js +85 -48
- package/dist/core/bin/restart.js.map +1 -1
- package/dist/core/bin/run.js +123 -77
- package/dist/core/bin/run.js.map +1 -1
- package/dist/core/bin/sseConsumer.js +127 -0
- package/dist/core/bin/sseConsumer.js.map +1 -0
- package/dist/core/bin/status.js +48 -11
- package/dist/core/bin/status.js.map +1 -1
- package/dist/core/bin/stop.js +44 -7
- package/dist/core/bin/stop.js.map +1 -1
- package/dist/core/bin/upgrade.js +6 -6
- package/dist/core/components/Application.js +134 -28
- package/dist/core/components/Application.js.map +1 -1
- package/dist/core/components/ApplicationScope.js +2 -2
- package/dist/core/components/ComponentV1.js +5 -5
- package/dist/core/components/ComponentV1.js.map +1 -1
- package/dist/core/components/EntryHandler.js +153 -13
- package/dist/core/components/EntryHandler.js.map +1 -1
- package/dist/core/components/OptionsWatcher.js +72 -10
- package/dist/core/components/OptionsWatcher.js.map +1 -1
- package/dist/core/components/Scope.js +105 -9
- package/dist/core/components/Scope.js.map +1 -1
- package/dist/core/components/anthropic/index.js +428 -0
- package/dist/core/components/anthropic/index.js.map +1 -0
- package/dist/core/components/bedrock/index.js +734 -0
- package/dist/core/components/bedrock/index.js.map +1 -0
- package/dist/core/components/componentLoader.js +63 -38
- package/dist/core/components/componentLoader.js.map +1 -1
- package/dist/core/components/deployLifecycle.js +156 -0
- package/dist/core/components/deployLifecycle.js.map +1 -0
- package/dist/core/components/deploymentOperations.js +185 -0
- package/dist/core/components/deploymentOperations.js.map +1 -0
- package/dist/core/components/deploymentRecorder.js +401 -0
- package/dist/core/components/deploymentRecorder.js.map +1 -0
- package/dist/core/components/deriveURLPath.js +2 -2
- package/dist/core/components/deriveURLPath.js.map +1 -1
- package/dist/core/components/mcp/adapters/fastify.js +66 -0
- package/dist/core/components/mcp/adapters/fastify.js.map +1 -0
- package/dist/core/components/mcp/adapters/harperHttp.js +78 -0
- package/dist/core/components/mcp/adapters/harperHttp.js.map +1 -0
- package/dist/core/components/mcp/audit.js +73 -0
- package/dist/core/components/mcp/audit.js.map +1 -0
- package/dist/core/components/mcp/index.js +109 -0
- package/dist/core/components/mcp/index.js.map +1 -0
- package/dist/core/components/mcp/jsonrpc.js +93 -0
- package/dist/core/components/mcp/jsonrpc.js.map +1 -0
- package/dist/core/components/mcp/lifecycle.js +79 -0
- package/dist/core/components/mcp/lifecycle.js.map +1 -0
- package/dist/core/components/mcp/listChanged.js +257 -0
- package/dist/core/components/mcp/listChanged.js.map +1 -0
- package/dist/core/components/mcp/rateLimit.js +226 -0
- package/dist/core/components/mcp/rateLimit.js.map +1 -0
- package/dist/core/components/mcp/resources.js +515 -0
- package/dist/core/components/mcp/resources.js.map +1 -0
- package/dist/core/components/mcp/session.js +170 -0
- package/dist/core/components/mcp/session.js.map +1 -0
- package/dist/core/components/mcp/sessionRegistry.js +124 -0
- package/dist/core/components/mcp/sessionRegistry.js.map +1 -0
- package/dist/core/components/mcp/toolRegistry.js +176 -0
- package/dist/core/components/mcp/toolRegistry.js.map +1 -0
- package/dist/core/components/mcp/tools/application.js +549 -0
- package/dist/core/components/mcp/tools/application.js.map +1 -0
- package/dist/core/components/mcp/tools/operations.js +303 -0
- package/dist/core/components/mcp/tools/operations.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/derive.js +216 -0
- package/dist/core/components/mcp/tools/schemas/derive.js.map +1 -0
- package/dist/core/components/mcp/tools/schemas/operations.js +243 -0
- package/dist/core/components/mcp/tools/schemas/operations.js.map +1 -0
- package/dist/core/components/mcp/transport.js +467 -0
- package/dist/core/components/mcp/transport.js.map +1 -0
- package/dist/core/components/ollama/index.js +239 -0
- package/dist/core/components/ollama/index.js.map +1 -0
- package/dist/core/components/openai/index.js +475 -0
- package/dist/core/components/openai/index.js.map +1 -0
- package/dist/core/components/operations.js +198 -52
- package/dist/core/components/operations.js.map +1 -1
- package/dist/core/components/operationsValidation.js +3 -3
- package/dist/core/components/packageComponent.js +87 -26
- package/dist/core/components/packageComponent.js.map +1 -1
- package/dist/core/components/requestRestart.js +12 -1
- package/dist/core/components/requestRestart.js.map +1 -1
- package/dist/core/components/status/crossThread.js +12 -5
- package/dist/core/components/status/crossThread.js.map +1 -1
- package/dist/core/components/status/errors.js +7 -7
- package/dist/core/config/RootConfigWatcher.js +52 -1
- package/dist/core/config/RootConfigWatcher.js.map +1 -1
- package/dist/core/config/configUtils.js +31 -8
- package/dist/core/config/configUtils.js.map +1 -1
- package/dist/core/config/harperConfigEnvVars.js +1 -1
- package/dist/core/config/harperConfigEnvVars.js.map +1 -1
- package/dist/core/dataLayer/CreateAttributeObject.js +4 -3
- package/dist/core/dataLayer/CreateAttributeObject.js.map +1 -1
- package/dist/core/dataLayer/CreateTableObject.js +2 -1
- package/dist/core/dataLayer/CreateTableObject.js.map +1 -1
- package/dist/core/dataLayer/DataLayerObjects.js +19 -5
- package/dist/core/dataLayer/DataLayerObjects.js.map +1 -1
- package/dist/core/dataLayer/DeleteBeforeObject.js +2 -1
- package/dist/core/dataLayer/DeleteBeforeObject.js.map +1 -1
- package/dist/core/dataLayer/DeleteObject.js +4 -3
- package/dist/core/dataLayer/DeleteObject.js.map +1 -1
- package/dist/core/dataLayer/DropAttributeObject.js +2 -1
- package/dist/core/dataLayer/DropAttributeObject.js.map +1 -1
- package/dist/core/dataLayer/GetBackupObject.js +4 -3
- package/dist/core/dataLayer/GetBackupObject.js.map +1 -1
- package/dist/core/dataLayer/InsertObject.js +4 -3
- package/dist/core/dataLayer/InsertObject.js.map +1 -1
- package/dist/core/dataLayer/ReadAuditLogObject.js +4 -3
- package/dist/core/dataLayer/ReadAuditLogObject.js.map +1 -1
- package/dist/core/dataLayer/SQLSearch.js +140 -78
- package/dist/core/dataLayer/SQLSearch.js.map +1 -1
- package/dist/core/dataLayer/SearchByConditionsObject.js +5 -7
- package/dist/core/dataLayer/SearchByConditionsObject.js.map +1 -1
- package/dist/core/dataLayer/SearchByHashObject.js +2 -1
- package/dist/core/dataLayer/SearchByHashObject.js.map +1 -1
- package/dist/core/dataLayer/SearchObject.js +2 -1
- package/dist/core/dataLayer/SearchObject.js.map +1 -1
- package/dist/core/dataLayer/SqlSearchObject.js +2 -1
- package/dist/core/dataLayer/SqlSearchObject.js.map +1 -1
- package/dist/core/dataLayer/UpdateObject.js +4 -3
- package/dist/core/dataLayer/UpdateObject.js.map +1 -1
- package/dist/core/dataLayer/UpsertObject.js +4 -3
- package/dist/core/dataLayer/UpsertObject.js.map +1 -1
- package/dist/core/dataLayer/bulkLoad.js +122 -88
- package/dist/core/dataLayer/bulkLoad.js.map +1 -1
- package/dist/core/dataLayer/delete.js +74 -39
- package/dist/core/dataLayer/delete.js.map +1 -1
- package/dist/core/dataLayer/export.js +90 -55
- package/dist/core/dataLayer/export.js.map +1 -1
- package/dist/core/dataLayer/getBackup.js +43 -11
- package/dist/core/dataLayer/getBackup.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/BridgeMethods.js +41 -20
- package/dist/core/dataLayer/harperBridge/BridgeMethods.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/ResourceBridge.js +26 -25
- package/dist/core/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/TableSizeObject.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +4 -4
- package/dist/core/dataLayer/harperBridge/harperBridge.js +38 -4
- package/dist/core/dataLayer/harperBridge/harperBridge.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +7 -6
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +5 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +3 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +8 -8
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +3 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +3 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +5 -3
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +2 -2
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +4 -4
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js.map +1 -1
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +5 -5
- package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +4 -4
- package/dist/core/dataLayer/hdbInfoController.js +66 -31
- package/dist/core/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/core/dataLayer/insert.js +63 -28
- package/dist/core/dataLayer/insert.js.map +1 -1
- package/dist/core/dataLayer/readAuditLog.js +45 -13
- package/dist/core/dataLayer/readAuditLog.js.map +1 -1
- package/dist/core/dataLayer/schema.js +124 -89
- package/dist/core/dataLayer/schema.js.map +1 -1
- package/dist/core/dataLayer/schemaDescribe.js +78 -41
- package/dist/core/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/core/dataLayer/search.js +12 -13
- package/dist/core/dataLayer/search.js.map +1 -1
- package/dist/core/dataLayer/transaction.js +3 -4
- package/dist/core/dataLayer/transaction.js.map +1 -1
- package/dist/core/dataLayer/update.js +53 -18
- package/dist/core/dataLayer/update.js.map +1 -1
- package/dist/core/globals.js +1 -0
- package/dist/core/globals.js.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/json/systemSchema.json +65 -0
- package/dist/core/launchServiceScripts/utility/checkNodeVersion.js +3 -0
- package/dist/core/launchServiceScripts/utility/checkNodeVersion.js.map +1 -1
- package/dist/core/resources/DatabaseTransaction.js +39 -15
- package/dist/core/resources/DatabaseTransaction.js.map +1 -1
- package/dist/core/resources/ErrorResource.js +3 -1
- package/dist/core/resources/ErrorResource.js.map +1 -1
- package/dist/core/resources/LMDBTransaction.js +18 -7
- package/dist/core/resources/LMDBTransaction.js.map +1 -1
- package/dist/core/resources/RecordEncoder.js +5 -2
- package/dist/core/resources/RecordEncoder.js.map +1 -1
- package/dist/core/resources/RequestTarget.js.map +1 -1
- package/dist/core/resources/Resource.js +37 -10
- package/dist/core/resources/Resource.js.map +1 -1
- package/dist/core/resources/ResourceInterface.js +20 -0
- package/dist/core/resources/ResourceInterface.js.map +1 -1
- package/dist/core/resources/Resources.js +7 -6
- package/dist/core/resources/Resources.js.map +1 -1
- package/dist/core/resources/RocksIndexStore.js +3 -0
- package/dist/core/resources/RocksIndexStore.js.map +1 -1
- package/dist/core/resources/RocksTransactionLogStore.js +46 -27
- package/dist/core/resources/RocksTransactionLogStore.js.map +1 -1
- package/dist/core/resources/Table.js +267 -107
- package/dist/core/resources/Table.js.map +1 -1
- package/dist/core/resources/analytics/metadata.js +1 -0
- package/dist/core/resources/analytics/metadata.js.map +1 -1
- package/dist/core/resources/analytics/read.js +16 -5
- package/dist/core/resources/analytics/read.js.map +1 -1
- package/dist/core/resources/analytics/write.js +232 -20
- package/dist/core/resources/analytics/write.js.map +1 -1
- package/dist/core/resources/auditStore.js +13 -8
- package/dist/core/resources/auditStore.js.map +1 -1
- package/dist/core/resources/blob.js +8 -8
- package/dist/core/resources/blob.js.map +1 -1
- package/dist/core/resources/dataLoader.js +13 -13
- package/dist/core/resources/databases.js +160 -52
- package/dist/core/resources/databases.js.map +1 -1
- package/dist/core/resources/graphql.js +224 -174
- package/dist/core/resources/graphql.js.map +1 -1
- package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js +308 -59
- package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/core/resources/indexes/vector.js +14 -0
- package/dist/core/resources/indexes/vector.js.map +1 -1
- package/dist/core/resources/loadEnv.js +21 -18
- package/dist/core/resources/loadEnv.js.map +1 -1
- package/dist/core/resources/login.js +5 -4
- package/dist/core/resources/login.js.map +1 -1
- package/dist/core/resources/models/Models.js +265 -0
- package/dist/core/resources/models/Models.js.map +1 -0
- package/dist/core/resources/models/TestBackend.js +71 -0
- package/dist/core/resources/models/TestBackend.js.map +1 -0
- package/dist/core/resources/models/agentLoop.js +746 -0
- package/dist/core/resources/models/agentLoop.js.map +1 -0
- package/dist/core/resources/models/analyticsTable.js +166 -0
- package/dist/core/resources/models/analyticsTable.js.map +1 -0
- package/dist/core/resources/models/backendHelpers.js +109 -0
- package/dist/core/resources/models/backendHelpers.js.map +1 -0
- package/dist/core/resources/models/backendRegistry.js +54 -0
- package/dist/core/resources/models/backendRegistry.js.map +1 -0
- package/dist/core/resources/models/bootstrap.js +112 -0
- package/dist/core/resources/models/bootstrap.js.map +1 -0
- package/dist/core/resources/models/embedHook.js +127 -0
- package/dist/core/resources/models/embedHook.js.map +1 -0
- package/dist/core/resources/models/types.js +11 -0
- package/dist/core/resources/models/types.js.map +1 -0
- package/dist/core/resources/replayLogs.js +7 -1
- package/dist/core/resources/replayLogs.js.map +1 -1
- package/dist/core/resources/roles.js +67 -71
- package/dist/core/resources/roles.js.map +1 -1
- package/dist/core/resources/search.js +349 -140
- package/dist/core/resources/search.js.map +1 -1
- package/dist/core/resources/tracked.js +14 -14
- package/dist/core/resources/tracked.js.map +1 -1
- package/dist/core/resources/transaction.js +1 -1
- package/dist/core/resources/transaction.js.map +1 -1
- package/dist/core/resources/transactionBroadcast.js.map +1 -1
- package/dist/core/security/auth.js +34 -25
- package/dist/core/security/auth.js.map +1 -1
- package/dist/core/security/certificateVerification/crlVerification.js +7 -1
- package/dist/core/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/core/security/cryptoHash.js +37 -5
- package/dist/core/security/cryptoHash.js.map +1 -1
- package/dist/core/security/data_objects/PermissionAttributeResponseObject.js +4 -1
- package/dist/core/security/data_objects/PermissionAttributeResponseObject.js.map +1 -1
- package/dist/core/security/data_objects/PermissionResponseObject.js +15 -8
- package/dist/core/security/data_objects/PermissionResponseObject.js.map +1 -1
- package/dist/core/security/data_objects/PermissionTableResponseObject.js +6 -1
- package/dist/core/security/data_objects/PermissionTableResponseObject.js.map +1 -1
- package/dist/core/security/fastifyAuth.js +131 -22
- package/dist/core/security/fastifyAuth.js.map +1 -1
- package/dist/core/security/impersonation.js +15 -15
- package/dist/core/security/jsLoader.js +18 -5
- package/dist/core/security/jsLoader.js.map +1 -1
- package/dist/core/security/keys.js +160 -114
- package/dist/core/security/keys.js.map +1 -1
- package/dist/core/security/permissionsTranslator.js +2 -2
- package/dist/core/security/role.js +70 -35
- package/dist/core/security/role.js.map +1 -1
- package/dist/core/security/tokenAuthentication.js +57 -27
- package/dist/core/security/tokenAuthentication.js.map +1 -1
- package/dist/core/security/user.js +74 -38
- package/dist/core/security/user.js.map +1 -1
- package/dist/core/server/DurableSubscriptionsSession.js +71 -55
- package/dist/core/server/DurableSubscriptionsSession.js.map +1 -1
- package/dist/core/server/REST.js +17 -16
- package/dist/core/server/REST.js.map +1 -1
- package/dist/core/server/Server.js +1 -1
- package/dist/core/server/Server.js.map +1 -1
- package/dist/core/server/fastifyRoutes/helpers/getCORSOptions.js +1 -1
- package/dist/core/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +1 -1
- package/dist/core/server/fastifyRoutes/helpers/getServerOptions.js +1 -1
- package/dist/core/server/fastifyRoutes.js +34 -30
- package/dist/core/server/fastifyRoutes.js.map +1 -1
- package/dist/core/server/graphqlQuerying.js +8 -7
- package/dist/core/server/graphqlQuerying.js.map +1 -1
- package/dist/core/server/http.js +523 -47
- package/dist/core/server/http.js.map +1 -1
- package/dist/core/server/itc/serverHandlers.js +66 -15
- package/dist/core/server/itc/serverHandlers.js.map +1 -1
- package/dist/core/server/jobs/JobObject.js +53 -7
- package/dist/core/server/jobs/JobObject.js.map +1 -1
- package/dist/core/server/jobs/jobProcess.js +64 -24
- package/dist/core/server/jobs/jobProcess.js.map +1 -1
- package/dist/core/server/jobs/jobRunner.js +68 -30
- package/dist/core/server/jobs/jobRunner.js.map +1 -1
- package/dist/core/server/jobs/jobs.js +93 -61
- package/dist/core/server/jobs/jobs.js.map +1 -1
- package/dist/core/server/loadRootComponents.js +1 -1
- package/dist/core/server/middlewareChain.js +252 -0
- package/dist/core/server/middlewareChain.js.map +1 -0
- package/dist/core/server/mqtt.js +22 -17
- package/dist/core/server/mqtt.js.map +1 -1
- package/dist/core/server/nodeName.js +44 -13
- package/dist/core/server/nodeName.js.map +1 -1
- package/dist/core/server/operationsServer.js +106 -33
- package/dist/core/server/operationsServer.js.map +1 -1
- package/dist/core/server/serverHelpers/Headers.js +2 -0
- package/dist/core/server/serverHelpers/Headers.js.map +1 -1
- package/dist/core/server/serverHelpers/JSONStream.js +12 -3
- package/dist/core/server/serverHelpers/JSONStream.js.map +1 -1
- package/dist/core/server/serverHelpers/Request.js +370 -9
- package/dist/core/server/serverHelpers/Request.js.map +1 -1
- package/dist/core/server/serverHelpers/contentTypes.js +36 -7
- package/dist/core/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/core/server/serverHelpers/multipartParser.js +142 -0
- package/dist/core/server/serverHelpers/multipartParser.js.map +1 -0
- package/dist/core/server/serverHelpers/progressEmitter.js +103 -0
- package/dist/core/server/serverHelpers/progressEmitter.js.map +1 -0
- package/dist/core/server/serverHelpers/serverHandlers.js +38 -7
- package/dist/core/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/core/server/serverHelpers/serverUtilities.js +97 -93
- package/dist/core/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/core/server/static.js +8 -5
- package/dist/core/server/static.js.map +1 -1
- package/dist/core/server/status/index.js +3 -3
- package/dist/core/server/storageReclamation.js +68 -9
- package/dist/core/server/storageReclamation.js.map +1 -1
- package/dist/core/server/threads/itc.js +7 -4
- package/dist/core/server/threads/itc.js.map +1 -1
- package/dist/core/server/threads/manageThreads.js +110 -26
- package/dist/core/server/threads/manageThreads.js.map +1 -1
- package/dist/core/server/threads/socketRouter.js +8 -271
- package/dist/core/server/threads/socketRouter.js.map +1 -1
- package/dist/core/server/threads/threadServer.js +360 -118
- package/dist/core/server/threads/threadServer.js.map +1 -1
- package/dist/core/server/threads/workerProcessGuard.js +114 -0
- package/dist/core/server/threads/workerProcessGuard.js.map +1 -0
- package/dist/core/server/throttle.js +17 -0
- package/dist/core/server/throttle.js.map +1 -1
- package/dist/core/sqlTranslator/SelectValidator.js +86 -47
- package/dist/core/sqlTranslator/SelectValidator.js.map +1 -1
- package/dist/core/sqlTranslator/alasqlFunctionImporter.js +40 -3
- package/dist/core/sqlTranslator/alasqlFunctionImporter.js.map +1 -1
- package/dist/core/sqlTranslator/deleteTranslator.js +48 -14
- package/dist/core/sqlTranslator/deleteTranslator.js.map +1 -1
- package/dist/core/sqlTranslator/index.js +69 -30
- package/dist/core/sqlTranslator/index.js.map +1 -1
- package/dist/core/sqlTranslator/sql_statement_bucket.js +55 -13
- package/dist/core/sqlTranslator/sql_statement_bucket.js.map +1 -1
- package/dist/core/upgrade/UpgradeObjects.js +37 -4
- package/dist/core/upgrade/UpgradeObjects.js.map +1 -1
- package/dist/core/upgrade/directives/5-2-0.js +77 -0
- package/dist/core/upgrade/directives/5-2-0.js.map +1 -0
- package/dist/core/upgrade/directives/directivesController.js +52 -11
- package/dist/core/upgrade/directives/directivesController.js.map +1 -1
- package/dist/core/upgrade/directivesManager.js +53 -18
- package/dist/core/upgrade/directivesManager.js.map +1 -1
- package/dist/core/upgrade/upgradePrompt.js +65 -30
- package/dist/core/upgrade/upgradePrompt.js.map +1 -1
- package/dist/core/upgrade/upgradeUtilities.js +37 -5
- package/dist/core/upgrade/upgradeUtilities.js.map +1 -1
- package/dist/core/utility/OperationFunctionCaller.js +45 -10
- package/dist/core/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/core/utility/assignCmdEnvVariables.js +8 -4
- package/dist/core/utility/assignCmdEnvVariables.js.map +1 -1
- package/dist/core/utility/common_utils.js +140 -79
- package/dist/core/utility/common_utils.js.map +1 -1
- package/dist/core/utility/environment/environmentManager.js +75 -29
- package/dist/core/utility/environment/environmentManager.js.map +1 -1
- package/dist/core/utility/environment/systemInformation.js +27 -16
- package/dist/core/utility/environment/systemInformation.js.map +1 -1
- package/dist/core/utility/errors/commonErrors.js +49 -18
- package/dist/core/utility/errors/commonErrors.js.map +1 -1
- package/dist/core/utility/errors/hdbError.js +65 -26
- package/dist/core/utility/errors/hdbError.js.map +1 -1
- package/dist/core/utility/expandEnvVar.js +113 -0
- package/dist/core/utility/expandEnvVar.js.map +1 -0
- package/dist/core/utility/functions/geo.js +2 -2
- package/dist/core/utility/functions/sql/alaSQLExtension.js +1 -1
- package/dist/core/utility/globalSchema.js +14 -11
- package/dist/core/utility/globalSchema.js.map +1 -1
- package/dist/core/utility/hdbTerms.js +56 -0
- package/dist/core/utility/hdbTerms.js.map +1 -1
- package/dist/core/utility/install/checkJWTTokensExist.js +1 -1
- package/dist/core/utility/install/installer.js +106 -70
- package/dist/core/utility/install/installer.js.map +1 -1
- package/dist/core/utility/installation.js +3 -3
- package/dist/core/utility/lmdb/DBIDefinition.js +5 -1
- package/dist/core/utility/lmdb/DBIDefinition.js.map +1 -1
- package/dist/core/utility/lmdb/DeleteRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/DeleteRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/InsertRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/InsertRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/OpenDBIObject.js +54 -6
- package/dist/core/utility/lmdb/OpenDBIObject.js.map +1 -1
- package/dist/core/utility/lmdb/OpenEnvironmentObject.js +52 -4
- package/dist/core/utility/lmdb/OpenEnvironmentObject.js.map +1 -1
- package/dist/core/utility/lmdb/UpdateRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/UpdateRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/UpsertRecordsResponseObject.js +2 -1
- package/dist/core/utility/lmdb/UpsertRecordsResponseObject.js.map +1 -1
- package/dist/core/utility/lmdb/cleanLMDBMap.js +44 -7
- package/dist/core/utility/lmdb/cleanLMDBMap.js.map +1 -1
- package/dist/core/utility/lmdb/commonUtility.js +46 -17
- package/dist/core/utility/lmdb/commonUtility.js.map +1 -1
- package/dist/core/utility/lmdb/deleteUtility.js +51 -16
- package/dist/core/utility/lmdb/deleteUtility.js.map +1 -1
- package/dist/core/utility/lmdb/environmentUtility.js +91 -51
- package/dist/core/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/core/utility/lmdb/searchCursorFunctions.js +46 -14
- package/dist/core/utility/lmdb/searchCursorFunctions.js.map +1 -1
- package/dist/core/utility/lmdb/searchUtility.js +91 -55
- package/dist/core/utility/lmdb/searchUtility.js.map +1 -1
- package/dist/core/utility/lmdb/terms.js +12 -22
- package/dist/core/utility/lmdb/terms.js.map +1 -1
- package/dist/core/utility/lmdb/writeUtility.js +61 -28
- package/dist/core/utility/lmdb/writeUtility.js.map +1 -1
- package/dist/core/utility/logging/harper_logger.js +176 -81
- package/dist/core/utility/logging/harper_logger.js.map +1 -1
- package/dist/core/utility/logging/logRotator.js +65 -28
- package/dist/core/utility/logging/logRotator.js.map +1 -1
- package/dist/core/utility/logging/logger.js +4 -4
- package/dist/core/utility/logging/readLog.js +54 -17
- package/dist/core/utility/logging/readLog.js.map +1 -1
- package/dist/core/utility/logging/transactionLog.js +51 -16
- package/dist/core/utility/logging/transactionLog.js.map +1 -1
- package/dist/core/utility/mount_hdb.js +54 -17
- package/dist/core/utility/mount_hdb.js.map +1 -1
- package/dist/core/utility/npmUtilities.js +54 -19
- package/dist/core/utility/npmUtilities.js.map +1 -1
- package/dist/core/utility/operation_authorization.js +135 -86
- package/dist/core/utility/operation_authorization.js.map +1 -1
- package/dist/core/utility/packageUtils.js +7 -17
- package/dist/core/utility/packageUtils.js.map +1 -1
- package/dist/core/utility/password.js +2 -2
- package/dist/core/utility/processManagement/processManagement.js +2 -2
- package/dist/core/utility/processManagement/servicesConfig.js +1 -1
- package/dist/core/utility/signalling.js +51 -16
- package/dist/core/utility/signalling.js.map +1 -1
- package/dist/core/utility/watcherFallback.js +73 -0
- package/dist/core/utility/watcherFallback.js.map +1 -0
- package/dist/core/validation/analyticsValidator.js +79 -0
- package/dist/core/validation/analyticsValidator.js.map +1 -0
- package/dist/core/validation/bulkDeleteValidator.js +49 -11
- package/dist/core/validation/bulkDeleteValidator.js.map +1 -1
- package/dist/core/validation/check_permissions.js +38 -3
- package/dist/core/validation/check_permissions.js.map +1 -1
- package/dist/core/validation/common_validators.js +62 -31
- package/dist/core/validation/common_validators.js.map +1 -1
- package/dist/core/validation/configValidator.js +189 -54
- package/dist/core/validation/configValidator.js.map +1 -1
- package/dist/core/validation/deleteValidator.js +49 -11
- package/dist/core/validation/deleteValidator.js.map +1 -1
- package/dist/core/validation/fileLoadValidator.js +67 -32
- package/dist/core/validation/fileLoadValidator.js.map +1 -1
- package/dist/core/validation/insertValidator.js +48 -10
- package/dist/core/validation/insertValidator.js.map +1 -1
- package/dist/core/validation/installValidator.js +47 -10
- package/dist/core/validation/installValidator.js.map +1 -1
- package/dist/core/validation/readLogValidator.js +60 -22
- package/dist/core/validation/readLogValidator.js.map +1 -1
- package/dist/core/validation/role_validation.js +55 -19
- package/dist/core/validation/role_validation.js.map +1 -1
- package/dist/core/validation/schemaMetadataValidator.js +11 -12
- package/dist/core/validation/schemaMetadataValidator.js.map +1 -1
- package/dist/core/validation/searchValidator.js +82 -43
- package/dist/core/validation/searchValidator.js.map +1 -1
- package/dist/core/validation/transactionLogValidator.js +52 -17
- package/dist/core/validation/transactionLogValidator.js.map +1 -1
- package/dist/core/validation/user_validation.js +38 -6
- package/dist/core/validation/user_validation.js.map +1 -1
- package/dist/core/validation/validationWrapper.js +4 -5
- package/dist/core/validation/validationWrapper.js.map +1 -1
- package/dist/licensing/usageLicensing.js +30 -21
- package/dist/licensing/usageLicensing.js.map +1 -1
- package/dist/replication/knownNodes.js +173 -39
- package/dist/replication/knownNodes.js.map +1 -1
- package/dist/replication/replicationConnection.js +441 -85
- package/dist/replication/replicationConnection.js.map +1 -1
- package/dist/replication/replicator.js +44 -26
- package/dist/replication/replicator.js.map +1 -1
- package/dist/replication/setNode.js +22 -2
- package/dist/replication/setNode.js.map +1 -1
- package/dist/replication/subscriptionManager.js +121 -9
- package/dist/replication/subscriptionManager.js.map +1 -1
- package/dist/security/certificate.js +41 -6
- package/dist/security/certificate.js.map +1 -1
- package/dist/security/sshKeyOperations.js +35 -2
- package/dist/security/sshKeyOperations.js.map +1 -1
- package/licensing/usageLicensing.ts +32 -37
- package/npm-shrinkwrap.json +8994 -4305
- package/package.json +16 -11
- package/replication/DESIGN.md +139 -0
- package/replication/knownNodes.ts +166 -43
- package/replication/replicationConnection.ts +475 -92
- package/replication/replicator.ts +42 -25
- package/replication/setNode.ts +28 -9
- package/replication/subscriptionManager.ts +138 -14
- package/security/certificate.ts +8 -4
- package/security/sshKeyOperations.ts +1 -1
- package/static/defaultConfig.yaml +1 -0
- package/studio/web/assets/{index-CmtPP0YO.js → index-COfIkCT-.js} +5 -5
- package/studio/web/assets/index-COfIkCT-.js.map +1 -0
- package/studio/web/assets/{index.lazy-C8jvGtlu.js → index.lazy-CIvl7Fj9.js} +2 -2
- package/studio/web/assets/{index.lazy-C8jvGtlu.js.map → index.lazy-CIvl7Fj9.js.map} +1 -1
- package/studio/web/assets/{profile-O0DYlJUv.js → profile-B2ZVB--r.js} +2 -2
- package/studio/web/assets/{profile-O0DYlJUv.js.map → profile-B2ZVB--r.js.map} +1 -1
- package/studio/web/assets/{status-BIlJkJby.js → status-Db6WBmhf.js} +2 -2
- package/studio/web/assets/{status-BIlJkJby.js.map → status-Db6WBmhf.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/core/bin/cliOperations.js +0 -159
- package/core/bin/lite.js +0 -5
- package/core/bin/stop.js +0 -21
- package/core/dataLayer/harperBridge/BridgeMethods.js +0 -85
- package/core/utility/globalSchema.js +0 -35
- package/core/utility/lmdb/OpenDBIObject.js +0 -31
- package/studio/web/assets/index-CmtPP0YO.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fast implementation of standard Headers
|
|
3
3
|
*/
|
|
4
|
-
export class Headers extends Map<string, string | string[]> {
|
|
4
|
+
export class Headers extends Map<string, [string, string | string[]]> {
|
|
5
5
|
constructor(init?: Headers | HeadersInit) {
|
|
6
6
|
if (init) {
|
|
7
|
-
if (init[Symbol.iterator]) {
|
|
8
|
-
super(init);
|
|
7
|
+
if ((init as any)[Symbol.iterator]) {
|
|
8
|
+
super(init as any);
|
|
9
9
|
} else {
|
|
10
10
|
super();
|
|
11
11
|
for (const name in init) this.set(name, init[name]);
|
|
@@ -22,6 +22,7 @@ export class Headers extends Map<string, string | string[]> {
|
|
|
22
22
|
}
|
|
23
23
|
return super.set(name.toLowerCase(), [name, value]);
|
|
24
24
|
}
|
|
25
|
+
// @ts-ignore
|
|
25
26
|
get(name) {
|
|
26
27
|
if (typeof name !== 'string') name = '' + name;
|
|
27
28
|
return super.get(name.toLowerCase())?.[1];
|
|
@@ -36,7 +37,7 @@ export class Headers extends Map<string, string | string[]> {
|
|
|
36
37
|
const lowerName = name.toLowerCase();
|
|
37
38
|
if (!super.has(lowerName)) return super.set(lowerName, [name, value]);
|
|
38
39
|
}
|
|
39
|
-
append(name, value, commaDelimited) {
|
|
40
|
+
append(name: any, value: any, commaDelimited?: any) {
|
|
40
41
|
if (typeof name !== 'string') name = '' + name;
|
|
41
42
|
if (typeof value !== 'string') value = '' + value;
|
|
42
43
|
const lowerName = name.toLowerCase();
|
|
@@ -44,15 +45,16 @@ export class Headers extends Map<string, string | string[]> {
|
|
|
44
45
|
if (existing) {
|
|
45
46
|
const existingValue = existing[1];
|
|
46
47
|
if (commaDelimited)
|
|
47
|
-
value = (typeof existingValue === 'string' ? existingValue : existingValue.join(', ')) + ', ' + value;
|
|
48
|
+
value = (typeof existingValue === 'string' ? existingValue : (existingValue as any).join(', ')) + ', ' + value;
|
|
48
49
|
else if (typeof existingValue === 'string') value = [existingValue, value];
|
|
49
50
|
else {
|
|
50
|
-
existingValue.push(value);
|
|
51
|
+
(existingValue as any).push(value);
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
return super.set(lowerName, [name, value]);
|
|
55
56
|
}
|
|
57
|
+
// @ts-expect-error return type differs from Map
|
|
56
58
|
[Symbol.iterator]() {
|
|
57
59
|
return super.values()[Symbol.iterator]();
|
|
58
60
|
}
|
|
@@ -65,10 +67,10 @@ export function appendHeader(headers, name, value, commaDelimited) {
|
|
|
65
67
|
const existingValue = headers.get(name);
|
|
66
68
|
if (existingValue) {
|
|
67
69
|
if (commaDelimited)
|
|
68
|
-
value = (typeof existingValue === 'string' ? existingValue : existingValue.join(', ')) + ', ' + value;
|
|
70
|
+
value = (typeof existingValue === 'string' ? existingValue : (existingValue as any).join(', ')) + ', ' + value;
|
|
69
71
|
else if (typeof existingValue === 'string') value = [existingValue, value];
|
|
70
72
|
else {
|
|
71
|
-
existingValue.push(value);
|
|
73
|
+
(existingValue as any).push(value);
|
|
72
74
|
return;
|
|
73
75
|
}
|
|
74
76
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Readable } from 'stream';
|
|
2
|
-
import * as harperLogger from '../../utility/logging/harper_logger.
|
|
2
|
+
import * as harperLogger from '../../utility/logging/harper_logger.ts';
|
|
3
3
|
import { when } from '../../utility/when.ts';
|
|
4
4
|
import JSONbig from 'json-bigint-fixes';
|
|
5
5
|
const JSONbigint = JSONbig({ useNativeBigInt: true });
|
|
6
6
|
const BUFFER_SIZE = 10000;
|
|
7
7
|
const BIGINT_SERIALIZATION = { message: 'Cannot serialize BigInt to JSON' };
|
|
8
|
-
BigInt.prototype.toJSON = function () {
|
|
8
|
+
(BigInt.prototype as any).toJSON = function () {
|
|
9
9
|
throw BIGINT_SERIALIZATION;
|
|
10
10
|
};
|
|
11
11
|
const { errorToString } = harperLogger;
|
|
@@ -14,16 +14,23 @@ export function streamAsJSON(value) {
|
|
|
14
14
|
}
|
|
15
15
|
// a readable stream for serializing a set of variables to a JSON stream
|
|
16
16
|
class JSONStream extends Readable {
|
|
17
|
+
buffer: (string | Buffer)[];
|
|
18
|
+
bufferSize: number;
|
|
19
|
+
jsonIterator: Iterator<string | Buffer> | AsyncIterator<string | Buffer>;
|
|
20
|
+
activeIterators: (Iterator<any> | AsyncIterator<any>)[];
|
|
21
|
+
_amReading?: boolean;
|
|
22
|
+
done?: boolean;
|
|
23
|
+
|
|
17
24
|
constructor(options) {
|
|
18
25
|
// Calls the stream.Readable(options) constructor
|
|
19
26
|
super(options);
|
|
20
27
|
this.buffer = [];
|
|
21
28
|
this.bufferSize = 0;
|
|
22
|
-
this.
|
|
29
|
+
this.jsonIterator = this.serialize(options.value, true);
|
|
23
30
|
this.activeIterators = [];
|
|
24
31
|
}
|
|
25
32
|
|
|
26
|
-
*serialize(object) {
|
|
33
|
+
*serialize(object: any, _topLevel?: boolean): Generator<string | Buffer, string | Buffer | void, unknown> {
|
|
27
34
|
// using a generator to serialize JSON for convenience of recursive pause and resume functionality
|
|
28
35
|
// serialize a value to an iterator that can be consumed by streaming API
|
|
29
36
|
if (object && typeof object === 'object') {
|
|
@@ -112,7 +119,7 @@ class JSONStream extends Readable {
|
|
|
112
119
|
return this.push(null);
|
|
113
120
|
}
|
|
114
121
|
when(
|
|
115
|
-
this.readIterator(this.
|
|
122
|
+
this.readIterator(this.jsonIterator),
|
|
116
123
|
(done) => {
|
|
117
124
|
if (done) {
|
|
118
125
|
this.done = true;
|
|
@@ -152,6 +159,9 @@ class JSONStream extends Readable {
|
|
|
152
159
|
|
|
153
160
|
readIterator(iterator) {
|
|
154
161
|
try {
|
|
162
|
+
if (!iterator || typeof iterator.next !== 'function') {
|
|
163
|
+
console.error('DEBUG iterator is not valid:', typeof iterator, iterator);
|
|
164
|
+
}
|
|
155
165
|
// eventually we should be able to just put this around iterator.next()
|
|
156
166
|
let nextString;
|
|
157
167
|
if (iterator.childIterator) {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { platform } from 'os';
|
|
2
1
|
import type { IncomingMessage as NodeIncomingMessage, ServerResponse as NodeServerResponse } from 'node:http';
|
|
3
2
|
import type { Socket } from 'node:net';
|
|
4
3
|
import { TLSSocket } from 'node:tls';
|
|
5
|
-
import
|
|
4
|
+
import { EventEmitter } from 'node:events';
|
|
5
|
+
import { Readable, PassThrough } from 'node:stream';
|
|
6
|
+
import { Headers as ResponseHeaders } from './Headers.ts';
|
|
7
|
+
|
|
8
|
+
export const isBun = typeof globalThis.Bun !== 'undefined';
|
|
6
9
|
|
|
7
10
|
// Some request compatible type-ing. We can handle both HTTP and HTTPS requests and the server is augmented.
|
|
8
11
|
interface IncomingMessage extends NodeIncomingMessage {
|
|
@@ -24,27 +27,73 @@ interface IncomingMessage extends NodeIncomingMessage {
|
|
|
24
27
|
export class Request {
|
|
25
28
|
#body: RequestBody | undefined;
|
|
26
29
|
#peerCertificate: any;
|
|
30
|
+
#abortController = new AbortController();
|
|
27
31
|
public _nodeRequest: IncomingMessage;
|
|
28
32
|
public _nodeResponse?: NodeServerResponse;
|
|
29
33
|
public method: string;
|
|
30
34
|
public url: string;
|
|
31
|
-
public headers:
|
|
35
|
+
public headers: RequestHeaders;
|
|
36
|
+
public requestId?: number;
|
|
37
|
+
public isOperationsServer?: boolean;
|
|
38
|
+
public handlerPath?: string;
|
|
39
|
+
public __harperdbRequestUpgraded?: boolean;
|
|
40
|
+
public __harperRequestUpgraded?: boolean;
|
|
41
|
+
public createdResource?: boolean;
|
|
42
|
+
public newLocation?: string;
|
|
32
43
|
public isWebSocket?: boolean;
|
|
33
44
|
public user?: any; // User object can be attached during authentication
|
|
34
45
|
public response: {
|
|
35
46
|
status?: number;
|
|
36
47
|
headers: ResponseHeaders;
|
|
37
48
|
};
|
|
38
|
-
public
|
|
49
|
+
public responseHeaders?: any;
|
|
50
|
+
public expiresAt?: number;
|
|
51
|
+
public onlyIfCached?: boolean;
|
|
52
|
+
public noCache?: boolean;
|
|
53
|
+
public noCacheStore?: boolean;
|
|
54
|
+
public staleIfError?: boolean;
|
|
55
|
+
public mustRevalidate?: boolean;
|
|
56
|
+
public replicatedConfirmation?: number;
|
|
57
|
+
public replicateTo?: any;
|
|
58
|
+
public replicateFrom?: any;
|
|
59
|
+
public data?: any;
|
|
60
|
+
public authorize?: boolean;
|
|
61
|
+
public lastModified?: number;
|
|
62
|
+
public lastRefreshed?: number;
|
|
39
63
|
|
|
40
|
-
constructor(nodeRequest: IncomingMessage, nodeResponse
|
|
64
|
+
constructor(nodeRequest: IncomingMessage, nodeResponse?: NodeServerResponse) {
|
|
41
65
|
this.method = nodeRequest.method;
|
|
42
66
|
const url = nodeRequest.url;
|
|
43
67
|
this._nodeRequest = nodeRequest;
|
|
44
68
|
this._nodeResponse = nodeResponse;
|
|
45
69
|
this.url = url;
|
|
46
|
-
this.headers = new
|
|
70
|
+
this.headers = new RequestHeaders(nodeRequest.headers);
|
|
47
71
|
this.__harperRequestUpgraded = false;
|
|
72
|
+
// Abort the request's signal on premature client disconnect. nodeResponse 'close'
|
|
73
|
+
// also fires on clean completion; the writableFinished guard restricts to disconnect.
|
|
74
|
+
if (typeof nodeResponse?.on === 'function') {
|
|
75
|
+
nodeResponse.on('close', () => {
|
|
76
|
+
if (!nodeResponse.writableFinished) this.#abortController.abort();
|
|
77
|
+
});
|
|
78
|
+
} else if (typeof nodeRequest.socket?.once === 'function') {
|
|
79
|
+
// No response on this Request — typically the WebSocket-upgrade path
|
|
80
|
+
// (http.ts creates the Request before the ws library takes over). The TCP
|
|
81
|
+
// socket close is the fallback abort trigger; REST.ts's ws.on('close') hook
|
|
82
|
+
// also calls _abort() and is the primary signal in the WS case. The two
|
|
83
|
+
// are redundant by design (idempotent abort) so any future single-arg
|
|
84
|
+
// caller still gets disconnect semantics without relying on the WS layer.
|
|
85
|
+
nodeRequest.socket.once('close', () => this.#abortController.abort());
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
get signal(): AbortSignal {
|
|
89
|
+
return this.#abortController.signal;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Abort this request's signal. Used by transports (e.g. WebSocket) that need to
|
|
93
|
+
* signal client-side cancellation independently of the Node response lifecycle.
|
|
94
|
+
*/
|
|
95
|
+
_abort(): void {
|
|
96
|
+
this.#abortController.abort();
|
|
48
97
|
}
|
|
49
98
|
get absoluteURL() {
|
|
50
99
|
return this.protocol + '://' + this.host + this.url;
|
|
@@ -96,18 +145,297 @@ export class Request {
|
|
|
96
145
|
return this._nodeRequest.httpVersion;
|
|
97
146
|
}
|
|
98
147
|
get isAborted() {
|
|
99
|
-
|
|
100
|
-
return false;
|
|
148
|
+
return this.#abortController.signal.aborted;
|
|
101
149
|
}
|
|
102
150
|
// Expose node request for cases that need direct access (e.g., replication)
|
|
103
151
|
get nodeRequest() {
|
|
104
152
|
return this._nodeRequest;
|
|
105
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Invokes `handler` with a Node.js IncomingMessage/ServerResponse pair that adapts this Request
|
|
156
|
+
* into the Node HTTP API, and returns a Promise that resolves to a Harper Response once the handler
|
|
157
|
+
* writes its status and headers. Useful for integrating third-party Node middleware that expects
|
|
158
|
+
* the native node http request/response objects.
|
|
159
|
+
*
|
|
160
|
+
* The IncomingMessage mirrors the current Request state (method, url, headers may have been modified
|
|
161
|
+
* by middleware) while delegating body reading to the underlying stream. The ServerResponse captures
|
|
162
|
+
* status, headers, and body, resolving the returned promise as soon as headers are available with a
|
|
163
|
+
* streaming body that can be piped back through the Harper middleware chain.
|
|
164
|
+
*
|
|
165
|
+
* **Important:** The resolved `body` PassThrough must have an `error` listener attached (or be piped
|
|
166
|
+
* to a destination that handles errors) before it is consumed. If the underlying connection is reset
|
|
167
|
+
* after headers are sent, the body stream is destroyed with an error — without a listener, Node.js
|
|
168
|
+
* will throw an uncaught exception.
|
|
169
|
+
*
|
|
170
|
+
* Example:
|
|
171
|
+
* server.http((request, next) =>
|
|
172
|
+
* request.withNodeAdapter((req, res) => someNodeMiddleware(req, res))
|
|
173
|
+
* );
|
|
174
|
+
*/
|
|
175
|
+
withNodeAdapter(
|
|
176
|
+
handler: (request: NodeIncomingMessage, response: NodeServerResponse) => void | Promise<void>
|
|
177
|
+
): Promise<{ status: number; headers: ResponseHeaders; body: PassThrough }> {
|
|
178
|
+
// Flat headers object matching IncomingMessage.headers format (lowercase keys)
|
|
179
|
+
const reqHeaders: Record<string, string | string[]> = Object.create(null);
|
|
180
|
+
for (const [key, value] of this.headers) {
|
|
181
|
+
reqHeaders[key.toLowerCase()] = value;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Proxy the underlying IncomingMessage so body streaming works, but expose
|
|
185
|
+
// the current Request's (possibly middleware-mutated) method/url/headers.
|
|
186
|
+
const self = this;
|
|
187
|
+
const nodeReq = new Proxy(this._nodeRequest, {
|
|
188
|
+
get(target, prop, receiver) {
|
|
189
|
+
if (prop === 'method') return self.method;
|
|
190
|
+
if (prop === 'url') return self.url;
|
|
191
|
+
if (prop === 'headers') return reqHeaders;
|
|
192
|
+
return Reflect.get(target, prop, receiver);
|
|
193
|
+
},
|
|
194
|
+
}) as NodeIncomingMessage;
|
|
195
|
+
|
|
196
|
+
let resolveResponse!: (value: { status: number; headers: ResponseHeaders; body: PassThrough }) => void;
|
|
197
|
+
let rejectResponse!: (reason: unknown) => void;
|
|
198
|
+
const response = new Promise<{ status: number; headers: ResponseHeaders; body: PassThrough }>((resolve, reject) => {
|
|
199
|
+
resolveResponse = resolve;
|
|
200
|
+
rejectResponse = reject;
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
const responseBody = new PassThrough();
|
|
204
|
+
const capturedHeaders = new ResponseHeaders();
|
|
205
|
+
let headersFlushed = false;
|
|
206
|
+
let nodeRes: ReturnType<typeof Object.assign> & NodeServerResponse;
|
|
207
|
+
|
|
208
|
+
const flushHeaders = () => {
|
|
209
|
+
if (!headersFlushed) {
|
|
210
|
+
headersFlushed = true;
|
|
211
|
+
nodeRes.headersSent = true;
|
|
212
|
+
resolveResponse({ status: nodeRes.statusCode as number, headers: capturedHeaders, body: responseBody });
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const applyHeaders = (hdrs: object | unknown[]) => {
|
|
217
|
+
if (Array.isArray(hdrs)) {
|
|
218
|
+
if (hdrs.length > 0 && Array.isArray(hdrs[0])) {
|
|
219
|
+
for (const [name, value] of hdrs as [string, string][]) capturedHeaders.set(name, value);
|
|
220
|
+
} else {
|
|
221
|
+
for (let i = 0; i < hdrs.length; i += 2) capturedHeaders.set(hdrs[i] as string, hdrs[i + 1] as string);
|
|
222
|
+
}
|
|
223
|
+
} else {
|
|
224
|
+
for (const [k, v] of Object.entries(hdrs)) capturedHeaders.set(k, v as string);
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
nodeRes = Object.assign(new EventEmitter(), {
|
|
229
|
+
statusCode: 200 as number,
|
|
230
|
+
statusMessage: '',
|
|
231
|
+
headersSent: false,
|
|
232
|
+
writable: true,
|
|
233
|
+
writableEnded: false,
|
|
234
|
+
writableFinished: false,
|
|
235
|
+
socket: this._nodeRequest.socket,
|
|
236
|
+
|
|
237
|
+
setHeader(name: string, value: string | number | string[]) {
|
|
238
|
+
if (Array.isArray(value)) {
|
|
239
|
+
// Use set() for first value (overwrites any existing entry) then append() for
|
|
240
|
+
// the rest so multiple values — critical for Set-Cookie — are preserved as an
|
|
241
|
+
// array rather than collapsed into a single comma-joined string.
|
|
242
|
+
if (value.length > 0) {
|
|
243
|
+
capturedHeaders.set(name, String(value[0]));
|
|
244
|
+
for (let i = 1; i < value.length; i++) capturedHeaders.append(name, String(value[i]));
|
|
245
|
+
}
|
|
246
|
+
} else {
|
|
247
|
+
capturedHeaders.set(name, String(value));
|
|
248
|
+
}
|
|
249
|
+
return nodeRes;
|
|
250
|
+
},
|
|
251
|
+
getHeader(name: string) {
|
|
252
|
+
return capturedHeaders.get(name);
|
|
253
|
+
},
|
|
254
|
+
getHeaders() {
|
|
255
|
+
return Object.fromEntries(capturedHeaders);
|
|
256
|
+
},
|
|
257
|
+
hasHeader(name: string) {
|
|
258
|
+
return capturedHeaders.has(name);
|
|
259
|
+
},
|
|
260
|
+
removeHeader(name: string) {
|
|
261
|
+
capturedHeaders.delete(name);
|
|
262
|
+
},
|
|
263
|
+
flushHeaders() {
|
|
264
|
+
flushHeaders();
|
|
265
|
+
},
|
|
266
|
+
writeHead(statusCode: number, statusMessageOrHeaders?: string | object, maybeHeaders?: object) {
|
|
267
|
+
if (headersFlushed) return nodeRes;
|
|
268
|
+
nodeRes.statusCode = statusCode;
|
|
269
|
+
const hdrs = typeof statusMessageOrHeaders === 'string' ? maybeHeaders : statusMessageOrHeaders;
|
|
270
|
+
if (hdrs) applyHeaders(hdrs as object | unknown[]);
|
|
271
|
+
flushHeaders();
|
|
272
|
+
return nodeRes;
|
|
273
|
+
},
|
|
274
|
+
write(
|
|
275
|
+
chunk: unknown,
|
|
276
|
+
encoding?: BufferEncoding | ((error?: Error | null) => void),
|
|
277
|
+
callback?: (error?: Error | null) => void
|
|
278
|
+
) {
|
|
279
|
+
flushHeaders();
|
|
280
|
+
if (typeof encoding === 'function') return responseBody.write(chunk as any, encoding);
|
|
281
|
+
return responseBody.write(chunk as any, encoding, callback);
|
|
282
|
+
},
|
|
283
|
+
end(chunk?: unknown, encoding?: BufferEncoding | (() => void), callback?: () => void) {
|
|
284
|
+
flushHeaders();
|
|
285
|
+
nodeRes.writableEnded = true;
|
|
286
|
+
if (typeof chunk === 'function') responseBody.end(chunk as () => void);
|
|
287
|
+
else if (typeof encoding === 'function') responseBody.end(chunk as any, encoding);
|
|
288
|
+
else responseBody.end(chunk as any, encoding, callback);
|
|
289
|
+
return nodeRes;
|
|
290
|
+
},
|
|
291
|
+
destroy(error?: Error) {
|
|
292
|
+
if (!headersFlushed) {
|
|
293
|
+
if (error) rejectResponse(error);
|
|
294
|
+
else rejectResponse(new Error('Response destroyed before headers were sent'));
|
|
295
|
+
// The error has been forwarded to the response promise; suppress the
|
|
296
|
+
// PassThrough 'error' event for this one destroy call so Node doesn't
|
|
297
|
+
// throw due to having no other listeners.
|
|
298
|
+
responseBody.once('error', () => {});
|
|
299
|
+
}
|
|
300
|
+
responseBody.destroy(error);
|
|
301
|
+
return nodeRes;
|
|
302
|
+
},
|
|
303
|
+
}) as unknown as NodeServerResponse;
|
|
304
|
+
|
|
305
|
+
responseBody.on('finish', () => {
|
|
306
|
+
nodeRes.writableFinished = true;
|
|
307
|
+
(nodeRes as unknown as EventEmitter).emit('finish');
|
|
308
|
+
});
|
|
309
|
+
responseBody.on('drain', () => {
|
|
310
|
+
(nodeRes as unknown as EventEmitter).emit('drain');
|
|
311
|
+
});
|
|
312
|
+
responseBody.on('close', () => {
|
|
313
|
+
(nodeRes as unknown as EventEmitter).emit('close');
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
const handlerResult = handler(nodeReq, nodeRes);
|
|
317
|
+
if (handlerResult != null && typeof (handlerResult as unknown as Promise<void>).then === 'function') {
|
|
318
|
+
(handlerResult as unknown as Promise<void>).catch((err: unknown) => {
|
|
319
|
+
if (!headersFlushed) rejectResponse(err);
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
return response;
|
|
323
|
+
}
|
|
106
324
|
sendEarlyHints(link: string, headers: Record<string, any> = {}) {
|
|
107
325
|
headers.link = link;
|
|
108
326
|
this._nodeResponse.writeEarlyHints(headers);
|
|
109
327
|
}
|
|
110
328
|
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Bun-compatible Request adapter. Wraps a Web Fetch API Request (from Bun.serve's fetch handler)
|
|
332
|
+
* to present the same interface as the Node.js-based Request class.
|
|
333
|
+
*/
|
|
334
|
+
export class BunRequest {
|
|
335
|
+
#body: BunRequestBody | undefined;
|
|
336
|
+
#ip: string | undefined;
|
|
337
|
+
#isSecure: boolean;
|
|
338
|
+
public _webRequest: globalThis.Request;
|
|
339
|
+
public _bunServer: any;
|
|
340
|
+
// Provide _nodeRequest as null for code that checks it; _nodeResponse is not applicable
|
|
341
|
+
public _nodeRequest: any = null;
|
|
342
|
+
public _nodeResponse: any = null;
|
|
343
|
+
public method: string;
|
|
344
|
+
public url: string;
|
|
345
|
+
public headers: RequestHeaders;
|
|
346
|
+
public isWebSocket?: boolean;
|
|
347
|
+
public user?: any;
|
|
348
|
+
public response: {
|
|
349
|
+
status?: number;
|
|
350
|
+
headers: ResponseHeaders;
|
|
351
|
+
};
|
|
352
|
+
public __harperRequestUpgraded: boolean;
|
|
353
|
+
|
|
354
|
+
constructor(webRequest: globalThis.Request, bunServer: any, isSecure: boolean) {
|
|
355
|
+
this._webRequest = webRequest;
|
|
356
|
+
this._bunServer = bunServer;
|
|
357
|
+
this.#isSecure = isSecure;
|
|
358
|
+
this.method = webRequest.method;
|
|
359
|
+
// Web Request.url is a full URL; extract the path + query to match Node's IncomingMessage.url
|
|
360
|
+
const fullUrl = webRequest.url;
|
|
361
|
+
const protocolEnd = fullUrl.indexOf('//');
|
|
362
|
+
const pathStart = fullUrl.indexOf('/', protocolEnd + 2);
|
|
363
|
+
this.url = pathStart >= 0 ? fullUrl.slice(pathStart) : '/';
|
|
364
|
+
// Convert Web Headers to plain object for our RequestHeaders wrapper
|
|
365
|
+
const headersObj: Record<string, string> = {};
|
|
366
|
+
webRequest.headers.forEach((value, key) => {
|
|
367
|
+
headersObj[key] = value;
|
|
368
|
+
});
|
|
369
|
+
this.headers = new RequestHeaders(headersObj);
|
|
370
|
+
this.__harperRequestUpgraded = false;
|
|
371
|
+
}
|
|
372
|
+
get absoluteURL() {
|
|
373
|
+
return this._webRequest.url;
|
|
374
|
+
}
|
|
375
|
+
get pathname() {
|
|
376
|
+
const queryStart = this.url.indexOf('?');
|
|
377
|
+
if (queryStart > -1) return this.url.slice(0, queryStart);
|
|
378
|
+
return this.url;
|
|
379
|
+
}
|
|
380
|
+
set pathname(pathname) {
|
|
381
|
+
const queryStart = this.url.indexOf('?');
|
|
382
|
+
if (queryStart > -1) this.url = pathname + this.url.slice(queryStart);
|
|
383
|
+
else this.url = pathname;
|
|
384
|
+
}
|
|
385
|
+
get protocol() {
|
|
386
|
+
return this.#isSecure ? 'https' : 'http';
|
|
387
|
+
}
|
|
388
|
+
get ip() {
|
|
389
|
+
if (this.#ip === undefined) {
|
|
390
|
+
const addr = this._bunServer?.requestIP?.(this._webRequest);
|
|
391
|
+
this.#ip = addr?.address || '';
|
|
392
|
+
}
|
|
393
|
+
return this.#ip;
|
|
394
|
+
}
|
|
395
|
+
get authorized() {
|
|
396
|
+
// TLS client authorization is not directly accessible via Bun.serve()
|
|
397
|
+
return undefined;
|
|
398
|
+
}
|
|
399
|
+
get peerCertificate() {
|
|
400
|
+
// Peer certificates are not accessible via Bun.serve()
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
get mtlsConfig() {
|
|
404
|
+
return undefined;
|
|
405
|
+
}
|
|
406
|
+
get body() {
|
|
407
|
+
return this.#body || (this.#body = new BunRequestBody(this._webRequest));
|
|
408
|
+
}
|
|
409
|
+
get host() {
|
|
410
|
+
return this.headers.get('host') as string;
|
|
411
|
+
}
|
|
412
|
+
get hostname() {
|
|
413
|
+
return this.headers.get('host') as string;
|
|
414
|
+
}
|
|
415
|
+
get httpVersion() {
|
|
416
|
+
return '1.1';
|
|
417
|
+
}
|
|
418
|
+
get isAborted() {
|
|
419
|
+
return this._webRequest.signal?.aborted ?? false;
|
|
420
|
+
}
|
|
421
|
+
get signal(): AbortSignal {
|
|
422
|
+
// Bun.serve() aborts this signal on HTTP client disconnect. Behavior on
|
|
423
|
+
// WebSocket-upgrade is implementation-defined; if the WS path needs
|
|
424
|
+
// guaranteed abort-on-close under Bun, wire it through Bun's ws close
|
|
425
|
+
// handler with a Bun-side AbortController, similar to REST.ts on Node.
|
|
426
|
+
return this._webRequest.signal;
|
|
427
|
+
}
|
|
428
|
+
_abort(): void {
|
|
429
|
+
// On Bun, abort is driven by the underlying Web Request's signal; no-op for parity with Node path.
|
|
430
|
+
}
|
|
431
|
+
get nodeRequest() {
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
sendEarlyHints(_link: string, _headers: Record<string, any> = {}) {
|
|
435
|
+
// Early hints not supported on Bun
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
111
439
|
class RequestBody {
|
|
112
440
|
#nodeRequest: IncomingMessage;
|
|
113
441
|
constructor(nodeRequest: IncomingMessage) {
|
|
@@ -122,8 +450,39 @@ class RequestBody {
|
|
|
122
450
|
}
|
|
123
451
|
}
|
|
124
452
|
|
|
125
|
-
class
|
|
126
|
-
|
|
453
|
+
class BunRequestBody {
|
|
454
|
+
#webRequest: any;
|
|
455
|
+
#readable: any; // lazily created Readable stream
|
|
456
|
+
constructor(webRequest: any) {
|
|
457
|
+
this.#webRequest = webRequest;
|
|
458
|
+
}
|
|
459
|
+
#getReadable() {
|
|
460
|
+
if (!this.#readable) {
|
|
461
|
+
const body = this.#webRequest.body;
|
|
462
|
+
if (body) {
|
|
463
|
+
this.#readable = Readable.fromWeb(body as any);
|
|
464
|
+
} else {
|
|
465
|
+
// No body — create an empty readable that immediately ends
|
|
466
|
+
this.#readable = new Readable({
|
|
467
|
+
read() {
|
|
468
|
+
this.push(null);
|
|
469
|
+
},
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
return this.#readable;
|
|
474
|
+
}
|
|
475
|
+
on(event: string, listener: (...args: any[]) => void) {
|
|
476
|
+
this.#getReadable().on(event, listener);
|
|
477
|
+
return this;
|
|
478
|
+
}
|
|
479
|
+
pipe(destination: any, options?: any) {
|
|
480
|
+
return this.#getReadable().pipe(destination, options);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
class RequestHeaders {
|
|
485
|
+
public asObject: Record<string, string | string[]>;
|
|
127
486
|
|
|
128
487
|
constructor(asObject: Record<string, string | string[]>) {
|
|
129
488
|
this.asObject = asObject;
|
|
@@ -150,11 +509,9 @@ class Headers {
|
|
|
150
509
|
delete(name: string) {
|
|
151
510
|
delete this.asObject[name.toLowerCase()];
|
|
152
511
|
}
|
|
153
|
-
forEach(callback: (value: string | string[], key: string, headers:
|
|
512
|
+
forEach(callback: (value: string | string[], key: string, headers: RequestHeaders) => void) {
|
|
154
513
|
for (const [key, value] of this) {
|
|
155
514
|
callback(value, key, this);
|
|
156
515
|
}
|
|
157
516
|
}
|
|
158
517
|
}
|
|
159
|
-
export let createReuseportFd: any;
|
|
160
|
-
if (platform() != 'win32') createReuseportFd = require('node-unix-socket').createReuseportFd;
|