@harperfast/harper-pro 5.0.6 → 5.0.8

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 (89) hide show
  1. package/core/components/EntryHandler.ts +2 -4
  2. package/core/components/OptionsWatcher.ts +9 -1
  3. package/core/components/Scope.ts +1 -1
  4. package/core/components/componentLoader.ts +4 -11
  5. package/core/components/requestRestart.ts +2 -17
  6. package/core/package-lock.json +67 -975
  7. package/core/resources/RecordEncoder.ts +9 -1
  8. package/core/resources/Table.ts +30 -14
  9. package/core/resources/databases.ts +1 -0
  10. package/core/resources/graphql.ts +168 -158
  11. package/core/resources/indexes/HierarchicalNavigableSmallWorld.ts +3 -14
  12. package/core/resources/indexes/vector.ts +0 -17
  13. package/core/resources/loadEnv.ts +16 -20
  14. package/core/resources/login.ts +3 -4
  15. package/core/resources/roles.ts +65 -60
  16. package/core/security/auth.ts +14 -15
  17. package/core/security/keys.js +1 -1
  18. package/core/server/DurableSubscriptionsSession.ts +1 -0
  19. package/core/server/REST.ts +11 -10
  20. package/core/server/fastifyRoutes.ts +29 -30
  21. package/core/server/graphqlQuerying.ts +3 -4
  22. package/core/server/http.ts +1 -175
  23. package/core/server/mqtt.ts +2 -8
  24. package/core/server/threads/threadServer.js +2 -30
  25. package/core/server/throttle.ts +0 -18
  26. package/core/utility/environment/environmentManager.js +4 -10
  27. package/core/utility/hdbTerms.ts +0 -1
  28. package/dist/core/components/EntryHandler.js +2 -4
  29. package/dist/core/components/EntryHandler.js.map +1 -1
  30. package/dist/core/components/OptionsWatcher.js +8 -1
  31. package/dist/core/components/OptionsWatcher.js.map +1 -1
  32. package/dist/core/components/Scope.js +1 -1
  33. package/dist/core/components/Scope.js.map +1 -1
  34. package/dist/core/components/componentLoader.js +3 -11
  35. package/dist/core/components/componentLoader.js.map +1 -1
  36. package/dist/core/components/requestRestart.js +1 -12
  37. package/dist/core/components/requestRestart.js.map +1 -1
  38. package/dist/core/resources/RecordEncoder.js +10 -1
  39. package/dist/core/resources/RecordEncoder.js.map +1 -1
  40. package/dist/core/resources/Table.js +31 -16
  41. package/dist/core/resources/Table.js.map +1 -1
  42. package/dist/core/resources/databases.js.map +1 -1
  43. package/dist/core/resources/graphql.js +12 -5
  44. package/dist/core/resources/graphql.js.map +1 -1
  45. package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js +2 -14
  46. package/dist/core/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  47. package/dist/core/resources/indexes/vector.js +0 -14
  48. package/dist/core/resources/indexes/vector.js.map +1 -1
  49. package/dist/core/resources/loadEnv.js +17 -20
  50. package/dist/core/resources/loadEnv.js.map +1 -1
  51. package/dist/core/resources/login.js +4 -4
  52. package/dist/core/resources/login.js.map +1 -1
  53. package/dist/core/resources/roles.js +68 -64
  54. package/dist/core/resources/roles.js.map +1 -1
  55. package/dist/core/security/auth.js +15 -17
  56. package/dist/core/security/auth.js.map +1 -1
  57. package/dist/core/security/keys.js +1 -1
  58. package/dist/core/security/keys.js.map +1 -1
  59. package/dist/core/server/DurableSubscriptionsSession.js +2 -0
  60. package/dist/core/server/DurableSubscriptionsSession.js.map +1 -1
  61. package/dist/core/server/REST.js +11 -11
  62. package/dist/core/server/REST.js.map +1 -1
  63. package/dist/core/server/fastifyRoutes.js +29 -30
  64. package/dist/core/server/fastifyRoutes.js.map +1 -1
  65. package/dist/core/server/graphqlQuerying.js +4 -5
  66. package/dist/core/server/graphqlQuerying.js.map +1 -1
  67. package/dist/core/server/http.js +0 -179
  68. package/dist/core/server/http.js.map +1 -1
  69. package/dist/core/server/mqtt.js +3 -5
  70. package/dist/core/server/mqtt.js.map +1 -1
  71. package/dist/core/server/threads/threadServer.js +2 -26
  72. package/dist/core/server/threads/threadServer.js.map +1 -1
  73. package/dist/core/server/throttle.js +0 -17
  74. package/dist/core/server/throttle.js.map +1 -1
  75. package/dist/core/utility/environment/environmentManager.js +4 -9
  76. package/dist/core/utility/environment/environmentManager.js.map +1 -1
  77. package/dist/core/utility/hdbTerms.js +0 -1
  78. package/dist/core/utility/hdbTerms.js.map +1 -1
  79. package/dist/replication/replicationConnection.js +13 -6
  80. package/dist/replication/replicationConnection.js.map +1 -1
  81. package/dist/security/certificate.js +1 -1
  82. package/dist/security/certificate.js.map +1 -1
  83. package/npm-shrinkwrap.json +58 -978
  84. package/package.json +2 -3
  85. package/replication/replicationConnection.ts +24 -18
  86. package/security/certificate.ts +1 -1
  87. package/studio/web/assets/{index-qbLPhOzw.js → index-BftP-yQ8.js} +2 -2
  88. package/studio/web/assets/{index-qbLPhOzw.js.map → index-BftP-yQ8.js.map} +1 -1
  89. package/studio/web/index.html +1 -1
