@lossless.org/client 0.1.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.
- package/.smartconfig.json +37 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.losslessorgclient.d.ts +32 -0
- package/dist_ts/classes.losslessorgclient.js +103 -0
- package/dist_ts/core/classes.error.d.ts +16 -0
- package/dist_ts/core/classes.error.js +29 -0
- package/dist_ts/core/classes.operation.d.ts +17 -0
- package/dist_ts/core/classes.operation.js +70 -0
- package/dist_ts/core/interfaces.d.ts +18 -0
- package/dist_ts/core/interfaces.js +2 -0
- package/dist_ts/index.d.ts +4 -0
- package/dist_ts/index.js +3 -0
- package/dist_ts/nosqldb/classes.atomicdelete.d.ts +26 -0
- package/dist_ts/nosqldb/classes.atomicdelete.js +44 -0
- package/dist_ts/nosqldb/classes.atomicfindoneandupdate.d.ts +27 -0
- package/dist_ts/nosqldb/classes.atomicfindoneandupdate.js +86 -0
- package/dist_ts/nosqldb/classes.atomicupdate.d.ts +26 -0
- package/dist_ts/nosqldb/classes.atomicupdate.js +55 -0
- package/dist_ts/nosqldb/classes.bootstraprecord.d.ts +14 -0
- package/dist_ts/nosqldb/classes.bootstraprecord.js +80 -0
- package/dist_ts/nosqldb/classes.bsonassertion.d.ts +2 -0
- package/dist_ts/nosqldb/classes.bsonassertion.js +29 -0
- package/dist_ts/nosqldb/classes.bsonobjectid.d.ts +2 -0
- package/dist_ts/nosqldb/classes.bsonobjectid.js +50 -0
- package/dist_ts/nosqldb/classes.bsonsnapshot.d.ts +3 -0
- package/dist_ts/nosqldb/classes.bsonsnapshot.js +126 -0
- package/dist_ts/nosqldb/classes.cached-document.d.ts +27 -0
- package/dist_ts/nosqldb/classes.cached-document.js +112 -0
- package/dist_ts/nosqldb/classes.collection.d.ts +302 -0
- package/dist_ts/nosqldb/classes.collection.js +1568 -0
- package/dist_ts/nosqldb/classes.collectionfactory.d.ts +30 -0
- package/dist_ts/nosqldb/classes.collectionfactory.js +65 -0
- package/dist_ts/nosqldb/classes.collectionlifecycle.d.ts +4 -0
- package/dist_ts/nosqldb/classes.collectionlifecycle.js +15 -0
- package/dist_ts/nosqldb/classes.collectionpreparation.d.ts +34 -0
- package/dist_ts/nosqldb/classes.collectionpreparation.js +134 -0
- package/dist_ts/nosqldb/classes.collectiontopology.d.ts +47 -0
- package/dist_ts/nosqldb/classes.collectiontopology.js +388 -0
- package/dist_ts/nosqldb/classes.connection.d.ts +18 -0
- package/dist_ts/nosqldb/classes.connection.js +23 -0
- package/dist_ts/nosqldb/classes.convenience.d.ts +1 -0
- package/dist_ts/nosqldb/classes.convenience.js +5 -0
- package/dist_ts/nosqldb/classes.cursor.d.ts +15 -0
- package/dist_ts/nosqldb/classes.cursor.js +82 -0
- package/dist_ts/nosqldb/classes.cursoroperation.d.ts +7 -0
- package/dist_ts/nosqldb/classes.cursoroperation.js +36 -0
- package/dist_ts/nosqldb/classes.db.d.ts +98 -0
- package/dist_ts/nosqldb/classes.db.js +434 -0
- package/dist_ts/nosqldb/classes.distributedcoordinator.d.ts +52 -0
- package/dist_ts/nosqldb/classes.distributedcoordinator.js +314 -0
- package/dist_ts/nosqldb/classes.doc.d.ts +722 -0
- package/dist_ts/nosqldb/classes.doc.js +2976 -0
- package/dist_ts/nosqldb/classes.easystore.d.ts +42 -0
- package/dist_ts/nosqldb/classes.easystore.js +199 -0
- package/dist_ts/nosqldb/classes.exactpersistence.d.ts +141 -0
- package/dist_ts/nosqldb/classes.exactpersistence.js +1110 -0
- package/dist_ts/nosqldb/classes.lucene.adapter.d.ts +173 -0
- package/dist_ts/nosqldb/classes.lucene.adapter.js +623 -0
- package/dist_ts/nosqldb/classes.mongoadministration.d.ts +73 -0
- package/dist_ts/nosqldb/classes.mongoadministration.js +497 -0
- package/dist_ts/nosqldb/classes.namespaceinspection.d.ts +42 -0
- package/dist_ts/nosqldb/classes.namespaceinspection.js +138 -0
- package/dist_ts/nosqldb/classes.operationbudget.d.ts +22 -0
- package/dist_ts/nosqldb/classes.operationbudget.js +65 -0
- package/dist_ts/nosqldb/classes.ordinarypersistence.d.ts +18 -0
- package/dist_ts/nosqldb/classes.ordinarypersistence.js +71 -0
- package/dist_ts/nosqldb/classes.persistence.d.ts +14 -0
- package/dist_ts/nosqldb/classes.persistence.js +34 -0
- package/dist_ts/nosqldb/classes.session.d.ts +28 -0
- package/dist_ts/nosqldb/classes.session.js +246 -0
- package/dist_ts/nosqldb/classes.storedinspection.d.ts +44 -0
- package/dist_ts/nosqldb/classes.storedinspection.js +100 -0
- package/dist_ts/nosqldb/classes.testdatabase.d.ts +56 -0
- package/dist_ts/nosqldb/classes.testdatabase.js +250 -0
- package/dist_ts/nosqldb/classes.watcher.d.ts +37 -0
- package/dist_ts/nosqldb/classes.watcher.js +98 -0
- package/dist_ts/nosqldb/index.d.ts +27 -0
- package/dist_ts/nosqldb/index.js +18 -0
- package/dist_ts/nosqldb/logging.d.ts +2 -0
- package/dist_ts/nosqldb/logging.js +3 -0
- package/dist_ts/nosqldb/plugins.d.ts +17 -0
- package/dist_ts/nosqldb/plugins.js +20 -0
- package/dist_ts/nosqldb/shim.d.ts +1 -0
- package/dist_ts/nosqldb/shim.js +8 -0
- package/dist_ts/nosqldb/testsupport.d.ts +3 -0
- package/dist_ts/nosqldb/testsupport.js +3 -0
- package/dist_ts/objectstorage/classes.bucket.d.ts +227 -0
- package/dist_ts/objectstorage/classes.bucket.js +939 -0
- package/dist_ts/objectstorage/classes.connection.d.ts +21 -0
- package/dist_ts/objectstorage/classes.connection.js +27 -0
- package/dist_ts/objectstorage/classes.directory.d.ts +124 -0
- package/dist_ts/objectstorage/classes.directory.js +335 -0
- package/dist_ts/objectstorage/classes.exactpathpurgeerror.d.ts +5 -0
- package/dist_ts/objectstorage/classes.exactpathpurgeerror.js +18 -0
- package/dist_ts/objectstorage/classes.exactuploaderror.d.ts +5 -0
- package/dist_ts/objectstorage/classes.exactuploaderror.js +19 -0
- package/dist_ts/objectstorage/classes.file.d.ts +91 -0
- package/dist_ts/objectstorage/classes.file.js +255 -0
- package/dist_ts/objectstorage/classes.listcursor.d.ts +41 -0
- package/dist_ts/objectstorage/classes.listcursor.js +67 -0
- package/dist_ts/objectstorage/classes.metadata.d.ts +57 -0
- package/dist_ts/objectstorage/classes.metadata.js +113 -0
- package/dist_ts/objectstorage/classes.smartbucket.d.ts +57 -0
- package/dist_ts/objectstorage/classes.smartbucket.js +357 -0
- package/dist_ts/objectstorage/classes.trash.d.ts +11 -0
- package/dist_ts/objectstorage/classes.trash.js +22 -0
- package/dist_ts/objectstorage/classes.watcher.d.ts +79 -0
- package/dist_ts/objectstorage/classes.watcher.js +249 -0
- package/dist_ts/objectstorage/helpers.d.ts +25 -0
- package/dist_ts/objectstorage/helpers.js +215 -0
- package/dist_ts/objectstorage/index.d.ts +13 -0
- package/dist_ts/objectstorage/index.js +13 -0
- package/dist_ts/objectstorage/interfaces.d.ts +276 -0
- package/dist_ts/objectstorage/interfaces.js +2 -0
- package/dist_ts/objectstorage/internal.exactpathpurge.operations.d.ts +11 -0
- package/dist_ts/objectstorage/internal.exactpathpurge.operations.js +1069 -0
- package/dist_ts/objectstorage/internal.exactupload.capability.d.ts +40 -0
- package/dist_ts/objectstorage/internal.exactupload.capability.js +382 -0
- package/dist_ts/objectstorage/internal.exactupload.operations.d.ts +11 -0
- package/dist_ts/objectstorage/internal.exactupload.operations.js +1104 -0
- package/dist_ts/objectstorage/internal.multipart.planner.d.ts +8 -0
- package/dist_ts/objectstorage/internal.multipart.planner.js +63 -0
- package/dist_ts/objectstorage/internal.multipart.stream.d.ts +17 -0
- package/dist_ts/objectstorage/internal.multipart.stream.js +440 -0
- package/dist_ts/objectstorage/internal.multipart.types.d.ts +82 -0
- package/dist_ts/objectstorage/internal.multipart.types.js +2 -0
- package/dist_ts/objectstorage/plugins.d.ts +17 -0
- package/dist_ts/objectstorage/plugins.js +23 -0
- package/dist_ts/plugins.d.ts +4 -0
- package/dist_ts/plugins.js +5 -0
- package/dist_ts/sqldb/classes.clickhouseconnection.d.ts +39 -0
- package/dist_ts/sqldb/classes.clickhouseconnection.js +225 -0
- package/dist_ts/sqldb/classes.sqlconnection.d.ts +50 -0
- package/dist_ts/sqldb/classes.sqlconnection.js +376 -0
- package/dist_ts/sqldb/classes.sqltable.d.ts +29 -0
- package/dist_ts/sqldb/classes.sqltable.js +70 -0
- package/dist_ts/sqldb/clickhouse/classes.metricwriter.d.ts +27 -0
- package/dist_ts/sqldb/clickhouse/classes.metricwriter.js +89 -0
- package/dist_ts/sqldb/clickhouse/index.d.ts +9 -0
- package/dist_ts/sqldb/clickhouse/index.js +13 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.d.ts +88 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.js +304 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.d.ts +28 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.js +46 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.d.ts +43 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.js +155 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.resultset.d.ts +13 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.resultset.js +36 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.d.ts +49 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.js +106 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.d.ts +51 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.js +96 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.plugins.d.ts +5 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.plugins.js +6 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.types.d.ts +53 -0
- package/dist_ts/sqldb/clickhouse/smartclickhouse.types.js +41 -0
- package/dist_ts/sqldb/index.d.ts +6 -0
- package/dist_ts/sqldb/index.js +6 -0
- package/dist_ts/sqldb/interfaces.d.ts +53 -0
- package/dist_ts/sqldb/interfaces.js +19 -0
- package/dist_ts/sqldb/internal.sqlpool.d.ts +51 -0
- package/dist_ts/sqldb/internal.sqlpool.js +214 -0
- package/dist_ts/sqldb/plugins.clickhouse.d.ts +4 -0
- package/dist_ts/sqldb/plugins.clickhouse.js +5 -0
- package/dist_ts/sqldb/plugins.mariadb.d.ts +4 -0
- package/dist_ts/sqldb/plugins.mariadb.js +5 -0
- package/docs/source/smartbucket/license.md +19 -0
- package/docs/source/smartclickhouse/license.md +19 -0
- package/license.md +21 -0
- package/package.json +101 -0
- package/readme.md +157 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/classes.losslessorgclient.ts +104 -0
- package/ts/core/classes.error.ts +31 -0
- package/ts/core/classes.operation.ts +60 -0
- package/ts/core/interfaces.ts +24 -0
- package/ts/index.ts +4 -0
- package/ts/nosqldb/classes.atomicdelete.ts +81 -0
- package/ts/nosqldb/classes.atomicfindoneandupdate.ts +152 -0
- package/ts/nosqldb/classes.atomicupdate.ts +99 -0
- package/ts/nosqldb/classes.bootstraprecord.ts +107 -0
- package/ts/nosqldb/classes.bsonassertion.ts +25 -0
- package/ts/nosqldb/classes.bsonobjectid.ts +45 -0
- package/ts/nosqldb/classes.bsonsnapshot.ts +105 -0
- package/ts/nosqldb/classes.cached-document.ts +67 -0
- package/ts/nosqldb/classes.collection.ts +2399 -0
- package/ts/nosqldb/classes.collectionfactory.ts +87 -0
- package/ts/nosqldb/classes.collectionlifecycle.ts +24 -0
- package/ts/nosqldb/classes.collectionpreparation.ts +164 -0
- package/ts/nosqldb/classes.collectiontopology.ts +645 -0
- package/ts/nosqldb/classes.connection.ts +31 -0
- package/ts/nosqldb/classes.convenience.ts +5 -0
- package/ts/nosqldb/classes.cursor.ts +88 -0
- package/ts/nosqldb/classes.cursoroperation.ts +38 -0
- package/ts/nosqldb/classes.db.ts +637 -0
- package/ts/nosqldb/classes.distributedcoordinator.ts +305 -0
- package/ts/nosqldb/classes.doc.ts +4928 -0
- package/ts/nosqldb/classes.easystore.ts +154 -0
- package/ts/nosqldb/classes.exactpersistence.ts +1974 -0
- package/ts/nosqldb/classes.lucene.adapter.ts +780 -0
- package/ts/nosqldb/classes.mongoadministration.ts +867 -0
- package/ts/nosqldb/classes.namespaceinspection.ts +199 -0
- package/ts/nosqldb/classes.operationbudget.ts +75 -0
- package/ts/nosqldb/classes.ordinarypersistence.ts +84 -0
- package/ts/nosqldb/classes.persistence.ts +62 -0
- package/ts/nosqldb/classes.session.ts +389 -0
- package/ts/nosqldb/classes.storedinspection.ts +151 -0
- package/ts/nosqldb/classes.testdatabase.ts +272 -0
- package/ts/nosqldb/classes.watcher.ts +96 -0
- package/ts/nosqldb/index.ts +51 -0
- package/ts/nosqldb/logging.ts +3 -0
- package/ts/nosqldb/plugins.ts +37 -0
- package/ts/nosqldb/shim.ts +6 -0
- package/ts/nosqldb/testsupport.ts +13 -0
- package/ts/objectstorage/classes.bucket.ts +1114 -0
- package/ts/objectstorage/classes.connection.ts +36 -0
- package/ts/objectstorage/classes.directory.ts +425 -0
- package/ts/objectstorage/classes.exactpathpurgeerror.ts +24 -0
- package/ts/objectstorage/classes.exactuploaderror.ts +25 -0
- package/ts/objectstorage/classes.file.ts +303 -0
- package/ts/objectstorage/classes.listcursor.ts +89 -0
- package/ts/objectstorage/classes.metadata.ts +134 -0
- package/ts/objectstorage/classes.smartbucket.ts +445 -0
- package/ts/objectstorage/classes.trash.ts +30 -0
- package/ts/objectstorage/classes.watcher.ts +289 -0
- package/ts/objectstorage/helpers.ts +254 -0
- package/ts/objectstorage/index.ts +13 -0
- package/ts/objectstorage/interfaces.ts +389 -0
- package/ts/objectstorage/internal.exactpathpurge.operations.ts +1936 -0
- package/ts/objectstorage/internal.exactupload.capability.ts +580 -0
- package/ts/objectstorage/internal.exactupload.operations.ts +1715 -0
- package/ts/objectstorage/internal.multipart.planner.ts +90 -0
- package/ts/objectstorage/internal.multipart.stream.ts +606 -0
- package/ts/objectstorage/internal.multipart.types.ts +106 -0
- package/ts/objectstorage/plugins.ts +35 -0
- package/ts/plugins.ts +4 -0
- package/ts/sqldb/classes.clickhouseconnection.ts +189 -0
- package/ts/sqldb/classes.sqlconnection.ts +350 -0
- package/ts/sqldb/classes.sqltable.ts +70 -0
- package/ts/sqldb/clickhouse/classes.metricwriter.ts +72 -0
- package/ts/sqldb/clickhouse/index.ts +16 -0
- package/ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.ts +372 -0
- package/ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.ts +52 -0
- package/ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.ts +120 -0
- package/ts/sqldb/clickhouse/smartclickhouse.classes.resultset.ts +44 -0
- package/ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.ts +123 -0
- package/ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.ts +114 -0
- package/ts/sqldb/clickhouse/smartclickhouse.plugins.ts +5 -0
- package/ts/sqldb/clickhouse/smartclickhouse.types.ts +134 -0
- package/ts/sqldb/index.ts +6 -0
- package/ts/sqldb/interfaces.ts +61 -0
- package/ts/sqldb/internal.sqlpool.ts +179 -0
- package/ts/sqldb/plugins.clickhouse.ts +4 -0
- package/ts/sqldb/plugins.mariadb.ts +4 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { SmartdataCollection } from './classes.collection.js';
|
|
3
|
+
import { EasyStore } from './classes.easystore.js';
|
|
4
|
+
import { SmartdataMongoAdministration } from './classes.mongoadministration.js';
|
|
5
|
+
import { SmartdataSession } from './classes.session.js';
|
|
6
|
+
import { collectionTopologyDbInspectionSymbol } from './classes.collectiontopology.js';
|
|
7
|
+
import { type ISmartdataNamespaceInspectionOptions, type ISmartdataNamespaceInspection } from './classes.namespaceinspection.js';
|
|
8
|
+
export { SmartdataSession } from './classes.session.js';
|
|
9
|
+
export type { TSmartdataOrdinarySession } from './classes.session.js';
|
|
10
|
+
/**
|
|
11
|
+
* interface - indicates the connection status of the db
|
|
12
|
+
*/
|
|
13
|
+
export type TConnectionStatus = 'initial' | 'disconnected' | 'connected' | 'failed';
|
|
14
|
+
export interface ISmartdataReadinessOptions {
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}
|
|
18
|
+
export interface ISmartdataInitOptions {
|
|
19
|
+
/** Bounds connection setup; cleanup is always joined before the call settles. */
|
|
20
|
+
timeoutMs?: number;
|
|
21
|
+
signal?: AbortSignal;
|
|
22
|
+
}
|
|
23
|
+
export interface ISmartdataCloseOptions {
|
|
24
|
+
/** Total deadline for removal, including preceding session cleanup (1..120000 ms). */
|
|
25
|
+
timeoutMs?: number;
|
|
26
|
+
dropDatabase?: {
|
|
27
|
+
expectedDatabaseName: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export type TSmartdataReadinessFailureReason = 'not_initialized' | 'connecting' | 'connection_failed' | 'closing' | 'closed' | 'close_failed' | 'aborted' | 'timeout' | 'unavailable';
|
|
31
|
+
export type TSmartdataReadinessResult = {
|
|
32
|
+
ready: true;
|
|
33
|
+
status: 'ready';
|
|
34
|
+
durationMs: number;
|
|
35
|
+
} | {
|
|
36
|
+
ready: false;
|
|
37
|
+
status: 'unavailable';
|
|
38
|
+
reason: TSmartdataReadinessFailureReason;
|
|
39
|
+
durationMs: number;
|
|
40
|
+
};
|
|
41
|
+
export declare class SmartdataDb {
|
|
42
|
+
smartdataOptions: plugins.tsclass.database.IMongoDescriptor;
|
|
43
|
+
mongoDbClient: plugins.mongodb.MongoClient;
|
|
44
|
+
mongoDb: plugins.mongodb.Db;
|
|
45
|
+
status: TConnectionStatus;
|
|
46
|
+
statusConnectedDeferred: plugins.smartpromise.Deferred<void>;
|
|
47
|
+
smartdataCollectionMap: plugins.lik.ObjectMap<SmartdataCollection<any>>;
|
|
48
|
+
private lifecycleState;
|
|
49
|
+
private lifecycleEpoch;
|
|
50
|
+
private activeLifecycleOperation;
|
|
51
|
+
private pendingClient?;
|
|
52
|
+
constructor(smartdataOptions: plugins.tsclass.database.IMongoDescriptor);
|
|
53
|
+
createEasyStore<T = unknown>(nameIdArg: string): Promise<EasyStore<T>>;
|
|
54
|
+
/**
|
|
55
|
+
* connects to the database that was specified during instance creation
|
|
56
|
+
*/
|
|
57
|
+
init(optionsArg?: ISmartdataInitOptions): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* closes the connection to the databse
|
|
60
|
+
*/
|
|
61
|
+
close(optionsArg?: ISmartdataCloseOptions): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Performs a bounded, read-only round trip to verify database readiness.
|
|
64
|
+
*/
|
|
65
|
+
checkReadiness(optionsArg?: ISmartdataReadinessOptions): Promise<TSmartdataReadinessResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Starts a raw MongoDB session. Use createSession() when every transaction
|
|
68
|
+
* operation goes through SmartData and stable persistence errors are needed.
|
|
69
|
+
*/
|
|
70
|
+
startSession(): plugins.mongodb.ClientSession;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a SmartData-owned session for model transactions.
|
|
73
|
+
*/
|
|
74
|
+
createSession(): SmartdataSession;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a narrowly scoped MongoDB administration facade bound to this
|
|
77
|
+
* SmartData lifecycle. Applications never need direct driver access.
|
|
78
|
+
*/
|
|
79
|
+
createMongoAdministration(): SmartdataMongoAdministration;
|
|
80
|
+
/** Observe all namespaces, indexes and bounded counts without initializing models. */
|
|
81
|
+
inspectNamespace(optionsArg?: ISmartdataNamespaceInspectionOptions): Promise<ISmartdataNamespaceInspection>;
|
|
82
|
+
/** @internal Runs inspection or explicit model preparation against one connection generation. */
|
|
83
|
+
[collectionTopologyDbInspectionSymbol]<TResult>(operationArg: (mongoDbArg: plugins.mongodb.Db, assertCurrentArg: () => void) => Promise<TResult>): Promise<TResult>;
|
|
84
|
+
addCollection(SmartdataCollectionArg: SmartdataCollection<any>): void;
|
|
85
|
+
/**
|
|
86
|
+
* Gets a collection's name and returns a SmartdataCollection instance
|
|
87
|
+
* @param nameArg
|
|
88
|
+
* @returns DbTable
|
|
89
|
+
*/
|
|
90
|
+
getSmartdataCollectionByName<T>(nameArg: string): Promise<SmartdataCollection<T>>;
|
|
91
|
+
private beginLifecycleOperation;
|
|
92
|
+
private assertLifecycleOperationCanBegin;
|
|
93
|
+
private resolveDatabaseToDrop;
|
|
94
|
+
private endLifecycleOperation;
|
|
95
|
+
private transitionLifecycle;
|
|
96
|
+
private getReadinessLifecycleReason;
|
|
97
|
+
private createReadinessFailure;
|
|
98
|
+
}
|
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { SmartdataCollection } from './classes.collection.js';
|
|
3
|
+
import { EasyStore } from './classes.easystore.js';
|
|
4
|
+
import { SmartdataPersistenceError } from './classes.persistence.js';
|
|
5
|
+
import { SmartdataMongoAdministration } from './classes.mongoadministration.js';
|
|
6
|
+
import { createSmartdataSession, invalidateSmartdataSessions, SmartdataSession, unwrapSmartdataSessionInvalidationErrors, } from './classes.session.js';
|
|
7
|
+
import { collectionTopologyDbInspectionSymbol } from './classes.collectiontopology.js';
|
|
8
|
+
import { inspectSmartdataNamespace, } from './classes.namespaceinspection.js';
|
|
9
|
+
export { SmartdataSession } from './classes.session.js';
|
|
10
|
+
import { logger } from './logging.js';
|
|
11
|
+
import { assertDataOptions, SmartdataOperationBudget } from './classes.operationbudget.js';
|
|
12
|
+
const readinessDefaultTimeoutMs = 2_000;
|
|
13
|
+
const readinessMaximumTimeoutMs = 30_000;
|
|
14
|
+
const assertExactDataObject = (valueArg, expectedKeysArg, descriptionArg, allowEmptyArg = false) => {
|
|
15
|
+
if (valueArg === null ||
|
|
16
|
+
typeof valueArg !== 'object' ||
|
|
17
|
+
Array.isArray(valueArg) ||
|
|
18
|
+
Object.getPrototypeOf(valueArg) !== Object.prototype) {
|
|
19
|
+
throw new SmartdataPersistenceError('invalid_argument', `${descriptionArg} must be a plain object.`);
|
|
20
|
+
}
|
|
21
|
+
const keys = Reflect.ownKeys(valueArg);
|
|
22
|
+
if ((!allowEmptyArg && keys.length !== expectedKeysArg.length) ||
|
|
23
|
+
(allowEmptyArg && keys.length !== 0 && keys.length !== expectedKeysArg.length) ||
|
|
24
|
+
keys.some((keyArg) => typeof keyArg !== 'string' || !expectedKeysArg.includes(keyArg))) {
|
|
25
|
+
throw new SmartdataPersistenceError('invalid_argument', `${descriptionArg} has an invalid shape.`);
|
|
26
|
+
}
|
|
27
|
+
for (const key of keys) {
|
|
28
|
+
const descriptor = Object.getOwnPropertyDescriptor(valueArg, key);
|
|
29
|
+
if (!descriptor || !('value' in descriptor)) {
|
|
30
|
+
throw new SmartdataPersistenceError('invalid_argument', `${descriptionArg} must contain data properties only.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return valueArg;
|
|
34
|
+
};
|
|
35
|
+
export class SmartdataDb {
|
|
36
|
+
smartdataOptions;
|
|
37
|
+
mongoDbClient;
|
|
38
|
+
mongoDb;
|
|
39
|
+
status;
|
|
40
|
+
statusConnectedDeferred = plugins.smartpromise.defer();
|
|
41
|
+
smartdataCollectionMap = new plugins.lik.ObjectMap();
|
|
42
|
+
lifecycleState = 'initial';
|
|
43
|
+
lifecycleEpoch = 0;
|
|
44
|
+
activeLifecycleOperation = null;
|
|
45
|
+
pendingClient;
|
|
46
|
+
constructor(smartdataOptions) {
|
|
47
|
+
this.smartdataOptions = smartdataOptions;
|
|
48
|
+
this.status = 'initial';
|
|
49
|
+
void this.statusConnectedDeferred.promise.catch(() => { });
|
|
50
|
+
}
|
|
51
|
+
// easystore
|
|
52
|
+
async createEasyStore(nameIdArg) {
|
|
53
|
+
const easyStore = new EasyStore(nameIdArg, this);
|
|
54
|
+
return easyStore;
|
|
55
|
+
}
|
|
56
|
+
// basic connection stuff ----------------------------------------------
|
|
57
|
+
/**
|
|
58
|
+
* connects to the database that was specified during instance creation
|
|
59
|
+
*/
|
|
60
|
+
async init(optionsArg = {}) {
|
|
61
|
+
this.assertLifecycleOperationCanBegin('init');
|
|
62
|
+
const options = assertDataOptions(optionsArg, ['timeoutMs', 'signal']);
|
|
63
|
+
const budget = Object.keys(options).length
|
|
64
|
+
? new SmartdataOperationBudget(options.timeoutMs ?? 30_000, options.signal) : undefined;
|
|
65
|
+
try {
|
|
66
|
+
budget?.check();
|
|
67
|
+
}
|
|
68
|
+
catch (errorArg) {
|
|
69
|
+
budget?.close();
|
|
70
|
+
throw errorArg;
|
|
71
|
+
}
|
|
72
|
+
this.beginLifecycleOperation('init');
|
|
73
|
+
this.transitionLifecycle('connecting');
|
|
74
|
+
let candidateClient;
|
|
75
|
+
try {
|
|
76
|
+
try {
|
|
77
|
+
// Safely encode credentials to handle special characters
|
|
78
|
+
const encodedUser = this.smartdataOptions.mongoDbUser
|
|
79
|
+
? encodeURIComponent(this.smartdataOptions.mongoDbUser)
|
|
80
|
+
: '';
|
|
81
|
+
const encodedPass = this.smartdataOptions.mongoDbPass
|
|
82
|
+
? encodeURIComponent(this.smartdataOptions.mongoDbPass)
|
|
83
|
+
: '';
|
|
84
|
+
const finalConnectionUrl = this.smartdataOptions.mongoDbUrl
|
|
85
|
+
.replace('<USERNAME>', encodedUser)
|
|
86
|
+
.replace('<username>', encodedUser)
|
|
87
|
+
.replace('<USER>', encodedUser)
|
|
88
|
+
.replace('<user>', encodedUser)
|
|
89
|
+
.replace('<PASSWORD>', encodedPass)
|
|
90
|
+
.replace('<password>', encodedPass)
|
|
91
|
+
.replace('<DBNAME>', this.smartdataOptions.mongoDbName || '')
|
|
92
|
+
.replace('<dbname>', this.smartdataOptions.mongoDbName || '');
|
|
93
|
+
const descriptor = this.smartdataOptions;
|
|
94
|
+
const clientOptions = {
|
|
95
|
+
maxPoolSize: descriptor.maxPoolSize ?? 100,
|
|
96
|
+
maxIdleTimeMS: descriptor.maxIdleTimeMS ?? 300000,
|
|
97
|
+
serverSelectionTimeoutMS: budget?.remainingMs() ?? descriptor.serverSelectionTimeoutMS ?? 30000,
|
|
98
|
+
...(budget ? { connectTimeoutMS: budget.remainingMs() } : {}),
|
|
99
|
+
socketTimeoutMS: descriptor.socketTimeoutMS ?? 30000,
|
|
100
|
+
retryWrites: true,
|
|
101
|
+
};
|
|
102
|
+
candidateClient = new plugins.mongodb.MongoClient(finalConnectionUrl, clientOptions);
|
|
103
|
+
this.pendingClient = candidateClient;
|
|
104
|
+
const connectingClient = candidateClient;
|
|
105
|
+
let cancellationCleanup;
|
|
106
|
+
const onAbort = () => {
|
|
107
|
+
cancellationCleanup ??= connectingClient.close();
|
|
108
|
+
// The connection and this cleanup are both joined below.
|
|
109
|
+
void cancellationCleanup.catch(() => { });
|
|
110
|
+
};
|
|
111
|
+
budget?.signal.addEventListener('abort', onAbort, { once: true });
|
|
112
|
+
try {
|
|
113
|
+
budget?.check();
|
|
114
|
+
await connectingClient.connect();
|
|
115
|
+
budget?.check();
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
budget?.signal.removeEventListener('abort', onAbort);
|
|
119
|
+
if (cancellationCleanup)
|
|
120
|
+
await cancellationCleanup;
|
|
121
|
+
}
|
|
122
|
+
const candidateDb = candidateClient.db(this.smartdataOptions.mongoDbName);
|
|
123
|
+
for (const collection of this.smartdataCollectionMap.getArray()) {
|
|
124
|
+
collection.resetForDatabaseReconnect();
|
|
125
|
+
}
|
|
126
|
+
budget?.check();
|
|
127
|
+
this.mongoDbClient = candidateClient;
|
|
128
|
+
this.mongoDb = candidateDb;
|
|
129
|
+
candidateClient = undefined;
|
|
130
|
+
this.pendingClient = undefined;
|
|
131
|
+
this.status = 'connected';
|
|
132
|
+
this.transitionLifecycle('connected');
|
|
133
|
+
this.statusConnectedDeferred.resolve();
|
|
134
|
+
logger.log('info', `Connected to database ${this.smartdataOptions.mongoDbName}`);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
let cleanupError;
|
|
138
|
+
if (candidateClient) {
|
|
139
|
+
try {
|
|
140
|
+
// A cancelled connect may establish resources after its first close.
|
|
141
|
+
await candidateClient.close();
|
|
142
|
+
this.pendingClient = undefined;
|
|
143
|
+
}
|
|
144
|
+
catch (errorArg) {
|
|
145
|
+
cleanupError = errorArg;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
this.status = 'disconnected';
|
|
149
|
+
this.transitionLifecycle(this.pendingClient ? 'close_failed' : 'connection_failed');
|
|
150
|
+
logger.log('error', 'Failed to connect to the SmartData database.');
|
|
151
|
+
if (budget) {
|
|
152
|
+
throw new SmartdataPersistenceError('unsupported_operation', this.pendingClient
|
|
153
|
+
? 'SmartData connection setup and cleanup failed; close must be retried.'
|
|
154
|
+
: 'SmartData connection setup failed or was cancelled.');
|
|
155
|
+
}
|
|
156
|
+
if (cleanupError)
|
|
157
|
+
throw new AggregateError([error, cleanupError], 'SmartData connection setup and cleanup failed; close must be retried.');
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
this.endLifecycleOperation('init');
|
|
163
|
+
budget?.close();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* closes the connection to the databse
|
|
168
|
+
*/
|
|
169
|
+
async close(optionsArg = {}) {
|
|
170
|
+
this.assertLifecycleOperationCanBegin('close');
|
|
171
|
+
const databaseToDrop = this.resolveDatabaseToDrop(optionsArg);
|
|
172
|
+
const timeoutMs = Object.hasOwn(optionsArg, 'timeoutMs') ? optionsArg.timeoutMs : undefined;
|
|
173
|
+
const budget = timeoutMs === undefined ? undefined : new SmartdataOperationBudget(timeoutMs);
|
|
174
|
+
this.beginLifecycleOperation('close');
|
|
175
|
+
this.transitionLifecycle('closing');
|
|
176
|
+
this.status = 'disconnected';
|
|
177
|
+
const mongoDbClient = this.pendingClient ?? this.mongoDbClient;
|
|
178
|
+
try {
|
|
179
|
+
const closeErrors = [];
|
|
180
|
+
try {
|
|
181
|
+
await invalidateSmartdataSessions(this);
|
|
182
|
+
}
|
|
183
|
+
catch (errorArg) {
|
|
184
|
+
closeErrors.push(...(unwrapSmartdataSessionInvalidationErrors(errorArg) ?? [errorArg]));
|
|
185
|
+
}
|
|
186
|
+
if (databaseToDrop) {
|
|
187
|
+
try {
|
|
188
|
+
const databaseDropped = await databaseToDrop.dropDatabase(budget?.operationOptions());
|
|
189
|
+
if (!databaseDropped) {
|
|
190
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'MongoDB did not acknowledge the requested database removal.');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch (errorArg) {
|
|
194
|
+
closeErrors.push(errorArg);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
await mongoDbClient?.close();
|
|
199
|
+
this.pendingClient = undefined;
|
|
200
|
+
}
|
|
201
|
+
catch (errorArg) {
|
|
202
|
+
closeErrors.push(errorArg);
|
|
203
|
+
}
|
|
204
|
+
if (closeErrors.length > 0) {
|
|
205
|
+
this.transitionLifecycle('close_failed');
|
|
206
|
+
if (budget)
|
|
207
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'SmartData database cleanup failed; close must be retried.');
|
|
208
|
+
if (closeErrors.length === 1) {
|
|
209
|
+
throw closeErrors[0];
|
|
210
|
+
}
|
|
211
|
+
throw new AggregateError(closeErrors, 'Multiple SmartData database cleanup operations failed.');
|
|
212
|
+
}
|
|
213
|
+
this.transitionLifecycle('closed');
|
|
214
|
+
logger.log('info', `disconnected from database ${this.smartdataOptions.mongoDbName}`);
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
this.endLifecycleOperation('close');
|
|
218
|
+
budget?.close();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Performs a bounded, read-only round trip to verify database readiness.
|
|
223
|
+
*/
|
|
224
|
+
async checkReadiness(optionsArg = {}) {
|
|
225
|
+
const startedAt = performance.now();
|
|
226
|
+
const timeoutMs = optionsArg.timeoutMs ?? readinessDefaultTimeoutMs;
|
|
227
|
+
if (!Number.isSafeInteger(timeoutMs) ||
|
|
228
|
+
timeoutMs <= 0 ||
|
|
229
|
+
timeoutMs > readinessMaximumTimeoutMs) {
|
|
230
|
+
throw new SmartdataPersistenceError('invalid_argument', `Readiness timeoutMs must be a positive safe integer no greater than ${readinessMaximumTimeoutMs}.`);
|
|
231
|
+
}
|
|
232
|
+
const lifecycleReason = this.getReadinessLifecycleReason();
|
|
233
|
+
if (lifecycleReason) {
|
|
234
|
+
return this.createReadinessFailure(lifecycleReason, startedAt);
|
|
235
|
+
}
|
|
236
|
+
const signal = optionsArg.signal;
|
|
237
|
+
if (signal?.aborted) {
|
|
238
|
+
return this.createReadinessFailure('aborted', startedAt);
|
|
239
|
+
}
|
|
240
|
+
const lifecycleEpoch = this.lifecycleEpoch;
|
|
241
|
+
const mongoDb = this.mongoDb;
|
|
242
|
+
const mongoDbClient = this.mongoDbClient;
|
|
243
|
+
let response;
|
|
244
|
+
try {
|
|
245
|
+
response = await mongoDb.command({ ping: 1 }, {
|
|
246
|
+
timeoutMS: timeoutMs,
|
|
247
|
+
signal,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
if (signal?.aborted) {
|
|
252
|
+
return this.createReadinessFailure('aborted', startedAt);
|
|
253
|
+
}
|
|
254
|
+
if (this.lifecycleEpoch !== lifecycleEpoch ||
|
|
255
|
+
this.mongoDb !== mongoDb ||
|
|
256
|
+
this.mongoDbClient !== mongoDbClient) {
|
|
257
|
+
return this.createReadinessFailure(this.getReadinessLifecycleReason() ?? 'unavailable', startedAt);
|
|
258
|
+
}
|
|
259
|
+
if (error instanceof plugins.mongodb.MongoOperationTimeoutError) {
|
|
260
|
+
return this.createReadinessFailure('timeout', startedAt);
|
|
261
|
+
}
|
|
262
|
+
return this.createReadinessFailure('unavailable', startedAt);
|
|
263
|
+
}
|
|
264
|
+
if (this.lifecycleEpoch !== lifecycleEpoch ||
|
|
265
|
+
this.mongoDb !== mongoDb ||
|
|
266
|
+
this.mongoDbClient !== mongoDbClient) {
|
|
267
|
+
return this.createReadinessFailure(this.getReadinessLifecycleReason() ?? 'unavailable', startedAt);
|
|
268
|
+
}
|
|
269
|
+
if (response.ok !== 1) {
|
|
270
|
+
return this.createReadinessFailure('unavailable', startedAt);
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
ready: true,
|
|
274
|
+
status: 'ready',
|
|
275
|
+
durationMs: performance.now() - startedAt,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Starts a raw MongoDB session. Use createSession() when every transaction
|
|
280
|
+
* operation goes through SmartData and stable persistence errors are needed.
|
|
281
|
+
*/
|
|
282
|
+
startSession() {
|
|
283
|
+
return this.mongoDbClient.startSession();
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Creates a SmartData-owned session for model transactions.
|
|
287
|
+
*/
|
|
288
|
+
createSession() {
|
|
289
|
+
return createSmartdataSession(this);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Creates a narrowly scoped MongoDB administration facade bound to this
|
|
293
|
+
* SmartData lifecycle. Applications never need direct driver access.
|
|
294
|
+
*/
|
|
295
|
+
createMongoAdministration() {
|
|
296
|
+
return new SmartdataMongoAdministration(this);
|
|
297
|
+
}
|
|
298
|
+
/** Observe all namespaces, indexes and bounded counts without initializing models. */
|
|
299
|
+
async inspectNamespace(optionsArg) {
|
|
300
|
+
return inspectSmartdataNamespace(this, optionsArg);
|
|
301
|
+
}
|
|
302
|
+
/** @internal Runs inspection or explicit model preparation against one connection generation. */
|
|
303
|
+
async [collectionTopologyDbInspectionSymbol](operationArg) {
|
|
304
|
+
if (this.lifecycleState !== 'connected' ||
|
|
305
|
+
this.status !== 'connected' ||
|
|
306
|
+
!this.mongoDb ||
|
|
307
|
+
!this.mongoDbClient ||
|
|
308
|
+
this.mongoDb.client !== this.mongoDbClient) {
|
|
309
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'Collection topology inspection requires a connected SmartdataDb.');
|
|
310
|
+
}
|
|
311
|
+
const lifecycleEpoch = this.lifecycleEpoch;
|
|
312
|
+
const mongoDb = this.mongoDb;
|
|
313
|
+
const mongoDbClient = this.mongoDbClient;
|
|
314
|
+
const connectionIsCurrent = () => this.lifecycleState === 'connected' &&
|
|
315
|
+
this.status === 'connected' &&
|
|
316
|
+
this.lifecycleEpoch === lifecycleEpoch &&
|
|
317
|
+
this.mongoDb === mongoDb &&
|
|
318
|
+
this.mongoDbClient === mongoDbClient &&
|
|
319
|
+
mongoDb.client === mongoDbClient;
|
|
320
|
+
let result;
|
|
321
|
+
try {
|
|
322
|
+
result = await operationArg(mongoDb, () => {
|
|
323
|
+
if (!connectionIsCurrent()) {
|
|
324
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'SmartData connection changed during operation.');
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
if (!connectionIsCurrent()) {
|
|
330
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'SmartData connection changed during collection topology inspection.');
|
|
331
|
+
}
|
|
332
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'Collection topology inspection failed.');
|
|
333
|
+
}
|
|
334
|
+
if (!connectionIsCurrent()) {
|
|
335
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'SmartData connection changed during collection topology inspection.');
|
|
336
|
+
}
|
|
337
|
+
return result;
|
|
338
|
+
}
|
|
339
|
+
// handle table to class distribution
|
|
340
|
+
addCollection(SmartdataCollectionArg) {
|
|
341
|
+
this.smartdataCollectionMap.add(SmartdataCollectionArg);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Gets a collection's name and returns a SmartdataCollection instance
|
|
345
|
+
* @param nameArg
|
|
346
|
+
* @returns DbTable
|
|
347
|
+
*/
|
|
348
|
+
async getSmartdataCollectionByName(nameArg) {
|
|
349
|
+
const resultCollection = await this.smartdataCollectionMap.find(async (dbTableArg) => {
|
|
350
|
+
return dbTableArg.collectionName === nameArg;
|
|
351
|
+
});
|
|
352
|
+
return resultCollection;
|
|
353
|
+
}
|
|
354
|
+
beginLifecycleOperation(operationArg) {
|
|
355
|
+
this.assertLifecycleOperationCanBegin(operationArg);
|
|
356
|
+
this.activeLifecycleOperation = operationArg;
|
|
357
|
+
}
|
|
358
|
+
assertLifecycleOperationCanBegin(operationArg) {
|
|
359
|
+
if (this.activeLifecycleOperation) {
|
|
360
|
+
throw new SmartdataPersistenceError('unsupported_operation', `Cannot start SmartData database ${operationArg} while ${this.activeLifecycleOperation} is still running.`);
|
|
361
|
+
}
|
|
362
|
+
if (operationArg === 'init' &&
|
|
363
|
+
(this.lifecycleState === 'connected' ||
|
|
364
|
+
this.lifecycleState === 'close_failed')) {
|
|
365
|
+
throw new SmartdataPersistenceError('unsupported_operation', `Cannot start SmartData database init while the existing client is ${this.lifecycleState}.`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
resolveDatabaseToDrop(optionsArg) {
|
|
369
|
+
const options = assertDataOptions(optionsArg, ['dropDatabase', 'timeoutMs']);
|
|
370
|
+
if (!Object.hasOwn(options, 'dropDatabase')) {
|
|
371
|
+
return undefined;
|
|
372
|
+
}
|
|
373
|
+
const dropDatabaseOptions = assertExactDataObject(options.dropDatabase, ['expectedDatabaseName'], 'SmartData dropDatabase options');
|
|
374
|
+
const expectedDatabaseName = dropDatabaseOptions.expectedDatabaseName;
|
|
375
|
+
if (typeof expectedDatabaseName !== 'string' ||
|
|
376
|
+
expectedDatabaseName.length === 0 ||
|
|
377
|
+
expectedDatabaseName.trim() !== expectedDatabaseName) {
|
|
378
|
+
throw new SmartdataPersistenceError('invalid_argument', 'SmartData expectedDatabaseName must be a non-empty string without surrounding whitespace.');
|
|
379
|
+
}
|
|
380
|
+
if (this.lifecycleState !== 'connected' ||
|
|
381
|
+
this.status !== 'connected' ||
|
|
382
|
+
!this.mongoDbClient ||
|
|
383
|
+
!this.mongoDb) {
|
|
384
|
+
throw new SmartdataPersistenceError('unsupported_operation', 'SmartData can remove a database only from a connected lifecycle.');
|
|
385
|
+
}
|
|
386
|
+
if (this.mongoDb.client !== this.mongoDbClient) {
|
|
387
|
+
throw new SmartdataPersistenceError('invalid_configuration', 'SmartData database and client bindings are inconsistent.');
|
|
388
|
+
}
|
|
389
|
+
const boundDatabaseName = this.mongoDb.databaseName;
|
|
390
|
+
if (expectedDatabaseName !== boundDatabaseName) {
|
|
391
|
+
throw new SmartdataPersistenceError('invalid_argument', 'SmartData expectedDatabaseName does not match the connected database.');
|
|
392
|
+
}
|
|
393
|
+
if (this.smartdataOptions.mongoDbName !== boundDatabaseName) {
|
|
394
|
+
throw new SmartdataPersistenceError('invalid_configuration', 'SmartData database descriptor no longer matches the connected database.');
|
|
395
|
+
}
|
|
396
|
+
return this.mongoDb;
|
|
397
|
+
}
|
|
398
|
+
endLifecycleOperation(operationArg) {
|
|
399
|
+
if (this.activeLifecycleOperation === operationArg) {
|
|
400
|
+
this.activeLifecycleOperation = null;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
transitionLifecycle(stateArg) {
|
|
404
|
+
this.lifecycleState = stateArg;
|
|
405
|
+
this.lifecycleEpoch++;
|
|
406
|
+
}
|
|
407
|
+
getReadinessLifecycleReason() {
|
|
408
|
+
switch (this.lifecycleState) {
|
|
409
|
+
case 'initial':
|
|
410
|
+
return 'not_initialized';
|
|
411
|
+
case 'connecting':
|
|
412
|
+
return 'connecting';
|
|
413
|
+
case 'connection_failed':
|
|
414
|
+
return 'connection_failed';
|
|
415
|
+
case 'closing':
|
|
416
|
+
return 'closing';
|
|
417
|
+
case 'closed':
|
|
418
|
+
return 'closed';
|
|
419
|
+
case 'close_failed':
|
|
420
|
+
return 'close_failed';
|
|
421
|
+
case 'connected':
|
|
422
|
+
return undefined;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
createReadinessFailure(reasonArg, startedAtArg) {
|
|
426
|
+
return {
|
|
427
|
+
ready: false,
|
|
428
|
+
status: 'unavailable',
|
|
429
|
+
reason: reasonArg,
|
|
430
|
+
durationMs: performance.now() - startedAtArg,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL25vc3FsZGIvY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLHdDQUF3QyxHQUN6QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCx5QkFBeUIsR0FHMUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBNkQzRixNQUFNLHlCQUF5QixHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztBQUV6QyxNQUFNLHFCQUFxQixHQUFHLENBQzVCLFFBQWlCLEVBQ2pCLGVBQWtDLEVBQ2xDLGNBQXNCLEVBQ3RCLGFBQWEsR0FBRyxLQUFLLEVBQ0ksRUFBRTtJQUMzQixJQUNFLFFBQVEsS0FBSyxJQUFJO1FBQ2pCLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDdkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUNwRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLDBCQUEwQixDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsSUFDRSxDQUFDLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUMxRCxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksQ0FDUCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDbEUsRUFDRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLHdCQUF3QixDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksSUFBZ0IsRUFBRSxDQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLHFDQUFxQyxDQUN2RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQW1DLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLFdBQVc7SUFDdEIsZ0JBQWdCLENBQTRDO0lBQzVELGFBQWEsQ0FBK0I7SUFDNUMsT0FBTyxDQUFzQjtJQUM3QixNQUFNLENBQW9CO0lBQzFCLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkQsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBNEIsQ0FBQztJQUN2RSxjQUFjLEdBQStCLFNBQVMsQ0FBQztJQUN2RCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLHdCQUF3QixHQUEwQyxJQUFJLENBQUM7SUFDdkUsYUFBYSxDQUErQjtJQUVwRCxZQUFZLGdCQUEyRDtRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsS0FBSyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsWUFBWTtJQUNMLEtBQUssQ0FBQyxlQUFlLENBQWMsU0FBaUI7UUFDekQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCx3RUFBd0U7SUFFeEU7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQW9DLEVBQUU7UUFDdEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTTtZQUN4QyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRixJQUFJLENBQUM7WUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztZQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUFDLE1BQU0sUUFBUSxDQUFDO1FBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksZUFBd0QsQ0FBQztRQUM3RCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUM7Z0JBQ0gseURBQXlEO2dCQUN6RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVztvQkFDbkQsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7b0JBQ3ZELENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7b0JBQ25ELENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO29CQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVQLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7cUJBQ3hELE9BQU8sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO3FCQUNsQyxPQUFPLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztxQkFDbEMsT0FBTyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUM7cUJBQzlCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDO3FCQUM5QixPQUFPLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztxQkFDbEMsT0FBTyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7cUJBQ2xDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7cUJBQzVELE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFaEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUUyQixDQUFDO2dCQUNwRCxNQUFNLGFBQWEsR0FBdUM7b0JBQ3hELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLEdBQUc7b0JBQzFDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYSxJQUFJLE1BQU07b0JBQ2pELHdCQUF3QixFQUN0QixNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLHdCQUF3QixJQUFJLEtBQUs7b0JBQ3ZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlLElBQUksS0FBSztvQkFDcEQsV0FBVyxFQUFFLElBQUk7aUJBQ2xCLENBQUM7Z0JBRUYsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO2dCQUNyQyxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztnQkFDekMsSUFBSSxtQkFBOEMsQ0FBQztnQkFDbkQsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO29CQUNuQixtQkFBbUIsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakQseURBQXlEO29CQUN6RCxLQUFLLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDO2dCQUNGLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUM7b0JBQ0gsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUNoQixNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNqQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLENBQUM7d0JBQVMsQ0FBQztvQkFDVCxNQUFNLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckQsSUFBSSxtQkFBbUI7d0JBQUUsTUFBTSxtQkFBbUIsQ0FBQztnQkFDckQsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUNsQyxDQUFDO2dCQUNGLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7b0JBQ2hFLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDO2dCQUMzQixlQUFlLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDbkYsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxZQUFxQixDQUFDO2dCQUMxQixJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUM7d0JBQ0gscUVBQXFFO3dCQUNyRSxNQUFNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7b0JBQ2pDLENBQUM7b0JBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQzt3QkFDbEIsWUFBWSxHQUFHLFFBQVEsQ0FBQztvQkFDMUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO2dCQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNwRixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsYUFBYTt3QkFDN0UsQ0FBQyxDQUFDLHVFQUF1RTt3QkFDekUsQ0FBQyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7Z0JBQzdELENBQUM7Z0JBQ0QsSUFBSSxZQUFZO29CQUFFLE1BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQzlELHVFQUF1RSxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBcUMsRUFBRTtRQUN4RCxJQUFJLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDNUYsTUFBTSxNQUFNLEdBQUcsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFDN0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQy9ELElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFjLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsV0FBVyxDQUFDLElBQUksQ0FDZCxHQUFHLENBQUMsd0NBQXdDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUN0RSxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQztvQkFDSCxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztvQkFDdEYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUNyQixNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2Qiw2REFBNkQsQ0FDOUQsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLENBQUM7WUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekMsSUFBSSxNQUFNO29CQUFFLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyx1QkFBdUIsRUFDckUsMkRBQTJELENBQUMsQ0FBQztnQkFDL0QsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QixNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxNQUFNLElBQUksY0FBYyxDQUN0QixXQUFXLEVBQ1gsd0RBQXdELENBQ3pELENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDhCQUE4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUN6QixhQUF5QyxFQUFFO1FBRTNDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxJQUFJLHlCQUF5QixDQUFDO1FBQ3BFLElBQ0UsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxTQUFTLElBQUksQ0FBQztZQUNkLFNBQVMsR0FBRyx5QkFBeUIsRUFDckMsQ0FBQztZQUNELE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMsa0JBQWtCLEVBQ2xCLHVFQUF1RSx5QkFBeUIsR0FBRyxDQUNwRyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQzNELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2pDLElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxRQUF1QyxDQUFDO1FBQzVDLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzlCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUNYO2dCQUNFLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixNQUFNO2FBQ1AsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxJQUNFLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYztnQkFDdEMsSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPO2dCQUN4QixJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsRUFDcEMsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FDaEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLElBQUksYUFBYSxFQUNuRCxTQUFTLENBQ1YsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLEtBQUssWUFBWSxPQUFPLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUNFLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYztZQUN0QyxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU87WUFDeEIsSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLEVBQ3BDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FDaEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLElBQUksYUFBYSxFQUNuRCxTQUFTLENBQ1YsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUk7WUFDWCxNQUFNLEVBQUUsT0FBTztZQUNmLFVBQVUsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUztTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsc0ZBQXNGO0lBQy9FLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsVUFBaUQ7UUFFakQsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlHQUFpRztJQUMxRixLQUFLLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUNqRCxZQUFnRztRQUVoRyxJQUNFLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVztZQUNuQyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDM0IsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNiLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFDMUMsQ0FBQztZQUNELE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMsdUJBQXVCLEVBQ3ZCLGtFQUFrRSxDQUNuRSxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQy9CLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVztZQUNuQyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDM0IsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjO1lBQ3RDLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztZQUN4QixJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWE7WUFDcEMsT0FBTyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUM7UUFDbkMsSUFBSSxNQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7b0JBQzNCLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyx1QkFBdUIsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO2dCQUNqSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIscUVBQXFFLENBQ3RFLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsd0NBQXdDLENBQ3pDLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixxRUFBcUUsQ0FDdEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQscUNBQXFDO0lBRTlCLGFBQWEsQ0FBQyxzQkFBZ0Q7UUFDbkUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDRCQUE0QixDQUFJLE9BQWU7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ25GLE9BQU8sVUFBVSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxZQUE0QztRQUMxRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFlBQVksQ0FBQztJQUMvQyxDQUFDO0lBRU8sZ0NBQWdDLENBQ3RDLFlBQTRDO1FBRTVDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsbUNBQW1DLFlBQVksVUFBVSxJQUFJLENBQUMsd0JBQXdCLG9CQUFvQixDQUMzRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQ0UsWUFBWSxLQUFLLE1BQU07WUFDdkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLEVBQ3pDLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixxRUFBcUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUM1RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsVUFBa0M7UUFFbEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQy9DLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLENBQUMsc0JBQXNCLENBQUMsRUFDeEIsZ0NBQWdDLENBQ2pDLENBQUM7UUFDRixNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLElBQ0UsT0FBTyxvQkFBb0IsS0FBSyxRQUFRO1lBQ3hDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2pDLG9CQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLG9CQUFvQixFQUNwRCxDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsMkZBQTJGLENBQzVGLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFDRSxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7WUFDbkMsSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQzNCLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUNiLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixrRUFBa0UsQ0FDbkUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QiwwREFBMEQsQ0FDM0QsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3BELElBQUksb0JBQW9CLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLGtCQUFrQixFQUNsQix1RUFBdUUsQ0FDeEUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFlBQTRDO1FBQ3hFLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFvQztRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLDJCQUEyQjtRQU1qQyxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sbUJBQW1CLENBQUM7WUFDN0IsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUM1QixTQUEyQyxFQUMzQyxZQUFvQjtRQUVwQixPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFlBQVk7U0FDN0MsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
import { SmartdataDb } from './classes.db.js';
|
|
3
|
+
import { SmartDataDbDoc } from './classes.doc.js';
|
|
4
|
+
import { SmartdataDbWatcher } from './classes.watcher.js';
|
|
5
|
+
export declare class DistributedClass extends SmartDataDbDoc<DistributedClass, DistributedClass> {
|
|
6
|
+
id: string;
|
|
7
|
+
data: {
|
|
8
|
+
status: 'initializing' | 'bidding' | 'settled' | 'stopped';
|
|
9
|
+
biddingShortcode?: string;
|
|
10
|
+
biddingStartTime?: number;
|
|
11
|
+
lastUpdated: number;
|
|
12
|
+
elected: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* used to store request
|
|
15
|
+
*/
|
|
16
|
+
taskRequests: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequest[];
|
|
17
|
+
/**
|
|
18
|
+
* only used by the leader to convey consultation results
|
|
19
|
+
*/
|
|
20
|
+
taskRequestResults: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequestResult[];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* This file implements a distributed coordinator according to the @pushrocks/taskbuffer standard.
|
|
25
|
+
* you should not set up this yourself. Instead, there is a factory on the SmartdataDb class
|
|
26
|
+
* that will take care of setting this up.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SmartdataDistributedCoordinator extends plugins.taskbuffer.distributedCoordination
|
|
29
|
+
.AbstractDistributedCoordinator {
|
|
30
|
+
readyPromise: Promise<any>;
|
|
31
|
+
db: SmartdataDb;
|
|
32
|
+
private asyncExecutionStack;
|
|
33
|
+
ownInstance: DistributedClass;
|
|
34
|
+
distributedWatcher: SmartdataDbWatcher<DistributedClass>;
|
|
35
|
+
constructor(dbArg: SmartdataDb);
|
|
36
|
+
start(): Promise<void>;
|
|
37
|
+
stop(): Promise<void>;
|
|
38
|
+
id: string;
|
|
39
|
+
private startHeartbeat;
|
|
40
|
+
sendHeartbeat(): Promise<void>;
|
|
41
|
+
private init;
|
|
42
|
+
getEligibleLeader(): Promise<DistributedClass | undefined>;
|
|
43
|
+
checkAndMaybeLead(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* when it has been determined
|
|
46
|
+
* that this instance is leading
|
|
47
|
+
* the leading is implemented here
|
|
48
|
+
*/
|
|
49
|
+
leadFunction(): Promise<void>;
|
|
50
|
+
fireDistributedTaskRequest(taskRequestArg: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequest): Promise<plugins.taskbuffer.distributedCoordination.IDistributedTaskRequestResult>;
|
|
51
|
+
updateDistributedTaskRequest(infoBasisArg: plugins.taskbuffer.distributedCoordination.IDistributedTaskRequest): Promise<void>;
|
|
52
|
+
}
|