@lossless.org/nosqldb 10.10.0 → 11.0.0

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 (43) hide show
  1. package/.smartconfig.json +21 -19
  2. package/dist_rust/rustdb_linux_amd64 +0 -0
  3. package/dist_rust/rustdb_linux_amd64.tsrust-build.json +5 -5
  4. package/dist_rust/rustdb_linux_amd64_musl +0 -0
  5. package/dist_rust/rustdb_linux_amd64_musl.tsrust-build.json +5 -5
  6. package/dist_rust/rustdb_linux_arm64 +0 -0
  7. package/dist_rust/rustdb_linux_arm64.tsrust-build.json +5 -5
  8. package/dist_rust/rustdb_linux_arm64_musl +0 -0
  9. package/dist_rust/rustdb_linux_arm64_musl.tsrust-build.json +5 -5
  10. package/dist_rust/rustdb_macos_amd64 +0 -0
  11. package/dist_rust/rustdb_macos_amd64.tsrust-build.json +5 -5
  12. package/dist_rust/rustdb_macos_arm64 +0 -0
  13. package/dist_rust/rustdb_macos_arm64.tsrust-build.json +5 -5
  14. package/dist_ts/00_commitinfo_data.js +2 -2
  15. package/dist_ts/ts_local/classes.localnosqldb.d.ts +15 -4
  16. package/dist_ts/ts_local/classes.localnosqldb.js +31 -11
  17. package/dist_ts/ts_nosqldb/index.d.ts +3 -3
  18. package/dist_ts/ts_nosqldb/index.js +5 -4
  19. package/dist_ts/ts_nosqldb/rust-db-bridge.d.ts +125 -2
  20. package/dist_ts/ts_nosqldb/rust-db-bridge.js +261 -46
  21. package/dist_ts/ts_nosqldb/server/classes.nosqldbserver.d.ts +69 -3
  22. package/dist_ts/ts_nosqldb/server/classes.nosqldbserver.js +91 -12
  23. package/dist_ts/ts_nosqldb/server/index.d.ts +2 -2
  24. package/dist_ts/ts_nosqldb/server/index.js +2 -2
  25. package/dist_ts/ts_nosqldb/stopped-storage.d.ts +9 -1
  26. package/dist_ts/ts_nosqldb/stopped-storage.js +1 -1
  27. package/dist_ts/ts_nosqldb/storage-rehearsal.js +1 -1
  28. package/dist_ts/ts_nosqldb/storage-root-alignment.js +7 -3
  29. package/dist_ts/ts_nosqldb/storage-root-relocation.js +2 -2
  30. package/package.json +20 -16
  31. package/readme.md +469 -666
  32. package/third-party-notices.md +40 -8
  33. package/third_party_licenses/inventory.json +6 -6
  34. package/ts/00_commitinfo_data.ts +1 -1
  35. package/ts/ts_local/classes.localnosqldb.ts +35 -12
  36. package/ts/ts_nosqldb/index.ts +7 -2
  37. package/ts/ts_nosqldb/rust-db-bridge.ts +291 -48
  38. package/ts/ts_nosqldb/server/classes.nosqldbserver.ts +151 -15
  39. package/ts/ts_nosqldb/server/index.ts +2 -2
  40. package/ts/ts_nosqldb/stopped-storage.ts +9 -1
  41. package/ts/ts_nosqldb/storage-rehearsal.ts +1 -1
  42. package/ts/ts_nosqldb/storage-root-alignment.ts +6 -2
  43. package/ts/ts_nosqldb/storage-root-relocation.ts +1 -1
package/.smartconfig.json CHANGED
@@ -54,26 +54,28 @@
54
54
  "services": [],
55
55
  "schemaVersion": 2
56
56
  },
