@harperfast/harper 5.3.0-beta.1 → 5.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/components/DESIGN.md +421 -0
  2. package/components/mcp/DESIGN.md +109 -0
  3. package/components/mcp/audit.ts +21 -17
  4. package/config/DESIGN.md +306 -0
  5. package/dataLayer/DESIGN.md +179 -0
  6. package/dataLayer/restoreMarker.ts +92 -25
  7. package/dist/components/mcp/audit.d.ts +2 -1
  8. package/dist/components/mcp/audit.js +21 -17
  9. package/dist/components/mcp/audit.js.map +1 -1
  10. package/dist/dataLayer/restoreMarker.d.ts +21 -8
  11. package/dist/dataLayer/restoreMarker.js +94 -27
  12. package/dist/dataLayer/restoreMarker.js.map +1 -1
  13. package/dist/index.d.ts +1 -0
  14. package/dist/index.js +6 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/resources/RecordEncoder.js +25 -5
  17. package/dist/resources/RecordEncoder.js.map +1 -1
  18. package/dist/resources/Table.js +48 -2
  19. package/dist/resources/Table.js.map +1 -1
  20. package/dist/resources/analytics/write.d.ts +3 -0
  21. package/dist/resources/analytics/write.js +39 -13
  22. package/dist/resources/analytics/write.js.map +1 -1
  23. package/dist/resources/crdt.d.ts +10 -0
  24. package/dist/resources/crdt.js +22 -0
  25. package/dist/resources/crdt.js.map +1 -1
  26. package/dist/resources/databases.js +1 -1
  27. package/dist/resources/databases.js.map +1 -1
  28. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +2 -2
  29. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +43 -24
  30. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  31. package/dist/resources/indexes/fullTextDerivedIndex.d.ts +81 -0
  32. package/dist/resources/indexes/fullTextDerivedIndex.js +1004 -0
  33. package/dist/resources/indexes/fullTextDerivedIndex.js.map +1 -0
  34. package/dist/resources/indexes/fullTextNativeBinding.d.ts +78 -0
  35. package/dist/resources/indexes/fullTextNativeBinding.js +85 -0
  36. package/dist/resources/indexes/fullTextNativeBinding.js.map +1 -0
  37. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +24 -0
  38. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +149 -0
  39. package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -0
  40. package/dist/resources/recordLockCoordinator.d.ts +5 -5
  41. package/dist/resources/recordLockCoordinator.js +48 -16
  42. package/dist/resources/recordLockCoordinator.js.map +1 -1
  43. package/dist/resources/transactionBroadcast.js +4 -6
  44. package/dist/resources/transactionBroadcast.js.map +1 -1
  45. package/dist/security/auth.js +59 -23
  46. package/dist/security/auth.js.map +1 -1
  47. package/dist/security/deferredAuthentication.d.ts +11 -0
  48. package/dist/security/deferredAuthentication.js +25 -3
  49. package/dist/security/deferredAuthentication.js.map +1 -1
  50. package/dist/security/jsLoader.js +3 -0
  51. package/dist/security/jsLoader.js.map +1 -1
  52. package/dist/server/REST.js +6 -3
  53. package/dist/server/REST.js.map +1 -1
  54. package/dist/server/mqtt.js +5 -1
  55. package/dist/server/mqtt.js.map +1 -1
  56. package/dist/server/serverHelpers/serverUtilities.d.ts +3 -3
  57. package/dist/server/serverHelpers/serverUtilities.js +14 -3
  58. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  59. package/dist/server/serverHelpers/uwsServer.js +4 -1
  60. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  61. package/dist/server/serverHelpers/webSocketCloseReason.d.ts +2 -0
  62. package/dist/server/serverHelpers/webSocketCloseReason.js +29 -0
  63. package/dist/server/serverHelpers/webSocketCloseReason.js.map +1 -0
  64. package/dist/utility/logging/harper_logger.js +1 -0
  65. package/dist/utility/logging/harper_logger.js.map +1 -1
  66. package/index.ts +3 -0
  67. package/npm-shrinkwrap.json +104 -104
  68. package/package.json +6 -5
  69. package/resources/DESIGN.md +568 -3
  70. package/resources/RecordEncoder.ts +27 -5
  71. package/resources/Table.ts +49 -3
  72. package/resources/analytics/DESIGN.md +38 -0
  73. package/resources/analytics/write.ts +40 -14
  74. package/resources/crdt.ts +22 -0
  75. package/resources/databases.ts +1 -1
  76. package/resources/indexes/DESIGN.md +833 -0
  77. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +44 -25
  78. package/resources/indexes/fullTextDerivedIndex.ts +1165 -0
  79. package/resources/indexes/fullTextNativeBinding.ts +146 -0
  80. package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +181 -0
  81. package/resources/record-locks.md +1407 -0
  82. package/resources/recordLockCoordinator.ts +61 -22
  83. package/resources/scheduler/DESIGN.md +40 -0
  84. package/resources/transactionBroadcast.ts +4 -4
  85. package/security/DESIGN.md +175 -0
  86. package/security/auth.ts +53 -24
  87. package/security/deferredAuthentication.ts +24 -2
  88. package/security/jsLoader.ts +3 -0
  89. package/server/DESIGN.md +264 -0
  90. package/server/REST.ts +6 -3
  91. package/server/mqtt.ts +6 -4
  92. package/server/serverHelpers/serverUtilities.ts +14 -3
  93. package/server/serverHelpers/uwsServer.ts +4 -1
  94. package/server/serverHelpers/webSocketCloseReason.ts +25 -0
  95. package/studio/web/assets/{Chat-D3j-1yY1.js → Chat-DADFFGe_.js} +1 -1
  96. package/studio/web/assets/{FloatingChat-BxJGYcfB.js → FloatingChat-D_mI-rZ7.js} +3 -3
  97. package/studio/web/assets/{apiToken-CT55oWOe.js → apiToken-c2NiSDHa.js} +1 -1
  98. package/studio/web/assets/{applications-D9Ct9_vm.js → applications-DktUqh7G.js} +1 -1
  99. package/studio/web/assets/{cssMode-DV8H7VwA.js → cssMode-Cs_75Xhw.js} +1 -1
  100. package/studio/web/assets/{editor-uatc0unt.js → editor-19b-Y1IN.js} +1 -1
  101. package/studio/web/assets/{html-Bm6D6paN.js → html-DiYEQMpB.js} +1 -1
  102. package/studio/web/assets/{htmlMode-CEn7tpLG.js → htmlMode-CmR0y7P_.js} +1 -1
  103. package/studio/web/assets/{index-BIXW6Pu4.js → index-Dm0rfkJ7.js} +5 -5
  104. package/studio/web/assets/{index.lazy-UI7L-Vrk.js → index.lazy-7vqt2CC3.js} +1 -1
  105. package/studio/web/assets/{javascript-CJ0G3AFZ.js → javascript-BWtCFuOt.js} +1 -1
  106. package/studio/web/assets/{jsonMode-DQADAYEa.js → jsonMode-Buzzbv9y.js} +1 -1
  107. package/studio/web/assets/{languageServices-CAQJXWcI.js → languageServices-SqsFWfTM.js} +1 -1
  108. package/studio/web/assets/{lspLanguageFeatures-CCQ8P5sY.js → lspLanguageFeatures-EMV5cmjo.js} +1 -1
  109. package/studio/web/assets/{notifications-Cvb3P1lB.js → notifications-CAB-LZWT.js} +1 -1
  110. package/studio/web/assets/{notifications-BbxTU6Aw.js → notifications-DRzmSRxM.js} +1 -1
  111. package/studio/web/assets/{profile-Yyb7gsvL.js → profile-BNKAl79n.js} +1 -1
  112. package/studio/web/assets/{regions-OgjGHlU5.js → regions-CUow_Zw2.js} +1 -1
  113. package/studio/web/assets/{register-6qwNEOY3.js → register-Dkt3WUMp.js} +2 -2
  114. package/studio/web/assets/{setComponentFile-BilDMtgB.js → setComponentFile-BZRfMD0N.js} +1 -1
  115. package/studio/web/assets/{setup-J6qJ7OIU.js → setup-D_yiEPO2.js} +2 -2
  116. package/studio/web/assets/{status-0RWGcfyD.js → status-DhHh1Ge-.js} +1 -1
  117. package/studio/web/assets/{toggleHighContrast-BIn-vErT.js → toggleHighContrast-D7L1PDtV.js} +1 -1
  118. package/studio/web/assets/{tsMode-DgUXku4d.js → tsMode-CCwLk1YS.js} +1 -1
  119. package/studio/web/assets/{typescript-C9orXcsM.js → typescript-BP1j1mjn.js} +1 -1
  120. package/studio/web/assets/{useEntityRestURL-BEoXXbUB.js → useEntityRestURL-D7bnYxLw.js} +1 -1
  121. package/studio/web/assets/{workers-JVzSDmgx.js → workers-tOuCNT17.js} +1 -1
  122. package/studio/web/assets/{xml-Cq-S8S4X.js → xml-BSG_3mQT.js} +1 -1
  123. package/studio/web/assets/{yaml-sfoRdh1M.js → yaml-DxiLprBB.js} +1 -1
  124. package/studio/web/index.html +1 -1
  125. package/utility/DESIGN.md +55 -0
  126. package/utility/logging/harper_logger.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullTextDerivedIndex.js","sourceRoot":"","sources":["../../../resources/indexes/fullTextDerivedIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import type { FullTextDerivedIndexEngine } from './fullTextDerivedIndex.ts';