@@ -189,14 +189,12 @@ export class EntryHandler extends EventEmitter<EntryHandlerEventMap> {
189
189
  .watch(this.#component.commonPatternBase, {
190
190
  cwd: this.#component.directory,
191
191
  persistent: false,
192
- followSymlinks: false,
193
192
  ignored: (path) => {
194
193
  const normalizedPath = path.replace(/\\/g, '/');
195
194
  const normalizedBases = allowedBases.map((base) => base.replace(/\\/g, '/'));
196
195
  return (
197
- normalizedPath.includes('/node_modules') ||
198
- (normalizedPath !== this.#component.directory.replace(/\\/g, '/') &&
199
- normalizedBases.every((base) => !normalizedPath.startsWith(base)))
196
+ normalizedPath !== this.#component.directory.replace(/\\/g, '/') &&
197
+ normalizedBases.every((base) => !normalizedPath.startsWith(base))
200
198
  );
201
199
  },
202
200
  })
@@ -178,7 +178,9 @@ export class OptionsWatcher extends EventEmitter<OptionsWatcherEventMap> {
178
178
  // First, ensure current and new config values are Config objects (not null, undefined, or a primitive)
179
179
  if (!this.#isConfig(currentConfigValue) || !this.#isConfig(newConfigValue)) {
180
180
  // If either is not a config, then just set as there is no need to diff/merge
181
- this.#setValue(prevKeys, newConfigValue);
181
+ if (!isDeepStrictEqual(currentConfigValue, newConfigValue)) {
182
+ this.#setValue(prevKeys, newConfigValue);
183
+ }
182
184
  return;
183
185
  }
184
186
 
@@ -256,6 +258,12 @@ export class OptionsWatcher extends EventEmitter<OptionsWatcherEventMap> {
256
258
  throw new InvalidValueTypeError(keys, value);
257
259
  }
258
260
 
261
+ if (keys.length === 0) {
262
+ this.#scopedConfig = value;
263
+ this.emit('change', keys, value, this.#scopedConfig);
264
+ return;
265
+ }
266
+
259
267
  let obj: ConfigValue = this.#scopedConfig;
260
268
 
261
269
  for (const key of keys.slice(0, -1)) {
@@ -63,7 +63,7 @@ export class Scope extends EventEmitter<ScopeEventsMap> {
63
63
  this.#pluginName = pluginName;
64
64
  this.#directory = directory;
65
65
  this.#configFilePath = configFilePath;
66
- this.#logger = loggerWithTag(this.#appName);
66
+ this.#logger = logger || loggerWithTag(this.#appName);
67
67
 
68
68
  this.databaseEvents = databaseEventsEmitter;
69
69
  this.applicationScope = applicationScope;
@@ -17,8 +17,7 @@ import * as staticFiles from '../server/static.ts';
17
17
  import * as loadEnv from '../resources/loadEnv.ts';
18
18
  import harperLogger from '../utility/logging/harper_logger.js';
19
19
  import * as dataLoader from '../resources/dataLoader.ts';
20
- import { restartWorkers, getWorkerIndex } from '../server/threads/manageThreads.js';
21
- import { resetRestartNeeded, subscribeToRestartRequests } from './requestRestart.ts';
20
+ import { watchDir, getWorkerIndex } from '../server/threads/manageThreads.js';
22
21
  import { scopedImport } from '../security/jsLoader.ts';
23
22
  import { server } from '../server/Server.ts';
24
23
  import { Resources } from '../resources/Resources.ts';
@@ -516,16 +515,10 @@ export async function loadComponent(
516
515
  }
517
516
 
518
517
  compName = parentCompName;
518
+ // Auto restart threads on changes to any app folder. TODO: Make this configurable
519
519
  if (isMainThread && !watchesSetup && autoReload) {
520
- let debounceTimer: ReturnType<typeof setTimeout> | null = null;
521
- subscribeToRestartRequests(() => {
522
- if (debounceTimer) clearTimeout(debounceTimer);
523
- debounceTimer = setTimeout(async () => {
524
- debounceTimer = null;
525
- resetRestartNeeded();
526
- await loadComponentDirectories();
527
- restartWorkers();
528
- }, 500);
520
+ watchDir(componentDirectory, async () => {
521
+ return loadComponentDirectories(); // return the promise
529
522
  });
530
523
  }
531
524
  if ((config.extensionModule || config.pluginModule) && (!isMainThread || config.runOnMainThread)) {
@@ -1,19 +1,11 @@
1
1
  import { Status } from '../server/status/index.ts';
2
2
 
3
- interface NotifyingArrayBuffer extends ArrayBuffer {
4
- notify(): void;
5
- cancel(): void;
6
- }
7
-
8
- let restartArrayBuffer: NotifyingArrayBuffer;
3
+ let restartArrayBuffer: ArrayBuffer;
9
4
  let restartNeededArray: Uint8Array;
10
- let onRestartRequestedCallback: (() => void) | null = null;
11
5
 
12
6
  function ensureInitialized() {
13
7
  if (!restartArrayBuffer) {
14
- restartArrayBuffer = Status.primaryStore.getUserSharedBuffer('restart-needed', new ArrayBuffer(1), {
15
- callback: () => onRestartRequestedCallback?.(),
16
- }) as NotifyingArrayBuffer;
8
+ restartArrayBuffer = Status.primaryStore.getUserSharedBuffer('restart-needed', new ArrayBuffer(1));
17
9
  restartNeededArray = new Uint8Array(restartArrayBuffer);
18
10
  }
19
11
  }
@@ -21,7 +13,6 @@ function ensureInitialized() {
21
13
  export function requestRestart() {
22
14
  ensureInitialized();
23
15
  restartNeededArray[0] = 1;
24
- restartArrayBuffer.notify();
25
16
  }
26
17
 
27
18
  export function restartNeeded() {
@@ -33,9 +24,3 @@ export function resetRestartNeeded() {
33
24
  ensureInitialized();
34
25
  restartNeededArray[0] = 0;
35
26
  }
36
-
37
- export function subscribeToRestartRequests(callback: () => void) {
38
- ensureInitialized();
39
- if (onRestartRequestedCallback) throw new Error('A restart-request subscriber is already registered');
40
- onRestartRequestedCallback = callback;
41
- }