57
- "@git.zone/tsdoc": {
58
- "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license.md) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
59
- },
60
- "@git.zone/tsbundle": {
61
- "bundles": [
62
- {
63
- "from": "./ts_debugui/index.ts",
64
- "to": "./ts_debugserver/bundled.ts",
65
- "outputMode": "base64ts",
66
- "bundler": "esbuild",
67
- "includeFiles": [
68
- {
69
- "from": "./html/index.html",
70
- "to": "index.html"
71
- }
72
- ]
73
- }
74
- ]
57
+ "@git.zone/tsrepo": {
58
+ "docs": {
59
+ "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license.md) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
60
+ },
61
+ "bundle": {
62
+ "bundles": [
63
+ {
64
+ "from": "./ts_debugui/index.ts",
65
+ "to": "./ts_debugserver/bundled.ts",
66
+ "outputMode": "base64ts",
67
+ "bundler": "esbuild",
68
+ "includeFiles": [
69
+ {
70
+ "from": "./html/index.html",
71
+ "to": "index.html"
72
+ }
73
+ ]
74
+ }
75
+ ]
76
+ }
75
77
  },
76
- "@git.zone/tsrust": {
78
+ "@git.zone/rsrepo": {
77
79
  "targetsByHost": {
78
80
  "linux": [
79
81
  "linux_amd64",
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "271f5d110139d68f342aacd4db3b425e6b513d94aaf92ae0e813cf8552a18647",
3
+ "binarySha256": "8a9bb1a610c65e5014c3cb0096b2f3244fd0355014ed3348222e54fc602c3d64",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.10.0",
7
- "gitCommit": "ae487aaf2d79b8e1cc5ac78654a0f9589a6d6cc0",
6
+ "projectVersion": "11.0.0",
7
+ "gitCommit": "2519c9c0c298ce1e8c11a482464bd9287ab7ea70",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-12T02:43:19.012Z",
10
- "tsrustVersion": "4.1.0",
9
+ "builtAt": "2026-11-10T16:16:56.723Z",
10
+ "tsrustVersion": "1.1.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_amd64"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "a2e898da03f4faf18b70351adcc6f31c7cdd25bfe96b409c9fd439d1f1be3b61",
3
+ "binarySha256": "8275ba34fb8e9508d761f92a9b32020f05e1232f6a0dd9685f1d5eb47a7fa363",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.10.0",
7
- "gitCommit": "ae487aaf2d79b8e1cc5ac78654a0f9589a6d6cc0",
6
+ "projectVersion": "11.0.0",
7
+ "gitCommit": "2519c9c0c298ce1e8c11a482464bd9287ab7ea70",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-12T02:43:20.472Z",
10
- "tsrustVersion": "4.1.0",
9
+ "builtAt": "2026-11-10T16:16:58.707Z",
10
+ "tsrustVersion": "1.1.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_amd64_musl"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "bdaa4bfcec49a05bdaf4862a7cbcbace57e51d22ff2bd06df89d187e58806740",
3
+ "binarySha256": "025c7638096c59a7664e4d9f92b3425dcdb9c9006b66fde1e702c6c47000ce2f",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.10.0",
7
- "gitCommit": "ae487aaf2d79b8e1cc5ac78654a0f9589a6d6cc0",
6
+ "projectVersion": "11.0.0",
7
+ "gitCommit": "2519c9c0c298ce1e8c11a482464bd9287ab7ea70",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-12T02:43:19.755Z",
10
- "tsrustVersion": "4.1.0",
9
+ "builtAt": "2026-11-10T16:16:57.752Z",
10
+ "tsrustVersion": "1.1.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_arm64"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "d1de53c8135eefe21c7d36856c6bb638b24f088c8af12817ffbe098da1ce3752",
3
+ "binarySha256": "d4d041b9c229b7cebb868ae9423e7bb035f8b36470b27d90669b03919e61e165",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.10.0",
7
- "gitCommit": "ae487aaf2d79b8e1cc5ac78654a0f9589a6d6cc0",
6
+ "projectVersion": "11.0.0",
7
+ "gitCommit": "2519c9c0c298ce1e8c11a482464bd9287ab7ea70",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-12T02:43:21.195Z",
10
- "tsrustVersion": "4.1.0",
9
+ "builtAt": "2026-11-10T16:16:59.577Z",
10
+ "tsrustVersion": "1.1.1",
11
11
  "binary": "rustdb",
12
12
  "target": "linux_arm64_musl"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "47e590d70a034567720705f3e4b2c933308758db8bb9d061dabc07cf6d8a50e0",
3
+ "binarySha256": "536a1532afde8ae782d40069ef02dba8cc432bab52b2d54d18717f1bd93f2c49",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.10.0",
7
- "gitCommit": "ae487aaf2d79b8e1cc5ac78654a0f9589a6d6cc0",
6
+ "projectVersion": "11.0.0",
7
+ "gitCommit": "2519c9c0c298ce1e8c11a482464bd9287ab7ea70",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-12T02:25:53.470Z",
10
- "tsrustVersion": "4.1.0",
9
+ "builtAt": "2026-11-10T15:41:33.765Z",
10
+ "tsrustVersion": "1.1.1",
11
11
  "binary": "rustdb",
12
12
  "target": "macos_amd64"
13
13
  }
Binary file
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "dc00bb25ccc42af92233967eb4841b8937a85719ff8c607274d1becdc93b1ed8",
3
+ "binarySha256": "8c531e921fd6f174ef9b28e0ffba833426a2c02e4c4f68b661b7ffaea725146c",
4
4
  "buildInfo": {
5
5
  "projectName": "@lossless.org/nosqldb",
6
- "projectVersion": "10.10.0",
7
- "gitCommit": "ae487aaf2d79b8e1cc5ac78654a0f9589a6d6cc0",
6
+ "projectVersion": "11.0.0",
7
+ "gitCommit": "2519c9c0c298ce1e8c11a482464bd9287ab7ea70",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-10-12T02:25:54.450Z",
10
- "tsrustVersion": "4.1.0",
9
+ "builtAt": "2026-11-10T15:41:35.133Z",
10
+ "tsrustVersion": "1.1.1",
11
11
  "binary": "rustdb",
12
12
  "target": "macos_arm64"
13
13
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@lossless.org/nosqldb',
6
- version: '10.10.0',
6
+ version: '11.0.0',
7
7
  description: 'A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLHFIQUFxSDtDQUNuSSxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHFIQUFxSDtDQUNuSSxDQUFBIn0=
@@ -1,6 +1,7 @@
1
1
  import { type ILocalNoSqlDbStoppedStorageRootAlignmentInput, type TLocalNoSqlDbStoppedStorageRootAlignmentResult, type ILocalNoSqlDbStoppedStorageRootAlignmentAbortResult } from '../ts_nosqldb/storage-root-alignment.js';
2
2
  import { type INoSqlDbStoppedOperationOptions, type ILocalNoSqlDbStoppedStorageRootInspectionInput, type TLocalNoSqlDbStoppedStorageRootInspection } from '../ts_nosqldb/stopped-storage.js';
3
- import { NoSqlDbServer, type INoSqlDbAuthOptions, type ILocalNoSqlDbOfflinePhysicalNamespaceInspection, type ILocalNoSqlDbOfflinePhysicalNamespaceInspectionResult, type ILocalNoSqlDbStoppedStorageRootRelocationInput, type ILocalNoSqlDbStoppedStorageRootRelocationReceipt, type ILocalNoSqlDbOfflineStringValueInspection, type TLocalNoSqlDbOfflineStringValueInspectionResult } from '../ts_nosqldb/index.js';
3
+ import { NoSqlDbServer, type NoSqlDbEngineExitError, type INoSqlDbAuthOptions, type ILocalNoSqlDbOfflinePhysicalNamespaceInspection, type ILocalNoSqlDbOfflinePhysicalNamespaceInspectionResult, type ILocalNoSqlDbStoppedStorageRootRelocationInput, type ILocalNoSqlDbStoppedStorageRootRelocationReceipt, type ILocalNoSqlDbOfflineStringValueInspection, type TLocalNoSqlDbOfflineStringValueInspectionResult } from '../ts_nosqldb/index.js';
4
+ import { type INoSqlDbServerStopResult } from '../ts_nosqldb/server/classes.nosqldbserver.js';
4
5
  import { type TNoSqlDbFileStorageStartup } from '../ts_nosqldb/file-storage-startup.js';
5
6
  /**
6
7
  * Connection information returned by LocalNoSqlDb.start()
@@ -24,6 +25,10 @@ export interface ILocalNoSqlDbOptions {
24
25
  folderPath: string;
25
26
  /** Optional: custom socket path (default: auto-generated in /tmp) */
26
27
  socketPath?: string;
28
+ /** Receives every engine standard-error line; as `INoSqlDbServerOptions.engineLog`. */
29
+ engineLog?: (line: string) => void;
30
+ /** Called once for each unexpected engine exit; as `INoSqlDbServerOptions.onEngineExit`. */
31
+ onEngineExit?: (error: NoSqlDbEngineExitError) => void;
27
32
  }
28
33
  /**
29
34
  * LocalNoSqlDb - Lightweight local MongoDB-compatible database using Unix sockets
@@ -103,9 +108,13 @@ export declare class LocalNoSqlDb {
103
108
  */
104
109
  private static cleanStaleSockets;
105
110
  /**
106
- * Start the local NoSQLDB server and return connection info
111
+ * Start the local NoSQLDB server and return connection info. A rejection
112
+ * carries `engineStderrTail`: the server's start sets it, and a rejection
113
+ * from before the server's start, which spawned no engine, carries an empty
114
+ * array.
107
115
  */
108
116
  start(): Promise<ILocalNoSqlDbConnectionInfo>;
117
+ private startServer;
109
118
  /**
110
119
  * Get connection info (throws if not started)
111
120
  */
@@ -123,7 +132,9 @@ export declare class LocalNoSqlDb {
123
132
  */
124
133
  get running(): boolean;
125
134
  /**
126
- * Stop the local NoSQLDB server
135
+ * Stop the local NoSQLDB server. Resolves with the result of its
136
+ * `NoSqlDbServer.stop()`, which says how the engine ended; without a server,
137
+ * with a result saying that no stop request was sent.
127
138
  */
128
- stop(): Promise<void>;
139
+ stop(): Promise<INoSqlDbServerStopResult>;
129
140
  }
@@ -6,8 +6,9 @@ import * as net from 'node:net';
6
6
  import * as path from 'node:path';
7
7
  import * as os from 'node:os';
8
8
  import { NoSqlDbServer, } from '../ts_nosqldb/index.js';
9
- import { RustDbBridge, rustDbBridgeStorageRootRelocation, rustDbBridgeStorageRootAlignment, rustDbBridgeStorageRootAlignmentAbort, } from '../ts_nosqldb/rust-db-bridge.js';
9
+ import { RustDbBridge, attachNoSqlDbEngineStderrTail, rustDbBridgeStorageRootRelocation, rustDbBridgeStorageRootAlignment, rustDbBridgeStorageRootAlignmentAbort, } from '../ts_nosqldb/rust-db-bridge.js';
10
10
  import { validateNoSqlDbStorageRehearsalStartup } from '../ts_nosqldb/storage-rehearsal.js';
11
+ import { noStopRequestResult } from '../ts_nosqldb/server/classes.nosqldbserver.js';
11
12
  import {} from '../ts_nosqldb/file-storage-startup.js';
12
13
  import { normalizeNoSqlDbFileStorageOptions, } from '../ts_nosqldb/file-storage-options.js';
13
14
  import { normalizeLocalNoSqlDbOfflinePhysicalNamespaceInspectionInput, normalizeLocalNoSqlDbOfflineInspectionInput, validateNoSqlDbManagementOperationOptions, } from '../ts_nosqldb/offline-inspection.js';
@@ -317,8 +318,8 @@ export class LocalNoSqlDb {
317
318
  };
318
319
  }
319
320
  if (!await bridge.spawn(spawnOptions)) {
320
- throw new Error('nosqldb Rust binary not found. Set NOSQLDB_RUST_BINARY env var, ' +
321
- 'install the platform package, or build locally with `tsrust`.');
321
+ // The bridge states what it knows: that the engine at its binaryPath did not report ready, or, without one, both meanings.
322
+ throw new Error(bridge.spawnFailureMessage ?? 'the nosqldb engine did not start: spawn() returned false');
322
323
  }
323
324
  let commandOptions = optionsArg;
324
325
  if (deadline !== undefined) {
@@ -421,9 +422,23 @@ export class LocalNoSqlDb {
421
422
  }
422
423
  }
423
424
  /**
424
- * Start the local NoSQLDB server and return connection info
425
+ * Start the local NoSQLDB server and return connection info. A rejection
426
+ * carries `engineStderrTail`: the server's start sets it, and a rejection
427
+ * from before the server's start, which spawned no engine, carries an empty
428
+ * array.
425
429
  */
426
430
  async start() {
431
+ try {
432
+ return await this.startServer();
433
+ }
434
+ catch (error) {
435
+ if (!(error !== null && typeof error === 'object' && Object.prototype.hasOwnProperty.call(error, 'engineStderrTail'))) {
436
+ attachNoSqlDbEngineStderrTail(error, []);
437
+ }
438
+ throw error;
439
+ }
440
+ }
441
+ async startServer() {
427
442
  if (this.server) {
428
443
  throw new Error('LocalNoSqlDb is already running');
429
444
  }
@@ -437,6 +452,8 @@ export class LocalNoSqlDb {
437
452
  socketPath: this.generatedSocketPath,
438
453
  storage: 'file',
439
454
  storagePath: this.options.folderPath,
455
+ engineLog: this.options.engineLog,
456
+ onEngineExit: this.options.onEngineExit,
440
457
  });
441
458
  await this.server.start();
442
459
  return {
@@ -481,14 +498,17 @@ export class LocalNoSqlDb {
481
498
  return this.server !== null && this.server.running;
482
499
  }
483
500
  /**
484
- * Stop the local NoSQLDB server
501
+ * Stop the local NoSQLDB server. Resolves with the result of its
502
+ * `NoSqlDbServer.stop()`, which says how the engine ended; without a server,
503
+ * with a result saying that no stop request was sent.
485
504
  */
486
505
  async stop() {
487
- if (this.server) {
488
- await this.server.stop();
489
- this.server = null;
490
- this.generatedSocketPath = null;
491
- }
506
+ if (!this.server)
507
+ return noStopRequestResult;
508
+ const result = await this.server.stop();
509
+ this.server = null;
510
+ this.generatedSocketPath = null;
511
+ return result;
492
512
  }
493
513
  }
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sb2NhbG5vc3FsZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19sb2NhbC9jbGFzc2VzLmxvY2Fsbm9zcWxkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wseUNBQXlDLEVBQUUsMENBQTBDLEVBQ3JGLCtDQUErQyxHQUdoRCxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMENBQTBDLEVBQzFDLHNDQUFzQyxFQUN0QywrQkFBK0IsR0FJaEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFDTCxhQUFhLEdBU2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGlDQUFpQyxFQUNqQyxnQ0FBZ0MsRUFDaEMscUNBQXFDLEdBQ3RDLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUVOLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUNMLGtDQUFrQyxHQUNuQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCw0REFBNEQsRUFDNUQsMkNBQTJDLEVBQzNDLHlDQUF5QyxHQUMxQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxrREFBa0QsRUFDbEQsNENBQTRDLEVBQzVDLHNDQUFzQyxFQUN0QyxzREFBc0QsRUFDdEQsd0RBQXdELEdBQ3pELE1BQU0sMENBQTBDLENBQUM7QUEy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
514
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sb2NhbG5vc3FsZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19sb2NhbC9jbGFzc2VzLmxvY2Fsbm9zcWxkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wseUNBQXlDLEVBQUUsMENBQTBDLEVBQ3JGLCtDQUErQyxHQUdoRCxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsMENBQTBDLEVBQzFDLHNDQUFzQyxFQUN0QywrQkFBK0IsR0FJaEMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFDTCxhQUFhLEdBVWQsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLHFDQUFxQyxHQUN0QyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBaUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuSCxPQUFPLEVBRU4sTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsa0NBQWtDLEdBQ25DLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUNMLDREQUE0RCxFQUM1RCwyQ0FBMkMsRUFDM0MseUNBQXlDLEdBQzFDLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNMLGtEQUFrRCxFQUNsRCw0Q0FBNEMsRUFDNUMs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
@@ -3,11 +3,11 @@ export type { INoSqlDbStoppedOperationOptions, ILocalNoSqlDbStoppedStorageRootIn
3
3
  export { NoSqlDbStorageRehearsal } from './classes.storagerehearsal.js';
4
4
  export { NoSqlDbStorageRehearsalError, noSqlDbStorageRehearsalErrorCodes } from './storage-rehearsal.js';
5
5
  export type { INoSqlDbStorageRehearsalOptions, INoSqlDbStorageRehearsalInput, INoSqlDbStorageRehearsalReceipt, INoSqlDbStorageRehearsalPreservation, TNoSqlDbStorageRehearsalErrorCode, } from './storage-rehearsal.js';
6
- export { NoSqlDbServer } from './server/classes.nosqldbserver.js';
6
+ export { NoSqlDbServer, noSqlDbServerStopGraceMs } from './server/classes.nosqldbserver.js';
7
7
  export type { INoSqlDbCommitCursor, INoSqlDbCommittedNamespace, INoSqlDbCommitReceipt, INoSqlDbCommittedWrite, INoSqlDbGetCommittedWritesInput, INoSqlDbCommittedWritesPage, } from './committed-writes.js';
8
8
  export type { TNoSqlDbFileStorageStartup } from './file-storage-startup.js';
9
- export type { INoSqlDbAuthOptions, INoSqlDbAuthUser, INoSqlDbOplogOptions, INoSqlDbServerOptions, INoSqlDbTlsOptions, } from './server/classes.nosqldbserver.js';
10
- export { RustDbBridge, NoSqlDbManagementOperationTerminationError, } from './rust-db-bridge.js';
9
+ export type { INoSqlDbAuthOptions, INoSqlDbAuthUser, INoSqlDbOplogOptions, INoSqlDbServerOptions, INoSqlDbServerStopResult, INoSqlDbTlsOptions, } from './server/classes.nosqldbserver.js';
10
+ export { RustDbBridge, NoSqlDbManagementOperationTerminationError, NoSqlDbEngineExitError, noSqlDbEngineStderrTailLimits, NoSqlDbUnknownRootError, } from './rust-db-bridge.js';
11
11
  export type { IRustDbBridgeOptions, INoSqlDbQueryOptions, INoSqlDbInboundOptions, IOpLogEntry, IOpLogResult, IOpLogStats, IRevertResult, ICollectionInfo, IDocumentsResult, INoSqlDbMetrics, } from './rust-db-bridge.js';
12
12
  export type { INoSqlDbHealth, INoSqlDbResourceFence, INoSqlDbResourceFenceReceipt, INoSqlDbHeldPublicationReceipt, INoSqlDbCommitDatabasePublicationInput, INoSqlDbManagementOperationOptions, INoSqlDbDatabaseResourceFenceState, INoSqlDbDatabaseAllocationIdentity, INoSqlDbDatabaseAllocationLifecycle, INoSqlDbDatabaseAllocationReadAccessGrantIdentity, INoSqlDbIssueDatabaseAllocationReadAccessGrantInput, INoSqlDbIssueDatabaseAllocationReadAccessGrantResult, INoSqlDbRevokeDatabaseAllocationReadAccessGrantInput, INoSqlDbRevokeDatabaseAllocationReadAccessGrantResult, ILocalNoSqlDbOfflineInspectionLimits, ILocalNoSqlDbOfflinePhysicalNamespaceInspectionLimits, ILocalNoSqlDbOfflinePhysicalNamespaceInspection, ILocalNoSqlDbOfflinePhysicalNamespaceInspectionResult, ILocalNoSqlDbOfflineStringValueInspection, TLocalNoSqlDbOfflineStringValueInspectionResult, TNoSqlDbCommitDatabasePublicationResult, TNoSqlDbResourceFenceErrorCode, TNoSqlDbAllocationReadAccessGrantErrorCode, INoSqlDbDatabaseTenantInput, INoSqlDbAttestDatabaseTenantInput, INoSqlDbAttestDatabaseTenantResult, INoSqlDbEnsureDatabaseTenantInput, INoSqlDbEnsureDatabaseTenantResult, INoSqlDbAllocateDatabaseTenantInput, INoSqlDbAllocateDatabaseTenantResult, INoSqlDbDeleteDatabaseTenantInput, INoSqlDbRotateDatabaseTenantPasswordInput, INoSqlDbDatabaseTenantDescriptor, INoSqlDbDeleteDatabaseTenantResult, INoSqlDbDatabaseExportCollection, INoSqlDbDatabaseExport, INoSqlDbDatabaseExportLimits, INoSqlDbExportDatabaseInput, INoSqlDbExportHeldDatabaseInput, INoSqlDbDatabaseContentDigestLimits, INoSqlDbGetDatabaseContentDigestInput, INoSqlDbDatabaseContentDigest, INoSqlDbImportDatabaseInput, INoSqlDbImportDatabaseResult, } from './service-types.js';
13
13
  export { NoSqlDbAllocationReadAccessGrantError, normalizeNoSqlDbAllocationReadAccessGrantError, noSqlDbAllocationReadAccessGrantErrorCodes, NoSqlDbResourceFenceError, normalizeNoSqlDbResourceFenceError, noSqlDbResourceFenceErrorCodes, } from './service-types.js';
@@ -3,10 +3,11 @@ export { NoSqlDbStoppedOperationError } from './stopped-storage.js';
3
3
  export { NoSqlDbStorageRehearsal } from './classes.storagerehearsal.js';
4
4
  export { NoSqlDbStorageRehearsalError, noSqlDbStorageRehearsalErrorCodes } from './storage-rehearsal.js';
5
5
  // Export server (the main entry point for using NoSQLDB)
6
- export { NoSqlDbServer } from './server/classes.nosqldbserver.js';
7
- // Export bridge for advanced usage and its fail-stop ownership error.
8
- export { RustDbBridge, NoSqlDbManagementOperationTerminationError, } from './rust-db-bridge.js';
6
+ export { NoSqlDbServer, noSqlDbServerStopGraceMs } from './server/classes.nosqldbserver.js';
7
+ // Export bridge for advanced usage, its fail-stop ownership error, and the
8
+ // engine-exit error and standard-error tail bounds.
9
+ export { RustDbBridge, NoSqlDbManagementOperationTerminationError, NoSqlDbEngineExitError, noSqlDbEngineStderrTailLimits, NoSqlDbUnknownRootError, } from './rust-db-bridge.js';
9
10
  export { NoSqlDbAllocationReadAccessGrantError, normalizeNoSqlDbAllocationReadAccessGrantError, noSqlDbAllocationReadAccessGrantErrorCodes, NoSqlDbResourceFenceError, normalizeNoSqlDbResourceFenceError, noSqlDbResourceFenceErrorCodes, } from './service-types.js';
10
11
  export { LocalNoSqlDbStorageRootRelocationError, localNoSqlDbStorageRootRelocationErrorCodes, } from './storage-root-relocation.js';
11
12
  export { createNoSqlDbEffectivePayloadSha256V1 } from './resource-fencing.js';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19ub3NxbGRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU9wRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU96Ryx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBa0JsRSxzRUFBc0U7QUFDdEUsT0FBTyxFQUNMLFlBQVksRUFDWiwwQ0FBMEMsR0FDM0MsTUFBTSxxQkFBcUIsQ0FBQztBQStEN0IsT0FBTyxFQUNMLHFDQUFxQyxFQUNyQyw4Q0FBOEMsRUFDOUMsMENBQTBDLEVBQzFDLHlCQUF5QixFQUN6QixrQ0FBa0MsRUFDbEMsOEJBQThCLEdBQy9CLE1BQU0sb0JBQW9CLENBQUM7QUFNNUIsT0FBTyxFQUNMLHNDQUFzQyxFQUN0QywyQ0FBMkMsR0FDNUMsTUFBTSw4QkFBOEIsQ0FBQztBQUV0QyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyJ9
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19ub3NxbGRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUM5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU9wRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU96Ryx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBbUI1RiwyRUFBMkU7QUFDM0Usb0RBQW9EO0FBQ3BELE9BQU8sRUFDTCxZQUFZLEVBQ1osMENBQTBDLEVBQzFDLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUErRDdCLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsOENBQThDLEVBQzlDLDBDQUEwQyxFQUMxQyx5QkFBeUIsRUFDekIsa0NBQWtDLEVBQ2xDLDhCQUE4QixHQUMvQixNQUFNLG9CQUFvQixDQUFDO0FBTTVCLE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsMkNBQTJDLEdBQzVDLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sdUJBQXVCLENBQUMifQ==
@@ -69,6 +69,48 @@ export interface IDocumentsResult {
69
69
  documents: Record<string, any>[];
70
70
  total: number;
71
71
  }
72
+ /**
73
+ * Bounds of the engine standard-error tail that start failures, unexpected
74
+ * engine exits and failed management calls carry: the engine's last 64 lines.
75
+ * A longer line keeps its first 1,024 characters, followed by
76
+ * ` [<n> more characters]`.
77
+ */
78
+ export declare const noSqlDbEngineStderrTailLimits: Readonly<{
79
+ lines: 64;
80
+ lineCharacters: 1024;
81
+ }>;
82
+ /**
83
+ * Attach the engine's last standard-error lines to an error as its own field
84
+ * `engineStderrTail`, leaving its message and cause unchanged. Values that
85
+ * cannot carry a field (primitives, frozen objects) are left as they are.
86
+ */
87
+ export declare function attachNoSqlDbEngineStderrTail(errorArg: unknown, tailArg: readonly string[]): void;
88
+ /**
89
+ * The engine process exited with a non-zero status or by a signal while its
90
+ * server was running and no stop was in progress. `engineStderrTail` holds
91
+ * its last standard-error lines.
92
+ */
93
+ export declare class NoSqlDbEngineExitError extends Error {
94
+ readonly exitCode: number | null;
95
+ readonly signal: string | null;
96
+ readonly engineStderrTail: readonly string[];
97
+ constructor(exitCode: number | null, signal: string | null, engineStderrTailArg: readonly string[]);
98
+ }
99
+ /**
100
+ * A start that the engine refused because the storage root, or a feature it
101
+ * carries, comes from a later NoSQLDB release than this one: the engine's
102
+ * management reply carried the code `UNKNOWN_ROOT`. The engine wrote nothing
103
+ * into the root (storage-root-names-and-start.md, "Roots of later releases";
104
+ * requirements A300 and A319). `code` holds the code, and `cause` the
105
+ * management error that carried it.
106
+ */
107
+ export declare class NoSqlDbUnknownRootError extends Error {
108
+ readonly code: 'UNKNOWN_ROOT';
109
+ readonly responseErrorCode: 'UNKNOWN_ROOT';
110
+ constructor(options?: {
111
+ cause?: unknown;
112
+ });
113
+ }
72
114
  export declare class NoSqlDbManagementOperationTerminationError extends AggregateError {
73
115
  constructor(operationErrorArg: unknown, terminationErrorArg: unknown);
74
116
  }
@@ -131,6 +173,7 @@ interface INoSqlDbRustConfig {
131
173
  storagePath?: string;
132
174
  query?: INoSqlDbQueryOptions;
133
175
  inbound?: INoSqlDbInboundOptions;
176
+ storageBudgetBytes?: number;
134
177
  auth?: {
135
178
  enabled?: boolean;
136
179
  users?: Array<{
@@ -154,10 +197,30 @@ interface INoSqlDbRustConfig {
154
197
  maxBytes?: number;
155
198
  };
156
199
  }
157
- export declare function getRustDbAllocatorEnv(environment?: NodeJS.ProcessEnv): Record<string, string>;
200
+ /**
201
+ * What a spawn() that returned false after `waitedMs` means, stating only what
202
+ * is known. Smartrust refuses a `binaryPath` that does not pass its validation
203
+ * before spawn() can return false, so with one the engine there passed
204
+ * Smartrust's validation and did not report ready within the bridge's limit,
205
+ * and its path is given as the caller gave it.
206
+ * Without one, whatever NOSQLDB_RUST_BINARY holds (one of the places that
207
+ * Smartrust's search looks), either the search found no engine or the engine
208
+ * it found did not report ready, and nothing tells which.
209
+ */
210
+ export declare function describeRefusedSpawn(binaryPath: string | undefined, waitedMs: number): string;
158
211
  export interface IRustDbBridgeOptions {
159
212
  /** Exact engine executable, validated by Smartrust without discovery fallback or permission changes. */
160
213
  binaryPath?: string;
214
+ /**
215
+ * Receives every line the engine writes to its standard error, in order and
216
+ * without its line break. Without it, no engine line reaches the host
217
+ * process's standard error. Either way the bridge keeps the last lines for
218
+ * errors (`noSqlDbEngineStderrTailLimits`). Each call runs in its own
219
+ * microtask after the bridge has recorded the line, so an exception it
220
+ * throws cannot disturb the bridge; it is not caught and reaches the process
221
+ * as an uncaught exception.
222
+ */
223
+ engineLog?: (line: string) => void;
161
224
  }
162
225
  /**
163
226
  * Bridge between TypeScript NoSqlDbServer and the Rust binary.
@@ -171,13 +234,73 @@ export declare class RustDbBridge extends EventEmitter {
171
234
  * termination, or when the bridge is connected to an external process.
172
235
  */
173
236
  get processId(): number | undefined;
237
+ /** The engine child process of the latest spawn, while the bridge holds it. */
238
+ private get childProcess();
239
+ /** How the engine process of the latest spawn exited, once it has. */
240
+ private engineExit;
241
+ private engineExitPromise;
242
+ /** Records the exit of the engine process that a spawn has just started. */
243
+ private watchEngineExit;
244
+ /**
245
+ * The exit code and signal of the engine process of the latest spawn, as its
246
+ * process exit reported them, each null where it reported none; or null
247
+ * while that process has not exited, or no spawn started one.
248
+ */
249
+ get lastEngineExit(): {
250
+ code: number | null;
251
+ signal: string | null;
252
+ } | null;
253
+ /** Whether the engine process of the latest spawn exists and has not exited. */
254
+ get engineProcessAlive(): boolean;
255
+ /** Waits up to `timeoutMs` for the engine process to exit by itself; resolves whether it has. */
256
+ waitForEngineExit(timeoutMs: number): Promise<boolean>;
257
+ /**
258
+ * Closes the engine's management input, the end of the management protocol
259
+ * after an acknowledged `stop`, on which the engine exits by itself. This is
260
+ * neither a signal nor a kill. Returns whether there was an input to close.
261
+ */
262
+ endManagementInput(): boolean;
174
263
  private terminationConfirmed;
175
264
  private terminationPromise;
176
265
  private terminationFailure;
266
+ private readonly stderrTail;
267
+ /** The `binaryPath` this bridge was given, if any, as given: the bridge's only configured path. */
268
+ private readonly binaryPath;
269
+ private spawnRefusal;
270
+ /**
271
+ * Why Smartrust's spawn() returned false, as far as the bridge knows. Each
272
+ * spawn() clears it as it starts, and sets it when Smartrust's spawn()
273
+ * returns false before this spawn()'s own `timeoutMs` or `signal` cuts it
274
+ * short, before the engine is ended. That spawn() then returns false, or
275
+ * throws if ending the engine fails. After any other spawn() it is
276
+ * undefined, including one cut short by its own `timeoutMs` or `signal`.
277
+ * Smartrust's spawn() returns false both when it finds no engine and when
278
+ * the engine it starts does not report ready within its limit; a
279
+ * `binaryPath` tells the two apart, as Smartrust refuses one that does not
280
+ * pass its validation with RustBinaryLocatorError before spawn() can return
281
+ * false.
282
+ */
283
+ get spawnFailureMessage(): string | undefined;
177
284
  constructor(options?: IRustDbBridgeOptions);
285
+ /**
286
+ * The last standard-error lines of the running or most recently spawned
287
+ * engine process, within `noSqlDbEngineStderrTailLimits`.
288
+ */
289
+ get engineStderrTail(): string[];
290
+ /**
291
+ * Send one management command. A failure while no engine runs (it exited
292
+ * or never started) carries the engine's last standard-error lines.
293
+ */
294
+ private send;
178
295
  /**
179
296
  * Spawn the Rust binary in management mode.
180
- * Returns true if the binary was found and spawned successfully.
297
+ * Returns true once the engine reported ready. Returns false when
298
+ * Smartrust's spawn() returned false: no engine was found, or the one found
299
+ * did not report ready within the bridge's limit. spawnFailureMessage then
300
+ * says what that means, as far as the bridge knows, and still says it if
301
+ * ending that engine fails and this throws instead. After any other
302
+ * outcome, including a throw on this spawn()'s own `timeoutMs` or `signal`,
303
+ * spawnFailureMessage is undefined.
181
304
  */
182
305
  spawn(optionsArg?: INoSqlDbManagementOperationOptions): Promise<boolean>;
183
306
  /**