2
+ export interface NativeFullTextIndexConfiguration {
3
+ fields: Array<{
4
+ name: string;
5
+ weight?: number;
6
+ }>;
7
+ analyzer: 'english@1';
8
+ stopWords?: boolean;
9
+ positions?: boolean;
10
+ surfaceTerms?: boolean;
11
+ limits: {
12
+ indexingThreads: number;
13
+ searchThreads: number;
14
+ writerMemoryBytes: number;
15
+ maxQueuedCommands: number;
16
+ maxQueuedBytes: number;
17
+ maxBatchBytes: number;
18
+ };
19
+ }
20
+ export type NativeFullTextRuntimeInfo = {
21
+ packageVersion: string;
22
+ tantivyVersion: string;
23
+ nativeAbiVersion: number;
24
+ lifecycleApiVersion: number;
25
+ mutationBatchApiVersion: number;
26
+ storageBackends: ReadonlyArray<'native'>;
27
+ limits: {
28
+ maxCommitPayloadBytes: number;
29
+ };
30
+ };
31
+ export interface NativeFullTextModule {
32
+ NativeFullTextIndex: {
33
+ prototype: Pick<FullTextDerivedIndexEngine, 'applyMutationBatch' | 'publish' | 'close'>;
34
+ };
35
+ runtimeInfo(): Promise<NativeFullTextRuntimeInfo>;
36
+ validateNativeFullTextIndexOptions(options: NativeFullTextIndexConfiguration & {
37
+ path: string;
38
+ indexId: string;
39
+ generation: string;
40
+ }): void;
41
+ openNativeFullTextIndex(options: NativeFullTextIndexConfiguration & {
42
+ path: string;
43
+ indexId: string;
44
+ generation: string;
45
+ }): Promise<FullTextDerivedIndexEngine>;
46
+ inspectNativeFullTextIndex(options: Omit<NativeFullTextIndexConfiguration, 'limits'> & {
47
+ path: string;
48
+ indexId: string;
49
+ generation: string;
50
+ }): {
51
+ state: 'missing' | 'cursorless';
52
+ } | {
53
+ state: 'checkpointed';
54
+ committedPayload: string;
55
+ } | {
56
+ state: 'incompatible';
57
+ code: string;
58
+ };
59
+ resetNativeFullTextIndex(options: {
60
+ path: string;
61
+ indexId: string;
62
+ }): Promise<{
63
+ state: 'missing';
64
+ } | {
65
+ state: 'reset';
66
+ retiredPath: string;
67
+ }>;
68
+ reclaimRetiredNativeFullTextIndexes(options: {
69
+ path: string;
70
+ retiredPath?: string;
71
+ }): Promise<{
72
+ removed: number;
73
+ failed: number;
74
+ }>;
75
+ }
76
+ export declare function loadFullTextNativeBinding(): Promise<NativeFullTextModule>;
77
+ export declare function validateFullTextNativeBinding(module: unknown): Promise<NativeFullTextModule>;
78
+ export declare function getValidatedFullTextRuntimeInfo(binding: NativeFullTextModule): NativeFullTextRuntimeInfo;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
3
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
4
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
5
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
6
+ });
7
+ }
8
+ return path;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.loadFullTextNativeBinding = loadFullTextNativeBinding;
12
+ exports.validateFullTextNativeBinding = validateFullTextNativeBinding;
13
+ exports.getValidatedFullTextRuntimeInfo = getValidatedFullTextRuntimeInfo;
14
+ const logger_ts_1 = require("../../utility/logging/logger.js");
15
+ const FULLTEXT_LIFECYCLE_API_VERSION = 1;
16
+ const FULLTEXT_MUTATION_BATCH_API_VERSION = 3;
17
+ const logger = (0, logger_ts_1.loggerWithTag)('fulltext-derived-index');
18
+ let bindingPromise;
19
+ let bindingWarningLogged = false;
20
+ const validatedRuntimeInfo = new WeakMap();
21
+ async function loadFullTextNativeBinding() {
22
+ if (!bindingPromise) {
23
+ const moduleName = '@harperfast/fulltext/native';
24
+ bindingPromise = import(__rewriteRelativeImportExtension(moduleName)).then(validateFullTextNativeBinding);
25
+ bindingPromise.catch((error) => {
26
+ bindingPromise = undefined;
27
+ if (!bindingWarningLogged) {
28
+ bindingWarningLogged = true;
29
+ const code = error && typeof error === 'object' && 'code' in error ? error.code : undefined;
30
+ try {
31
+ logger.warn?.(`The @harperfast/fulltext native module is unavailable${typeof code === 'string' ? ` (${code})` : ''}`);
32
+ }
33
+ catch { }
34
+ }
35
+ });
36
+ }
37
+ return bindingPromise;
38
+ }
39
+ async function validateFullTextNativeBinding(module) {
40
+ const prototype = module
41
+ ?.NativeFullTextIndex?.prototype;
42
+ if (!module ||
43
+ typeof module !== 'object' ||
44
+ !('runtimeInfo' in module) ||
45
+ typeof module.runtimeInfo !== 'function' ||
46
+ !('NativeFullTextIndex' in module) ||
47
+ typeof module.NativeFullTextIndex !== 'function' ||
48
+ typeof prototype?.applyMutationBatch !== 'function' ||
49
+ typeof prototype.publish !== 'function' ||
50
+ typeof prototype.close !== 'function' ||
51
+ !('openNativeFullTextIndex' in module) ||
52
+ typeof module.openNativeFullTextIndex !== 'function' ||
53
+ !('validateNativeFullTextIndexOptions' in module) ||
54
+ typeof module.validateNativeFullTextIndexOptions !== 'function' ||
55
+ !('inspectNativeFullTextIndex' in module) ||
56
+ typeof module.inspectNativeFullTextIndex !== 'function' ||
57
+ !('resetNativeFullTextIndex' in module) ||
58
+ typeof module.resetNativeFullTextIndex !== 'function' ||
59
+ !('reclaimRetiredNativeFullTextIndexes' in module) ||
60
+ typeof module.reclaimRetiredNativeFullTextIndexes !== 'function')
61
+ throw new TypeError('@harperfast/fulltext/native does not implement the required Harper binding contract');
62
+ const binding = module;
63
+ const info = await binding.runtimeInfo();
64
+ if (!info ||
65
+ typeof info.packageVersion !== 'string' ||
66
+ typeof info.tantivyVersion !== 'string' ||
67
+ !Number.isSafeInteger(info.nativeAbiVersion) ||
68
+ info.lifecycleApiVersion !== FULLTEXT_LIFECYCLE_API_VERSION ||
69
+ info.mutationBatchApiVersion !== FULLTEXT_MUTATION_BATCH_API_VERSION ||
70
+ !Array.isArray(info.storageBackends) ||
71
+ !info.storageBackends.includes('native') ||
72
+ !info.limits ||
73
+ !Number.isSafeInteger(info.limits.maxCommitPayloadBytes) ||
74
+ info.limits.maxCommitPayloadBytes <= 0)
75
+ throw new TypeError('@harperfast/fulltext/native reported incompatible runtime capabilities');
76
+ validatedRuntimeInfo.set(binding, info);
77
+ return binding;
78
+ }
79
+ function getValidatedFullTextRuntimeInfo(binding) {
80
+ const info = validatedRuntimeInfo.get(binding);
81
+ if (!info)
82
+ throw new Error('Full-text native binding has not been validated');
83
+ return info;
84
+ }
85
+ //# sourceMappingURL=fullTextNativeBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullTextNativeBinding.js","sourceRoot":"","sources":["../../../resources/indexes/fullTextNativeBinding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { FullTextDerivedIndexBackend, type FullTextDerivedIndexBackendOptions, type FullTextDerivedIndexEngine, type FullTextDerivedIndexInspection } from './fullTextDerivedIndex.ts';
2
+ import { type NativeFullTextIndexConfiguration, type NativeFullTextModule } from './fullTextNativeBinding.ts';
3
+ export type NativeFullTextDerivedIndexLifecycleOptions = NativeFullTextIndexConfiguration & {
4
+ storePath: string;
5
+ storeName: string;
6
+ indexId: string;
7
+ sourceGeneration: string;
8
+ binding?: NativeFullTextModule | (() => Promise<NativeFullTextModule>);
9
+ };
10
+ export type NativeFullTextDerivedIndexBackendOptions = Omit<FullTextDerivedIndexBackendOptions, 'lifecycle'> & Omit<NativeFullTextDerivedIndexLifecycleOptions, 'indexId'>;
11
+ export declare class NativeFullTextDerivedIndexLifecycle {
12
+ #private;
13
+ constructor(options: NativeFullTextDerivedIndexLifecycleOptions);
14
+ get path(): string;
15
+ initialize(options?: {
16
+ reclaimRetired?: boolean;
17
+ }): Promise<void>;
18
+ startRetiredStorageReclamation(): void;
19
+ get maxCommitPayloadBytes(): number;
20
+ inspect(): FullTextDerivedIndexInspection;
21
+ open(): Promise<FullTextDerivedIndexEngine>;
22
+ reset(): Promise<void>;
23
+ }
24
+ export declare function createNativeFullTextDerivedIndexBackend(options: NativeFullTextDerivedIndexBackendOptions): Promise<FullTextDerivedIndexBackend>;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeFullTextDerivedIndexLifecycle = void 0;
4
+ exports.createNativeFullTextDerivedIndexBackend = createNativeFullTextDerivedIndexBackend;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const node_path_1 = require("node:path");
7
+ const logger_ts_1 = require("../../utility/logging/logger.js");
8
+ const fullTextDerivedIndex_ts_1 = require("./fullTextDerivedIndex.js");
9
+ const fullTextNativeBinding_ts_1 = require("./fullTextNativeBinding.js");
10
+ const logger = (0, logger_ts_1.loggerWithTag)('fulltext-derived-index');
11
+ class NativeFullTextDerivedIndexLifecycle {
12
+ #options;
13
+ #path;
14
+ #generation;
15
+ #binding;
16
+ #maxCommitPayloadBytes;
17
+ #reclaimOperation = Promise.resolve();
18
+ constructor(options) {
19
+ if (!(0, node_path_1.isAbsolute)(options.storePath))
20
+ throw new TypeError('Full-text storePath must be absolute');
21
+ if (!options.storeName)
22
+ throw new TypeError('Full-text storeName is required');
23
+ if (!options.indexId)
24
+ throw new TypeError('Full-text indexId is required');
25
+ if (!options.sourceGeneration)
26
+ throw new TypeError('Full-text sourceGeneration is required');
27
+ this.#options = {
28
+ ...options,
29
+ fields: options.fields.map((field) => ({ ...field })),
30
+ limits: { ...options.limits },
31
+ };
32
+ // Hashing bounds filenames for arbitrary store names; the index id remains in native metadata and logs.
33
+ this.#path = (0, node_path_1.join)((0, node_path_1.resolve)(options.storePath), `${digest(options.storeName)}.fulltext`);
34
+ this.#generation = digest(options.sourceGeneration);
35
+ }
36
+ get path() {
37
+ return this.#path;
38
+ }
39
+ async initialize(options = {}) {
40
+ const binding = await this.#getBinding();
41
+ binding.validateNativeFullTextIndexOptions({
42
+ ...this.#nativeOptions(),
43
+ limits: this.#options.limits,
44
+ });
45
+ this.#maxCommitPayloadBytes = (0, fullTextNativeBinding_ts_1.getValidatedFullTextRuntimeInfo)(binding).limits.maxCommitPayloadBytes;
46
+ if (options.reclaimRetired !== false)
47
+ this.#queueReclaimRetired();
48
+ }
49
+ startRetiredStorageReclamation() {
50
+ this.#requireBinding();
51
+ // Fulltext publishes unique retired paths and removes them with force, so workers may sweep concurrently.
52
+ this.#queueReclaimRetired();
53
+ }
54
+ get maxCommitPayloadBytes() {
55
+ if (this.#maxCommitPayloadBytes === undefined)
56
+ throw new Error('Full-text lifecycle has not been initialized');
57
+ return this.#maxCommitPayloadBytes;
58
+ }
59
+ inspect() {
60
+ return this.#requireBinding().inspectNativeFullTextIndex(this.#nativeOptions());
61
+ }
62
+ async open() {
63
+ return this.#requireBinding().openNativeFullTextIndex({
64
+ ...this.#nativeOptions(),
65
+ limits: this.#options.limits,
66
+ });
67
+ }
68
+ async reset() {
69
+ const result = await this.#requireBinding().resetNativeFullTextIndex({
70
+ path: this.#path,
71
+ indexId: this.#options.indexId,
72
+ });
73
+ this.#queueReclaimRetired(result.state === 'reset' ? result.retiredPath : undefined);
74
+ }
75
+ #queueReclaimRetired(retiredPath) {
76
+ const reclaim = () => this.#reclaimRetired(retiredPath);
77
+ this.#reclaimOperation = this.#reclaimOperation.then(reclaim, reclaim).catch((error) => {
78
+ logWarning(`Could not complete reclamation for full-text index '${this.#options.indexId}'`, error);
79
+ });
80
+ }
81
+ async #reclaimRetired(retiredPath) {
82
+ try {
83
+ const result = await this.#requireBinding().reclaimRetiredNativeFullTextIndexes({
84
+ path: this.#path,
85
+ retiredPath,
86
+ });
87
+ if (result.failed > 0)
88
+ logWarning(`Could not remove ${result.failed} retired paths for full-text index '${this.#options.indexId}'`);
89
+ }
90
+ catch (error) {
91
+ logWarning(`Could not reclaim retired paths for full-text index '${this.#options.indexId}'`, error);
92
+ }
93
+ }
94
+ #nativeOptions() {
95
+ return {
96
+ path: this.#path,
97
+ indexId: this.#options.indexId,
98
+ generation: this.#generation,
99
+ fields: this.#options.fields,
100
+ analyzer: this.#options.analyzer,
101
+ stopWords: this.#options.stopWords,
102
+ positions: this.#options.positions,
103
+ surfaceTerms: this.#options.surfaceTerms,
104
+ };
105
+ }
106
+ async #getBinding() {
107
+ if (this.#binding)
108
+ return this.#binding;
109
+ const configured = this.#options.binding;
110
+ this.#binding = configured
111
+ ? await (0, fullTextNativeBinding_ts_1.validateFullTextNativeBinding)(typeof configured === 'function' ? await configured() : configured)
112
+ : await (0, fullTextNativeBinding_ts_1.loadFullTextNativeBinding)();
113
+ return this.#binding;
114
+ }
115
+ #requireBinding() {
116
+ if (!this.#binding)
117
+ throw new Error('Full-text native binding has not been initialized');
118
+ return this.#binding;
119
+ }
120
+ }
121
+ exports.NativeFullTextDerivedIndexLifecycle = NativeFullTextDerivedIndexLifecycle;
122
+ async function createNativeFullTextDerivedIndexBackend(options) {
123
+ const maxCursorPayloadBytes = options.maxCursorPayloadBytes ?? fullTextDerivedIndex_ts_1.HARPER_FULLTEXT_MAX_CURSOR_PAYLOAD_BYTES;
124
+ if (maxCursorPayloadBytes > fullTextDerivedIndex_ts_1.HARPER_FULLTEXT_MAX_CURSOR_PAYLOAD_BYTES)
125
+ throw new RangeError(`Full-text maxCursorPayloadBytes must not exceed ${fullTextDerivedIndex_ts_1.HARPER_FULLTEXT_MAX_CURSOR_PAYLOAD_BYTES}`);
126
+ const lifecycle = new NativeFullTextDerivedIndexLifecycle({ ...options, indexId: options.id });
127
+ await lifecycle.initialize({ reclaimRetired: false });
128
+ if (maxCursorPayloadBytes > lifecycle.maxCommitPayloadBytes)
129
+ throw new RangeError('Full-text maxCursorPayloadBytes exceeds the native commit payload capacity');
130
+ const backend = new fullTextDerivedIndex_ts_1.FullTextDerivedIndexBackend({
131
+ ...options,
132
+ id: options.id,
133
+ lifecycle,
134
+ maxCursorPayloadBytes,
135
+ });
136
+ lifecycle.startRetiredStorageReclamation();
137
+ return backend;
138
+ }
139
+ function digest(value) {
140
+ return (0, node_crypto_1.createHash)('sha256').update(value).digest('hex');
141
+ }
142
+ function logWarning(message, error) {
143
+ const code = error && typeof error === 'object' && 'code' in error && typeof error.code === 'string' ? error.code : undefined;
144
+ try {
145
+ logger.warn?.(`${message}${code ? ` (${code})` : ''}`);
146
+ }
147
+ catch { }
148
+ }
149
+ //# sourceMappingURL=nativeFullTextDerivedIndexLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeFullTextDerivedIndexLifecycle.js","sourceRoot":"","sources":["../../../resources/indexes/nativeFullTextDerivedIndexLifecycle.ts"],"names":[],"mappings":";;;AAsJA,0FAkBC;AAxKD,6CAAyC;AACzC,yCAAsD;AACtD,+DAAgE;AAChE,uEAMmC;AACnC,yEAMoC;AAEpC,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,wBAAwB,CAAC,CAAC;AAavD,MAAa,mCAAmC;IACtC,QAAQ,CAA6C;IACrD,KAAK,CAAS;IACd,WAAW,CAAS;IAC7B,QAAQ,CAAwB;IAChC,sBAAsB,CAAU;IAChC,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEtC,YAAY,OAAmD;QAC9D,IAAI,CAAC,IAAA,sBAAU,EAAC,OAAO,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAAE,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAC7F,IAAI,CAAC,QAAQ,GAAG;YACf,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACrD,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;SAC7B,CAAC;QACF,wGAAwG;QACxG,IAAI,CAAC,KAAK,GAAG,IAAA,gBAAI,EAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAwC,EAAE;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,CAAC,kCAAkC,CAAC;YAC1C,GAAG,IAAI,CAAC,cAAc,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,IAAA,0DAA+B,EAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC;QACpG,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK;YAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACnE,CAAC;IAED,8BAA8B;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,0GAA0G;QAC1G,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,qBAAqB;QACxB,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,uBAAuB,CAAC;YACrD,GAAG,IAAI,CAAC,cAAc,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;SAC5B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,wBAAwB,CAAC;YACpE,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtF,CAAC;IAED,oBAAoB,CAAC,WAAoB;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACtF,UAAU,CAAC,uDAAuD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAoB;QACzC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,mCAAmC,CAAC;gBAC/E,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,WAAW;aACX,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBACpB,UAAU,CAAC,oBAAoB,MAAM,CAAC,MAAM,uCAAuC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,UAAU,CAAC,wDAAwD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QACrG,CAAC;IACF,CAAC;IAED,cAAc;QAKb,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YAClC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YAClC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;SACxC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,UAAU;YACzB,CAAC,CAAC,MAAM,IAAA,wDAA6B,EAAC,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YACzG,CAAC,CAAC,MAAM,IAAA,oDAAyB,GAAE,CAAC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,eAAe;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACD;AArHD,kFAqHC;AAEM,KAAK,UAAU,uCAAuC,CAC5D,OAAiD;IAEjD,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,kEAAwC,CAAC;IACxG,IAAI,qBAAqB,GAAG,kEAAwC;QACnE,MAAM,IAAI,UAAU,CAAC,mDAAmD,kEAAwC,EAAE,CAAC,CAAC;IACrH,MAAM,SAAS,GAAG,IAAI,mCAAmC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,IAAI,qBAAqB,GAAG,SAAS,CAAC,qBAAqB;QAC1D,MAAM,IAAI,UAAU,CAAC,4EAA4E,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,IAAI,qDAA2B,CAAC;QAC/C,GAAG,OAAO;QACV,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS;QACT,qBAAqB;KACrB,CAAC,CAAC;IACH,SAAS,CAAC,8BAA8B,EAAE,CAAC;IAC3C,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC5B,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,KAAe;IACnD,MAAM,IAAI,GACT,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,IAAI,CAAC;QACJ,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACX,CAAC"}
@@ -152,11 +152,11 @@ export interface DelegationReply {
152
152
  dependencies?: LockDependencySet | null;
153
153
  /**
154
154
  * Denied only. `contended` is the one reason that means another node holds the key, and so the only
155
- * one a timeout may report as 423. `generation` (the two sides hold different home maps),
156
- * `unknown-node` (this node is not named in the map), `quarantine` (the home is inside its §4.3
157
- * restart interval) and `timeout` (the home never answered) all describe something other than
158
- * contention, so each ends as a retryable 503 rather than telling the caller a key nobody holds is
159
- * held.
155
+ * one an exhausted wait may report as 423. `generation` (the two sides hold different home maps),
156
+ * `unknown-node` (this node is not named in the map) and `quarantine` (the home is inside its §4.3
157
+ * restart interval) all describe something other than contention, so each ends as a retryable 503
158
+ * rather than telling the caller a key nobody holds is held. `timeout` is not a home answer at all
159
+ * — it is this node's own deadline ending its probe — and never classifies a wait (DESIGN.md).
160
160
  */
161
161
  reason?: 'contended' | 'generation' | 'unknown-node' | 'capacity' | 'not-home' | 'quarantine' | 'timeout';
162
162
  /** Denied with `generation`, so a stale requester can re-derive the ring without another round trip. */
@@ -800,14 +800,17 @@ class LockCoordinator {
800
800
  * The amortization is the first branch: a live, un-recalled delegation with enough time left costs
801
801
  * zero cluster messages.
802
802
  */
803
- async acquire(key, leaseMs, waitMs) {
803
+ acquire(key, leaseMs, waitMs) {
804
+ return this.#acquire(key, leaseMs, waitMs);
805
+ }
806
+ async #acquire(key, leaseMs, waitMs, observed) {
804
807
  // `Table.lock()` captures a coordinator and only reaches here after the native key lock, which
805
808
  // can wait the caller's whole timeout — long enough for a transport swap to close what it
806
809
  // captured. Authority moved to the successor rather than away, so run there instead of
807
810
  // rejecting a caller that is already holding the key.
808
811
  const authority = this.#authority();
809
812
  if (authority !== this)
810
- return authority.acquire(key, leaseMs, waitMs);
813
+ return authority.#acquire(key, leaseMs, waitMs, observed);
811
814
  if (this.#closed)
812
815
  throw new hdbError_ts_1.LockUnavailableError('Cluster record lock coordination was closed for this table');
813
816
  if (!this.transport.ownsCoordination()) {
@@ -823,6 +826,7 @@ class LockCoordinator {
823
826
  }
824
827
  const keyId = this.#keyIdOf(key);
825
828
  const deadlineMono = this.#monotonic() + waitMs;
829
+ let lastCompleted = observed;
826
830
  acquisition: for (;;) {
827
831
  const homeMap = this.transport.homeMap(this.database);
828
832
  // No agreed map means no agreed ring, and a ring guessed from whoever looks reachable is
@@ -970,24 +974,40 @@ class LockCoordinator {
970
974
  // retrying. If it is NOT stale (two maps under one generation number) it never converges,
971
975
  // which the terminal answer below is what handles.
972
976
  warnOnce('record lock home disagreed about the ring', { database: this.database, table: this.table });
977
+ if (reply.reason !== 'timeout')
978
+ lastCompleted = { reply, home, generation: homeMap.generation };
973
979
  const remaining = deadlineMono - this.#monotonic();
974
- if (remaining <= 0) {
975
- // 423 says "someone else holds this key", so only a denial that actually means that may end
976
- // as one. Every other reason ran out the clock without the key ever being held, and reporting
977
- // contention for it sends the caller to retry a condition no timeout can outlast.
978
- if (reply.reason === 'contended')
979
- throw new hdbError_ts_1.ClientError('Record is locked and was not released in time', 423);
980
- throw new hdbError_ts_1.LockUnavailableError(`Could not establish a cluster record lock on ${this.database}.${this.table} within the wait: the key's home answered ${reply.reason ?? (reply.granted ? 'grants that arrived too late to use' : 'nothing usable')}`);
981
- }
982
- await delay(Math.min(reply.retryAfterMs ?? 25, remaining)).promise;
980
+ const retryAfterMs = reply.retryAfterMs ?? 25;
981
+ // A home this node IS costs nothing to ask again — `#grantLocally` is synchronous, so a release
982
+ // landing in the backoff is still grantable at the deadline. A remote home is not: its request
983
+ // would go out with the leftover budget and could only return this node's own `timeout`.
984
+ const exhausted = home === this.nodeId ? remaining <= 0 : remaining <= retryAfterMs;
985
+ if (!exhausted)
986
+ await delay(Math.min(retryAfterMs, remaining)).promise;
983
987
  if (this.#closed) {
984
- // Same swap, landing in the backoff instead. Carry the remaining wait so the deadline the
985
- // caller asked for is preserved across the hop.
988
+ // Same swap, landing in the backoff instead. The successor inherits both the remaining wait
989
+ // and what this one saw, since a successor exhausted on arrival has nothing of its own.
986
990
  const successor = this.#authority();
987
991
  if (successor === this)
988
992
  throw new hdbError_ts_1.LockUnavailableError('Cluster record lock coordination was closed for this table');
989
- return successor.acquire(key, leaseMs, Math.max(0, deadlineMono - this.#monotonic()));
993
+ return successor.#acquire(key, leaseMs, Math.max(0, deadlineMono - this.#monotonic()), lastCompleted);
990
994
  }
995
+ if (!exhausted)
996
+ continue acquisition;
997
+ // Only an observation made under the generation that is current NOW still describes the key —
998
+ // this pass's reply included, since a generation can be activated while the probe that ended
999
+ // the wait is still in flight. Hence a fresh read rather than the copy this pass started from.
1000
+ const currentGeneration = this.transport.homeMap(this.database)?.generation;
1001
+ const carried = lastCompleted?.home === home && lastCompleted.generation === currentGeneration
1002
+ ? lastCompleted.reply
1003
+ : undefined;
1004
+ const terminal = carried ?? (homeMap.generation === currentGeneration ? reply : undefined);
1005
+ // Only `contended` may end as 423: it is the one answer that says another node holds the key,
1006
+ // and reporting contention for anything else sends the caller to retry a condition no wait
1007
+ // outlasts. A wait can see `contended` and still end 503 — the rule is what the home said LAST.
1008
+ if (terminal?.reason === 'contended')
1009
+ throw new hdbError_ts_1.ClientError('Record is locked and was not released in time', 423);
1010
+ throw new hdbError_ts_1.LockUnavailableError(`Could not establish a cluster record lock on ${this.database}.${this.table} within the wait: ${describeExhaustedWait(terminal, currentGeneration !== undefined)}`);
991
1011
  }
992
1012
  }
993
1013
  /**
@@ -1993,8 +2013,6 @@ class LockCoordinator {
1993
2013
  requested,
1994
2014
  timeout.promise.then(() => {
1995
2015
  raced = true;
1996
- // `timeout`, not `contended`: the home never answered, so nobody was shown to hold the
1997
- // key. Retried the same way, but a wait that ends here is 503 rather than 423.
1998
2016
  return { granted: false, reason: 'timeout', retryAfterMs: 0 };
1999
2017
  }),
2000
2018
  ]);
@@ -2291,6 +2309,20 @@ class LockCoordinator {
2291
2309
  }
2292
2310
  }
2293
2311
  exports.LockCoordinator = LockCoordinator;
2312
+ /**
2313
+ * What ended an exhausted `acquire()`, for the 503 it throws. A `timeout` is not phrased as a home
2314
+ * answer: it is this node's own deadline, and an operator told "the home answered timeout" looks for
2315
+ * a fault on a node that was simply not waited for.
2316
+ */
2317
+ function describeExhaustedWait(terminal, hasCurrentMap) {
2318
+ if (terminal)
2319
+ return terminal.reason === 'timeout'
2320
+ ? "no reply from the key's home within the wait"
2321
+ : `the key's home answered ${terminal.reason ?? (terminal.granted ? 'grants that arrived too late to use' : 'nothing usable')}`;
2322
+ return hasCurrentMap
2323
+ ? 'the record lock home map changed generation before the wait ended'
2324
+ : 'this node has no current record lock home map';
2325
+ }
2294
2326
  /** A sleep whose timer the winner of a race can drop, rather than let it run out its full delay. */
2295
2327
  function delay(ms) {
2296
2328
  let timer;