@vuu-ui/vuu-data-test 4.0.0-alpha.9 → 4.0.0-beta.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.
Files changed (93) hide show
  1. package/README.md +0 -8
  2. package/package.json +8 -10
  3. package/src/Table.js +5 -8
  4. package/src/TickingArrayDataSource.js +7 -2
  5. package/src/core/module/ModuleContainer.js +0 -8
  6. package/src/core/module/VuuModule.js +6 -28
  7. package/src/core/table/TableContainer.js +1 -1
  8. package/src/index.js +0 -3
  9. package/src/local-datasource-provider/LocalDatasourceProvider.js +5 -9
  10. package/src/schemas.js +2 -8
  11. package/types/TickingArrayDataSource.d.ts +1 -1
  12. package/types/core/module/ModuleContainer.d.ts +3 -6
  13. package/types/core/module/VuuModule.d.ts +0 -3
  14. package/types/core/table/TableContainer.d.ts +5 -5
  15. package/types/index.d.ts +0 -3
  16. package/types/local-datasource-provider/LocalDatasourceProvider.d.ts +2 -2
  17. package/types/schemas.d.ts +3 -5
  18. package/types/vuu-row-generator.d.ts +1 -1
  19. package/src/module-admin/ModuleAdminModule.js +0 -60
  20. package/src/module-admin/index.js +0 -3
  21. package/src/module-admin/module-admin-schemas.js +0 -99
  22. package/src/module-admin/snapshot-projection.js +0 -57
  23. package/src/user-admin/UserAdminModule.js +0 -412
  24. package/src/user-admin/index.js +0 -3
  25. package/src/user-admin/initialSnapshot.js +0 -477
  26. package/src/user-admin/snapshot-projection.js +0 -151
  27. package/types/module-admin/ModuleAdminModule.d.ts +0 -23
  28. package/types/module-admin/index.d.ts +0 -4
  29. package/types/module-admin/module-admin-schemas.d.ts +0 -4
  30. package/types/module-admin/snapshot-projection.d.ts +0 -14
  31. package/types/src/ArrayProxy.d.ts +0 -8
  32. package/types/src/RuntimeVisualLink.d.ts +0 -9
  33. package/types/src/Table.d.ts +0 -34
  34. package/types/src/TickingArrayDataSource.d.ts +0 -44
  35. package/types/src/UpdateGenerator.d.ts +0 -18
  36. package/types/src/basket/BasketModule.d.ts +0 -55
  37. package/types/src/basket/basket-schemas.d.ts +0 -9
  38. package/types/src/basket/index.d.ts +0 -2
  39. package/types/src/basket/reference-data/constituents.d.ts +0 -3
  40. package/types/src/basket/reference-data/ftse100.d.ts +0 -2
  41. package/types/src/basket/reference-data/hsi.d.ts +0 -2
  42. package/types/src/basket/reference-data/nasdaq100.d.ts +0 -2
  43. package/types/src/basket/reference-data/prices.d.ts +0 -24
  44. package/types/src/basket/reference-data/sp500.d.ts +0 -2
  45. package/types/src/core/module/ModuleContainer.d.ts +0 -11
  46. package/types/src/core/module/VuuModule.d.ts +0 -81
  47. package/types/src/core/table/TableContainer.d.ts +0 -16
  48. package/types/src/data-utils.d.ts +0 -7
  49. package/types/src/default-column-definitions.d.ts +0 -2
  50. package/types/src/index.d.ts +0 -12
  51. package/types/src/local-datasource-provider/LocalDatasourceProvider.d.ts +0 -4
  52. package/types/src/makeSuggestions.d.ts +0 -3
  53. package/types/src/rowUpdates.d.ts +0 -15
  54. package/types/src/schemas.d.ts +0 -8
  55. package/types/src/session-table-utils.d.ts +0 -6
  56. package/types/src/simul/SimulModule.d.ts +0 -24
  57. package/types/src/simul/index.d.ts +0 -2
  58. package/types/src/simul/reference-data/accounts.d.ts +0 -1
  59. package/types/src/simul/reference-data/algos.d.ts +0 -1
  60. package/types/src/simul/reference-data/currencies.d.ts +0 -1
  61. package/types/src/simul/reference-data/index.d.ts +0 -5
  62. package/types/src/simul/reference-data/instrument-prices.d.ts +0 -60
  63. package/types/src/simul/reference-data/instruments-extended.d.ts +0 -1
  64. package/types/src/simul/reference-data/instruments.d.ts +0 -35
  65. package/types/src/simul/reference-data/isin-generator/convert-string-to-base-ten-number.d.ts +0 -1
  66. package/types/src/simul/reference-data/isin-generator/fixtures/alphabet.d.ts +0 -1
  67. package/types/src/simul/reference-data/isin-generator/fixtures/alphanumeric-values.d.ts +0 -1
  68. package/types/src/simul/reference-data/isin-generator/fixtures/base-ten-numbers.d.ts +0 -1
  69. package/types/src/simul/reference-data/isin-generator/generate-cusip-check-code.d.ts +0 -1
  70. package/types/src/simul/reference-data/isin-generator/generate-cusip-without-check-code.d.ts +0 -1
  71. package/types/src/simul/reference-data/isin-generator/generate-cusip.d.ts +0 -1
  72. package/types/src/simul/reference-data/isin-generator/generate-random-alphanumeric.d.ts +0 -1
  73. package/types/src/simul/reference-data/isin-generator/generate-random-base-ten-number.d.ts +0 -1
  74. package/types/src/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.d.ts +0 -1
  75. package/types/src/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.d.ts +0 -1
  76. package/types/src/simul/reference-data/isin-generator/index.d.ts +0 -1
  77. package/types/src/simul/reference-data/isin-generator/is-odd.d.ts +0 -1
  78. package/types/src/simul/reference-data/locations.d.ts +0 -4
  79. package/types/src/simul/reference-data/lotsizes.d.ts +0 -1
  80. package/types/src/simul/reference-data/orderStatus.d.ts +0 -1
  81. package/types/src/simul/reference-data/orders.d.ts +0 -36
  82. package/types/src/simul/reference-data/parent-child-orders.d.ts +0 -4
  83. package/types/src/simul/reference-data/priceStrategies.d.ts +0 -1
  84. package/types/src/simul/reference-data/prices.d.ts +0 -34
  85. package/types/src/simul/reference-data/sides.d.ts +0 -1
  86. package/types/src/simul/simul-schemas.d.ts +0 -9
  87. package/types/src/test/TestModule.d.ts +0 -16
  88. package/types/src/test/index.d.ts +0 -1
  89. package/types/src/vuu-row-generator.d.ts +0 -17
  90. package/types/user-admin/UserAdminModule.d.ts +0 -50
  91. package/types/user-admin/index.d.ts +0 -3
  92. package/types/user-admin/initialSnapshot.d.ts +0 -2
  93. package/types/user-admin/snapshot-projection.d.ts +0 -9
