@genesislcap/foundation-comms 15.18.0 → 15.18.1-alpha-5b3362a.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.
|
@@ -224,6 +224,14 @@ export declare class DefaultDatasource implements Datasource {
|
|
|
224
224
|
constructor(connect: Connect, auth: Auth, resources: GenesisResources, config: DatasourceConfig, connectEvents: ConnectEvents);
|
|
225
225
|
private pollTrigger$;
|
|
226
226
|
private commitResponseUnsubscribe?;
|
|
227
|
+
/**
|
|
228
|
+
* Bumped by every `init()` call and by `destroy()`, so an `init()` suspended on an `await` can
|
|
229
|
+
* tell a concurrent `destroy()`/`init()` cycle has superseded it before it commits `this.stream`
|
|
230
|
+
* — without this, a `destroy()` that runs while an earlier `init()` is still awaiting resets
|
|
231
|
+
* `this.options` out from under that suspended call, which then resumes and opens a stream
|
|
232
|
+
* with a stale/undefined resource name.
|
|
233
|
+
*/
|
|
234
|
+
private generation;
|
|
227
235
|
private triggerPoll;
|
|
228
236
|
/**
|
|
229
237
|
* @deprecated - Please use {@link (GenesisResources:interface).isValidResource} instead.
|
|
@@ -257,6 +265,12 @@ export declare class DefaultDatasource implements Datasource {
|
|
|
257
265
|
updateLoadMoreCount(count: number): void;
|
|
258
266
|
snapshot(overrideParams?: any): Promise<Message>;
|
|
259
267
|
snapshotFiltered(rowId?: string): Promise<any[]>;
|
|
268
|
+
/**
|
|
269
|
+
* `resourceName` is passed in explicitly (the snapshot `init()` captured at its own call time)
|
|
270
|
+
* rather than read back off `this.options` here — `this.options` is shared mutable state that
|
|
271
|
+
* a concurrent `destroy()` can reset to `{}` while this call is in flight, which previously let
|
|
272
|
+
* a superseded call open a stream with an `undefined` resource name.
|
|
273
|
+
*/
|
|
260
274
|
private createStream;
|
|
261
275
|
private createDataserverStream;
|
|
262
276
|
private createReqRepStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../src/datasource/datasource.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../src/datasource/datasource.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,14 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
51
51
|
this.readOnly = true;
|
|
52
52
|
this._allParams = null;
|
|
53
53
|
this.pollTrigger$ = new Subject();
|
|
54
|
+
/**
|
|
55
|
+
* Bumped by every `init()` call and by `destroy()`, so an `init()` suspended on an `await` can
|
|
56
|
+
* tell a concurrent `destroy()`/`init()` cycle has superseded it before it commits `this.stream`
|
|
57
|
+
* — without this, a `destroy()` that runs while an earlier `init()` is still awaiting resets
|
|
58
|
+
* `this.options` out from under that suspended call, which then resumes and opens a stream
|
|
59
|
+
* with a stale/undefined resource name.
|
|
60
|
+
*/
|
|
61
|
+
this.generation = 0;
|
|
54
62
|
}
|
|
55
63
|
triggerPoll() {
|
|
56
64
|
this.pollTrigger$.next();
|
|
@@ -69,6 +77,8 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
69
77
|
}
|
|
70
78
|
init(options_1) {
|
|
71
79
|
return __awaiter(this, arguments, void 0, function* (options, fetchMeta = this.fetchMetadataRequired, startStream = this.startStreamRequired) {
|
|
80
|
+
this.generation += 1;
|
|
81
|
+
const myGeneration = this.generation;
|
|
72
82
|
this.fetchMetadataRequired = fetchMeta;
|
|
73
83
|
this.options = Object.assign(Object.assign({}, this.config.options), options);
|
|
74
84
|
// Invalidate parameter cache when options change
|
|
@@ -93,16 +103,29 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
93
103
|
return false;
|
|
94
104
|
}
|
|
95
105
|
if (this.fetchMetadataRequired) {
|
|
96
|
-
yield this.fetchAndApplyMetadata(
|
|
106
|
+
yield this.fetchAndApplyMetadata(resourceName);
|
|
97
107
|
// Invalidate cache again after metadata fetch as availableIndexes may have changed
|
|
98
108
|
this._allParams = null;
|
|
99
109
|
}
|
|
110
|
+
if (myGeneration !== this.generation) {
|
|
111
|
+
// A concurrent destroy()/init() superseded this call while we were awaiting the
|
|
112
|
+
// connection/resource/metadata checks above — this.options (including resourceName) may
|
|
113
|
+
// already have been reset, so bail out unconditionally here (not just on the startStream
|
|
114
|
+
// path below) rather than letting reportStatus() below overwrite whatever status the
|
|
115
|
+
// newer call — or destroy() itself — has already set.
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
100
118
|
logger.debug(`Initializing ${resourceName} datasource from ${this.connect.host}`);
|
|
101
119
|
if (!this.options.isSnapshot && startStream) {
|
|
102
120
|
// Recreate pollTrigger$ so pollTriggerEvents work after destroy/reinit.
|
|
103
121
|
// A completed Subject ignores next(), so we need a fresh one each init.
|
|
104
122
|
this.pollTrigger$ = new Subject();
|
|
105
|
-
|
|
123
|
+
const stream = yield this.createStream(resourceName);
|
|
124
|
+
if (myGeneration !== this.generation) {
|
|
125
|
+
// Superseded while createStream() itself was in flight — discard rather than commit.
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
this.stream = stream;
|
|
106
129
|
}
|
|
107
130
|
logger.debug(`${resourceName} datasource initialization ${this.initialized ? `was successful.` : 'has failed.'}`);
|
|
108
131
|
this.reportStatus();
|
|
@@ -112,7 +135,7 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
112
135
|
startStream() {
|
|
113
136
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
137
|
if (!this.options.isSnapshot && this.stream === undefined) {
|
|
115
|
-
this.stream = yield this.createStream();
|
|
138
|
+
this.stream = yield this.createStream(this.options.resourceName);
|
|
116
139
|
}
|
|
117
140
|
});
|
|
118
141
|
}
|
|
@@ -120,6 +143,10 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
120
143
|
destroy() {
|
|
121
144
|
var _a, _b;
|
|
122
145
|
logger.debug('Datasource.destroy', (_a = this.options) === null || _a === void 0 ? void 0 : _a.resourceName);
|
|
146
|
+
// Invalidate any in-flight init() first, so its next generation check (however soon it
|
|
147
|
+
// resumes) sees this destroy() and bails out instead of committing state we're about to
|
|
148
|
+
// reset below.
|
|
149
|
+
this.generation += 1;
|
|
123
150
|
if (this.commitResponseUnsubscribe) {
|
|
124
151
|
this.commitResponseUnsubscribe();
|
|
125
152
|
this.commitResponseUnsubscribe = undefined;
|
|
@@ -261,23 +288,29 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
261
288
|
}
|
|
262
289
|
});
|
|
263
290
|
}
|
|
264
|
-
|
|
291
|
+
/**
|
|
292
|
+
* `resourceName` is passed in explicitly (the snapshot `init()` captured at its own call time)
|
|
293
|
+
* rather than read back off `this.options` here — `this.options` is shared mutable state that
|
|
294
|
+
* a concurrent `destroy()` can reset to `{}` while this call is in flight, which previously let
|
|
295
|
+
* a superseded call open a stream with an `undefined` resource name.
|
|
296
|
+
*/
|
|
297
|
+
createStream(resourceName) {
|
|
265
298
|
return __awaiter(this, void 0, void 0, function* () {
|
|
266
299
|
if (![ResourceType.DATASERVER, ResourceType.REQUEST_SERVER].includes(this.resourceType)) {
|
|
267
300
|
throw new Error(`Streaming not supported for selected resource type: ${this.resourceType}`);
|
|
268
301
|
}
|
|
269
302
|
if (this.resourceType === ResourceType.DATASERVER) {
|
|
270
|
-
return this.createDataserverStream();
|
|
303
|
+
return this.createDataserverStream(resourceName);
|
|
271
304
|
}
|
|
272
|
-
logger.debug(`Creating fake stream by polling ${
|
|
305
|
+
logger.debug(`Creating fake stream by polling ${resourceName} REQUEST_SERVER`);
|
|
273
306
|
return this.createReqRepStream();
|
|
274
307
|
});
|
|
275
308
|
}
|
|
276
|
-
createDataserverStream() {
|
|
309
|
+
createDataserverStream(resourceName) {
|
|
277
310
|
return __awaiter(this, void 0, void 0, function* () {
|
|
278
311
|
const onMessage = (message) => { };
|
|
279
312
|
const onError = (error) => logger.error(error);
|
|
280
|
-
return this.connect.stream(
|
|
313
|
+
return this.connect.stream(resourceName, onMessage, onError, this.dataserverOnlyParams);
|
|
281
314
|
});
|
|
282
315
|
}
|
|
283
316
|
createReqRepStream() {
|
|
@@ -315,9 +348,18 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
315
348
|
fetchAndApplyMetadata(resourceName) {
|
|
316
349
|
return __awaiter(this, void 0, void 0, function* () {
|
|
317
350
|
var _a, _b, _c, _d;
|
|
351
|
+
// Snapshot the generation this call belongs to — `this.options`/`this.resourceType` etc. can
|
|
352
|
+
// be reset by a concurrent destroy() while `getMetadata` is in flight below, so this method
|
|
353
|
+
// must not apply metadata (or a failure status) for a resource this call no longer owns once
|
|
354
|
+
// it resumes. Reads (not bumps) the counter: init()/destroy() own advancing it, this just
|
|
355
|
+
// checks whether it's still current.
|
|
356
|
+
const myGeneration = this.generation;
|
|
318
357
|
try {
|
|
319
|
-
logger.debug(`Requesting metadata for ${
|
|
320
|
-
const meta = yield this.connect.getMetadata(
|
|
358
|
+
logger.debug(`Requesting metadata for ${resourceName} Datasource`);
|
|
359
|
+
const meta = yield this.connect.getMetadata(resourceName);
|
|
360
|
+
if (myGeneration !== this.generation) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
321
363
|
if (meta) {
|
|
322
364
|
this.availableIndexes = (_a = meta.INDEXES) !== null && _a !== void 0 ? _a : [];
|
|
323
365
|
this.availableSortableFields = (_b = meta.SORTABLE_FIELDS) !== null && _b !== void 0 ? _b : [];
|
|
@@ -337,6 +379,9 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
337
379
|
}
|
|
338
380
|
catch (e) {
|
|
339
381
|
logger.error(`Metadata Fetch failed for ${resourceName}:`, e);
|
|
382
|
+
if (myGeneration !== this.generation) {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
340
385
|
this.status = this.normaliseStatus({
|
|
341
386
|
isInitialized: false,
|
|
342
387
|
metadataRequired: true,
|
|
@@ -2047,6 +2047,14 @@ export declare class DefaultDatasource implements Datasource {
|
|
|
2047
2047
|
constructor(connect: Connect, auth: Auth, resources: GenesisResources, config: DatasourceConfig, connectEvents: ConnectEvents);
|
|
2048
2048
|
private pollTrigger$;
|
|
2049
2049
|
private commitResponseUnsubscribe?;
|
|
2050
|
+
/**
|
|
2051
|
+
* Bumped by every `init()` call and by `destroy()`, so an `init()` suspended on an `await` can
|
|
2052
|
+
* tell a concurrent `destroy()`/`init()` cycle has superseded it before it commits `this.stream`
|
|
2053
|
+
* — without this, a `destroy()` that runs while an earlier `init()` is still awaiting resets
|
|
2054
|
+
* `this.options` out from under that suspended call, which then resumes and opens a stream
|
|
2055
|
+
* with a stale/undefined resource name.
|
|
2056
|
+
*/
|
|
2057
|
+
private generation;
|
|
2050
2058
|
private triggerPoll;
|
|
2051
2059
|
/**
|
|
2052
2060
|
* @deprecated - Please use {@link (GenesisResources:interface).isValidResource} instead.
|
|
@@ -2080,6 +2088,12 @@ export declare class DefaultDatasource implements Datasource {
|
|
|
2080
2088
|
updateLoadMoreCount(count: number): void;
|
|
2081
2089
|
snapshot(overrideParams?: any): Promise<Message>;
|
|
2082
2090
|
snapshotFiltered(rowId?: string): Promise<any[]>;
|
|
2091
|
+
/**
|
|
2092
|
+
* `resourceName` is passed in explicitly (the snapshot `init()` captured at its own call time)
|
|
2093
|
+
* rather than read back off `this.options` here — `this.options` is shared mutable state that
|
|
2094
|
+
* a concurrent `destroy()` can reset to `{}` while this call is in flight, which previously let
|
|
2095
|
+
* a superseded call open a stream with an `undefined` resource name.
|
|
2096
|
+
*/
|
|
2083
2097
|
private createStream;
|
|
2084
2098
|
private createDataserverStream;
|
|
2085
2099
|
private createReqRepStream;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-comms",
|
|
3
3
|
"description": "Genesis Foundation UI Comms",
|
|
4
|
-
"version": "15.18.0",
|
|
4
|
+
"version": "15.18.1-alpha-5b3362a.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "SEE LICENSE IN license.txt",
|
|
7
7
|
"main": "dist/esm/index.js",
|
|
@@ -77,24 +77,24 @@
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@genesislcap/foundation-testing": "15.18.0",
|
|
81
|
-
"@genesislcap/genx": "15.18.0",
|
|
82
|
-
"@genesislcap/rollup-builder": "15.18.0",
|
|
83
|
-
"@genesislcap/ts-builder": "15.18.0",
|
|
84
|
-
"@genesislcap/uvu-playwright-builder": "15.18.0",
|
|
85
|
-
"@genesislcap/vite-builder": "15.18.0",
|
|
86
|
-
"@genesislcap/webpack-builder": "15.18.0",
|
|
80
|
+
"@genesislcap/foundation-testing": "15.18.1-alpha-5b3362a.0",
|
|
81
|
+
"@genesislcap/genx": "15.18.1-alpha-5b3362a.0",
|
|
82
|
+
"@genesislcap/rollup-builder": "15.18.1-alpha-5b3362a.0",
|
|
83
|
+
"@genesislcap/ts-builder": "15.18.1-alpha-5b3362a.0",
|
|
84
|
+
"@genesislcap/uvu-playwright-builder": "15.18.1-alpha-5b3362a.0",
|
|
85
|
+
"@genesislcap/vite-builder": "15.18.1-alpha-5b3362a.0",
|
|
86
|
+
"@genesislcap/webpack-builder": "15.18.1-alpha-5b3362a.0",
|
|
87
87
|
"@types/js-cookie": "^3.0.2",
|
|
88
88
|
"@types/json-schema": "^7.0.11",
|
|
89
89
|
"@types/webappsec-credential-management": "^0.6.2",
|
|
90
90
|
"sinon": "^17.0.1"
|
|
91
91
|
},
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@genesislcap/foundation-broadcast-channel": "15.18.0",
|
|
94
|
-
"@genesislcap/foundation-logger": "15.18.0",
|
|
95
|
-
"@genesislcap/foundation-user": "15.18.0",
|
|
96
|
-
"@genesislcap/foundation-utils": "15.18.0",
|
|
97
|
-
"@genesislcap/web-core": "15.18.0",
|
|
93
|
+
"@genesislcap/foundation-broadcast-channel": "15.18.1-alpha-5b3362a.0",
|
|
94
|
+
"@genesislcap/foundation-logger": "15.18.1-alpha-5b3362a.0",
|
|
95
|
+
"@genesislcap/foundation-user": "15.18.1-alpha-5b3362a.0",
|
|
96
|
+
"@genesislcap/foundation-utils": "15.18.1-alpha-5b3362a.0",
|
|
97
|
+
"@genesislcap/web-core": "15.18.1-alpha-5b3362a.0",
|
|
98
98
|
"@microsoft/fast-element": "1.14.0",
|
|
99
99
|
"@microsoft/fast-foundation": "2.50.0",
|
|
100
100
|
"bowser": "^2.11.0",
|
|
@@ -112,5 +112,5 @@
|
|
|
112
112
|
"publishConfig": {
|
|
113
113
|
"access": "public"
|
|
114
114
|
},
|
|
115
|
-
"gitHead": "
|
|
115
|
+
"gitHead": "6ef3934b3116f1a2c6bf1a045b5887a7744002e9"
|
|
116
116
|
}
|