@nymphjs/pubsub 1.0.0-beta.2 → 1.0.0-beta.21

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/CHANGELOG.md CHANGED
@@ -3,6 +3,96 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.0.0-beta.21](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.20...v1.0.0-beta.21) (2023-05-01)
7
+
8
+ **Note:** Version bump only for package @nymphjs/pubsub
9
+
10
+ # [1.0.0-beta.20](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.19...v1.0.0-beta.20) (2023-04-30)
11
+
12
+ **Note:** Version bump only for package @nymphjs/pubsub
13
+
14
+ # [1.0.0-beta.19](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.18...v1.0.0-beta.19) (2023-04-29)
15
+
16
+ **Note:** Version bump only for package @nymphjs/pubsub
17
+
18
+ # [1.0.0-beta.18](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.17...v1.0.0-beta.18) (2023-04-27)
19
+
20
+ ### Bug Fixes
21
+
22
+ - small type issues ([b91579c](https://github.com/sciactive/nymphjs/commit/b91579c9c1e96500d903332648f5a93c9a7e7d9b))
23
+
24
+ ### Features
25
+
26
+ - add the ability to switch to a user without their password ([ca4466a](https://github.com/sciactive/nymphjs/commit/ca4466af1704d68905ac087350a8cf151c1072d9))
27
+
28
+ # [1.0.0-beta.17](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.16...v1.0.0-beta.17) (2023-04-24)
29
+
30
+ **Note:** Version bump only for package @nymphjs/pubsub
31
+
32
+ # [1.0.0-beta.16](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.15...v1.0.0-beta.16) (2023-03-31)
33
+
34
+ **Note:** Version bump only for package @nymphjs/pubsub
35
+
36
+ # [1.0.0-beta.15](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.14...v1.0.0-beta.15) (2023-03-23)
37
+
38
+ **Note:** Version bump only for package @nymphjs/pubsub
39
+
40
+ # [1.0.0-beta.14](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.13...v1.0.0-beta.14) (2023-03-17)
41
+
42
+ **Note:** Version bump only for package @nymphjs/pubsub
43
+
44
+ # [1.0.0-beta.13](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.12...v1.0.0-beta.13) (2023-03-16)
45
+
46
+ ### Bug Fixes
47
+
48
+ - pubsub publishing changes before transaction is finished ([a918cc1](https://github.com/sciactive/nymphjs/commit/a918cc1451e03015ecce20f1c9bf6ceb62b7dff1))
49
+
50
+ # [1.0.0-beta.12](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2023-03-04)
51
+
52
+ **Note:** Version bump only for package @nymphjs/pubsub
53
+
54
+ # [1.0.0-beta.11](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2023-02-27)
55
+
56
+ **Note:** Version bump only for package @nymphjs/pubsub
57
+
58
+ # [1.0.0-beta.10](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2023-01-19)
59
+
60
+ ### Bug Fixes
61
+
62
+ - explicitly set skipAc to false in PubSub server ([33f96f7](https://github.com/sciactive/nymphjs/commit/33f96f7ccabaedb9e226fe302a996259e0158315))
63
+
64
+ # [1.0.0-beta.9](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.8...v1.0.0-beta.9) (2023-01-09)
65
+
66
+ ### Bug Fixes
67
+
68
+ - reworked $is and $equals to better work with new instance based classes ([b1f3f0c](https://github.com/sciactive/nymphjs/commit/b1f3f0cca3e2b0dd392cd9da31167a6bd9487b40))
69
+
70
+ # [1.0.0-beta.8](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2023-01-09)
71
+
72
+ ### Features
73
+
74
+ - make entities in nymph client instance specific too ([1029f06](https://github.com/sciactive/nymphjs/commit/1029f061a1ad193e4a8a2dab0186b9a4b517f646))
75
+
76
+ # [1.0.0-beta.7](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2023-01-05)
77
+
78
+ **Note:** Version bump only for package @nymphjs/pubsub
79
+
80
+ # [1.0.0-beta.6](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.5...v1.0.0-beta.6) (2023-01-05)
81
+
82
+ **Note:** Version bump only for package @nymphjs/pubsub
83
+
84
+ # [1.0.0-beta.5](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.4...v1.0.0-beta.5) (2022-11-24)
85
+
86
+ **Note:** Version bump only for package @nymphjs/pubsub
87
+
88
+ # [1.0.0-beta.4](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2022-11-23)
89
+
90
+ **Note:** Version bump only for package @nymphjs/pubsub
91
+
92
+ # [1.0.0-beta.3](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2022-11-21)
93
+
94
+ **Note:** Version bump only for package @nymphjs/pubsub
95
+
6
96
  # [1.0.0-beta.2](https://github.com/sciactive/nymphjs/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2022-11-21)
7
97
 
8
98
  ### Features
package/dist/PubSub.d.ts CHANGED
@@ -17,8 +17,16 @@ export default class PubSub {
17
17
  count: boolean;
18
18
  }>;
19
19
  };
20
+ protected static transactionPublishes: {
21
+ nymph: Nymph;
22
+ payload: string;
23
+ config: Config;
24
+ }[];
20
25
  static initPublisher(config: Partial<Config>, nymph: Nymph): void;
21
26
  private static publish;
27
+ private static isOrIsDescendent;
28
+ private static publishTransactionPublishes;
29
+ private static removeTransactionPublishes;
22
30
  constructor(config: Partial<Config>, nymph: Nymph, server: WebSocketServer);
23
31
  close(): void;
24
32
  handleRequest(request: request): void;
package/dist/PubSub.js CHANGED
@@ -10,50 +10,83 @@ class PubSub {
10
10
  nymph.on('beforeSaveEntity', async (nymph, entity) => {
11
11
  const guid = entity.guid;
12
12
  const etype = entity.constructor.ETYPE;
13
- const off = nymph.on('afterSaveEntity', async (_nymph, result) => {
13
+ const off = nymph.on('afterSaveEntity', async (curNymph, result) => {
14
14
  off();
15
+ off2();
15
16
  if (!(await result)) {
16
17
  return;
17
18
  }
18
- this.publish(JSON.stringify({
19
+ const payload = JSON.stringify({
19
20
  action: 'publish',
20
21
  event: guid == null ? 'create' : 'update',
21
22
  guid: entity.guid,
22
23
  entity: entity.toJSON(),
23
24
  etype: etype,
24
- }), configWithDefaults);
25
+ });
26
+ this.transactionPublishes.push({
27
+ nymph: curNymph,
28
+ payload,
29
+ config: configWithDefaults,
30
+ });
31
+ await this.publishTransactionPublishes(curNymph);
32
+ });
33
+ const off2 = nymph.on('failedSaveEntity', async () => {
34
+ off();
35
+ off2();
25
36
  });
26
37
  });
27
38
  nymph.on('beforeDeleteEntity', async (nymph, entity) => {
28
39
  const guid = entity.guid;
29
40
  const etype = entity.constructor.ETYPE;
30
- const off = nymph.on('afterDeleteEntity', async (_nymph, result) => {
41
+ const off = nymph.on('afterDeleteEntity', async (curNymph, result) => {
31
42
  off();
43
+ off2();
32
44
  if (!(await result)) {
33
45
  return;
34
46
  }
35
- this.publish(JSON.stringify({
47
+ const payload = JSON.stringify({
36
48
  action: 'publish',
37
49
  event: 'delete',
38
50
  guid: guid,
39
51
  etype: etype,
40
- }), configWithDefaults);
52
+ });
53
+ this.transactionPublishes.push({
54
+ nymph: curNymph,
55
+ payload,
56
+ config: configWithDefaults,
57
+ });
58
+ await this.publishTransactionPublishes(curNymph);
59
+ });
60
+ const off2 = nymph.on('failedDeleteEntity', async () => {
61
+ off();
62
+ off2();
41
63
  });
42
64
  });
43
65
  nymph.on('beforeDeleteEntityByID', async (nymph, guid, className) => {
44
66
  try {
45
67
  const etype = nymph.getEntityClass(className ?? 'Entity').ETYPE;
46
- const off = nymph.on('afterDeleteEntityByID', async (_nymph, result) => {
68
+ const off = nymph.on('afterDeleteEntityByID', async (curNymph, result) => {
47
69
  off();
70
+ off2();
48
71
  if (!(await result)) {
49
72
  return;
50
73
  }
51
- this.publish(JSON.stringify({
74
+ const payload = JSON.stringify({
52
75
  action: 'publish',
53
76
  event: 'delete',
54
77
  guid: guid,
55
78
  etype: etype,
56
- }), configWithDefaults);
79
+ });
80
+ this.transactionPublishes.push({
81
+ nymph: curNymph,
82
+ payload,
83
+ config: configWithDefaults,
84
+ });
85
+ await this.publishTransactionPublishes(curNymph);
86
+ });
87
+ const off2 = nymph.on('failedDeleteEntityByID', async () => {
88
+ off();
89
+ off2();
57
90
  });
58
91
  }
59
92
  catch (e) {
@@ -61,60 +94,112 @@ class PubSub {
61
94
  }
62
95
  });
63
96
  nymph.on('beforeNewUID', async (nymph, name) => {
64
- const off = nymph.on('afterNewUID', async (_nymph, result) => {
97
+ const off = nymph.on('afterNewUID', async (curNymph, result) => {
65
98
  off();
99
+ off2();
66
100
  const value = await result;
67
101
  if (value == null) {
68
102
  return;
69
103
  }
70
- this.publish(JSON.stringify({
104
+ const payload = JSON.stringify({
71
105
  action: 'publish',
72
106
  event: 'newUID',
73
107
  name: name,
74
108
  value: value,
75
- }), configWithDefaults);
109
+ });
110
+ this.transactionPublishes.push({
111
+ nymph: curNymph,
112
+ payload,
113
+ config: configWithDefaults,
114
+ });
115
+ await this.publishTransactionPublishes(curNymph);
116
+ });
117
+ const off2 = nymph.on('failedNewUID', async () => {
118
+ off();
119
+ off2();
76
120
  });
77
121
  });
78
122
  nymph.on('beforeSetUID', async (nymph, name, value) => {
79
- const off = nymph.on('afterSetUID', async (_nymph, result) => {
123
+ const off = nymph.on('afterSetUID', async (curNymph, result) => {
80
124
  off();
125
+ off2();
81
126
  if (!(await result)) {
82
127
  return;
83
128
  }
84
- this.publish(JSON.stringify({
129
+ const payload = JSON.stringify({
85
130
  action: 'publish',
86
131
  event: 'setUID',
87
132
  name: name,
88
133
  value: value,
89
- }), configWithDefaults);
134
+ });
135
+ this.transactionPublishes.push({
136
+ nymph: curNymph,
137
+ payload,
138
+ config: configWithDefaults,
139
+ });
140
+ await this.publishTransactionPublishes(curNymph);
141
+ });
142
+ const off2 = nymph.on('failedSetUID', async () => {
143
+ off();
144
+ off2();
90
145
  });
91
146
  });
92
147
  nymph.on('beforeRenameUID', async (nymph, oldName, newName) => {
93
- const off = nymph.on('afterRenameUID', async (_nymph, result) => {
148
+ const off = nymph.on('afterRenameUID', async (curNymph, result) => {
94
149
  off();
150
+ off2();
95
151
  if (!(await result)) {
96
152
  return;
97
153
  }
98
- this.publish(JSON.stringify({
154
+ const payload = JSON.stringify({
99
155
  action: 'publish',
100
156
  event: 'renameUID',
101
157
  oldName: oldName,
102
158
  newName: newName,
103
- }), configWithDefaults);
159
+ });
160
+ this.transactionPublishes.push({
161
+ nymph: curNymph,
162
+ payload,
163
+ config: configWithDefaults,
164
+ });
165
+ await this.publishTransactionPublishes(curNymph);
166
+ });
167
+ const off2 = nymph.on('failedRenameUID', async () => {
168
+ off();
169
+ off2();
104
170
  });
105
171
  });
106
172
  nymph.on('beforeDeleteUID', async (nymph, name) => {
107
- const off = nymph.on('afterDeleteUID', async (_nymph, result) => {
173
+ const off = nymph.on('afterDeleteUID', async (curNymph, result) => {
108
174
  off();
175
+ off2();
109
176
  if (!(await result)) {
110
177
  return;
111
178
  }
112
- this.publish(JSON.stringify({
179
+ const payload = JSON.stringify({
113
180
  action: 'publish',
114
181
  event: 'deleteUID',
115
182
  name: name,
116
- }), configWithDefaults);
183
+ });
184
+ this.transactionPublishes.push({
185
+ nymph: curNymph,
186
+ payload,
187
+ config: configWithDefaults,
188
+ });
189
+ await this.publishTransactionPublishes(curNymph);
117
190
  });
191
+ const off2 = nymph.on('failedDeleteUID', async () => {
192
+ off();
193
+ off2();
194
+ });
195
+ });
196
+ nymph.on('afterCommitTransaction', async (nymph, _name, result) => {
197
+ if (result) {
198
+ await this.publishTransactionPublishes(nymph);
199
+ }
200
+ });
201
+ nymph.on('afterRollbackTransaction', async (nymph) => {
202
+ this.removeTransactionPublishes(nymph);
118
203
  });
119
204
  }
120
205
  static publish(message, config) {
@@ -139,6 +224,37 @@ class PubSub {
139
224
  client.connect(host, 'nymph');
140
225
  }
141
226
  }
227
+ static isOrIsDescendent(parent, child) {
228
+ let check = child;
229
+ while (check) {
230
+ if (check === parent) {
231
+ return true;
232
+ }
233
+ check = check.parent;
234
+ }
235
+ return false;
236
+ }
237
+ static async publishTransactionPublishes(nymph) {
238
+ if (await nymph.inTransaction()) {
239
+ return;
240
+ }
241
+ this.transactionPublishes = (await Promise.all(this.transactionPublishes.map(async (publish) => {
242
+ if (!this.isOrIsDescendent(nymph, publish.nymph) ||
243
+ (await publish.nymph.inTransaction())) {
244
+ return publish;
245
+ }
246
+ this.publish(publish.payload, publish.config);
247
+ return null;
248
+ }))).filter((value) => value != null);
249
+ }
250
+ static removeTransactionPublishes(nymph) {
251
+ this.transactionPublishes = this.transactionPublishes.filter((publish) => {
252
+ if (this.isOrIsDescendent(nymph, publish.nymph)) {
253
+ return false;
254
+ }
255
+ return true;
256
+ });
257
+ }
142
258
  constructor(config, nymph, server) {
143
259
  this.sessions = new Map();
144
260
  this.querySubs = {};
@@ -260,9 +376,10 @@ class PubSub {
260
376
  this.config.logger('error', new Date().toISOString(), `An error occured. (${e.message}, ${conn.remoteAddress})`);
261
377
  }
262
378
  handleAuthentication(from, data) {
263
- const token = data.token;
264
- if (token != null) {
265
- this.sessions.set(from, token);
379
+ const authToken = data.authToken;
380
+ const switchToken = data.switchToken;
381
+ if (authToken != null) {
382
+ this.sessions.set(from, { authToken, switchToken });
266
383
  }
267
384
  else if (this.sessions.has(from)) {
268
385
  this.sessions.delete(from);
@@ -314,15 +431,26 @@ class PubSub {
314
431
  if (!(serialArgs in this.querySubs[etype])) {
315
432
  this.querySubs[etype][serialArgs] = new Map();
316
433
  }
317
- let token = null;
434
+ let authToken = null;
435
+ let switchToken = null;
318
436
  if (this.sessions.has(from)) {
319
- token = this.sessions.get(from);
437
+ const session = this.sessions.get(from);
438
+ authToken = session?.authToken;
439
+ switchToken = session?.switchToken;
320
440
  }
321
441
  const nymph = this.nymph.clone();
322
- if (nymph.tilmeld != null && token != null) {
323
- const user = await nymph.tilmeld.extractToken(token);
324
- if (user) {
325
- nymph.tilmeld.fillSession(user);
442
+ if (nymph.tilmeld != null && authToken != null) {
443
+ const user = await nymph.tilmeld.extractToken(authToken);
444
+ if (user && user.enabled) {
445
+ if (switchToken != null) {
446
+ const switchUser = await nymph.tilmeld.extractToken(switchToken);
447
+ if (switchUser) {
448
+ nymph.tilmeld.fillSession(switchUser);
449
+ }
450
+ }
451
+ else {
452
+ nymph.tilmeld.fillSession(user);
453
+ }
326
454
  }
327
455
  }
328
456
  const existingSub = this.querySubs[etype][serialArgs].get(from);
@@ -346,7 +474,7 @@ class PubSub {
346
474
  count: !!data.count,
347
475
  });
348
476
  }
349
- if (nymph.tilmeld != null && token != null) {
477
+ if (nymph.tilmeld != null && authToken != null) {
350
478
  nymph.tilmeld.clearSession();
351
479
  }
352
480
  this.config.logger('log', new Date().toISOString(), `Client subscribed to a query! (${serialArgs}, ${from.remoteAddress})`);
@@ -555,7 +683,8 @@ class PubSub {
555
683
  }
556
684
  async updateClient(curClient, curData, data) {
557
685
  let current;
558
- let token;
686
+ let authToken;
687
+ let switchToken;
559
688
  const nymph = this.nymph.clone();
560
689
  try {
561
690
  const [clientOptions, ...clientSelectors] = JSON.parse(curData.query);
@@ -564,15 +693,26 @@ class PubSub {
564
693
  class: nymph.getEntityClass(clientOptions.class),
565
694
  return: 'entity',
566
695
  source: 'client',
696
+ skipAc: false,
567
697
  };
568
698
  const selectors = (0, nymph_1.classNamesToEntityConstructors)(nymph, clientSelectors);
569
699
  if (this.sessions.has(curClient)) {
570
- token = this.sessions.get(curClient);
571
- }
572
- if (nymph.tilmeld != null && token != null) {
573
- const user = await nymph.tilmeld.extractToken(token);
574
- if (user) {
575
- nymph.tilmeld.fillSession(user);
700
+ const session = this.sessions.get(curClient);
701
+ authToken = session?.authToken;
702
+ switchToken = session?.switchToken;
703
+ }
704
+ if (nymph.tilmeld != null && authToken != null) {
705
+ const user = await nymph.tilmeld.extractToken(authToken);
706
+ if (user && user.enabled) {
707
+ if (switchToken != null) {
708
+ const switchUser = await nymph.tilmeld.extractToken(switchToken);
709
+ if (switchUser) {
710
+ nymph.tilmeld.fillSession(switchUser);
711
+ }
712
+ }
713
+ else {
714
+ nymph.tilmeld.fillSession(user);
715
+ }
576
716
  }
577
717
  }
578
718
  current = await nymph.getEntities(options, ...selectors);
@@ -619,7 +759,7 @@ class PubSub {
619
759
  }
620
760
  }
621
761
  curData.current = currentGuids;
622
- if (nymph.tilmeld != null && token != null) {
762
+ if (nymph.tilmeld != null && authToken != null) {
623
763
  nymph.tilmeld.clearSession();
624
764
  }
625
765
  if ((removed.length || added.length) && curData.qrefParents.length) {
@@ -792,5 +932,6 @@ class PubSub {
792
932
  return newSelectors;
793
933
  }
794
934
  }
935
+ PubSub.transactionPublishes = [];
795
936
  exports.default = PubSub;
796
937
  //# sourceMappingURL=PubSub.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PubSub.js","sourceRoot":"","sources":["../src/PubSub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PubSub.js","sourceRoot":"","sources":["../src/PubSub.ts"],"names":[],"mappings":"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"}