@harperfast/harper 5.2.0 → 5.2.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/bin/copyDb.ts +40 -11
- package/bin/harper.ts +20 -51
- package/bin/help.ts +216 -0
- package/components/Application.ts +236 -46
- package/components/ApplicationScope.ts +26 -0
- package/components/EntryHandler.ts +410 -105
- package/components/RuntimeModuleTracker.ts +189 -0
- package/components/Scope.ts +68 -24
- package/components/componentLoader.ts +70 -16
- package/components/deployLifecycle.ts +119 -33
- package/components/deploymentRecorder.ts +102 -11
- package/components/mcp/tools/operations.ts +6 -0
- package/components/operations.js +8 -6
- package/config/configUtils.ts +78 -20
- package/config/harperConfigEnvVars.ts +114 -17
- package/config-root.schema.json +10 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +26 -5
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dataLayer/hdbInfoController.ts +8 -0
- package/dataLayer/schemaDescribe.ts +2 -1
- package/dist/bin/copyDb.js +33 -9
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/bin/harper.d.ts +6 -0
- package/dist/bin/harper.js +18 -50
- package/dist/bin/harper.js.map +1 -1
- package/dist/bin/help.d.ts +8 -0
- package/dist/bin/help.js +192 -0
- package/dist/bin/help.js.map +1 -0
- package/dist/components/Application.d.ts +16 -1
- package/dist/components/Application.js +210 -38
- package/dist/components/Application.js.map +1 -1
- package/dist/components/ApplicationScope.d.ts +7 -0
- package/dist/components/ApplicationScope.js +22 -0
- package/dist/components/ApplicationScope.js.map +1 -1
- package/dist/components/EntryHandler.d.ts +4 -4
- package/dist/components/EntryHandler.js +386 -95
- package/dist/components/EntryHandler.js.map +1 -1
- package/dist/components/RuntimeModuleTracker.d.ts +11 -0
- package/dist/components/RuntimeModuleTracker.js +189 -0
- package/dist/components/RuntimeModuleTracker.js.map +1 -0
- package/dist/components/Scope.d.ts +1 -0
- package/dist/components/Scope.js +69 -22
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/componentLoader.js +69 -10
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/deployLifecycle.d.ts +6 -2
- package/dist/components/deployLifecycle.js +109 -31
- package/dist/components/deployLifecycle.js.map +1 -1
- package/dist/components/deploymentRecorder.d.ts +6 -0
- package/dist/components/deploymentRecorder.js +94 -12
- package/dist/components/deploymentRecorder.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +6 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/operations.js +8 -6
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +6 -0
- package/dist/config/configUtils.js +78 -18
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +108 -16
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +12 -5
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
- package/dist/dataLayer/hdbInfoController.js +4 -0
- package/dist/dataLayer/hdbInfoController.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +2 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +57 -0
- package/dist/resources/DatabaseTransaction.js +284 -104
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +8 -2
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Resources.js +22 -4
- package/dist/resources/Resources.js.map +1 -1
- package/dist/resources/Table.d.ts +8 -6
- package/dist/resources/Table.js +158 -31
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/write.js +6 -6
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.js +27 -1
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +0 -1
- package/dist/resources/blob.js +15 -7
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/databases.d.ts +22 -5
- package/dist/resources/databases.js +118 -9
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/jsResource.d.ts +4 -26
- package/dist/resources/jsResource.js +5 -59
- package/dist/resources/jsResource.js.map +1 -1
- package/dist/resources/models/Models.d.ts +11 -1
- package/dist/resources/models/Models.js +10 -1
- package/dist/resources/models/Models.js.map +1 -1
- package/dist/resources/models/backendRegistry.d.ts +9 -0
- package/dist/resources/models/backendRegistry.js +10 -0
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/openaiStream.d.ts +16 -1
- package/dist/resources/models/openaiStream.js +113 -21
- package/dist/resources/models/openaiStream.js.map +1 -1
- package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
- package/dist/resources/models/v1/chatCompletions.js +115 -0
- package/dist/resources/models/v1/chatCompletions.js.map +1 -0
- package/dist/resources/models/v1/embeddings.d.ts +11 -0
- package/dist/resources/models/v1/embeddings.js +71 -0
- package/dist/resources/models/v1/embeddings.js.map +1 -0
- package/dist/resources/models/v1/errors.d.ts +54 -0
- package/dist/resources/models/v1/errors.js +130 -0
- package/dist/resources/models/v1/errors.js.map +1 -0
- package/dist/resources/models/v1/index.d.ts +36 -0
- package/dist/resources/models/v1/index.js +75 -0
- package/dist/resources/models/v1/index.js.map +1 -0
- package/dist/resources/models/v1/models.d.ts +26 -0
- package/dist/resources/models/v1/models.js +44 -0
- package/dist/resources/models/v1/models.js.map +1 -0
- package/dist/resources/models/v1/translation.d.ts +133 -0
- package/dist/resources/models/v1/translation.js +298 -0
- package/dist/resources/models/v1/translation.js.map +1 -0
- package/dist/resources/roles.d.ts +1 -1
- package/dist/resources/roles.js +54 -7
- package/dist/resources/roles.js.map +1 -1
- package/dist/resources/search.d.ts +1 -1
- package/dist/resources/search.js +7 -3
- package/dist/resources/search.js.map +1 -1
- package/dist/security/jsLoader.js +84 -33
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/role.js +4 -0
- package/dist/security/role.js.map +1 -1
- package/dist/security/superUserGuard.d.ts +7 -0
- package/dist/security/superUserGuard.js +23 -0
- package/dist/security/superUserGuard.js.map +1 -0
- package/dist/security/tokenAuthentication.d.ts +0 -1
- package/dist/security/tokenAuthentication.js +6 -2
- package/dist/security/tokenAuthentication.js.map +1 -1
- package/dist/security/user.d.ts +6 -1
- package/dist/security/user.js +23 -1
- package/dist/security/user.js.map +1 -1
- package/dist/server/http.d.ts +23 -2
- package/dist/server/http.js +99 -12
- package/dist/server/http.js.map +1 -1
- package/dist/server/operationsServer.d.ts +0 -2
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/multipartParser.js +9 -0
- package/dist/server/serverHelpers/multipartParser.js.map +1 -1
- package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
- package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
- package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
- package/dist/server/serverHelpers/registeredOperations.js +14 -13
- package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +19 -3
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
- package/dist/server/serverHelpers/serverUtilities.js +10 -7
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +57 -18
- package/dist/server/static.js.map +1 -1
- package/dist/server/storageReclamation.d.ts +17 -0
- package/dist/server/storageReclamation.js +90 -6
- package/dist/server/storageReclamation.js.map +1 -1
- package/dist/server/threads/manageThreads.js +8 -0
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.js +20 -0
- package/dist/server/threads/socketRouter.js.map +1 -1
- package/dist/server/threads/threadServer.js +12 -0
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/sqlEngine/diff/differential.js +7 -3
- package/dist/sqlEngine/diff/differential.js.map +1 -1
- package/dist/sqlEngine/parser/normalizer.js +37 -9
- package/dist/sqlEngine/parser/normalizer.js.map +1 -1
- package/dist/sqlTranslator/index.js +6 -1
- package/dist/sqlTranslator/index.js.map +1 -1
- package/dist/upgrade/upgradePrompt.d.ts +2 -2
- package/dist/upgrade/upgradePrompt.js +22 -3
- package/dist/upgrade/upgradePrompt.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +11 -0
- package/dist/utility/environment/environmentManager.js +154 -0
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/errors/commonErrors.d.ts +1 -0
- package/dist/utility/errors/commonErrors.js +1 -0
- package/dist/utility/errors/commonErrors.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +2 -0
- package/dist/utility/hdbTerms.js +2 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/install/installer.js +32 -0
- package/dist/utility/install/installer.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.js +2 -1
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +7 -0
- package/dist/utility/logging/harper_logger.js +57 -24
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/npm-shrinkwrap.json +208 -198
- package/package.json +10 -8
- package/resources/DESIGN.md +1 -0
- package/resources/DatabaseTransaction.ts +313 -102
- package/resources/ResourceInterface.ts +8 -2
- package/resources/Resources.ts +22 -4
- package/resources/Table.ts +398 -259
- package/resources/analytics/write.ts +22 -20
- package/resources/auditStore.ts +32 -1
- package/resources/blob.ts +15 -8
- package/resources/databases.ts +123 -12
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
- package/resources/jsResource.ts +5 -62
- package/resources/models/Models.ts +14 -1
- package/resources/models/backendRegistry.ts +10 -0
- package/resources/models/openaiStream.ts +131 -19
- package/resources/models/v1/chatCompletions.ts +128 -0
- package/resources/models/v1/embeddings.ts +70 -0
- package/resources/models/v1/errors.ts +141 -0
- package/resources/models/v1/index.ts +72 -0
- package/resources/models/v1/models.ts +53 -0
- package/resources/models/v1/translation.ts +362 -0
- package/resources/roles.ts +67 -7
- package/resources/search.ts +8 -3
- package/security/jsLoader.ts +84 -30
- package/security/role.ts +7 -0
- package/security/superUserGuard.ts +20 -0
- package/security/tokenAuthentication.ts +6 -3
- package/security/user.ts +26 -1
- package/server/DESIGN.md +45 -34
- package/server/http.ts +100 -13
- package/server/operationsServer.ts +0 -2
- package/server/serverHelpers/multipartParser.ts +9 -0
- package/server/serverHelpers/operationAuthorizationState.ts +11 -0
- package/server/serverHelpers/registeredOperations.ts +19 -15
- package/server/serverHelpers/serverHandlers.js +20 -3
- package/server/serverHelpers/serverUtilities.ts +10 -7
- package/server/static.ts +75 -20
- package/server/storageReclamation.ts +104 -8
- package/server/threads/manageThreads.js +8 -0
- package/server/threads/socketRouter.ts +20 -0
- package/server/threads/threadServer.js +11 -0
- package/sqlTranslator/index.ts +6 -1
- package/static/defaultConfig.yaml +2 -0
- package/studio/web/assets/{Chat-DoVWScmq.js → Chat-BMUjPklt.js} +5 -5
- package/studio/web/assets/{Chat-DoVWScmq.js.map → Chat-BMUjPklt.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js → FloatingChat-Cbghuxe5.js} +5 -5
- package/studio/web/assets/{FloatingChat-UZ2NsUOZ.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
- package/studio/web/assets/{apiToken-BUI_04o7.js → apiToken-CkgTQAqc.js} +2 -2
- package/studio/web/assets/{apiToken-BUI_04o7.js.map → apiToken-CkgTQAqc.js.map} +1 -1
- package/studio/web/assets/{applications-D03NA7wW.js → applications-WvF4NOTN.js} +13 -13
- package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
- package/studio/web/assets/index-CDeqVx71.css +1 -0
- package/studio/web/assets/index-Sevt3MVx.js +819 -0
- package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
- package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
- package/studio/web/assets/{index.lazy-Dx3MpyDC.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
- package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
- package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
- package/studio/web/assets/{notifications-0edoFTsb.js → notifications-Ap84YyQp.js} +2 -2
- package/studio/web/assets/{notifications-0edoFTsb.js.map → notifications-Ap84YyQp.js.map} +1 -1
- package/studio/web/assets/notifications-vehqyOLM.js +2 -0
- package/studio/web/assets/{notifications-CwKhipK7.js.map → notifications-vehqyOLM.js.map} +1 -1
- package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
- package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
- package/studio/web/assets/{profile-DUfEPQtx.js → profile-DzDpRLHY.js} +2 -2
- package/studio/web/assets/{profile-DUfEPQtx.js.map → profile-DzDpRLHY.js.map} +1 -1
- package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
- package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
- package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
- package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
- package/studio/web/assets/register-BDy01-q3.js +3 -0
- package/studio/web/assets/register-BDy01-q3.js.map +1 -0
- package/studio/web/assets/register-CQHRwNP4.js +3 -0
- package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
- package/studio/web/assets/{setComponentFile-DMPo4UjC.js → setComponentFile-D0aPcI3W.js} +2 -2
- package/studio/web/assets/{setComponentFile-DMPo4UjC.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
- package/studio/web/assets/setup-I15FAF9H.js +3 -0
- package/studio/web/assets/{setup-B56Oz1_u.js.map → setup-I15FAF9H.js.map} +1 -1
- package/studio/web/assets/status-BF1eJshJ.js +62 -0
- package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
- package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js → swagger-ui-react-DwSPXXhl.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-lQrBxfwM.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
- package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
- package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
- package/studio/web/assets/{tsMode-CrHCRjTK.js → tsMode-Bu51A-VG.js} +2 -2
- package/studio/web/assets/{tsMode-CrHCRjTK.js.map → tsMode-Bu51A-VG.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js → useEntityRestURL-DrV1zMrN.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-DoaBMEvU.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
- package/studio/web/index.html +6 -7
- package/upgrade/upgradePrompt.ts +22 -3
- package/utility/environment/environmentManager.ts +152 -0
- package/utility/errors/commonErrors.ts +2 -0
- package/utility/hdbTerms.ts +2 -0
- package/utility/install/installer.ts +37 -0
- package/utility/lmdb/environmentUtility.ts +2 -1
- package/utility/logging/harper_logger.ts +57 -26
- package/studio/web/assets/applications-D03NA7wW.js.map +0 -1
- package/studio/web/assets/index-Bh_CNAHr.js +0 -809
- package/studio/web/assets/index-Bh_CNAHr.js.map +0 -1
- package/studio/web/assets/index-C8Mv9kHV.css +0 -1
- package/studio/web/assets/index.lazy-Dx3MpyDC.js +0 -14
- package/studio/web/assets/notifications-CwKhipK7.js +0 -2
- package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
- package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
- package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
- package/studio/web/assets/setup-B56Oz1_u.js +0 -3
- package/studio/web/assets/status-BAod7p3o.js +0 -62
- package/studio/web/assets/status-BAod7p3o.js.map +0 -1
- package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
|
@@ -9,6 +9,7 @@ const hdbError_ts_1 = require("../../utility/errors/hdbError.js");
|
|
|
9
9
|
const logger_ts_1 = require("../../utility/logging/logger.js");
|
|
10
10
|
const FIELD_SIZE_LIMIT = 1024 * 1024; // 1 MB per non-file field — generous for JSON params
|
|
11
11
|
const MAX_FIELDS = 64;
|
|
12
|
+
const UNSAFE_FIELD_NAMES = new Set(['__proto__', 'constructor', 'prototype']);
|
|
12
13
|
// Operation handlers stream the file part directly into extraction (gunzip + tar-fs),
|
|
13
14
|
// so there is no separate filesize cap to enforce here. Backpressure flows through busboy
|
|
14
15
|
// → the file Readable → the consumer, bounded by disk space rather than memory.
|
|
@@ -64,6 +65,14 @@ function parseMultipartRequest(request, rawStream, done) {
|
|
|
64
65
|
logger_ts_1.logger.warn?.(`Multipart field "${name}" arrived after the file part; ignoring`);
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
68
|
+
if (UNSAFE_FIELD_NAMES.has(name)) {
|
|
69
|
+
const error = new hdbError_ts_1.ClientError(`Multipart field "${name}" is not allowed`, 400);
|
|
70
|
+
callDone(error);
|
|
71
|
+
// Stop accepting bytes from a malicious request immediately. The raw-stream error
|
|
72
|
+
// handler below also tears down busboy, so a later file part cannot remain unread.
|
|
73
|
+
rawStream.destroy(error);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
67
76
|
body[name] = decodeFieldValue(value);
|
|
68
77
|
});
|
|
69
78
|
bb.on('file', (name, fileStream) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multipartParser.js","sourceRoot":"","sources":["../../../server/serverHelpers/multipartParser.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"multipartParser.js","sourceRoot":"","sources":["../../../server/serverHelpers/multipartParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runWithOperationAuthorizationBypass = runWithOperationAuthorizationBypass;
|
|
4
|
+
exports.isOperationAuthorizationBypassed = isOperationAuthorizationBypassed;
|
|
5
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
6
|
+
const operationAuthorizationState = new node_async_hooks_1.AsyncLocalStorage();
|
|
7
|
+
function runWithOperationAuthorizationBypass(bypassAuth, callback) {
|
|
8
|
+
return operationAuthorizationState.run(bypassAuth === true, callback);
|
|
9
|
+
}
|
|
10
|
+
function isOperationAuthorizationBypassed() {
|
|
11
|
+
return operationAuthorizationState.getStore() === true;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=operationAuthorizationState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationAuthorizationState.js","sourceRoot":"","sources":["../../../server/serverHelpers/operationAuthorizationState.ts"],"names":[],"mappings":";;AAIA,kFAEC;AAED,4EAEC;AAVD,uDAAqD;AAErD,MAAM,2BAA2B,GAAG,IAAI,oCAAiB,EAAW,CAAC;AAErE,SAAgB,mCAAmC,CAAI,UAAmB,EAAE,QAAiB;IAC5F,OAAO,2BAA2B,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,gCAAgC;IAC/C,OAAO,2BAA2B,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;AACxD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare let localDispatch: {
|
|
2
|
-
chooseOperation: (body: any) => Function;
|
|
2
|
+
chooseOperation: (body: any, bypassAuth?: boolean) => Function;
|
|
3
3
|
processLocalTransaction: (req: any, operationFunction: Function) => Promise<any>;
|
|
4
4
|
};
|
|
5
5
|
export declare function setLocalOperationDispatch(dispatch: typeof localDispatch): void;
|
|
@@ -25,7 +25,7 @@ export declare function operationRegisteredHandler(event: {
|
|
|
25
25
|
* function and metadata that `verifyPerms` needs only exist on the worker, which runs the full
|
|
26
26
|
* `chooseOperation` check with the forwarded `hdb_user`.
|
|
27
27
|
*/
|
|
28
|
-
export declare function getRemoteOperationFunction(name: string): ((body: any) => Promise<any>) | undefined;
|
|
28
|
+
export declare function getRemoteOperationFunction(name: string, bypassAuth?: boolean): ((body: any) => Promise<any>) | undefined;
|
|
29
29
|
/**
|
|
30
30
|
* ITC handler, worker side: execute a forwarded operation through the normal dispatch path
|
|
31
31
|
* (permission check + processLocalTransaction) and send the result back to the main thread.
|
|
@@ -34,6 +34,7 @@ export declare function operationExecuteRequestHandler(event: {
|
|
|
34
34
|
message: {
|
|
35
35
|
requestId: number;
|
|
36
36
|
body: any;
|
|
37
|
+
bypassAuth?: boolean;
|
|
37
38
|
originator: number;
|
|
38
39
|
};
|
|
39
40
|
}): Promise<void>;
|
|
@@ -70,6 +70,7 @@ const harper_logger_ts_1 = __importDefault(require("../../utility/logging/harper
|
|
|
70
70
|
const hdbError_ts_1 = require("../../utility/errors/hdbError.js");
|
|
71
71
|
const itc_js_1 = require("../threads/itc.js");
|
|
72
72
|
const manageThreads_js_1 = require("../threads/manageThreads.js");
|
|
73
|
+
const operationAuthorizationState_ts_1 = require("./operationAuthorizationState.js");
|
|
73
74
|
const operationLog = harper_logger_ts_1.default.loggerWithTag('operation');
|
|
74
75
|
// Fields attached to a request body by the HTTP/auth layer that must not (and often cannot)
|
|
75
76
|
// cross the thread boundary via structured clone.
|
|
@@ -127,12 +128,12 @@ let rotation = 0;
|
|
|
127
128
|
* function and metadata that `verifyPerms` needs only exist on the worker, which runs the full
|
|
128
129
|
* `chooseOperation` check with the forwarded `hdb_user`.
|
|
129
130
|
*/
|
|
130
|
-
function getRemoteOperationFunction(name) {
|
|
131
|
+
function getRemoteOperationFunction(name, bypassAuth = false) {
|
|
131
132
|
if (!node_worker_threads_1.isMainThread)
|
|
132
133
|
return undefined;
|
|
133
134
|
if (!registeredByWorker.has(name))
|
|
134
135
|
return undefined;
|
|
135
|
-
return (body) => executeRemoteOperation(name, body);
|
|
136
|
+
return (body) => executeRemoteOperation(name, body, bypassAuth);
|
|
136
137
|
}
|
|
137
138
|
function attachMainListeners() {
|
|
138
139
|
if (mainListenersAttached)
|
|
@@ -169,7 +170,7 @@ function attachMainListeners() {
|
|
|
169
170
|
}
|
|
170
171
|
});
|
|
171
172
|
}
|
|
172
|
-
async function executeRemoteOperation(name, body) {
|
|
173
|
+
async function executeRemoteOperation(name, body, bypassAuth) {
|
|
173
174
|
attachMainListeners();
|
|
174
175
|
const workerIds = registeredByWorker.get(name);
|
|
175
176
|
const forwardBody = { ...body };
|
|
@@ -185,7 +186,7 @@ async function executeRemoteOperation(name, body) {
|
|
|
185
186
|
try {
|
|
186
187
|
sent = threads.sendToThread(targetThreadId, {
|
|
187
188
|
type: terms.ITC_EVENT_TYPES.OPERATION_EXECUTE_REQUEST,
|
|
188
|
-
message: { requestId, body: forwardBody, originator: node_worker_threads_1.threadId },
|
|
189
|
+
message: { requestId, body: forwardBody, bypassAuth, originator: node_worker_threads_1.threadId },
|
|
189
190
|
});
|
|
190
191
|
}
|
|
191
192
|
catch (error) {
|
|
@@ -227,19 +228,19 @@ async function executeRemoteOperation(name, body) {
|
|
|
227
228
|
* (permission check + processLocalTransaction) and send the result back to the main thread.
|
|
228
229
|
*/
|
|
229
230
|
async function operationExecuteRequestHandler(event) {
|
|
230
|
-
const { requestId, body, originator } = event.message;
|
|
231
|
+
const { requestId, body, bypassAuth, originator } = event.message;
|
|
231
232
|
let response;
|
|
232
233
|
try {
|
|
233
234
|
if (!localDispatch)
|
|
234
235
|
throw new hdbError_ts_1.ServerError('This worker thread cannot execute operations', 503);
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
236
|
+
// Authorization state travels in the trusted same-process ITC envelope, never in the
|
|
237
|
+
// caller-controlled operation body. This preserves server.operation(..., false) across
|
|
238
|
+
// worker forwarding without creating a client-spoofable request property.
|
|
239
|
+
const trustedBypassAuth = bypassAuth === true;
|
|
240
|
+
const result = await (0, operationAuthorizationState_ts_1.runWithOperationAuthorizationBypass)(trustedBypassAuth, () => {
|
|
241
|
+
const operationFunction = localDispatch.chooseOperation(body, trustedBypassAuth);
|
|
242
|
+
return localDispatch.processLocalTransaction({ body }, operationFunction);
|
|
243
|
+
});
|
|
243
244
|
if (result instanceof node_stream_1.Readable || typeof result?.pipe === 'function') {
|
|
244
245
|
// Streaming results would need MessagePort transfer plumbing — explicitly unsupported
|
|
245
246
|
// for worker-registered operations for now (#1736), rather than failing opaquely.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registeredOperations.js","sourceRoot":"","sources":["../../../server/serverHelpers/registeredOperations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"registeredOperations.js","sourceRoot":"","sources":["../../../server/serverHelpers/registeredOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ const terms = require("../../utility/hdbTerms.js");
|
|
|
3
3
|
const hdbUtil = require("../../utility/common_utils.js");
|
|
4
4
|
const harperLogger = require("../../utility/logging/harper_logger.js");
|
|
5
5
|
const { realExit } = require("../threads/workerProcessGuard.js");
|
|
6
|
-
const { handleHDBError, hdbErrors } = require("../../utility/errors/hdbError.js");
|
|
6
|
+
const { ClientError, handleHDBError, hdbErrors } = require("../../utility/errors/hdbError.js");
|
|
7
7
|
const { isMainThread } = require('worker_threads');
|
|
8
8
|
const { Readable } = require('stream');
|
|
9
9
|
const os = require('os');
|
|
@@ -35,6 +35,17 @@ const NO_AUTH_OPERATIONS = [
|
|
|
35
35
|
terms.OPERATIONS_ENUM.LOGIN,
|
|
36
36
|
terms.OPERATIONS_ENUM.LOGOUT,
|
|
37
37
|
];
|
|
38
|
+
const UNSAFE_REQUEST_BODY_PROPERTIES = ['__proto__', 'constructor', 'prototype'];
|
|
39
|
+
function validateRequestBodyProperties(body) {
|
|
40
|
+
if (!body || typeof body !== 'object') {
|
|
41
|
+
throw new ClientError('Invalid request body', 400);
|
|
42
|
+
}
|
|
43
|
+
for (const property of UNSAFE_REQUEST_BODY_PROPERTIES) {
|
|
44
|
+
if (Object.hasOwn(body, property)) {
|
|
45
|
+
throw new ClientError(`Request body property "${property}" is not allowed`, 400);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
38
49
|
function handleServerUncaughtException(err) {
|
|
39
50
|
let message = `Found an uncaught exception with message: ${err.message}. ${os.EOL}Stack: ${err.stack} ${os.EOL}Terminating ${isMainThread ? 'HDB' : 'thread'}.`;
|
|
40
51
|
console.error(message);
|
|
@@ -123,9 +134,14 @@ function authAndEnsureUserOnRequest(req, resp, done) {
|
|
|
123
134
|
async function handlePostRequest(req, res, _bypassAuth = false) {
|
|
124
135
|
let operation_function;
|
|
125
136
|
try {
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
validateRequestBodyProperties(req.body);
|
|
138
|
+
// Authorization bypass is internal dispatch state, never client request data. Dispatch no
|
|
139
|
+
// longer reads these properties, but remove both true and false values before operation
|
|
140
|
+
// code sees the body.
|
|
141
|
+
if (Object.hasOwn(req.body, 'bypass_auth'))
|
|
128
142
|
delete req.body.bypass_auth;
|
|
143
|
+
if (Object.hasOwn(req.body, 'bypassAuth'))
|
|
144
|
+
delete req.body.bypassAuth;
|
|
129
145
|
operation_function = serverUtilities.chooseOperation(req.body);
|
|
130
146
|
// SSE progress branch — when the client asks for `text/event-stream` on an operation
|
|
131
147
|
// that supports it, run the operation in the background and stream events back as they
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverHandlers.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverHandlers.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,KAAK,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACnD,MAAM,OAAO,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AACzD,MAAM,YAAY,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;AACvE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;AACjE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"serverHandlers.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverHandlers.js"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export type OperationDefinition = {
|
|
|
18
18
|
parametersSchema?: any[];
|
|
19
19
|
requiresSuperUser?: boolean;
|
|
20
20
|
};
|
|
21
|
-
export declare function chooseOperation(json: OperationRequestBody): Function;
|
|
21
|
+
export declare function chooseOperation(json: OperationRequestBody, bypassAuth?: boolean): Function;
|
|
22
22
|
export declare function getOperationFunction(json: OperationRequestBody): OperationFunctionObject;
|
|
23
23
|
/**
|
|
24
24
|
* Standalone function to execute an operation
|
|
@@ -86,6 +86,7 @@ const secretOperations = __importStar(require("../../components/secretOperations
|
|
|
86
86
|
const transaction_ts_1 = require("../../resources/transaction.js");
|
|
87
87
|
const node_worker_threads_1 = require("node:worker_threads");
|
|
88
88
|
const registeredOperations_ts_1 = require("./registeredOperations.js");
|
|
89
|
+
const operationAuthorizationState_ts_1 = require("./operationAuthorizationState.js");
|
|
89
90
|
const pSearchSearch = util.promisify(search.search);
|
|
90
91
|
let pEvaluateSql;
|
|
91
92
|
function evaluateSQL(command) {
|
|
@@ -199,7 +200,7 @@ Server_ts_1.server.setMcpQuotaHandler = (handler) => {
|
|
|
199
200
|
return;
|
|
200
201
|
(0, quota_ts_1.setMcpQuotaHandler)(handler);
|
|
201
202
|
};
|
|
202
|
-
function chooseOperation(json) {
|
|
203
|
+
function chooseOperation(json, bypassAuth = false) {
|
|
203
204
|
let getOpResult;
|
|
204
205
|
try {
|
|
205
206
|
getOpResult = getOperationFunction(json);
|
|
@@ -211,7 +212,7 @@ function chooseOperation(json) {
|
|
|
211
212
|
// and its metadata actually exist, so no perm check is skipped by returning early
|
|
212
213
|
// here (#1736). Workers never re-forward, so an unknown op can't loop.
|
|
213
214
|
if (node_worker_threads_1.isMainThread) {
|
|
214
|
-
const remoteOperationFunction = (0, registeredOperations_ts_1.getRemoteOperationFunction)(json.operation);
|
|
215
|
+
const remoteOperationFunction = (0, registeredOperations_ts_1.getRemoteOperationFunction)(json.operation, bypassAuth);
|
|
215
216
|
if (remoteOperationFunction)
|
|
216
217
|
return remoteOperationFunction;
|
|
217
218
|
}
|
|
@@ -227,7 +228,7 @@ function chooseOperation(json) {
|
|
|
227
228
|
const sqlStatement = json.operation === 'sql' ? json.sql : json.search_operation.sql;
|
|
228
229
|
const parsedSqlObject = sql.convertSQLToAST(sqlStatement);
|
|
229
230
|
json.parsed_sql_object = parsedSqlObject;
|
|
230
|
-
if (!
|
|
231
|
+
if (!bypassAuth) {
|
|
231
232
|
const astPermCheck = sql.checkASTPermissions(json, parsedSqlObject);
|
|
232
233
|
if (astPermCheck) {
|
|
233
234
|
operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
|
|
@@ -237,7 +238,7 @@ function chooseOperation(json) {
|
|
|
237
238
|
}
|
|
238
239
|
//we need to bypass permission checks to allow the createAuthorizationTokens
|
|
239
240
|
}
|
|
240
|
-
else if (!
|
|
241
|
+
else if (!bypassAuth &&
|
|
241
242
|
json.operation !== terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS &&
|
|
242
243
|
json.operation !== terms.OPERATIONS_ENUM.LOGIN &&
|
|
243
244
|
json.operation !== terms.OPERATIONS_ENUM.LOGOUT) {
|
|
@@ -276,9 +277,11 @@ function getOperationFunction(json) {
|
|
|
276
277
|
*/
|
|
277
278
|
function operation(operation, context, authorize) {
|
|
278
279
|
operation.hdb_user = context?.user;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
280
|
+
const bypassAuth = !authorize;
|
|
281
|
+
return (0, operationAuthorizationState_ts_1.runWithOperationAuthorizationBypass)(bypassAuth, () => {
|
|
282
|
+
const operation_function = chooseOperation(operation, bypassAuth);
|
|
283
|
+
return processLocalTransaction({ body: operation }, operation_function);
|
|
284
|
+
});
|
|
282
285
|
}
|
|
283
286
|
async function catchup(req) {
|
|
284
287
|
operationLog.trace('In serverUtils.catchup');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverUtilities.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverUtilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serverUtilities.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverUtilities.ts"],"names":[],"mappings":"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"}
|
package/dist/server/static.js
CHANGED
|
@@ -56,7 +56,7 @@ const send_1 = __importDefault(require("send"));
|
|
|
56
56
|
*
|
|
57
57
|
* This plugin dynamically updates its behavior based on the current configuration file. Users can make updates and immediately see the changes reflect in the next request.
|
|
58
58
|
*
|
|
59
|
-
* Updates to the `files` option
|
|
59
|
+
* Updates to the `files` option incrementally add newly matched paths and remove paths that no longer match while preserving common entries.
|
|
60
60
|
* Updates to `urlPath` request a restart: the HTTP route mount is registered once at load and cannot be re-registered on a live server (#1583).
|
|
61
61
|
*/
|
|
62
62
|
/**
|
|
@@ -143,6 +143,29 @@ function handleApplication(scope) {
|
|
|
143
143
|
// keys are the URL paths relative to the mount base, values are the absolute paths to the files
|
|
144
144
|
const staticFiles = new Map();
|
|
145
145
|
const indexEntries = new Map();
|
|
146
|
+
const staticFileOwners = new Map();
|
|
147
|
+
const indexEntryOwners = new Map();
|
|
148
|
+
function setOwnedPath(paths, ownersByURL, urlPath, owner, path) {
|
|
149
|
+
let owners = ownersByURL.get(urlPath);
|
|
150
|
+
if (!owners)
|
|
151
|
+
ownersByURL.set(urlPath, (owners = new Map()));
|
|
152
|
+
owners.delete(owner);
|
|
153
|
+
owners.set(owner, path);
|
|
154
|
+
paths.set(urlPath, path);
|
|
155
|
+
}
|
|
156
|
+
function removeOwnedPath(paths, ownersByURL, urlPath, owner) {
|
|
157
|
+
const owners = ownersByURL.get(urlPath);
|
|
158
|
+
if (!owners?.delete(owner))
|
|
159
|
+
return;
|
|
160
|
+
const replacement = [...owners.values()].at(-1);
|
|
161
|
+
if (replacement === undefined) {
|
|
162
|
+
ownersByURL.delete(urlPath);
|
|
163
|
+
paths.delete(urlPath);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
paths.set(urlPath, replacement);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
146
169
|
// The HTTP route below is registered once, with the urlPath in effect at load time; the mount
|
|
147
170
|
// cannot be re-registered at runtime. Capture the matching base once so map keys always agree
|
|
148
171
|
// with the registered route (#1583).
|
|
@@ -151,6 +174,9 @@ function handleApplication(scope) {
|
|
|
151
174
|
// keep agreeing with the entry URL paths the file map is keyed by — but a redirect Location has
|
|
152
175
|
// to carry the application's mount too, or it would point outside the mount (#1583).
|
|
153
176
|
const externalBaseURLPath = scope.externalBasePath(baseURLPath);
|
|
177
|
+
let urlPathRestartPending = false;
|
|
178
|
+
let fileSelectionChangePending = false;
|
|
179
|
+
let entryHandler;
|
|
154
180
|
// A bare `before:` / `after:` key in YAML parses as null — treat it as unset, like before this
|
|
155
181
|
// option was validated.
|
|
156
182
|
const before = scope.options.get(['before']) ?? undefined;
|
|
@@ -175,14 +201,20 @@ function handleApplication(scope) {
|
|
|
175
201
|
warnIfBlockingRest();
|
|
176
202
|
scope.options.on('change', (key) => {
|
|
177
203
|
if (key[0] === 'files') {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
204
|
+
fileSelectionChangePending = true;
|
|
205
|
+
const updateReady = entryHandler?.ready;
|
|
206
|
+
const clearPending = () => {
|
|
207
|
+
if (entryHandler?.ready === updateReady)
|
|
208
|
+
fileSelectionChangePending = false;
|
|
209
|
+
};
|
|
210
|
+
updateReady?.then(clearPending, clearPending);
|
|
211
|
+
// EntryHandler updates are incremental: paths no longer matched emit unlink, newly matched
|
|
212
|
+
// paths emit add, and common unchanged paths remain valid in these maps.
|
|
213
|
+
scope.logger.info(`Static file matches updated due to change in ${key.join('.')}`);
|
|
182
214
|
return;
|
|
183
215
|
}
|
|
184
216
|
if (key[0] === 'urlPath') {
|
|
185
|
-
|
|
217
|
+
urlPathRestartPending = true;
|
|
186
218
|
scope.requestRestart();
|
|
187
219
|
return;
|
|
188
220
|
}
|
|
@@ -198,7 +230,10 @@ function handleApplication(scope) {
|
|
|
198
230
|
}
|
|
199
231
|
});
|
|
200
232
|
// Handle entry events for the default entry handler based on the `files` and `urlPath` options
|
|
201
|
-
scope.handleEntry((entry) => {
|
|
233
|
+
entryHandler = scope.handleEntry((entry) => {
|
|
234
|
+
if (urlPathRestartPending &&
|
|
235
|
+
(!fileSelectionChangePending || (entry.eventType !== 'unlink' && entry.eventType !== 'unlinkDir')))
|
|
236
|
+
return;
|
|
202
237
|
// entry.urlPath includes the component's base URL path, but when a `urlPath` is configured
|
|
203
238
|
// the routing chain strips that mount prefix from req.pathname before this plugin's handler
|
|
204
239
|
// runs — so key the maps relative to the base (#1583)
|
|
@@ -208,34 +243,38 @@ function handleApplication(scope) {
|
|
|
208
243
|
switch (entry.eventType) {
|
|
209
244
|
// Directories only matter for the `index` files
|
|
210
245
|
case 'addDir':
|
|
211
|
-
case 'unlinkDir':
|
|
212
246
|
// Handle `index.html` for directories for if/when the user enables the `index` option
|
|
213
247
|
const indexPath = (0, node_path_1.join)(entry.absolutePath, 'index.html');
|
|
214
|
-
if ((0, node_fs_1.existsSync)(indexPath))
|
|
215
|
-
indexEntries
|
|
216
|
-
|
|
248
|
+
if ((0, node_fs_1.existsSync)(indexPath))
|
|
249
|
+
setOwnedPath(indexEntries, indexEntryOwners, urlPath, entry.absolutePath, indexPath);
|
|
250
|
+
break;
|
|
251
|
+
case 'unlinkDir':
|
|
252
|
+
removeOwnedPath(indexEntries, indexEntryOwners, urlPath, entry.absolutePath);
|
|
217
253
|
break;
|
|
218
254
|
// Otherwise, user must specify pattern to match individual files
|
|
219
255
|
case 'add':
|
|
220
256
|
// Store the file in memory for serving
|
|
221
|
-
staticFiles
|
|
257
|
+
setOwnedPath(staticFiles, staticFileOwners, urlPath, entry.absolutePath, entry.absolutePath);
|
|
222
258
|
// If the file is an index.html, also store it in the index entries
|
|
223
259
|
if (urlPath.endsWith('index.html')) {
|
|
224
260
|
// Without trailing slash; null -> 301 redirect to trailing slash
|
|
225
261
|
let lastSlashIndex = urlPath.lastIndexOf('/');
|
|
226
|
-
indexEntries
|
|
262
|
+
setOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex), entry.absolutePath, null);
|
|
227
263
|
// With trailing slash; serves the index.html file
|
|
228
|
-
indexEntries
|
|
264
|
+
setOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex + 1), entry.absolutePath, entry.absolutePath);
|
|
229
265
|
}
|
|
230
266
|
break;
|
|
231
267
|
case 'unlink':
|
|
232
|
-
|
|
233
|
-
staticFiles.delete(urlPath);
|
|
268
|
+
removeOwnedPath(staticFiles, staticFileOwners, urlPath, entry.absolutePath);
|
|
234
269
|
// If the file is an index.html, remove it from the index entries as well
|
|
235
270
|
if (urlPath.endsWith('index.html')) {
|
|
236
271
|
let lastSlashIndex = urlPath.lastIndexOf('/');
|
|
237
|
-
|
|
238
|
-
|
|
272
|
+
const directoryURLPath = urlPath.slice(0, lastSlashIndex);
|
|
273
|
+
const directoryOwner = (0, node_path_1.dirname)(entry.absolutePath);
|
|
274
|
+
removeOwnedPath(indexEntries, indexEntryOwners, directoryURLPath, entry.absolutePath);
|
|
275
|
+
removeOwnedPath(indexEntries, indexEntryOwners, directoryURLPath, directoryOwner);
|
|
276
|
+
removeOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex + 1), entry.absolutePath);
|
|
277
|
+
removeOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex + 1), directoryOwner);
|
|
239
278
|
}
|
|
240
279
|
break;
|
|
241
280
|
}
|