@harperfast/harper-pro 5.0.0-beta.6 → 5.0.0-beta.7

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.
Files changed (81) hide show
  1. package/core/bin/harper.js +1 -1
  2. package/core/bin/run.js +2 -2
  3. package/core/components/Application.ts +6 -3
  4. package/core/components/componentLoader.ts +19 -11
  5. package/core/components/operations.js +13 -13
  6. package/core/components/operationsValidation.js +3 -3
  7. package/core/config/configUtils.js +20 -4
  8. package/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +3 -2
  9. package/core/resources/Resource.ts +17 -6
  10. package/core/resources/RocksTransactionLogStore.ts +8 -1
  11. package/core/resources/analytics/write.ts +6 -0
  12. package/core/resources/databases.ts +3 -2
  13. package/core/security/jsLoader.ts +127 -46
  14. package/core/server/REST.ts +20 -11
  15. package/core/server/http.ts +2 -2
  16. package/core/server/itc/serverHandlers.js +1 -1
  17. package/core/static/defaultConfig.yaml +1 -1
  18. package/core/utility/hdbTerms.ts +1 -0
  19. package/core/utility/logging/harper_logger.js +22 -1
  20. package/core/utility/logging/readLog.js +2 -2
  21. package/core/utility/npmUtilities.js +2 -2
  22. package/core/validation/configValidator.js +16 -8
  23. package/core/validation/readLogValidator.js +2 -2
  24. package/dist/core/bin/harper.js +1 -1
  25. package/dist/core/bin/run.js +2 -2
  26. package/dist/core/bin/run.js.map +1 -1
  27. package/dist/core/components/Application.js +7 -2
  28. package/dist/core/components/Application.js.map +1 -1
  29. package/dist/core/components/componentLoader.js +19 -9
  30. package/dist/core/components/componentLoader.js.map +1 -1
  31. package/dist/core/components/operations.js +13 -13
  32. package/dist/core/components/operations.js.map +1 -1
  33. package/dist/core/components/operationsValidation.js +3 -3
  34. package/dist/core/components/operationsValidation.js.map +1 -1
  35. package/dist/core/config/configUtils.js +23 -3
  36. package/dist/core/config/configUtils.js.map +1 -1
  37. package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +3 -2
  38. package/dist/core/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  39. package/dist/core/resources/Resource.js +11 -4
  40. package/dist/core/resources/Resource.js.map +1 -1
  41. package/dist/core/resources/RocksTransactionLogStore.js +8 -1
  42. package/dist/core/resources/RocksTransactionLogStore.js.map +1 -1
  43. package/dist/core/resources/analytics/write.js +6 -0
  44. package/dist/core/resources/analytics/write.js.map +1 -1
  45. package/dist/core/resources/databases.js +3 -2
  46. package/dist/core/resources/databases.js.map +1 -1
  47. package/dist/core/security/jsLoader.js +114 -40
  48. package/dist/core/security/jsLoader.js.map +1 -1
  49. package/dist/core/server/REST.js +17 -10
  50. package/dist/core/server/REST.js.map +1 -1
  51. package/dist/core/server/http.js +1 -1
  52. package/dist/core/server/http.js.map +1 -1
  53. package/dist/core/server/itc/serverHandlers.js +1 -1
  54. package/dist/core/server/itc/serverHandlers.js.map +1 -1
  55. package/dist/core/utility/hdbTerms.js +1 -0
  56. package/dist/core/utility/hdbTerms.js.map +1 -1
  57. package/dist/core/utility/logging/harper_logger.js +24 -1
  58. package/dist/core/utility/logging/harper_logger.js.map +1 -1
  59. package/dist/core/utility/logging/readLog.js +2 -2
  60. package/dist/core/utility/logging/readLog.js.map +1 -1
  61. package/dist/core/utility/npmUtilities.js +2 -2
  62. package/dist/core/utility/npmUtilities.js.map +1 -1
  63. package/dist/core/validation/configValidator.js +18 -8
  64. package/dist/core/validation/configValidator.js.map +1 -1
  65. package/dist/core/validation/readLogValidator.js +2 -2
  66. package/dist/core/validation/readLogValidator.js.map +1 -1
  67. package/dist/replication/nodeIdMapping.js +1 -1
  68. package/dist/replication/nodeIdMapping.js.map +1 -1
  69. package/npm-shrinkwrap.json +454 -453
  70. package/package.json +7 -4
  71. package/replication/nodeIdMapping.ts +1 -1
  72. package/static/defaultConfig.yaml +3 -0
  73. package/studio/web/assets/{index-BckVDix4.js → index-ClD_q6ya.js} +5 -5
  74. package/studio/web/assets/{index-BckVDix4.js.map → index-ClD_q6ya.js.map} +1 -1
  75. package/studio/web/assets/{index.lazy-iG1_8dzm.js → index.lazy-CXzU1gVu.js} +2 -2
  76. package/studio/web/assets/{index.lazy-iG1_8dzm.js.map → index.lazy-CXzU1gVu.js.map} +1 -1
  77. package/studio/web/assets/{profile-CzjslUXv.js → profile-DCNVg5yY.js} +2 -2
  78. package/studio/web/assets/{profile-CzjslUXv.js.map → profile-DCNVg5yY.js.map} +1 -1
  79. package/studio/web/assets/{status-BP4TQJDR.js → status-CoGlcjSB.js} +2 -2
  80. package/studio/web/assets/{status-BP4TQJDR.js.map → status-CoGlcjSB.js.map} +1 -1
  81. package/studio/web/index.html +1 -1
