@genesislcap/foundation-comms 15.17.1 → 15.18.0-notification-listener.1
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
|
|
@@ -99,10 +109,22 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
99
109
|
}
|
|
100
110
|
logger.debug(`Initializing ${resourceName} datasource from ${this.connect.host}`);
|
|
101
111
|
if (!this.options.isSnapshot && startStream) {
|
|
112
|
+
if (myGeneration !== this.generation) {
|
|
113
|
+
// A concurrent destroy()/init() superseded this call while we were awaiting the
|
|
114
|
+
// connection/resource/metadata checks above — this.options (including resourceName)
|
|
115
|
+
// may already have been reset, so bail out here rather than opening a stream against
|
|
116
|
+
// stale state.
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
102
119
|
// Recreate pollTrigger$ so pollTriggerEvents work after destroy/reinit.
|
|
103
120
|
// A completed Subject ignores next(), so we need a fresh one each init.
|
|
104
121
|
this.pollTrigger$ = new Subject();
|
|
105
|
-
|
|
122
|
+
const stream = yield this.createStream(resourceName);
|
|
123
|
+
if (myGeneration !== this.generation) {
|
|
124
|
+
// Superseded while createStream() itself was in flight — discard rather than commit.
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
this.stream = stream;
|
|
106
128
|
}
|
|
107
129
|
logger.debug(`${resourceName} datasource initialization ${this.initialized ? `was successful.` : 'has failed.'}`);
|
|
108
130
|
this.reportStatus();
|
|
@@ -112,7 +134,7 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
112
134
|
startStream() {
|
|
113
135
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
136
|
if (!this.options.isSnapshot && this.stream === undefined) {
|
|
115
|
-
this.stream = yield this.createStream();
|
|
137
|
+
this.stream = yield this.createStream(this.options.resourceName);
|
|
116
138
|
}
|
|
117
139
|
});
|
|
118
140
|
}
|
|
@@ -120,6 +142,10 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
120
142
|
destroy() {
|
|
121
143
|
var _a, _b;
|
|
122
144
|
logger.debug('Datasource.destroy', (_a = this.options) === null || _a === void 0 ? void 0 : _a.resourceName);
|
|
145
|
+
// Invalidate any in-flight init() first, so its next generation check (however soon it
|
|
146
|
+
// resumes) sees this destroy() and bails out instead of committing state we're about to
|
|
147
|
+
// reset below.
|
|
148
|
+
this.generation += 1;
|
|
123
149
|
if (this.commitResponseUnsubscribe) {
|
|
124
150
|
this.commitResponseUnsubscribe();
|
|
125
151
|
this.commitResponseUnsubscribe = undefined;
|
|
@@ -261,23 +287,29 @@ let DefaultDatasource = class DefaultDatasource {
|
|
|
261
287
|
}
|
|
262
288
|
});
|
|
263
289
|
}
|
|
264
|
-
|
|
290
|
+
/**
|
|
291
|
+
* `resourceName` is passed in explicitly (the snapshot `init()` captured at its own call time)
|
|
292
|
+
* rather than read back off `this.options` here — `this.options` is shared mutable state that
|
|
293
|
+
* a concurrent `destroy()` can reset to `{}` while this call is in flight, which previously let
|
|
294
|
+
* a superseded call open a stream with an `undefined` resource name.
|
|
295
|
+
*/
|
|
296
|
+
createStream(resourceName) {
|
|
265
297
|
return __awaiter(this, void 0, void 0, function* () {
|
|
266
298
|
if (![ResourceType.DATASERVER, ResourceType.REQUEST_SERVER].includes(this.resourceType)) {
|
|
267
299
|
throw new Error(`Streaming not supported for selected resource type: ${this.resourceType}`);
|
|
268
300
|
}
|
|
269
301
|
if (this.resourceType === ResourceType.DATASERVER) {
|
|
270
|
-
return this.createDataserverStream();
|
|
302
|
+
return this.createDataserverStream(resourceName);
|
|
271
303
|
}
|
|
272
|
-
logger.debug(`Creating fake stream by polling ${
|
|
304
|
+
logger.debug(`Creating fake stream by polling ${resourceName} REQUEST_SERVER`);
|
|
273
305
|
return this.createReqRepStream();
|
|
274
306
|
});
|
|
275
307
|
}
|
|
276
|
-
createDataserverStream() {
|
|
308
|
+
createDataserverStream(resourceName) {
|
|
277
309
|
return __awaiter(this, void 0, void 0, function* () {
|
|
278
310
|
const onMessage = (message) => { };
|
|
279
311
|
const onError = (error) => logger.error(error);
|
|
280
|
-
return this.connect.stream(
|
|
312
|
+
return this.connect.stream(resourceName, onMessage, onError, this.dataserverOnlyParams);
|
|
281
313
|
});
|
|
282
314
|
}
|
|
283
315
|
createReqRepStream() {
|
|
@@ -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.
|
|
4
|
+
"version": "15.18.0-notification-listener.1",
|
|
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.
|
|
81
|
-
"@genesislcap/genx": "15.
|
|
82
|
-
"@genesislcap/rollup-builder": "15.
|
|
83
|
-
"@genesislcap/ts-builder": "15.
|
|
84
|
-
"@genesislcap/uvu-playwright-builder": "15.
|
|
85
|
-
"@genesislcap/vite-builder": "15.
|
|
86
|
-
"@genesislcap/webpack-builder": "15.
|
|
80
|
+
"@genesislcap/foundation-testing": "15.18.0-notification-listener.1",
|
|
81
|
+
"@genesislcap/genx": "15.18.0-notification-listener.1",
|
|
82
|
+
"@genesislcap/rollup-builder": "15.18.0-notification-listener.1",
|
|
83
|
+
"@genesislcap/ts-builder": "15.18.0-notification-listener.1",
|
|
84
|
+
"@genesislcap/uvu-playwright-builder": "15.18.0-notification-listener.1",
|
|
85
|
+
"@genesislcap/vite-builder": "15.18.0-notification-listener.1",
|
|
86
|
+
"@genesislcap/webpack-builder": "15.18.0-notification-listener.1",
|
|
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.
|
|
94
|
-
"@genesislcap/foundation-logger": "15.
|
|
95
|
-
"@genesislcap/foundation-user": "15.
|
|
96
|
-
"@genesislcap/foundation-utils": "15.
|
|
97
|
-
"@genesislcap/web-core": "15.
|
|
93
|
+
"@genesislcap/foundation-broadcast-channel": "15.18.0-notification-listener.1",
|
|
94
|
+
"@genesislcap/foundation-logger": "15.18.0-notification-listener.1",
|
|
95
|
+
"@genesislcap/foundation-user": "15.18.0-notification-listener.1",
|
|
96
|
+
"@genesislcap/foundation-utils": "15.18.0-notification-listener.1",
|
|
97
|
+
"@genesislcap/web-core": "15.18.0-notification-listener.1",
|
|
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": "51bed22f8b8a92c2333c46b9bbec906d687fa7ad"
|
|
116
116
|
}
|