@@ -1,477 +0,0 @@
1
- const USER_ADMIN_INITIAL_SNAPSHOT = {
2
- clients: [
3
- {
4
- clientId: "vuu-portal",
5
- description: "VUU portal",
6
- enabled: true,
7
- id: "client-portal",
8
- name: "VUU Portal"
9
- }
10
- ],
11
- clientRoles: [
12
- {
13
- client: {
14
- clientId: "vuu-portal",
15
- id: "client-portal",
16
- name: "VUU Portal"
17
- },
18
- role: {
19
- clientRole: true,
20
- containerId: "client-portal",
21
- id: "role-user-admin-access",
22
- name: "user-admin-access",
23
- roleDisplayName: "access"
24
- }
25
- },
26
- {
27
- client: {
28
- clientId: "vuu-portal",
29
- id: "client-portal",
30
- name: "VUU Portal"
31
- },
32
- role: {
33
- clientRole: true,
34
- containerId: "client-portal",
35
- id: "role-feature-filter-table-access",
36
- name: "feature-filter-table-access",
37
- roleDisplayName: "access"
38
- }
39
- },
40
- {
41
- client: {
42
- clientId: "vuu-portal",
43
- id: "client-portal",
44
- name: "VUU Portal"
45
- },
46
- role: {
47
- clientRole: true,
48
- containerId: "client-portal",
49
- id: "role-module-admin-access",
50
- name: "module-admin-access",
51
- roleDisplayName: "access"
52
- }
53
- },
54
- {
55
- client: {
56
- clientId: "vuu-portal",
57
- id: "client-portal",
58
- name: "VUU Portal"
59
- },
60
- role: {
61
- clientRole: true,
62
- containerId: "client-portal",
63
- id: "role-basket-trading-access",
64
- name: "basket-trading-access",
65
- roleDisplayName: "access"
66
- }
67
- },
68
- {
69
- client: {
70
- clientId: "vuu-portal",
71
- id: "client-portal",
72
- name: "VUU Portal"
73
- },
74
- role: {
75
- clientRole: true,
76
- containerId: "client-portal",
77
- id: "role-user-admin-admin",
78
- name: "user-admin-admin",
79
- roleDisplayName: "admin"
80
- }
81
- },
82
- {
83
- client: {
84
- clientId: "vuu-portal",
85
- id: "client-portal",
86
- name: "VUU Portal"
87
- },
88
- role: {
89
- clientRole: true,
90
- containerId: "client-portal",
91
- id: "role-module-admin-admin",
92
- name: "module-admin-admin",
93
- roleDisplayName: "admin"
94
- }
95
- },
96
- {
97
- client: {
98
- clientId: "vuu-portal",
99
- id: "client-portal",
100
- name: "VUU Portal"
101
- },
102
- role: {
103
- clientRole: true,
104
- containerId: "client-portal",
105
- id: "role-basket-trading-trade",
106
- name: "basket-trading-trade",
107
- roleDisplayName: "trade"
108
- }
109
- },
110
- {
111
- client: {
112
- clientId: "realm",
113
- id: "realm",
114
- name: "Realm"
115
- },
116
- role: {
117
- id: "role-admin",
118
- name: "admin",
119
- roleDisplayName: "admin"
120
- }
121
- }
122
- ],
123
- groupRoles: [
124
- {
125
- client: {
126
- clientId: "vuu-portal",
127
- id: "client-portal",
128
- name: "VUU Portal"
129
- },
130
- group: {
131
- id: "group-user-admin-read",
132
- name: "user-admin-read",
133
- groupDisplayName: "read",
134
- moduleAccessDefaultRoles: [
135
- "user-admin-access"
136
- ],
137
- path: "/vuu/user-admin-read"
138
- },
139
- role: {
140
- id: "role-user-admin-access",
141
- name: "user-admin-access",
142
- roleDisplayName: "access"
143
- }
144
- },
145
- {
146
- client: {
147
- clientId: "vuu-portal",
148
- id: "client-portal",
149
- name: "VUU Portal"
150
- },
151
- group: {
152
- id: "group-feature-filter-table-read",
153
- name: "feature-filter-table-read",
154
- groupDisplayName: "read",
155
- moduleAccessDefaultRoles: [
156
- "feature-filter-table-access"
157
- ],
158
- path: "/vuu/feature-filter-table-read"
159
- },
160
- role: {
161
- id: "role-feature-filter-table-access",
162
- name: "feature-filter-table-access",
163
- roleDisplayName: "access"
164
- }
165
- },
166
- {
167
- client: {
168
- clientId: "vuu-portal",
169
- id: "client-portal",
170
- name: "VUU Portal"
171
- },
172
- group: {
173
- id: "group-module-admin-read",
174
- name: "module-admin-read",
175
- groupDisplayName: "read",
176
- moduleAccessDefaultRoles: [
177
- "module-admin-access"
178
- ],
179
- path: "/vuu/module-admin-read"
180
- },
181
- role: {
182
- id: "role-module-admin-access",
183
- name: "module-admin-access",
184
- roleDisplayName: "access"
185
- }
186
- },
187
- {
188
- client: {
189
- clientId: "vuu-portal",
190
- id: "client-portal",
191
- name: "VUU Portal"
192
- },
193
- group: {
194
- id: "group-basket-trading-read",
195
- name: "basket-trading-read",
196
- groupDisplayName: "read",
197
- moduleAccessDefaultRoles: [
198
- "basket-trading-access"
199
- ],
200
- path: "/vuu/basket-trading-read"
201
- },
202
- role: {
203
- id: "role-basket-trading-access",
204
- name: "basket-trading-access",
205
- roleDisplayName: "access"
206
- }
207
- },
208
- {
209
- client: {
210
- clientId: "vuu-portal",
211
- id: "client-portal",
212
- name: "VUU Portal"
213
- },
214
- group: {
215
- id: "group-user-admin-admin",
216
- name: "user-admin-admin",
217
- groupDisplayName: "admin",
218
- path: "/vuu/user-admin-admin"
219
- },
220
- role: {
221
- id: "role-user-admin-access",
222
- name: "user-admin-access",
223
- roleDisplayName: "access"
224
- }
225
- },
226
- {
227
- client: {
228
- clientId: "vuu-portal",
229
- id: "client-portal",
230
- name: "VUU Portal"
231
- },
232
- group: {
233
- id: "group-user-admin-admin",
234
- name: "user-admin-admin",
235
- groupDisplayName: "admin",
236
- path: "/vuu/user-admin-admin"
237
- },
238
- role: {
239
- id: "role-user-admin-admin",
240
- name: "user-admin-admin",
241
- roleDisplayName: "admin"
242
- }
243
- },
244
- {
245
- client: {
246
- clientId: "vuu-portal",
247
- id: "client-portal",
248
- name: "VUU Portal"
249
- },
250
- group: {
251
- id: "group-module-admin-admin",
252
- name: "module-admin-admin",
253
- groupDisplayName: "admin",
254
- path: "/vuu/module-admin-admin"
255
- },
256
- role: {
257
- id: "role-module-admin-access",
258
- name: "module-admin-access",
259
- roleDisplayName: "access"
260
- }
261
- },
262
- {
263
- client: {
264
- clientId: "vuu-portal",
265
- id: "client-portal",
266
- name: "VUU Portal"
267
- },
268
- group: {
269
- id: "group-module-admin-admin",
270
- name: "module-admin-admin",
271
- groupDisplayName: "admin",
272
- path: "/vuu/module-admin-admin"
273
- },
274
- role: {
275
- id: "role-module-admin-admin",
276
- name: "module-admin-admin",
277
- roleDisplayName: "admin"
278
- }
279
- },
280
- {
281
- client: {
282
- clientId: "vuu-portal",
283
- id: "client-portal",
284
- name: "VUU Portal"
285
- },
286
- group: {
287
- id: "group-basket-trading-trade",
288
- name: "basket-trading-trade",
289
- groupDisplayName: "trade",
290
- path: "/vuu/basket-trading-trade"
291
- },
292
- role: {
293
- id: "role-basket-trading-access",
294
- name: "basket-trading-access",
295
- roleDisplayName: "access"
296
- }
297
- },
298
- {
299
- client: {
300
- clientId: "vuu-portal",
301
- id: "client-portal",
302
- name: "VUU Portal"
303
- },
304
- group: {
305
- id: "group-basket-trading-trade",
306
- name: "basket-trading-trade",
307
- groupDisplayName: "trade",
308
- path: "/vuu/basket-trading-trade"
309
- },
310
- role: {
311
- id: "role-basket-trading-trade",
312
- name: "basket-trading-trade",
313
- roleDisplayName: "trade"
314
- }
315
- },
316
- {
317
- group: {
318
- id: "group-admins",
319
- name: "administrators",
320
- groupDisplayName: "administrators",
321
- path: "/vuu/administrators"
322
- },
323
- role: {
324
- id: "role-admin",
325
- name: "admin",
326
- roleDisplayName: "admin"
327
- }
328
- }
329
- ],
330
- groups: [
331
- {
332
- id: "group-user-admin-read",
333
- name: "user-admin-read",
334
- groupDisplayName: "read",
335
- moduleAccessDefaultRoles: [
336
- "user-admin-access"
337
- ],
338
- path: "/vuu/user-admin-read"
339
- },
340
- {
341
- id: "group-module-admin-read",
342
- name: "module-admin-read",
343
- groupDisplayName: "read",
344
- moduleAccessDefaultRoles: [
345
- "module-admin-access"
346
- ],
347
- path: "/vuu/module-admin-read"
348
- },
349
- {
350
- id: "group-basket-trading-read",
351
- name: "basket-trading-read",
352
- groupDisplayName: "read",
353
- moduleAccessDefaultRoles: [
354
- "basket-trading-access"
355
- ],
356
- path: "/vuu/basket-trading-read"
357
- },
358
- {
359
- id: "group-feature-filter-table-read",
360
- name: "feature-filter-table-read",
361
- groupDisplayName: "read",
362
- moduleAccessDefaultRoles: [
363
- "feature-filter-table-access"
364
- ],
365
- path: "/vuu/feature-filter-table-read"
366
- },
367
- {
368
- id: "group-user-admin-admin",
369
- name: "user-admin-admin",
370
- groupDisplayName: "admin",
371
- path: "/vuu/user-admin-admin"
372
- },
373
- {
374
- id: "group-module-admin-admin",
375
- name: "module-admin-admin",
376
- groupDisplayName: "admin",
377
- path: "/vuu/module-admin-admin"
378
- },
379
- {
380
- id: "group-basket-trading-trade",
381
- name: "basket-trading-trade",
382
- groupDisplayName: "trade",
383
- path: "/vuu/basket-trading-trade"
384
- },
385
- {
386
- id: "group-admins",
387
- name: "administrators",
388
- groupDisplayName: "administrators",
389
- path: "/vuu/administrators"
390
- }
391
- ],
392
- timestamp: 1710000000000,
393
- userGroups: [
394
- {
395
- group: {
396
- id: "group-user-admin-read",
397
- name: "user-admin-read",
398
- groupDisplayName: "read",
399
- moduleAccessDefaultRoles: [
400
- "user-admin-access"
401
- ],
402
- path: "/vuu/user-admin-read"
403
- },
404
- user: {
405
- email: "alice@example.com",
406
- id: "user-alice",
407
- username: "alice"
408
- }
409
- },
410
- {
411
- group: {
412
- id: "group-module-admin-read",
413
- name: "module-admin-read",
414
- groupDisplayName: "read",
415
- moduleAccessDefaultRoles: [
416
- "module-admin-access"
417
- ],
418
- path: "/vuu/module-admin-read"
419
- },
420
- user: {
421
- email: "bob@example.com",
422
- id: "user-bob",
423
- username: "bob"
424
- }
425
- },
426
- {
427
- group: {
428
- id: "group-basket-trading-read",
429
- name: "basket-trading-read",
430
- groupDisplayName: "read",
431
- moduleAccessDefaultRoles: [
432
- "basket-trading-access"
433
- ],
434
- path: "/vuu/basket-trading-read"
435
- },
436
- user: {
437
- email: "alice@example.com",
438
- id: "user-alice",
439
- username: "alice"
440
- }
441
- },
442
- {
443
- group: {
444
- id: "group-admins",
445
- name: "administrators",
446
- groupDisplayName: "administrators",
447
- path: "/vuu/administrators"
448
- },
449
- user: {
450
- email: "alice@example.com",
451
- id: "user-alice",
452
- username: "alice"
453
- }
454
- }
455
- ],
456
- users: [
457
- {
458
- email: "alice@example.com",
459
- emailVerified: true,
460
- enabled: true,
461
- firstName: "Alice",
462
- id: "user-alice",
463
- lastName: "Admin",
464
- username: "alice"
465
- },
466
- {
467
- email: "bob@example.com",
468
- emailVerified: true,
469
- enabled: true,
470
- firstName: "Bob",
471
- id: "user-bob",
472
- lastName: "Builder",
473
- username: "bob"
474
- }
475
- ]
476
- };
477
- export { USER_ADMIN_INITIAL_SNAPSHOT };
@@ -1,151 +0,0 @@
1
- const rowsEqual = (left, right)=>left.length === right.length && left.every((value, index)=>value === right[index]);
2
- const membershipId = (userId, groupId)=>`${userId}:${groupId}`;
3
- const assignmentId = (groupId, roleId)=>`${groupId}:${roleId}`;
4
- const resolveDisplayName = (name, configuredDisplayName)=>configuredDisplayName ?? name.split("-").at(-1) ?? name;
5
- const groupDisplayName = ({ groupDisplayName: configuredDisplayName, name })=>resolveDisplayName(name, configuredDisplayName);
6
- const roleDisplayName = ({ roleDisplayName: configuredDisplayName, name })=>resolveDisplayName(name, configuredDisplayName);
7
- const systemValues = (timestamp)=>({
8
- vuuCreatedTimestamp: timestamp,
9
- vuuMsg: "",
10
- vuuUpdatedTimestamp: timestamp
11
- });
12
- const toRow = (table, values)=>table.schema.columns.map(({ name })=>values[name] ?? "");
13
- const userRoleIds = (snapshot, userId)=>{
14
- const groupIds = new Set(snapshot.userGroups.filter(({ user })=>user.id === userId).map(({ group })=>group.id));
15
- return new Set(snapshot.groupRoles.filter(({ group })=>groupIds.has(group.id)).map(({ role })=>role.id));
16
- };
17
- const moduleAccessRoles = (snapshot, userId)=>Array.from(new Set(snapshot.groupRoles.filter(({ group, role })=>snapshot.userGroups.some(({ user, group: userGroup })=>user.id === userId && userGroup.id === group.id) && role.name.endsWith("-access")).map(({ role })=>role.name))).sort();
18
- const projectUserAdminSnapshot = (snapshot, tables)=>{
19
- const system = systemValues(snapshot.timestamp);
20
- const membershipRows = snapshot.userGroups.map(({ user, group })=>({
21
- group,
22
- membership_id: membershipId(user.id, group.id),
23
- user
24
- }));
25
- const assignmentRows = snapshot.groupRoles.map(({ client, group, role })=>({
26
- assignment_id: assignmentId(group.id, role.id),
27
- client,
28
- group,
29
- role
30
- }));
31
- return {
32
- users: snapshot.users.map((user)=>{
33
- const accessRoles = moduleAccessRoles(snapshot, user.id);
34
- return toRow(tables.users, {
35
- ...system,
36
- email: user.email ?? "",
37
- email_verified: user.emailVerified ?? false,
38
- enabled: user.enabled ?? true,
39
- first_name: user.firstName ?? "",
40
- group_count: snapshot.userGroups.filter(({ user: member })=>member.id === user.id).length,
41
- last_login: 0,
42
- last_name: user.lastName ?? "",
43
- module_access: accessRoles.join(","),
44
- module_access_count: accessRoles.length,
45
- password_update_required: user.requiredActions?.includes("UPDATE_PASSWORD") ?? false,
46
- role_count: userRoleIds(snapshot, user.id).size,
47
- user_id: user.id,
48
- username: user.username
49
- });
50
- }),
51
- groups: snapshot.groups.map((group)=>toRow(tables.groups, {
52
- ...system,
53
- group_display_name: groupDisplayName(group),
54
- group_id: group.id,
55
- group_path: group.path ?? `/${group.name}`,
56
- parent_group_id: group.parentId ?? "",
57
- role_count: snapshot.groupRoles.filter(({ group: assignmentGroup })=>assignmentGroup.id === group.id).length,
58
- user_count: snapshot.userGroups.filter(({ group: memberGroup })=>memberGroup.id === group.id).length
59
- })),
60
- clients: snapshot.clients.map((client)=>toRow(tables.clients, {
61
- ...system,
62
- client_id: client.id,
63
- client_identifier: client.clientId,
64
- client_name: client.name ?? "",
65
- description: client.description ?? "",
66
- enabled: client.enabled ?? true
67
- })),
68
- roles: snapshot.clientRoles.map(({ client, role })=>toRow(tables.roles, {
69
- ...system,
70
- client_id: role.containerId ?? client.id,
71
- client_identifier: client.clientId,
72
- client_name: client.name ?? "",
73
- description: role.description ?? "",
74
- group_count: snapshot.groupRoles.filter(({ role: groupRole })=>groupRole.id === role.id).length,
75
- role_id: role.id,
76
- role_display_name: roleDisplayName(role),
77
- role_name: role.name,
78
- user_count: new Set(snapshot.userGroups.filter(({ group })=>snapshot.groupRoles.some(({ group: roleGroup, role: groupRole })=>group.id === roleGroup.id && groupRole.id === role.id)).map(({ user })=>user.id)).size
79
- })),
80
- user_groups: membershipRows.map(({ group, membership_id, user })=>toRow(tables.user_groups, {
81
- ...system,
82
- group_display_name: groupDisplayName(group),
83
- group_id: group.id,
84
- group_name: group.name,
85
- group_path: group.path ?? `/${group.name}`,
86
- membership_id,
87
- user_id: user.id,
88
- username: user.username
89
- })),
90
- group_roles: assignmentRows.map(({ assignment_id, client, group, role })=>toRow(tables.group_roles, {
91
- ...system,
92
- assignment_id,
93
- client_id: client?.id ?? "",
94
- client_identifier: client?.clientId ?? "",
95
- client_name: client?.name ?? "",
96
- group_id: group.id,
97
- group_display_name: groupDisplayName(group),
98
- group_name: group.name,
99
- role_id: role.id,
100
- role_display_name: roleDisplayName(role),
101
- role_name: role.name
102
- })),
103
- user_group_roles: membershipRows.flatMap(({ group, membership_id, user })=>assignmentRows.filter(({ group: assignmentGroup })=>assignmentGroup.id === group.id).map(({ assignment_id, client, role })=>toRow(tables.user_group_roles, {
104
- ...system,
105
- assignment_id,
106
- client_id: client?.id ?? "",
107
- client_identifier: client?.clientId ?? "",
108
- client_name: client?.name ?? "",
109
- email: user.email ?? "",
110
- email_verified: user.emailVerified ?? false,
111
- enabled: user.enabled ?? true,
112
- first_name: user.firstName ?? "",
113
- group_id: group.id,
114
- group_display_name: groupDisplayName(group),
115
- group_name: group.name,
116
- group_path: group.path ?? `/${group.name}`,
117
- id: `${membership_id}:${assignment_id}`,
118
- last_login: 0,
119
- last_name: user.lastName ?? "",
120
- membership_id,
121
- password_update_required: user.requiredActions?.includes("UPDATE_PASSWORD") ?? false,
122
- role_id: role.id,
123
- role_display_name: roleDisplayName(role),
124
- role_name: role.name,
125
- user_id: user.id,
126
- username: user.username
127
- })))
128
- };
129
- };
130
- const reconcileUserAdminTables = (snapshot, tables)=>{
131
- const projected = projectUserAdminSnapshot(snapshot, tables);
132
- for (const tableName of Object.keys(tables)){
133
- const table = tables[tableName];
134
- const desiredRows = projected[tableName];
135
- const keyIndex = table.map[table.schema.key];
136
- const desiredKeys = new Set(desiredRows.map((row)=>String(row[keyIndex])));
137
- for (const existingRow of [
138
- ...table.data
139
- ]){
140
- const key = String(existingRow[keyIndex]);
141
- if (!desiredKeys.has(key)) table.delete(key);
142
- }
143
- for (const row of desiredRows){
144
- const key = String(row[keyIndex]);
145
- const existingRow = table.findByKey(key);
146
- if (void 0 === existingRow) table.insert(row);
147
- else if (!rowsEqual(existingRow, row)) table.updateRow(row);
148
- }
149
- }
150
- };
151
- export { projectUserAdminSnapshot, reconcileUserAdminTables, resolveDisplayName };
@@ -1,23 +0,0 @@
1
- import type { TableSchema } from "@vuu-ui/vuu-data-types";
2
- import { VuuModule } from "../core/module/VuuModule";
3
- import { type Table } from "../Table";
4
- import { type ModuleAdminTableName } from "./module-admin-schemas";
5
- import { type ModuleAdminSnapshot } from "./snapshot-projection";
6
- type ModuleAdminTables = Record<ModuleAdminTableName, Table>;
7
- export declare const MODULE_ADMIN_INITIAL_SNAPSHOT: ModuleAdminSnapshot;
8
- export declare class ModuleAdminModule extends VuuModule<ModuleAdminTableName> {
9
- #private;
10
- constructor(snapshot?: ModuleAdminSnapshot);
11
- get menus(): {
12
- modulePermissions: undefined;
13
- modules: undefined;
14
- };
15
- protected get includeDefaultServices(): boolean;
16
- get menuServices(): undefined;
17
- get schemas(): Record<ModuleAdminTableName, Readonly<TableSchema>>;
18
- get services(): undefined;
19
- get tables(): ModuleAdminTables;
20
- get visualLinks(): undefined;
21
- }
22
- export declare const moduleAdminModule: ModuleAdminModule;
23
- export {};
@@ -1,4 +0,0 @@
1
- export { ModuleAdminModule, MODULE_ADMIN_INITIAL_SNAPSHOT, moduleAdminModule, } from "./ModuleAdminModule";
2
- export { MODULE_ADMIN_MODULE_NAME, MODULE_ADMIN_TABLE_SCHEMAS, type ModuleAdminTableName, } from "./module-admin-schemas";
3
- export { projectModuleAdminSnapshot, reconcileModuleAdminTables, type ModuleAdminSnapshot, } from "./snapshot-projection";
4
- export type { ModuleAccessRole, ModuleDefinition, ModulePermissionRow, ModuleRow, } from "@heswell/module-admin/contracts";
@@ -1,4 +0,0 @@
1
- import type { TableSchema } from "@vuu-ui/vuu-data-types";
2
- export declare const MODULE_ADMIN_MODULE_NAME = "MODULE_DISCOVERY";
3
- export type ModuleAdminTableName = "modules" | "modulePermissions";
4
- export declare const MODULE_ADMIN_TABLE_SCHEMAS: Readonly<Record<ModuleAdminTableName, Readonly<TableSchema>>>;
@@ -1,14 +0,0 @@
1
- import { type ModuleAccessRole, type ModuleDefinition } from "@heswell/module-admin/contracts";
2
- import type { VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
3
- import type { Table } from "../Table";
4
- import type { ModuleAdminTableName } from "./module-admin-schemas";
5
- type Row = Array<bigint | VuuRowDataItemType>;
6
- type Tables = Record<ModuleAdminTableName, Table>;
7
- export type ModuleAdminSnapshot = {
8
- moduleAccessRoles: readonly ModuleAccessRole[];
9
- modules: readonly ModuleDefinition[];
10
- timestamp: number;
11
- };
12
- export declare const projectModuleAdminSnapshot: (snapshot: ModuleAdminSnapshot, tables: Tables) => Record<ModuleAdminTableName, Row[]>;
13
- export declare const reconcileModuleAdminTables: (snapshot: ModuleAdminSnapshot, tables: Tables) => void;
14
- export {};
@@ -1,8 +0,0 @@
1
- export type RowAtIndexFunc<T = unknown> = (index: number) => T | undefined;
2
- export declare class ArrayProxy<T = string> {
3
- #private;
4
- length: number;
5
- constructor(size: number, getRow: RowAtIndexFunc);
6
- map: (func: (item: T, i: number) => unknown) => ArrayProxy<string>;
7
- slice: (from: number, to: number) => unknown[];
8
- }