@@ -148,6 +148,7 @@ function parseJsonModule(source: string, url: string): any {
148
148
  async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
149
149
  const moduleCache = new Map<string, Promise<SourceTextModule | SyntheticModule>>();
150
150
  const linkingPromises = new Map<string, Promise<void>>();
151
+ const cjsCache = new Map<string, { exports: any }>();
151
152
 
152
153
  // Create a secure context with limited globals
153
154
  const contextObject = getGlobalObject(scope);
@@ -165,6 +166,9 @@ async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
165
166
  // block harper/* for now (reserving for potential future use)
166
167
  throw new Error(`Module ${specifier} is not allowed, may only access the 'harper' module`);
167
168
  }
169
+ if (parts[0] === 'file:') {
170
+ return specifier;
171
+ }
168
172
  const resolved = createRequire(referrer).resolve(specifier);
169
173
  if (isAbsolute(resolved)) {
170
174
  return pathToFileURL(resolved).toString();
@@ -176,7 +180,16 @@ async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
176
180
  * Load a CommonJS module in our private context
177
181
  */
178
182
  function loadCJS(url: string, source: string): { exports: any } {
183
+ // Check cache first to handle circular dependencies
184
+ if (cjsCache.has(url)) {
185
+ return cjsCache.get(url)!;
186
+ }
187
+
188
+ // Create module object and cache it immediately (before execution)
189
+ // This allows circular dependencies to get a reference to the incomplete module
179
190
  const cjsModule = { exports: {} };
191
+ cjsCache.set(url, cjsModule);
192
+
180
193
  if (url.endsWith('.json')) {
181
194
  cjsModule.exports = parseJsonModule(source, url);
182
195
  return cjsModule;
@@ -204,7 +217,7 @@ async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
204
217
  filename: url,
205
218
  async importModuleDynamically(specifier: string, script) {
206
219
  const resolvedUrl = resolveModule(specifier, script.sourceURL);
207
- const useContainment = specifier.startsWith('.') || scope.dependencyContainment;
220
+ const useContainment = specifier.startsWith('.') || scope.dependencyContainment !== false;
208
221
  const dynamicModule = await loadModuleWithCache(resolvedUrl, useContainment);
209
222
  return dynamicModule;
210
223
  },
@@ -221,16 +234,18 @@ async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
221
234
  }
222
235
  function loadCJSModule(url: string, source: string, usePrivateGlobal: boolean): SyntheticModule {
223
236
  const cjsModule = usePrivateGlobal ? loadCJS(url, source) : { exports: require(url) };
224
- const exportNames = Object.keys(cjsModule.exports);
237
+ let exports = cjsModule.exports;
238
+ if (exports.default === undefined) {
239
+ // provide the default export for compatibility
240
+ exports = { default: exports, ...exports };
241
+ }
242
+ const exportNames = Object.keys(exports);
243
+
225
244
  const synModule = new SyntheticModule(
226
- exportNames.length > 0 ? exportNames : ['default'],
245
+ exportNames,
227
246
  function () {
228
- if (exportNames.length > 0) {
229
- for (const key of exportNames) {
230
- this.setExport(key, cjsModule.exports[key]);
231
- }
232
- } else {
233
- this.setExport('default', cjsModule.exports);
247
+ for (const key of exportNames) {
248
+ this.setExport(key, exports[key]);
234
249
  }
235
250
  },
236
251
  { identifier: url, context }
@@ -239,13 +254,68 @@ async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
239
254
  return synModule;
240
255
  }
241
256
 
257
+ /**
258
+ * Check if a package (or any of its dependencies) depends on harper
259
+ * Expects a file URL like: file:///path/to/node_modules/package-name/dist/index.js
260
+ */
261
+ function packageDependsOnHarper(fileUrl: string): boolean {
262
+ try {
263
+ // Convert file:// URL to path
264
+ const filePath = fileURLToPath(fileUrl);
265
+
266
+ // Find the node_modules directory and package name
267
+ // Example: /path/to/node_modules/package-name/dist/index.js
268
+ // or: /path/to/node_modules/@scope/package-name/dist/index.js
269
+ const nodeModulesMarker = '/node_modules/';
270
+ const nodeModulesIndex = filePath.lastIndexOf(nodeModulesMarker);
271
+ if (nodeModulesIndex === -1) return false;
272
+
273
+ // Get the part after /node_modules/
274
+ const afterNodeModules = filePath.substring(nodeModulesIndex + nodeModulesMarker.length);
275
+ const parts = afterNodeModules.split('/');
276
+
277
+ // Handle scoped packages (@scope/package-name) vs regular packages (package-name)
278
+ const beforeNodeModules = filePath.substring(0, nodeModulesIndex);
279
+ const packageRoot = parts[0].startsWith('@')
280
+ ? join(beforeNodeModules, 'node_modules', parts[0], parts[1])
281
+ : join(beforeNodeModules, 'node_modules', parts[0]);
282
+
283
+ // Read package.json from the package root
284
+ const packageJsonPath = join(packageRoot, 'package.json');
285
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
286
+
287
+ const deps = {
288
+ ...packageJson.dependencies,
289
+ ...packageJson.devDependencies,
290
+ ...packageJson.peerDependencies,
291
+ };
292
+
293
+ // Check if harper is a direct dependency
294
+ return Object.keys(deps).some((dep) => HARPER_MODULE_IDS.has(dep));
295
+ } catch {
296
+ return false;
297
+ }
298
+ }
299
+
242
300
  /**
243
301
  * Linker function for module resolution during instantiation
244
302
  */
245
303
  async function linker(specifier: string, referencingModule: SourceTextModule | SyntheticModule) {
246
304
  const resolvedUrl = resolveModule(specifier, referencingModule.identifier);
247
305
 
248
- const useContainment = specifier.startsWith('.') || scope.dependencyContainment;
306
+ // Determine if we should use VM containment for this module
307
+ let useContainment = specifier.startsWith('.'); // Always contain relative imports
308
+
309
+ if (!useContainment && scope.dependencyContainment !== false) {
310
+ // For npm packages, check if they depend on harper
311
+ if (resolvedUrl.startsWith('file://') && resolvedUrl.includes('node_modules')) {
312
+ useContainment = packageDependsOnHarper(resolvedUrl);
313
+ } else {
314
+ // Non-file URLs (bare specifiers) - use default behavior
315
+ useContainment = scope.dependencyContainment === true;
316
+ }
317
+ }
318
+
249
319
  // Return the module immediately (even if not yet linked) to support circular dependencies
250
320
  return await getOrCreateModule(resolvedUrl, useContainment);
251
321
  }
@@ -351,38 +421,25 @@ async function loadModuleWithVM(moduleUrl: string, scope: ApplicationScope) {
351
421
  }
352
422
  } else {
353
423
  const replacedModule = checkAllowedModulePath(url, scope.verifyPath);
354
- // For Node.js built-in modules (node:) and npm packages
424
+ // For Node.js built-in modules (node:) and npm packages without dependency containment
355
425
  // Always try require first to properly handle CJS modules with named exports
356
- try {
357
- const cjsExports = replacedModule ?? require(url);
358
- // It's a CJS module - expose all properties as named exports
359
- const exportNames = Object.keys(cjsExports);
360
- module = new SyntheticModule(
361
- exportNames.length > 0 ? [...exportNames, 'default'] : ['default'],
362
- function () {
363
- if (exportNames.length > 0) {
364
- for (const key of exportNames) {
365
- this.setExport(key, cjsExports[key]);
366
- }
367
- }
368
- this.setExport('default', cjsExports);
369
- },
370
- { identifier: url, context }
371
- );
372
- } catch {
373
- // Fall back to dynamic import for ESM packages
374
- const importedModule = await import(url);
375
- const exportNames = Object.keys(importedModule);
376
- module = new SyntheticModule(
377
- exportNames,
378
- function () {
379
- for (const key of exportNames) {
380
- this.setExport(key, importedModule[key]);
381
- }
382
- },
383
- { identifier: url, context }
384
- );
426
+ // Fall back to dynamic import for ESM packages
427
+ let importedModule = replacedModule ?? (await import(url));
428
+ const cjsModule = importedModule['module.exports'];
429
+ if (cjsModule) {
430
+ // back-compat import
431
+ importedModule = importedModule.default ? { default: importedModule.default, ...cjsModule } : cjsModule;
385
432
  }
433
+ const exportNames = Object.keys(importedModule);
434
+ module = new SyntheticModule(
435
+ exportNames,
436
+ function () {
437
+ for (const key of exportNames) {
438
+ this.setExport(key, importedModule[key]);
439
+ }
440
+ },
441
+ { identifier: url, context }
442
+ );
386
443
  }
387
444
 
388
445
  return module;
@@ -533,6 +590,25 @@ function getHarperExports(scope: ApplicationScope) {
533
590
  authenticateUser: server.authenticateUser,
534
591
  operation: server.operation,
535
592
  contentTypes,
593
+ Attribute: undefined,
594
+ Config: undefined,
595
+ ConfigValue: undefined,
596
+ Context: undefined,
597
+ FileAndURLPathConfig: undefined,
598
+ FilesOption: undefined,
599
+ FilesOptionObject: undefined,
600
+ IterableEventQueue: undefined,
601
+ Logger: undefined,
602
+ Query: undefined,
603
+ RecordObject: undefined,
604
+ RequestTargetOrId: undefined,
605
+ ResourceInterface: undefined,
606
+ Scope: undefined,
607
+ Session: undefined,
608
+ SourceContext: undefined,
609
+ SubscriptionRequest: undefined,
610
+ Table: undefined,
611
+ User: undefined,
536
612
  };
537
613
  }
538
614
  const ALLOWED_NODE_BUILTIN_MODULES = env.get(CONFIG_PARAMS.APPLICATIONS_ALLOWEDBUILTINMODULES)
@@ -544,14 +620,19 @@ const ALLOWED_NODE_BUILTIN_MODULES = env.get(CONFIG_PARAMS.APPLICATIONS_ALLOWEDB
544
620
  },
545
621
  };
546
622
  const ALLOWED_COMMANDS = new Set(env.get(CONFIG_PARAMS.APPLICATIONS_ALLOWEDSPAWNCOMMANDS) ?? []);
547
- const REPLACED_BUILTIN_MODULES = {
548
- child_process: {
549
- exec: createSpawn(child_process.exec),
550
- execFile: createSpawn(child_process.execFile),
551
- fork: createSpawn(child_process.fork, true), // this is launching node, so deemed safe
552
- spawn: createSpawn(child_process.spawn),
623
+ const child_processConstrained = {
624
+ exec: createSpawn(child_process.exec),
625
+ execFile: createSpawn(child_process.execFile),
626
+ fork: createSpawn(child_process.fork, true), // this is launching node, so deemed safe
627
+ spawn: createSpawn(child_process.spawn),
628
+ execSync: function () {
629
+ throw new Error('execSync is not allowed');
553
630
  },
554
631
  };
632
+ child_processConstrained.default = child_processConstrained;
633
+ const REPLACED_BUILTIN_MODULES = {
634
+ child_process: child_processConstrained,
635
+ };
555
636
  /**
556
637
  * Creates a ChildProcess-like object for an existing process
557
638
  */
@@ -4,7 +4,7 @@ import * as harperLogger from '../utility/logging/harper_logger.js';
4
4
  import { ServerOptions } from 'http';
5
5
  import { ServerError, ClientError } from '../utility/errors/hdbError.js';
6
6
  import { Resources } from '../resources/Resources.ts';
7
- import { Resource } from '../resources/Resource.ts';
7
+ import { Resource, missingMethod, allowedMethods } from '../resources/Resource.ts';
8
8
  import { IterableEventQueue } from '../resources/IterableEventQueue.ts';
9
9
  import { transaction } from '../resources/transaction.ts';
10
10
  import { Headers, mergeHeaders } from '../server/serverHelpers/Headers.ts';
@@ -114,29 +114,38 @@ async function http(request: Context & Request, nextHandler) {
114
114
  switch (method) {
115
115
  case 'GET':
116
116
  case 'HEAD':
117
- return resource.get(target, request);
117
+ return resource.get ? resource.get(target, request) : missingMethod(resource, 'get');
118
118
  case 'POST':
119
- return resource.post(target, request.data, request);
119
+ return resource.post ? resource.post(target, request.data, request) : missingMethod(resource, 'post');
120
120
  case 'PUT':
121
- return resource.put(target, request.data, request);
121
+ return resource.put ? resource.put(target, request.data, request) : missingMethod(resource, 'put');
122
122
  case 'DELETE':
123
- return resource.delete(target, request);
123
+ return resource.delete ? resource.delete(target, request) : missingMethod(resource, 'delete');
124
124
  case 'PATCH':
125
- return resource.patch(target, request.data, request);
125
+ return resource.patch ? resource.patch(target, request.data, request) : missingMethod(resource, 'patch');
126
126
  case 'OPTIONS': // used primarily for CORS
127
- headers.setIfNone('Allow', 'GET, HEAD, POST, PUT, DELETE, PATCH, OPTIONS, TRACE, QUERY, COPY, MOVE');
127
+ headers.setIfNone(
128
+ 'Allow',
129
+ allowedMethods(resource)
130
+ .map((method) => method.toUpperCase())
131
+ .join(', ')
132
+ );
128
133
  return;
129
134
  case 'CONNECT':
130
135
  // websockets? and event-stream
131
- return resource.connect(target, null, request);
136
+ return resource.connect ? resource.connect(target, null, request) : missingMethod(resource, 'connect');
132
137
  case 'TRACE':
133
138
  return 'Harper is the terminating server';
134
139
  case 'QUERY':
135
- return resource.query(target, request.data, request);
140
+ return resource.query ? resource.query(target, request.data, request) : missingMethod(resource, 'query');
136
141
  case 'COPY': // methods suggested from webdav RFC 4918
137
- return resource.copy(target, headersObject.destination, request);
142
+ return resource.copy
143
+ ? resource.copy(target, headersObject.destination, request)
144
+ : missingMethod(resource, 'copy');
138
145
  case 'MOVE':
139
- return resource.move(target, headersObject.destination, request);
146
+ return resource.move
147
+ ? resource.move(target, headersObject.destination, request)
148
+ : missingMethod(resource, 'move');
140
149
  case 'BREW': // RFC 2324
141
150
  throw new ClientError("Harper is short and stout and can't brew coffee", 418);
142
151
  default:
@@ -8,7 +8,7 @@ import harperLogger from '../utility/logging/harper_logger.js';
8
8
  import { parentPort } from 'node:worker_threads';
9
9
  import env from '../utility/environment/environmentManager.js';
10
10
  import * as terms from '../utility/hdbTerms.ts';
11
- import { resolvePath } from '../config/configUtils.js';
11
+ import { getConfigPath } from '../config/configUtils.js';
12
12
  import { getTicketKeys } from './threads/manageThreads.js';
13
13
  import { createTLSSelector } from '../security/keys.js';
14
14
  import { createSecureServer } from 'node:http2';
@@ -181,7 +181,7 @@ function getPorts(options) {
181
181
 
182
182
  if (options?.usageType === 'operations-api' && env.get(terms.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET)) {
183
183
  ports.push({
184
- port: resolvePath(env.get(terms.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET)),
184
+ port: getConfigPath(terms.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET),
185
185
  secure: false,
186
186
  });
187
187
  }
@@ -149,7 +149,7 @@ async function componentStatusRequestHandler(event) {
149
149
  if (originatorThreadId === undefined) {
150
150
  hdbLogger.debug('No originator threadId, falling back to broadcast');
151
151
  } else {
152
- hdbLogger.warn(`Failed to send direct response to thread ${originatorThreadId}, falling back to broadcast`);
152
+ hdbLogger.debug(`Failed to send direct response to thread ${originatorThreadId}, falling back to broadcast`);
153
153
  }
154
154
  await sendItcEvent(responseMessage);
155
155
  }
@@ -26,7 +26,7 @@ analytics:
26
26
  applications:
27
27
  lockdown: freeze
28
28
  containment: vm
29
- dependencyContainment: false
29
+ dependencyContainment: auto
30
30
  allowedSpawnCommands:
31
31
  - npm
32
32
  - node
@@ -426,6 +426,7 @@ export const LEGACY_CONFIG_PARAMS = {
426
426
  export const CONFIG_PARAMS = {
427
427
  ANALYTICS_AGGREGATEPERIOD: 'analytics_aggregatePeriod',
428
428
  ANALYTICS_REPLICATE: 'analytics_replicate',
429
+ ANALYTICS_STORAGEINTERVAL: 'analytics_storageInterval',
429
430
  AUTHENTICATION_AUTHORIZELOCAL: 'authentication_authorizeLocal',
430
431
  AUTHENTICATION_CACHETTL: 'authentication_cacheTTL',
431
432
  AUTHENTICATION_COOKIE_DOMAINS: 'authentication_cookie_domains',
@@ -98,6 +98,14 @@ function updateConditional(logger) {
98
98
  conditional.debug = LOG_LEVEL_HIERARCHY.debug >= logger.level ? logger.debug.bind(logger) : undefined;
99
99
  conditional.trace = LOG_LEVEL_HIERARCHY.trace >= logger.level ? logger.trace.bind(logger) : undefined;
100
100
  }
101
+ /**
102
+ * Resolve a config path value against rootPath if it is relative.
103
+ */
104
+ function resolveLogPath(configPath, rootPath) {
105
+ if (!configPath || !rootPath) return configPath;
106
+ if (pathModule.isAbsolute(configPath)) return configPath;
107
+ return pathModule.resolve(rootPath, configPath);
108
+ }
101
109
  async function updateLogSettings() {
102
110
  if (!rootConfig) {
103
111
  // set up the initial watcher
@@ -109,6 +117,14 @@ async function updateLogSettings() {
109
117
  }
110
118
  let rootConfigObject = rootConfig.config;
111
119
  const logOptions = rootConfigObject.logging ?? {};
120
+ // Resolve relative paths against rootPath from the same config
121
+ const rootPath = rootConfigObject.rootPath;
122
+ if (logOptions.root) {
123
+ logOptions.root = resolveLogPath(logOptions.root, rootPath);
124
+ }
125
+ if (logOptions.rotation?.path) {
126
+ logOptions.rotation.path = resolveLogPath(logOptions.rotation.path, rootPath);
127
+ }
112
128
  updateLogger(mainLogger, logOptions);
113
129
  logFilePath = mainLogger.path;
114
130
  logConsole = logOptions.console ?? false;
@@ -805,13 +821,18 @@ function getLogConfig(hdbConfigPath) {
805
821
  };
806
822
  }
807
823
  const configDoc = YAML.parseDocument(fs.readFileSync(hdbConfigPath, 'utf8'));
824
+ const rootPath = configDoc.getIn(['rootPath']);
808
825
  const level = configDoc.getIn(['logging', 'level']);
809
- const configLogPath = configDoc.getIn(['logging', 'root']);
826
+ const configLogPath = resolveLogPath(configDoc.getIn(['logging', 'root']), rootPath);
810
827
  const toFile = configDoc.getIn(['logging', 'file']);
811
828
  const toStream = configDoc.getIn(['logging', 'stdStreams']);
812
829
  const logConsole = configDoc.getIn(['logging', 'console']);
813
830
  const colorMode = configDoc.getIn(['logging', 'colors']) ?? true; // default to true
814
831
  const rotation = configDoc.getIn(['logging', 'rotation'])?.toJSON();
832
+ // Resolve rotation path if relative
833
+ if (rotation?.path) {
834
+ rotation.path = resolveLogPath(rotation.path, rootPath);
835
+ }
815
836
 
816
837
  return {
817
838
  level,
@@ -2,11 +2,11 @@
2
2
 
3
3
  const hdbTerms = require('../hdbTerms.ts');
4
4
  const hdbLogger = require('./harper_logger.js');
5
- const envMangr = require('../environment/environmentManager.js');
6
5
  const validator = require('../../validation/readLogValidator.js');
7
6
  const path = require('path');
8
7
  const fs = require('fs-extra');
9
8
  const { once } = require('events');
9
+ const { getConfigPath } = require('../../config/configUtils.js');
10
10
  const { handleHDBError, hdbErrors } = require('../errors/hdbError.js');
11
11
  const { PACKAGE_ROOT } = require('../../utility/packageUtils.js');
12
12
  const { server } = require('../../server/Server.ts');
@@ -39,7 +39,7 @@ async function readLog(request) {
39
39
  // start pulling logs from the other nodes now so it can be done in parallel
40
40
  let whenReplicatedResponse = server.replication.replicateOperation(request);
41
41
 
42
- const logPath = envMangr.get(hdbTerms.HDB_SETTINGS_NAMES.LOG_PATH_KEY);
42
+ const logPath = getConfigPath(hdbTerms.HDB_SETTINGS_NAMES.LOG_PATH_KEY);
43
43
  const logName = request.log_name === undefined ? hdbTerms.LOG_NAMES.HDB : request.log_name;
44
44
  const readLogPath =
45
45
  logName === hdbTerms.LOG_NAMES.INSTALL
@@ -14,7 +14,7 @@ module.exports = {
14
14
  };
15
15
 
16
16
  const { CONFIG_PARAMS } = require('./hdbTerms.ts');
17
- const { getConfigValue } = require('../config/configUtils.js');
17
+ const { getConfigPath } = require('../config/configUtils.js');
18
18
  const { nonInteractiveSpawn } = require('../components/Application.ts');
19
19
 
20
20
  /**
@@ -34,7 +34,7 @@ async function installModules(req) {
34
34
 
35
35
  let { projects, dryRun } = req;
36
36
 
37
- const componentsRootDirPath = getConfigValue(CONFIG_PARAMS.COMPONENTSROOT);
37
+ const componentsRootDirPath = getConfigPath(CONFIG_PARAMS.COMPONENTSROOT);
38
38
 
39
39
  const responseObject = {};
40
40
 
@@ -226,9 +226,17 @@ function doesPathExist(pathToCheck) {
226
226
  }
227
227
 
228
228
  function validatePath(value, helpers) {
229
- Joi.assert(value, string.pattern(/^[\\/]$|([\\/a-zA-Z_0-9:-]+)+$/, 'directory path'));
229
+ Joi.assert(value, string.pattern(/^[\\/~]$|([\\/~a-zA-Z_0-9:-]+)+$/, 'directory path'));
230
230
 
231
- const doesExistMsg = doesPathExist(value);
231
+ let resolvedValue;
232
+ if (value.startsWith('~/')) {
233
+ resolvedValue = path.join(os.homedir(), value.slice(1));
234
+ } else if (path.isAbsolute(value)) {
235
+ resolvedValue = value;
236
+ } else {
237
+ resolvedValue = path.join(hdbRoot, value);
238
+ }
239
+ const doesExistMsg = doesPathExist(resolvedValue);
232
240
  if (doesExistMsg) {
233
241
  return helpers.message(doesExistMsg);
234
242
  }
@@ -302,17 +310,17 @@ function setDefaultRoot(parent, helpers) {
302
310
 
303
311
  switch (configParam) {
304
312
  case 'componentsRoot':
305
- return path.join(hdbRoot, DEFAULT_COMPONENTS_FOLDER);
313
+ return DEFAULT_COMPONENTS_FOLDER;
306
314
  case 'logging.root':
307
- return path.join(hdbRoot, DEFAULT_LOG_FOLDER);
315
+ return DEFAULT_LOG_FOLDER;
308
316
  case 'storage.path':
309
317
  const legacyStoragePath = path.join(hdbRoot, hdbTerms.LEGACY_DATABASES_DIR_NAME);
310
- if (fs.existsSync(legacyStoragePath)) return legacyStoragePath;
311
- return path.join(hdbRoot, hdbTerms.DATABASES_DIR_NAME);
318
+ if (fs.existsSync(legacyStoragePath)) return hdbTerms.LEGACY_DATABASES_DIR_NAME;
319
+ return hdbTerms.DATABASES_DIR_NAME;
312
320
  case 'logging.rotation.path':
313
- return path.join(hdbRoot, DEFAULT_LOG_FOLDER);
321
+ return DEFAULT_LOG_FOLDER;
314
322
  case 'operationsApi.network.domainSocket':
315
- return configParam == null ? null : path.join(hdbRoot, 'operations-server');
323
+ return configParam == null ? null : 'operations-server';
316
324
  default:
317
325
  throw new Error(`Error setting default root for config parameter: ${configParam}. Unrecognized config parameter`);
318
326
  }
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- const envMangr = require('../utility/environment/environmentManager.js');
4
3
  const Joi = require('joi');
5
4
  const validator = require('./validationWrapper.js');
6
5
  const moment = require('moment');
7
6
  const fs = require('fs-extra');
8
7
  const path = require('path');
9
8
  const _ = require('lodash');
9
+ const { getConfigPath } = require('../config/configUtils.js');
10
10
  const hdbTerms = require('../utility/hdbTerms.ts');
11
11
  const { LOG_LEVELS } = require('../utility/hdbTerms.ts');
12
12
 
@@ -49,7 +49,7 @@ function validateReadLogPath(value, helpers) {
49
49
  return helpers.message(`'log_name' '${value}' is invalid.`);
50
50
  }
51
51
 
52
- const logPath = envMangr.get(hdbTerms.HDB_SETTINGS_NAMES.LOG_PATH_KEY);
52
+ const logPath = getConfigPath(hdbTerms.HDB_SETTINGS_NAMES.LOG_PATH_KEY);
53
53
  const logName = value === undefined ? hdbTerms.LOG_NAMES.HDB : value;
54
54
  const readLogPath =
55
55
  logName === hdbTerms.LOG_NAMES.INSTALL
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --disable-warning=ExperimentalWarning --experimental-vm-modules
1
+ #!/usr/bin/env node
2
2
  'use strict';
3
3
  const fs = require('node:fs');
4
4
  const path = require('node:path');
@@ -240,7 +240,7 @@ function startupLog(portResolutions) {
240
240
  ? `, TCP: ${env.get(CONFIG_PARAMS.THREADS_DEBUG_PORT)}\n`
241
241
  : '\n';
242
242
  }
243
- const logFilePath = path.join(env.get(CONFIG_PARAMS.LOGGING_ROOT), 'hdb.log');
243
+ const logFilePath = path.join(configUtils.getConfigPath(CONFIG_PARAMS.LOGGING_ROOT), 'hdb.log');
244
244
  logMsg += `${pad('Logging:')}level: ${env.get(CONFIG_PARAMS.LOGGING_LEVEL)}, location: ${logFilePath + (env.get(CONFIG_PARAMS.LOGGING_STDSTREAMS) ? ', stdout/err' : '')}\n`;
245
245
  // Database Log aka Applications API aka http (in config)
246
246
  logMsg += pad('Default:');
@@ -258,7 +258,7 @@ function startupLog(portResolutions) {
258
258
  logMsg += `CORS: ${env.get(CONFIG_PARAMS.OPERATIONSAPI_NETWORK_CORS)
259
259
  ? `enabled for ${env.get(CONFIG_PARAMS.OPERATIONSAPI_NETWORK_CORSACCESSLIST)}`
260
260
  : 'disabled'}`;
261
- logMsg += `, unix socket: ${env.get(CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET)}\n`;
261
+ logMsg += `, unix socket: ${configUtils.getConfigPath(CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET)}\n`;
262
262
  if (env.get(CONFIG_PARAMS.OPERATIONSAPI_NETWORK_PORT)) {
263
263
  logMsg +=
264
264
  pad('') +
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../core/bin/run.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../core/bin/run.js"],"names":[],"mappings":"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"}
@@ -304,7 +304,10 @@ class Application {
304
304
  this.payload = payload;
305
305
  this.packageIdentifier = packageIdentifier && derivePackageIdentifier(packageIdentifier);
306
306
  this.install = install;
307
- this.dirPath = (0, node_path_1.join)((0, configUtils_js_1.getConfigValue)(hdbTerms_js_1.CONFIG_PARAMS.COMPONENTSROOT), name);
307
+ const componentsRoot = (0, configUtils_js_1.getConfigPath)(hdbTerms_js_1.CONFIG_PARAMS.COMPONENTSROOT);
308
+ if (!componentsRoot)
309
+ throw new Error('componentsRoot is not configured');
310
+ this.dirPath = (0, node_path_1.join)(componentsRoot, name);
308
311
  this.logger = harper_logger_js_1.default.loggerWithTag(name);
309
312
  this.packageManagerPrefix = (0, configUtils_js_1.getConfigValue)(hdbTerms_js_1.CONFIG_PARAMS.APPLICATIONS_PACKAGEMANAGERPREFIX);
310
313
  }
@@ -359,7 +362,9 @@ async function installApplications() {
359
362
  applicationInstallationPromises.push(prepareApplication(application));
360
363
  }
361
364
  const config = (0, configUtils_js_1.getConfigObj)();
362
- const componentsRootDirPath = (0, configUtils_js_1.getConfigValue)(hdbTerms_js_1.CONFIG_PARAMS.COMPONENTSROOT);
365
+ const componentsRootDirPath = (0, configUtils_js_1.getConfigPath)(hdbTerms_js_1.CONFIG_PARAMS.COMPONENTSROOT);
366
+ if (!componentsRootDirPath)
367
+ throw new Error('componentsRoot is not configured');
363
368
  // Ensure component directory exists
364
369
  await (0, promises_1.mkdir)(componentsRootDirPath, { recursive: true });
365
370
  const harperApplicationLockPath = (0, node_path_1.join)((0, configUtils_js_1.getConfigValue)(hdbTerms_js_1.CONFIG_PARAMS.ROOTPATH), 'harper-application-lock.json');