@nymphjs/tilmeld 1.0.0-beta.5 → 1.0.0-beta.50

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/dist/Group.js CHANGED
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const md5_1 = __importDefault(require("crypto-js/md5"));
7
7
  const lodash_1 = require("lodash");
8
+ const enforceTilmeld_1 = require("./enforceTilmeld");
8
9
  const AbleObject_1 = __importDefault(require("./AbleObject"));
9
10
  const errors_1 = require("./errors");
10
11
  class Group extends AbleObject_1.default {
@@ -26,11 +27,11 @@ class Group extends AbleObject_1.default {
26
27
  }
27
28
  return entity;
28
29
  }
29
- static factorySync(guid) {
30
- return super.factorySync(guid);
30
+ static factorySync() {
31
+ return super.factorySync();
31
32
  }
32
- constructor(guid) {
33
- super(guid);
33
+ constructor() {
34
+ super();
34
35
  this.$tags = [];
35
36
  this.$clientEnabledMethods = [
36
37
  '$checkGroupname',
@@ -45,41 +46,46 @@ class Group extends AbleObject_1.default {
45
46
  this.$allowlistData = [...Group.DEFAULT_ALLOWLIST_DATA];
46
47
  this.$allowlistTags = [];
47
48
  this.$skipAcWhenSaving = false;
48
- if (this.guid == null) {
49
- this.$data.enabled = true;
50
- this.$data.abilities = [];
51
- this.$updateDataProtection();
52
- }
49
+ this.$data.enabled = true;
50
+ this.$data.abilities = [];
51
+ this.$updateDataProtection();
53
52
  }
54
53
  static async getPrimaryGroups(options, selectors) {
55
- if (!this.tilmeld.gatekeeper('tilmeld/admin')) {
54
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
55
+ if (!tilmeld.gatekeeper('tilmeld/admin')) {
56
56
  throw new Error("You don't have permission to do that.");
57
57
  }
58
- return await this.getAssignableGroups(this.tilmeld.config.highestPrimary, { ...options, class: this.tilmeld.Group, return: 'entity' }, [...(selectors ?? [])]);
58
+ return await this.getAssignableGroups(tilmeld.config.highestPrimary, { ...options, class: tilmeld.Group, return: 'entity' }, [...(selectors ?? [])]);
59
59
  }
60
60
  static async getSecondaryGroups(options, selectors) {
61
- if (!this.tilmeld.gatekeeper('tilmeld/admin')) {
61
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
62
+ if (!tilmeld.gatekeeper('tilmeld/admin')) {
62
63
  throw new Error("You don't have permission to do that.");
63
64
  }
64
- return await this.getAssignableGroups(this.tilmeld.config.highestSecondary, { ...options, class: this.tilmeld.Group, return: 'entity' }, [...(selectors ?? [])]);
65
+ return await this.getAssignableGroups(tilmeld.config.highestSecondary, { ...options, class: tilmeld.Group, return: 'entity' }, [...(selectors ?? [])]);
65
66
  }
66
67
  static async getAssignableGroups(highestParent, options, selectors) {
68
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
67
69
  let assignableGroups = [];
68
70
  if (highestParent === false) {
69
71
  return assignableGroups;
70
72
  }
71
- assignableGroups = await this.nymph.getEntities({ ...options, class: this.tilmeld.Group }, ...selectors);
73
+ assignableGroups = await this.nymph.getEntities({ ...options, class: tilmeld.Group }, ...selectors);
72
74
  if (highestParent !== true) {
73
- assignableGroups = assignableGroups.filter((group) => {
75
+ assignableGroups = (await Promise.all(assignableGroups.map(async (group) => {
74
76
  let curGroup = group;
75
- while (curGroup.parent != null && curGroup.parent.cdate != null) {
76
- if (curGroup.parent.guid === highestParent) {
77
- return true;
77
+ let parent = curGroup.parent;
78
+ await parent?.$wake();
79
+ while (parent != null && parent?.cdate != null) {
80
+ if (parent?.guid === highestParent) {
81
+ return group;
78
82
  }
79
- curGroup = curGroup.parent;
83
+ curGroup = parent;
84
+ parent = curGroup.parent;
85
+ await parent?.$wake();
80
86
  }
81
- return false;
82
- });
87
+ return null;
88
+ }))).filter((group) => group != null);
83
89
  }
84
90
  return assignableGroups;
85
91
  }
@@ -95,24 +101,54 @@ class Group extends AbleObject_1.default {
95
101
  '?d=identicon&s=40');
96
102
  }
97
103
  $jsonAcceptData(input, allowConflict = false) {
98
- const tilmeld = this.$nymph.tilmeld;
99
- this.$referenceWake();
100
- if (input.data.abilities?.indexOf('system/admin') !== -1 &&
101
- this.$data.abilities?.indexOf('system/admin') === -1 &&
102
- tilmeld.gatekeeper('tilmeld/admin') &&
103
- !tilmeld.gatekeeper('system/admin')) {
104
- throw new errors_1.BadDataError("You don't have the authority to make this group a system admin.");
104
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
105
+ this.$check();
106
+ if ('abilities' in input.data &&
107
+ input.data.abilities?.includes('system/admin') !==
108
+ this.$data.abilities?.includes('system/admin') &&
109
+ (!tilmeld.currentUser ||
110
+ !tilmeld.currentUser.abilities?.includes('system/admin'))) {
111
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke system/admin.");
112
+ }
113
+ if ('abilities' in input.data &&
114
+ input.data.abilities?.includes('tilmeld/admin') !==
115
+ this.$data.abilities?.includes('tilmeld/admin') &&
116
+ (!tilmeld.currentUser ||
117
+ !tilmeld.currentUser.abilities?.includes('system/admin'))) {
118
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/admin.");
119
+ }
120
+ if ('abilities' in input.data &&
121
+ input.data.abilities?.includes('tilmeld/switch') !==
122
+ this.$data.abilities?.includes('tilmeld/switch') &&
123
+ (!tilmeld.currentUser ||
124
+ !tilmeld.currentUser.abilities?.includes('system/admin'))) {
125
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/switch.");
105
126
  }
106
127
  super.$jsonAcceptData(input, allowConflict);
107
128
  }
108
129
  $jsonAcceptPatch(patch, allowConflict = false) {
109
- const tilmeld = this.$nymph.tilmeld;
110
- this.$referenceWake();
111
- if (patch.set.abilities?.indexOf('system/admin') !== -1 &&
112
- this.$data.abilities?.indexOf('system/admin') === -1 &&
113
- tilmeld.gatekeeper('tilmeld/admin') &&
114
- !tilmeld.gatekeeper('system/admin')) {
115
- throw new errors_1.BadDataError("You don't have the authority to make this group a system admin.");
130
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
131
+ this.$check();
132
+ if ('abilities' in patch.set &&
133
+ patch.set.abilities?.includes('system/admin') !==
134
+ this.$data.abilities?.includes('system/admin') &&
135
+ (!tilmeld.currentUser ||
136
+ !tilmeld.currentUser.abilities?.includes('system/admin'))) {
137
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke system/admin.");
138
+ }
139
+ if ('abilities' in patch.set &&
140
+ patch.set.abilities?.includes('tilmeld/admin') !==
141
+ this.$data.abilities?.includes('tilmeld/admin') &&
142
+ (!tilmeld.currentUser ||
143
+ !tilmeld.currentUser.abilities?.includes('system/admin'))) {
144
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/admin.");
145
+ }
146
+ if ('abilities' in patch.set &&
147
+ patch.set.abilities?.includes('tilmeld/switch') !==
148
+ this.$data.abilities?.includes('tilmeld/switch') &&
149
+ (!tilmeld.currentUser ||
150
+ !tilmeld.currentUser.abilities?.includes('system/admin'))) {
151
+ throw new errors_1.BadDataError("You don't have the authority to grant or revoke tilmeld/switch.");
116
152
  }
117
153
  super.$jsonAcceptPatch(patch, allowConflict);
118
154
  }
@@ -121,7 +157,7 @@ class Group extends AbleObject_1.default {
121
157
  this.$updateDataProtection();
122
158
  }
123
159
  $updateDataProtection(givenUser) {
124
- const tilmeld = this.$nymph.tilmeld;
160
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
125
161
  let user = givenUser ?? tilmeld.User.current();
126
162
  this.$privateData = [...Group.DEFAULT_PRIVATE_DATA];
127
163
  this.$allowlistData = [...Group.DEFAULT_ALLOWLIST_DATA];
@@ -136,15 +172,15 @@ class Group extends AbleObject_1.default {
136
172
  }
137
173
  else if (this.$data.user != null &&
138
174
  user != null &&
139
- this.$data.user.$is(user)) {
175
+ this.$data.user.guid === user.guid) {
140
176
  this.$privateData = [];
141
177
  }
142
178
  }
143
- $isDescendant(givenGroup) {
144
- const tilmeld = this.$nymph.tilmeld;
179
+ async $isDescendant(givenGroup) {
180
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
145
181
  let group;
146
182
  if (typeof givenGroup === 'string') {
147
- group = tilmeld.Group.factorySync(givenGroup);
183
+ group = await tilmeld.Group.factory(givenGroup);
148
184
  }
149
185
  else {
150
186
  group = givenGroup;
@@ -152,19 +188,21 @@ class Group extends AbleObject_1.default {
152
188
  if (group.guid == null) {
153
189
  return false;
154
190
  }
155
- if (this.$data.parent == null) {
191
+ const parent = this.$data.parent;
192
+ await parent?.$wake();
193
+ if (parent == null) {
156
194
  return false;
157
195
  }
158
- if (this.$data.parent.$is(group)) {
196
+ if (parent.$is(group)) {
159
197
  return true;
160
198
  }
161
- if (this.$data.parent.$isDescendant(group)) {
199
+ if (await parent.$isDescendant(group)) {
162
200
  return true;
163
201
  }
164
202
  return false;
165
203
  }
166
204
  async $getChildren() {
167
- const tilmeld = this.$nymph.tilmeld;
205
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
168
206
  return await this.$nymph.getEntities({ class: tilmeld.Group }, {
169
207
  type: '&',
170
208
  equal: ['enabled', true],
@@ -172,7 +210,7 @@ class Group extends AbleObject_1.default {
172
210
  });
173
211
  }
174
212
  async $getDescendants(andSelf = false) {
175
- const tilmeld = this.$nymph.tilmeld;
213
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
176
214
  let groups = [];
177
215
  const entities = await this.$nymph.getEntities({ class: tilmeld.Group }, {
178
216
  type: '&',
@@ -187,39 +225,22 @@ class Group extends AbleObject_1.default {
187
225
  }
188
226
  return groups;
189
227
  }
190
- $getDescendantsSync(andSelf = false) {
191
- const tilmeld = this.$nymph.tilmeld;
192
- let groups = [];
193
- let entity;
194
- let offset = 0;
195
- do {
196
- entity = this.$nymph.driver.getEntitySync({ class: tilmeld.Group, offset }, {
197
- type: '&',
198
- equal: ['enabled', true],
199
- ref: ['parent', this],
200
- });
201
- if (entity != null) {
202
- groups = entity.$getDescendantsSync(true).concat(groups);
203
- }
204
- offset++;
205
- } while (entity != null);
206
- if (andSelf) {
207
- groups.push(this);
208
- }
209
- return groups;
210
- }
211
- $getLevel() {
212
- const tilmeld = this.$nymph.tilmeld;
213
- let group = tilmeld.Group.factorySync(this.guid ?? undefined);
228
+ async $getLevel() {
229
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
230
+ let group = await tilmeld.Group.factory(this.guid ?? undefined);
231
+ let parent = group.parent;
232
+ await parent?.$wake();
214
233
  let level = 0;
215
- while (group.parent != null && group.parent.cdate != null && level < 1024) {
234
+ while (parent != null && parent.cdate != null && level < 1024) {
216
235
  level++;
217
- group = group.parent;
236
+ group = parent;
237
+ parent = group.parent;
238
+ await parent?.$wake();
218
239
  }
219
240
  return level;
220
241
  }
221
242
  async $getUsers(descendants = false, limit, offset) {
222
- const tilmeld = this.$nymph.tilmeld;
243
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
223
244
  let groups = [];
224
245
  if (descendants) {
225
246
  groups = await this.$getDescendants();
@@ -248,13 +269,20 @@ class Group extends AbleObject_1.default {
248
269
  });
249
270
  }
250
271
  async $checkGroupname() {
251
- const tilmeld = this.$nymph.tilmeld;
272
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
252
273
  if (!tilmeld.config.emailUsernames) {
253
274
  if (this.$data.groupname == null || !this.$data.groupname.length) {
254
275
  return { result: false, message: 'Please specify a groupname.' };
255
276
  }
256
- if (tilmeld.config.maxUsernameLength > 0 &&
257
- this.$data.groupname.length > tilmeld.config.maxUsernameLength) {
277
+ if (this.$data.groupname.length < tilmeld.config.minUsernameLength) {
278
+ return {
279
+ result: false,
280
+ message: 'Groupnames must be at least ' +
281
+ tilmeld.config.minUsernameLength +
282
+ ' characters.',
283
+ };
284
+ }
285
+ if (this.$data.groupname.length > tilmeld.config.maxUsernameLength) {
258
286
  return {
259
287
  result: false,
260
288
  message: 'Groupnames must not exceed ' +
@@ -298,8 +326,15 @@ class Group extends AbleObject_1.default {
298
326
  if (this.$data.groupname == null || !this.$data.groupname.length) {
299
327
  return { result: false, message: 'Please specify an email.' };
300
328
  }
301
- if (tilmeld.config.maxUsernameLength > 0 &&
302
- this.$data.groupname.length > tilmeld.config.maxUsernameLength) {
329
+ if (this.$data.groupname.length < tilmeld.config.minUsernameLength) {
330
+ return {
331
+ result: false,
332
+ message: 'Emails must be at least ' +
333
+ tilmeld.config.minUsernameLength +
334
+ ' characters.',
335
+ };
336
+ }
337
+ if (this.$data.groupname.length > tilmeld.config.maxUsernameLength) {
303
338
  return {
304
339
  result: false,
305
340
  message: 'Emails must not exceed ' +
@@ -311,7 +346,7 @@ class Group extends AbleObject_1.default {
311
346
  }
312
347
  }
313
348
  async $checkEmail() {
314
- const tilmeld = this.$nymph.tilmeld;
349
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
315
350
  if (this.$data.email === '') {
316
351
  return { result: true, message: '' };
317
352
  }
@@ -344,7 +379,7 @@ class Group extends AbleObject_1.default {
344
379
  };
345
380
  }
346
381
  async $save() {
347
- const tilmeld = this.$nymph.tilmeld;
382
+ const tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
348
383
  if (this.$data.groupname == null || !this.$data.groupname.trim().length) {
349
384
  return false;
350
385
  }
@@ -386,6 +421,7 @@ class Group extends AbleObject_1.default {
386
421
  this.$data.abilities = (0, lodash_1.difference)(this.$data.abilities ?? [], [
387
422
  'system/admin',
388
423
  'tilmeld/admin',
424
+ 'tilmeld/switch',
389
425
  null,
390
426
  undefined,
391
427
  ]);
@@ -399,10 +435,12 @@ class Group extends AbleObject_1.default {
399
435
  throw new errors_1.BadEmailError(emCheck.message);
400
436
  }
401
437
  }
402
- if (this.$data.parent &&
403
- (this.$data.parent.cdate == null ||
404
- this.$is(this.$data.parent) ||
405
- this.$data.parent.$isDescendant(this))) {
438
+ const parent = this.$data.parent;
439
+ await parent?.$wake();
440
+ if (parent &&
441
+ (parent.cdate == null ||
442
+ this.$is(parent) ||
443
+ (await parent.$isDescendant(this)))) {
406
444
  throw new errors_1.BadDataError("Group parent can't be itself or descendant of itself.");
407
445
  }
408
446
  try {
@@ -435,7 +473,7 @@ class Group extends AbleObject_1.default {
435
473
  return false;
436
474
  }
437
475
  async $delete() {
438
- let tilmeld = this.$nymph.tilmeld;
476
+ let tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
439
477
  if (!tilmeld.gatekeeper('tilmeld/admin')) {
440
478
  throw new errors_1.BadDataError("You don't have the authority to delete groups.");
441
479
  }
@@ -443,7 +481,7 @@ class Group extends AbleObject_1.default {
443
481
  const nymph = this.$nymph;
444
482
  const tnymph = await nymph.startTransaction(transaction);
445
483
  this.$nymph = tnymph;
446
- tilmeld = this.$nymph.tilmeld;
484
+ tilmeld = (0, enforceTilmeld_1.enforceTilmeld)(this);
447
485
  const descendants = await this.$getDescendants();
448
486
  if (descendants.length) {
449
487
  for (let curGroup of descendants) {
@@ -494,7 +532,6 @@ class Group extends AbleObject_1.default {
494
532
  return success;
495
533
  }
496
534
  }
497
- exports.default = Group;
498
535
  Group.ETYPE = 'tilmeld_group';
499
536
  Group.class = 'Group';
500
537
  Group.DEFAULT_PRIVATE_DATA = ['email', 'phone', 'abilities', 'user'];
@@ -504,4 +541,5 @@ Group.clientEnabledStaticMethods = [
504
541
  'getSecondaryGroups',
505
542
  ];
506
543
  Group.searchRestrictedData = [...Group.DEFAULT_PRIVATE_DATA];
544
+ exports.default = Group;
507
545
  //# sourceMappingURL=Group.js.map
package/dist/Group.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Group.js","sourceRoot":"","sources":["../src/Group.ts"],"names":[],"mappings":";;;;;AASA,wDAAgC;AAChC,mCAAoC;AAGpC,8DAAsC;AACtC,qCAKkB;AAgElB,MAAqB,KAAM,SAAQ,oBAAqB;IAmCtD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAa;QAChC,OAAO,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAsB,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,SAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CACvC;gBACE,KAAK,EAAE,IAAI;aACZ,EACD;gBACE,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACtE,CACF,CAAC;YACF,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,OAAO,MAAM,CAAC;aACf;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAa;QAC9B,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAsB,CAAC;IACtD,CAAC;IAED,YAAY,IAAa;QACvB,KAAK,CAAC,IAAI,CAAC,CAAC;QAtDJ,UAAK,GAAG,EAAE,CAAC;QACX,0BAAqB,GAAG;YAChC,iBAAiB;YACjB,aAAa;YACb,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,WAAW;YACX,eAAe;SAChB,CAAC;QAKQ,iBAAY,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE/C,mBAAc,GAAI,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACpD,mBAAc,GAAc,EAAE,CAAC;QAKjC,sBAAiB,GAAG,KAAK,CAAC;QAkChC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAErB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;IACH,CAAC;IASM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAClC,OAAiB,EACjB,SAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAClC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAC3D,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CACvB,CAAC;IACJ,CAAC;IASM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,OAAiB,EACjB,SAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QAED,OAAO,MAAM,IAAI,CAAC,mBAAmB,CACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EACpC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAC3D,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CACvB,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,aAA+B,EAC/B,OAA8B,EAC9B,SAAqB;QAErB,IAAI,gBAAgB,GAA0B,EAAE,CAAC;QAEjD,IAAI,aAAa,KAAK,KAAK,EAAE;YAC3B,OAAO,gBAAgB,CAAC;SACzB;QAED,gBAAgB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAC7C,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EACzC,GAAG,SAAS,CACb,CAAC;QACF,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnD,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,OAAO,QAAQ,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;oBAC/D,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;wBAC1C,OAAO,IAAI,CAAC;qBACb;oBACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;iBAC5B;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEM,UAAU;QACf,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;YACxD,OAAO,+CAA+C,CAAC;SACxD;QACD,OAAO,CACL,qCAAqC;YACrC,IAAA,aAAG,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE;YACrD,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAEM,eAAe,CAAC,KAAiB,EAAE,aAAa,GAAG,KAAK;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IACE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;YACnC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EACnC;YACA,MAAM,IAAI,qBAAY,CACpB,iEAAiE,CAClE,CAAC;SACH;QAED,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;IAEM,gBAAgB,CAAC,KAAkB,EAAE,aAAa,GAAG,KAAK;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IACE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;YACnC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EACnC;YACA,MAAM,IAAI,qBAAY,CACpB,iEAAiE,CAClE,CAAC;SACH;QAED,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAEM,QAAQ,CAAC,IAAgB,EAAE,KAA4B;QAC5D,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAOM,qBAAqB,CAAC,SAA2B;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,IAAI,GAAG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAE/C,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAExD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACrC;QAED,IACE,IAAI,IAAI,IAAI;YACZ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtD,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACzD;YAEA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;SACjC;aAAM,IACL,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI;YACvB,IAAI,IAAI,IAAI;YACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EACzB;YAEA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;IACH,CAAC;IAQM,aAAa,CAAC,UAAwC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,KAAwB,CAAC;QAC7B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SAC/C;aAAM;YACL,KAAK,GAAG,UAAU,CAAC;SACpB;QACD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;YACtB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;YAC7B,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAOM,KAAK,CAAC,YAAY;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAClC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB;YACE,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;YACxB,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;SACtB,CACF,CAAC;IACJ,CAAC;IAQM,KAAK,CAAC,eAAe,CAC1B,OAAO,GAAG,KAAK;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,MAAM,GAA0B,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAC5C,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB;YACE,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;YACxB,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;SACtB,CACF,CAAC;QACF,KAAK,IAAI,MAAM,IAAI,QAAQ,EAAE;YAC3B,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC9D;QACD,IAAI,OAAO,EAAE;YACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAQM,mBAAmB,CAAC,OAAO,GAAG,KAAK;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,MAAM,GAA0B,EAAE,CAAC;QACvC,IAAI,MAA8B,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,GAAG;YACD,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CACvC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAChC;gBACE,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;gBACxB,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aACtB,CACF,CAAC;YACF,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC1D;YACD,MAAM,EAAE,CAAC;SACV,QAAQ,MAAM,IAAI,IAAI,EAAE;QACzB,IAAI,OAAO,EAAE;YACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAaM,SAAS;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAC9D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,EAAE;YACzE,KAAK,EAAE,CAAC;YACR,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;SACtB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAUM,KAAK,CAAC,SAAS,CACpB,WAAW,GAAG,KAAK,EACnB,KAAc,EACd,MAAe;QAEf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,MAAM,GAA0B,EAAE,CAAC;QACvC,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;SACvC;QACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAClC;YACE,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,KAAK;YACL,MAAM;SACP,EACD;YACE,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;SACzB,EACD;YACE,IAAI,EAAE,GAAG;YACT,GAAG,EAAE;gBACH,CAAC,OAAO,EAAE,IAAI,CAAC;gBACf,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAChB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAA+B,EAAE,CAAC;oBACpD,OAAO;oBACP,KAAK;iBACN,CAAC;gBACF,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAA+B,EAAE,CAAC;oBACpD,QAAQ;oBACR,KAAK;iBACN,CAAC;aACH;SACF,CACF,CAAC;IACJ,CAAC;IAOM,KAAK,CAAC,eAAe;QAI1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YAClC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;gBAChE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;aAClE;YACD,IACE,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAC9D;gBACA,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EACL,6BAA6B;wBAC7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;wBAChC,cAAc;iBACjB,CAAC;aACH;YACD,IACE,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAC9B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CACpC,CAAC,MAAM,EACR;gBACA,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;iBACzC,CAAC;aACH;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;gBACzD,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;iBACzC,CAAC;aACH;YAED,MAAM,QAAQ,GAAa;gBACzB,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE;oBACL,WAAW;oBACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC3D;aACF,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;aAC/B;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EACtC,QAAQ,CACT,CAAC;YACF,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;aAC/D;YAED,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EACL,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,yBAAyB;aACxE,CAAC;SACH;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACxC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;gBAChE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;aAC/D;YACD,IACE,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAC9D;gBACA,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EACL,yBAAyB;wBACzB,OAAO,CAAC,MAAM,CAAC,iBAAiB;wBAChC,cAAc;iBACjB,CAAC;aACH;YAED,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAOM,KAAK,CAAC,WAAW;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;YAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;YAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;SACpE;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC1D,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB;aAC9C,CAAC;SACH;QACD,MAAM,QAAQ,GAAa;YACzB,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACzE,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC/B;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EACtC,QAAQ,CACT,CAAC;QACF,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,2CAA2C;aACrD,CAAC;SACH;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EACL,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,yBAAyB;SACpE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;YACvE,OAAO,KAAK,CAAC;SACd;QAGD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YACjC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;SACzC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAG1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxB;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACxB;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;SAClC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAChC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACpC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;SACvC;QAGD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE;YAC5D,cAAc;YACd,eAAe;YACf,IAAI;YACJ,SAAS;SACV,CAAa,CAAC;QAGf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,MAAM,IAAI,yBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,MAAM,IAAI,sBAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAC1C;SACF;QAGD,IACE,IAAI,CAAC,KAAK,CAAC,MAAM;YACjB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI;gBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EACxC;YACA,MAAM,IAAI,qBAAY,CACpB,uDAAuD,CACxD,CAAC;SACH;QAED,IAAI;YACF,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACrC;QAAC,OAAO,CAAM,EAAE;YACf,MAAM,IAAI,qBAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACpC;QAGD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC7B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAChD,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,CACxC,CAAC;YACF,IAAI,cAAc,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;gBACvD,cAAc,CAAC,cAAc,GAAG,KAAK,CAAC;gBACtC,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE;oBACnC,MAAM,IAAI,+CAAsC,CAC9C,+CAA+C;wBAC7C,GAAG,cAAc,CAAC,SAAS,GAAG,CACjC,CAAC;iBACH;aACF;SACF;QAED,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAKM,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEM,kBAAkB;QACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YACxC,MAAM,IAAI,qBAAY,CAAC,gDAAgD,CAAC,CAAC;SAC1E;QAED,MAAM,WAAW,GAAG,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAGzC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QACjD,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,KAAK,IAAI,QAAQ,IAAI,WAAW,EAAE;gBAChC,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;oBAC/B,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,OAAO,KAAK,CAAC;iBACd;aACF;SACF;QAGD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,WAAW,CAC3C;YACE,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;SACb,EACD;YACE,IAAI,EAAE,GAAG;YACT,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;SACrB,CACF,CAAC;QACF,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;gBACzB,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,OAAO,KAAK,CAAC;aACd;SACF;QAGD,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,WAAW,CAC7C;YACE,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;SACb,EACD;YACE,IAAI,EAAE,GAAG;YACT,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;SACtB,CACF,CAAC;QACF,KAAK,IAAI,IAAI,IAAI,cAAc,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;gBACzB,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;aACd;SACF;QAGD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,OAAO,EAAE;YACX,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAClC;aAAM;YACL,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;;AAhuBH,wBAiuBC;AA5tBQ,WAAK,GAAG,eAAe,CAAC;AACxB,WAAK,GAAG,OAAO,CAAC;AAER,0BAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAC/D,4BAAsB,GAAa,EAAE,CAAC;AAYvC,gCAA0B,GAAG;IACzC,kBAAkB;IAClB,oBAAoB;CACrB,CAAC;AAEY,0BAAoB,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"Group.js","sourceRoot":"","sources":["../src/Group.ts"],"names":[],"mappings":"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"}
package/dist/Tilmeld.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { Nymph, EntityInterface, FormattedSelector, Options, TilmeldInterface, TilmeldAccessLevels } from '@nymphjs/nymph';
1
+ /// <reference types="cookie-parser" />
2
+ import { Nymph, EntityInterface, FormattedSelector, Options, TilmeldInterface, TilmeldAccessLevels, ACProperties } from '@nymphjs/nymph';
2
3
  import { Request, Response } from 'express';
3
4
  import { Config } from './conf';
4
5
  import Group from './Group';
5
6
  import User, { UserData } from './User';
6
- import { AccessControlData } from './Tilmeld.types';
7
7
  export default class Tilmeld implements TilmeldInterface {
8
8
  nymph: Nymph;
9
9
  config: Config;
@@ -12,7 +12,8 @@ export default class Tilmeld implements TilmeldInterface {
12
12
  Group: typeof Group;
13
13
  request: Request | null;
14
14
  response: Response | null;
15
- private skipAuthenticate;
15
+ private alreadyLoggedOutSwitch;
16
+ private gatekeeperCache;
16
17
  constructor(config: Partial<Config> & {
17
18
  jwtSecret: string;
18
19
  });
@@ -21,12 +22,14 @@ export default class Tilmeld implements TilmeldInterface {
21
22
  gatekeeper(ability?: string): boolean;
22
23
  private initAccessControl;
23
24
  addAccessControlSelectors(options: Options, selectors: FormattedSelector[]): void;
24
- checkPermissions(entity: EntityInterface & AccessControlData, type?: TilmeldAccessLevels, user?: (User & UserData) | false): boolean;
25
- checkClientUIDPermissions(name: string, type?: TilmeldAccessLevels, user?: (User & UserData) | false): boolean;
26
- fillSession(user: User & UserData): void;
25
+ checkPermissions(entity: EntityInterface, type?: TilmeldAccessLevels, user?: (User & UserData) | false, acProperties?: ACProperties): boolean;
26
+ checkClientUIDPermissions(name: string, type?: TilmeldAccessLevels, user?: (User & UserData) | false): Promise<boolean>;
27
+ fillSession(user: User & UserData): Promise<void>;
27
28
  clearSession(): void;
28
29
  extractToken(token: string): Promise<(User & UserData) | null>;
29
- authenticate(skipXsrfToken?: boolean): boolean;
30
- login(user: User & UserData, sendAuthHeader: boolean): boolean;
31
- logout(): void;
30
+ authenticate(skipXsrfToken?: boolean): Promise<boolean>;
31
+ login(user: User & UserData, sendAuthHeader: boolean, sendCookie?: boolean): Promise<boolean>;
32
+ loginSwitch(user: User & UserData, sendAuthHeader: boolean, sendCookie?: boolean): Promise<boolean>;
33
+ logout(clearCookie?: boolean): Promise<void>;
34
+ logoutSwitch(clearCookie?: boolean): Promise<void>;
32
35
  }