@getcommunity/gc-validators 0.0.216 → 0.0.217

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 (86) hide show
  1. package/dist/chunk-CKQMccvm.cjs +28 -0
  2. package/dist/constants.cjs +461 -438
  3. package/dist/constants.cjs.map +1 -1
  4. package/dist/constants.d.cts +2 -233
  5. package/dist/constants.d.mts +2 -0
  6. package/dist/constants.mjs +355 -0
  7. package/dist/constants.mjs.map +1 -0
  8. package/dist/index-B6pNPQrV.d.mts +4192 -0
  9. package/dist/index-CQtazKyX.d.cts +4192 -0
  10. package/dist/index-CiWVYf_f.d.cts +292 -0
  11. package/dist/index-DOR_It7I.d.mts +292 -0
  12. package/dist/index.cjs +350 -1388
  13. package/dist/index.d.cts +3 -10
  14. package/dist/index.d.mts +3 -0
  15. package/dist/index.mjs +6 -0
  16. package/dist/permissions.cjs +757 -30
  17. package/dist/permissions.cjs.map +1 -1
  18. package/dist/permissions.d.cts +2 -747
  19. package/dist/permissions.d.mts +2 -0
  20. package/dist/permissions.mjs +753 -0
  21. package/dist/permissions.mjs.map +1 -0
  22. package/dist/schemas.cjs +1781 -896
  23. package/dist/schemas.cjs.map +1 -1
  24. package/dist/schemas.d.cts +2 -1935
  25. package/dist/schemas.d.mts +2 -0
  26. package/dist/schemas.mjs +1559 -0
  27. package/dist/schemas.mjs.map +1 -0
  28. package/dist/types.cjs +0 -6
  29. package/dist/types.d.cts +2 -851
  30. package/dist/types.d.mts +2 -0
  31. package/dist/types.mjs +1 -0
  32. package/dist/utilities.cjs +76 -38
  33. package/dist/utilities.cjs.map +1 -1
  34. package/dist/utilities.d.cts +2 -26
  35. package/dist/utilities.d.mts +2 -0
  36. package/dist/utilities.mjs +68 -0
  37. package/dist/utilities.mjs.map +1 -0
  38. package/package.json +4 -4
  39. package/dist/chunk-57PRSDKM.cjs +0 -368
  40. package/dist/chunk-57PRSDKM.cjs.map +0 -1
  41. package/dist/chunk-7CI3M2JM.js +0 -3
  42. package/dist/chunk-7CI3M2JM.js.map +0 -1
  43. package/dist/chunk-ABPKJ5AP.js +0 -259
  44. package/dist/chunk-ABPKJ5AP.js.map +0 -1
  45. package/dist/chunk-BYTL5J7D.js +0 -2606
  46. package/dist/chunk-BYTL5J7D.js.map +0 -1
  47. package/dist/chunk-CDBT3J75.cjs +0 -4
  48. package/dist/chunk-CDBT3J75.cjs.map +0 -1
  49. package/dist/chunk-DU5WCXJJ.js +0 -685
  50. package/dist/chunk-DU5WCXJJ.js.map +0 -1
  51. package/dist/chunk-IMI6XEMX.cjs +0 -2849
  52. package/dist/chunk-IMI6XEMX.cjs.map +0 -1
  53. package/dist/chunk-NMDMJZPF.cjs +0 -692
  54. package/dist/chunk-NMDMJZPF.cjs.map +0 -1
  55. package/dist/chunk-NNLSUHMQ.js +0 -63
  56. package/dist/chunk-NNLSUHMQ.js.map +0 -1
  57. package/dist/chunk-UAQWYRXG.cjs +0 -92
  58. package/dist/chunk-UAQWYRXG.cjs.map +0 -1
  59. package/dist/comment.document-HT6qJLh5.d.cts +0 -468
  60. package/dist/comment.document-xCsfHOer.d.ts +0 -468
  61. package/dist/constants.d.ts +0 -233
  62. package/dist/constants.js +0 -3
  63. package/dist/constants.js.map +0 -1
  64. package/dist/font.constants-BVwxlH3J.d.cts +0 -52
  65. package/dist/font.constants-BVwxlH3J.d.ts +0 -52
  66. package/dist/index.cjs.map +0 -1
  67. package/dist/index.d.ts +0 -10
  68. package/dist/index.js +0 -7
  69. package/dist/index.js.map +0 -1
  70. package/dist/permission.constants-B99nobws.d.cts +0 -30
  71. package/dist/permission.constants-B99nobws.d.ts +0 -30
  72. package/dist/permissions.d.ts +0 -747
  73. package/dist/permissions.js +0 -3
  74. package/dist/permissions.js.map +0 -1
  75. package/dist/response-8Bkawql4.d.cts +0 -56
  76. package/dist/response-8Bkawql4.d.ts +0 -56
  77. package/dist/schemas.d.ts +0 -1935
  78. package/dist/schemas.js +0 -5
  79. package/dist/schemas.js.map +0 -1
  80. package/dist/types.cjs.map +0 -1
  81. package/dist/types.d.ts +0 -851
  82. package/dist/types.js +0 -3
  83. package/dist/types.js.map +0 -1
  84. package/dist/utilities.d.ts +0 -26
  85. package/dist/utilities.js +0 -3
  86. package/dist/utilities.js.map +0 -1
@@ -0,0 +1,753 @@
1
+ //#region src/permissions/permission.abac.ts
2
+ const ROLE_PERMISSIONS = {
3
+ authenticated: {
4
+ "user-account": {
5
+ list: false,
6
+ create: false,
7
+ read: false,
8
+ update: false,
9
+ delete: false
10
+ },
11
+ comment: {
12
+ list: true,
13
+ create: true,
14
+ update: (u, p, d) => u.id === Number(d?.author?.id),
15
+ delete: (u, p, d) => u.id === Number(d?.author?.id),
16
+ report: true
17
+ },
18
+ client: {
19
+ access: false,
20
+ billing: false,
21
+ owner: false,
22
+ manager: false,
23
+ admin: false,
24
+ list: false,
25
+ create: false,
26
+ read: false,
27
+ update: false,
28
+ delete: false
29
+ },
30
+ "client-user": {
31
+ list: false,
32
+ create: false,
33
+ read: false,
34
+ update: false,
35
+ delete: false
36
+ },
37
+ "client-content-pillar": {
38
+ list: false,
39
+ create: false,
40
+ read: false,
41
+ update: false,
42
+ delete: false
43
+ },
44
+ "client-media-platform": {
45
+ list: false,
46
+ create: false,
47
+ read: false,
48
+ update: false,
49
+ delete: false
50
+ },
51
+ "client-media-platform-content-type": {
52
+ list: false,
53
+ create: false,
54
+ read: false,
55
+ update: false,
56
+ delete: false
57
+ },
58
+ "client-project": {
59
+ list: false,
60
+ create: false,
61
+ read: false,
62
+ update: false,
63
+ delete: false,
64
+ assign: false
65
+ },
66
+ "client-report": {
67
+ list: false,
68
+ create: false,
69
+ read: false,
70
+ update: false,
71
+ delete: false
72
+ },
73
+ "client-styleguide": {
74
+ list: false,
75
+ create: false,
76
+ read: false,
77
+ update: false,
78
+ delete: false
79
+ },
80
+ "content-pillar": {
81
+ list: false,
82
+ create: false,
83
+ read: false,
84
+ update: false,
85
+ delete: false
86
+ },
87
+ "media-platform": {
88
+ list: false,
89
+ create: false,
90
+ read: false,
91
+ update: false,
92
+ delete: false
93
+ },
94
+ "media-content-type": {
95
+ list: false,
96
+ create: false,
97
+ read: false,
98
+ update: false,
99
+ delete: false
100
+ },
101
+ "monday-workspace": {
102
+ list: false,
103
+ create: false,
104
+ read: false,
105
+ update: false,
106
+ delete: false
107
+ },
108
+ "utm-tracking-link": {
109
+ list: false,
110
+ create: false,
111
+ read: false,
112
+ update: false,
113
+ delete: false
114
+ },
115
+ gcflytour: {
116
+ list: true,
117
+ create: false,
118
+ read: true,
119
+ update: false,
120
+ delete: false
121
+ },
122
+ "gcflytour-snap": {
123
+ list: true,
124
+ create: false,
125
+ read: true,
126
+ update: false,
127
+ delete: false
128
+ }
129
+ },
130
+ public: {
131
+ "user-account": {
132
+ list: false,
133
+ create: false,
134
+ read: false,
135
+ update: false,
136
+ delete: false
137
+ },
138
+ comment: {
139
+ list: true,
140
+ create: false,
141
+ update: false,
142
+ delete: false,
143
+ report: false
144
+ },
145
+ client: {
146
+ access: false,
147
+ billing: false,
148
+ owner: false,
149
+ manager: false,
150
+ admin: false,
151
+ list: false,
152
+ create: false,
153
+ read: false,
154
+ update: false,
155
+ delete: false
156
+ },
157
+ "client-user": {
158
+ list: false,
159
+ create: false,
160
+ read: false,
161
+ update: false,
162
+ delete: false
163
+ },
164
+ "client-content-pillar": {
165
+ list: false,
166
+ create: false,
167
+ read: false,
168
+ update: false,
169
+ delete: false
170
+ },
171
+ "client-media-platform": {
172
+ list: false,
173
+ create: false,
174
+ read: false,
175
+ update: false,
176
+ delete: false
177
+ },
178
+ "client-media-platform-content-type": {
179
+ list: false,
180
+ create: false,
181
+ read: false,
182
+ update: false,
183
+ delete: false
184
+ },
185
+ "client-project": {
186
+ list: false,
187
+ create: false,
188
+ read: false,
189
+ update: false,
190
+ delete: false,
191
+ assign: false
192
+ },
193
+ "client-report": {
194
+ list: false,
195
+ create: false,
196
+ read: false,
197
+ update: false,
198
+ delete: false
199
+ },
200
+ "client-styleguide": {
201
+ list: false,
202
+ create: false,
203
+ read: false,
204
+ update: false,
205
+ delete: false
206
+ },
207
+ "content-pillar": {
208
+ list: false,
209
+ create: false,
210
+ read: false,
211
+ update: false,
212
+ delete: false
213
+ },
214
+ "media-platform": {
215
+ list: false,
216
+ create: false,
217
+ read: false,
218
+ update: false,
219
+ delete: false
220
+ },
221
+ "media-content-type": {
222
+ list: false,
223
+ create: false,
224
+ read: false,
225
+ update: false,
226
+ delete: false
227
+ },
228
+ "monday-workspace": {
229
+ list: false,
230
+ create: false,
231
+ read: false,
232
+ update: false,
233
+ delete: false
234
+ },
235
+ "utm-tracking-link": {
236
+ list: false,
237
+ create: false,
238
+ read: false,
239
+ update: false,
240
+ delete: false
241
+ },
242
+ gcflytour: {
243
+ list: true,
244
+ create: false,
245
+ read: true,
246
+ update: false,
247
+ delete: false
248
+ },
249
+ "gcflytour-snap": {
250
+ list: true,
251
+ create: false,
252
+ read: true,
253
+ update: false,
254
+ delete: false
255
+ }
256
+ },
257
+ employee: {
258
+ "user-account": {
259
+ list: true,
260
+ create: false,
261
+ read: true,
262
+ update: (u, p, d) => u.account.documentId === d?.documentId,
263
+ delete: false
264
+ },
265
+ comment: {
266
+ list: true,
267
+ create: true,
268
+ update: (u, p, d) => u.id === Number(d?.author?.id),
269
+ delete: (u, p, d) => u.id === Number(d?.author?.id),
270
+ report: true
271
+ },
272
+ client: {
273
+ access: (u, p, d) => p.scopes.includes("client:access"),
274
+ billing: (u, p, d) => p.scopes.includes("client:billing"),
275
+ owner: (u, p, d) => p.scopes.includes("client:owner"),
276
+ manager: (u, p, d) => p.scopes.includes("client:manager"),
277
+ admin: (u, p, d) => p.scopes.includes("client:admin"),
278
+ list: (u, p, d) => p.scopes.includes("client:access"),
279
+ create: false,
280
+ read: (u, p, d) => p.scopes.includes("client:access"),
281
+ update: (u, p, d) => p.scopes.includes("client:manager"),
282
+ delete: false
283
+ },
284
+ "client-user": {
285
+ list: true,
286
+ create: false,
287
+ read: true,
288
+ update: false,
289
+ delete: false,
290
+ verify: true
291
+ },
292
+ "client-content-pillar": {
293
+ list: (u, p, d) => p.scopes.includes("client-content-pillar:list"),
294
+ create: (u, p) => p.scopes.includes("client-content-pillar:create"),
295
+ read: (u, p, d) => p.scopes.includes("client-content-pillar:read"),
296
+ update: (u, p, d) => p.scopes.includes("client-content-pillar:update"),
297
+ delete: false
298
+ },
299
+ "client-media-platform": {
300
+ list: (u, p, d) => p.scopes.includes("client-media-platform:list"),
301
+ create: (u, p) => p.scopes.includes("client-media-platform:create"),
302
+ read: (u, p, d) => p.scopes.includes("client-media-platform:read"),
303
+ update: (u, p, d) => p.scopes.includes("client-media-platform:update"),
304
+ delete: false
305
+ },
306
+ "client-media-platform-content-type": {
307
+ list: (u, p, d) => p.scopes.includes("client-media-platform-content-type:list"),
308
+ create: (u, p) => p.scopes.includes("client-media-platform-content-type:create"),
309
+ read: (u, p, d) => p.scopes.includes("client-media-platform-content-type:read"),
310
+ update: (u, p, d) => p.scopes.includes("client-media-platform-content-type:update"),
311
+ delete: false
312
+ },
313
+ "client-project": {
314
+ list: (u, p, d) => p.scopes.includes("client-project:list"),
315
+ create: (u, p) => p.scopes.includes("client-project:create"),
316
+ read: (u, p, d) => p.scopes.includes("client-project:read"),
317
+ update: (u, p, d) => p.scopes.includes("client-project:update"),
318
+ delete: false,
319
+ assign: (u, p, d) => p.scopes.includes("client-project:assign")
320
+ },
321
+ "client-report": {
322
+ list: (u, p, d) => p.scopes.includes("client-report:list"),
323
+ create: (u, p) => p.scopes.includes("client-report:create"),
324
+ read: (u, p, d) => p.scopes.includes("client-report:read"),
325
+ update: (u, p, d) => p.scopes.includes("client-report:update"),
326
+ delete: false
327
+ },
328
+ "client-styleguide": {
329
+ list: (u, p, d) => p.scopes.includes("client-styleguide:list"),
330
+ create: false,
331
+ read: (u, p, d) => p.scopes.includes("client-styleguide:read"),
332
+ update: false,
333
+ delete: false
334
+ },
335
+ "content-pillar": {
336
+ list: true,
337
+ create: false,
338
+ read: true,
339
+ update: false,
340
+ delete: false
341
+ },
342
+ "media-platform": {
343
+ list: true,
344
+ create: false,
345
+ read: true,
346
+ update: false,
347
+ delete: false
348
+ },
349
+ "media-content-type": {
350
+ list: true,
351
+ create: false,
352
+ read: true,
353
+ update: false,
354
+ delete: false
355
+ },
356
+ "monday-workspace": {
357
+ list: (u, p, d) => p.scopes.includes("monday-workspace:list"),
358
+ create: (u, p) => p.scopes.includes("monday-workspace:create"),
359
+ read: (u, p, d) => p.scopes.includes("monday-workspace:read"),
360
+ update: (u, p, d) => p.scopes.includes("monday-workspace:update"),
361
+ delete: (u, p, d) => p.scopes.includes("monday-workspace:delete")
362
+ },
363
+ "utm-tracking-link": {
364
+ list: (u, p, d) => p.scopes.includes("utm-tracking-link:list"),
365
+ create: (u, p) => p.scopes.includes("utm-tracking-link:create"),
366
+ read: (u, p, d) => d?.creator?.documentId === u.documentId || p.scopes.includes("utm-tracking-link:read"),
367
+ update: (u, p, d) => d?.creator?.documentId === u.documentId || p.scopes.includes("utm-tracking-link:update"),
368
+ delete: (u, p, d) => d?.creator?.documentId === u.documentId || p.scopes.includes("utm-tracking-link:delete")
369
+ },
370
+ gcflytour: {
371
+ list: true,
372
+ create: (u, p) => p.scopes.includes("gcflytour:create"),
373
+ read: true,
374
+ update: (u, p, d) => p.scopes.includes("gcflytour:update"),
375
+ delete: (u, p, d) => p.scopes.includes("gcflytour:delete")
376
+ },
377
+ "gcflytour-snap": {
378
+ list: true,
379
+ create: (u, p) => p.scopes.includes("gcflytour-snap:create"),
380
+ read: true,
381
+ update: (u, p, d) => p.scopes.includes("gcflytour-snap:update"),
382
+ delete: (u, p, d) => p.scopes.includes("gcflytour-snap:delete")
383
+ }
384
+ },
385
+ manager: {
386
+ "user-account": {
387
+ list: true,
388
+ create: false,
389
+ read: true,
390
+ update: (u, p, d) => u.account.documentId === d?.documentId,
391
+ delete: false
392
+ },
393
+ comment: {
394
+ list: true,
395
+ create: true,
396
+ update: (u, p, d) => u.id === Number(d?.author?.id),
397
+ delete: (u, p, d) => u.id === Number(d?.author?.id),
398
+ report: true
399
+ },
400
+ client: {
401
+ access: true,
402
+ billing: true,
403
+ owner: true,
404
+ manager: true,
405
+ admin: true,
406
+ list: true,
407
+ create: true,
408
+ read: true,
409
+ update: true,
410
+ delete: false
411
+ },
412
+ "client-user": {
413
+ list: true,
414
+ create: true,
415
+ read: true,
416
+ update: true,
417
+ delete: true,
418
+ verify: true
419
+ },
420
+ "client-content-pillar": {
421
+ list: true,
422
+ create: true,
423
+ read: true,
424
+ update: true,
425
+ delete: true
426
+ },
427
+ "client-media-platform": {
428
+ list: true,
429
+ create: true,
430
+ read: true,
431
+ update: true,
432
+ delete: true
433
+ },
434
+ "client-media-platform-content-type": {
435
+ list: true,
436
+ create: true,
437
+ read: true,
438
+ update: true,
439
+ delete: true
440
+ },
441
+ "client-project": {
442
+ list: true,
443
+ create: true,
444
+ read: true,
445
+ update: true,
446
+ delete: true,
447
+ assign: true
448
+ },
449
+ "client-report": {
450
+ list: true,
451
+ create: true,
452
+ read: true,
453
+ update: true,
454
+ delete: true
455
+ },
456
+ "client-styleguide": {
457
+ list: true,
458
+ create: true,
459
+ read: true,
460
+ update: true,
461
+ delete: true
462
+ },
463
+ "content-pillar": {
464
+ list: true,
465
+ create: true,
466
+ read: true,
467
+ update: true,
468
+ delete: true
469
+ },
470
+ "media-platform": {
471
+ list: true,
472
+ create: true,
473
+ read: true,
474
+ update: true,
475
+ delete: true
476
+ },
477
+ "media-content-type": {
478
+ list: true,
479
+ create: true,
480
+ read: true,
481
+ update: true,
482
+ delete: true
483
+ },
484
+ "monday-workspace": {
485
+ list: true,
486
+ create: true,
487
+ read: true,
488
+ update: true,
489
+ delete: true
490
+ },
491
+ "utm-tracking-link": {
492
+ list: true,
493
+ create: true,
494
+ read: true,
495
+ update: true,
496
+ delete: true
497
+ },
498
+ gcflytour: {
499
+ list: true,
500
+ create: true,
501
+ read: true,
502
+ update: true,
503
+ delete: true
504
+ },
505
+ "gcflytour-snap": {
506
+ list: true,
507
+ create: true,
508
+ read: true,
509
+ update: true,
510
+ delete: true
511
+ }
512
+ },
513
+ client: {
514
+ "user-account": {
515
+ list: true,
516
+ create: false,
517
+ read: true,
518
+ update: (u, p, d) => u.account.documentId === d?.documentId,
519
+ delete: false
520
+ },
521
+ comment: {
522
+ list: true,
523
+ create: true,
524
+ update: (u, p, d) => u.id === Number(d?.author?.id),
525
+ delete: (u, p, d) => u.id === Number(d?.author?.id),
526
+ report: true
527
+ },
528
+ client: {
529
+ access: (u, p, d) => p.scopes.includes("client:access"),
530
+ billing: (u, p, d) => p.scopes.includes("client:billing"),
531
+ owner: (u, p, d) => p.scopes.includes("client:owner"),
532
+ manager: (u, p, d) => p.scopes.includes("client:manager"),
533
+ admin: (u, p, d) => p.scopes.includes("client:admin"),
534
+ list: (u, p, d) => p.scopes.includes("client:access"),
535
+ create: false,
536
+ read: (u, p, d) => p.scopes.includes("client:access"),
537
+ update: (u, p, d) => p.scopes.includes("client:manager"),
538
+ delete: false
539
+ },
540
+ "client-user": {
541
+ list: true,
542
+ create: false,
543
+ read: true,
544
+ update: false,
545
+ delete: false,
546
+ verify: true
547
+ },
548
+ "client-content-pillar": {
549
+ list: (u, p, d) => p.scopes.includes("client-content-pillar:list"),
550
+ create: (u, p) => p.scopes.includes("client-content-pillar:create"),
551
+ read: (u, p, d) => p.scopes.includes("client-content-pillar:read"),
552
+ update: (u, p, d) => p.scopes.includes("client-content-pillar:update"),
553
+ delete: false
554
+ },
555
+ "client-media-platform": {
556
+ list: (u, p, d) => p.scopes.includes("client-media-platform:list"),
557
+ create: (u, p) => p.scopes.includes("client-media-platform:create"),
558
+ read: (u, p, d) => p.scopes.includes("client-media-platform:read"),
559
+ update: (u, p, d) => p.scopes.includes("client-media-platform:update"),
560
+ delete: false
561
+ },
562
+ "client-media-platform-content-type": {
563
+ list: (u, p, d) => p.scopes.includes("client-media-platform-content-type:list"),
564
+ create: (u, p) => p.scopes.includes("client-media-platform-content-type:create"),
565
+ read: (u, p, d) => p.scopes.includes("client-media-platform-content-type:read"),
566
+ update: (u, p, d) => p.scopes.includes("client-media-platform-content-type:update"),
567
+ delete: false
568
+ },
569
+ "client-project": {
570
+ list: (u, p, d) => p.scopes.includes("client-project:list"),
571
+ create: (u, p) => p.scopes.includes("client-project:create"),
572
+ read: (u, p, d) => p.scopes.includes("client-project:read"),
573
+ update: (u, p, d) => p.scopes.includes("client-project:update"),
574
+ delete: false,
575
+ assign: (u, p, d) => p.scopes.includes("client-project:assign")
576
+ },
577
+ "client-report": {
578
+ list: (u, p, d) => p.scopes.includes("client-report:list"),
579
+ create: (u, p) => p.scopes.includes("client-report:create"),
580
+ read: (u, p, d) => p.scopes.includes("client-report:read"),
581
+ update: (u, p, d) => p.scopes.includes("client-report:update"),
582
+ delete: false
583
+ },
584
+ "client-styleguide": {
585
+ list: (u, p, d) => p.scopes.includes("client-styleguide:list"),
586
+ create: false,
587
+ read: (u, p, d) => p.scopes.includes("client-styleguide:read"),
588
+ update: false,
589
+ delete: false
590
+ },
591
+ "content-pillar": {
592
+ list: true,
593
+ create: false,
594
+ read: true,
595
+ update: false,
596
+ delete: false
597
+ },
598
+ "media-platform": {
599
+ list: true,
600
+ create: false,
601
+ read: true,
602
+ update: false,
603
+ delete: false
604
+ },
605
+ "media-content-type": {
606
+ list: true,
607
+ create: false,
608
+ read: true,
609
+ update: false,
610
+ delete: false
611
+ },
612
+ "monday-workspace": {
613
+ list: (u, p, d) => p.scopes.includes("monday-workspace:list"),
614
+ create: false,
615
+ read: (u, p, d) => p.scopes.includes("monday-workspace:read"),
616
+ update: false,
617
+ delete: false
618
+ },
619
+ "utm-tracking-link": {
620
+ list: (u, p, d) => p.scopes.includes("utm-tracking-link:list"),
621
+ create: (u, p) => p.scopes.includes("utm-tracking-link:create"),
622
+ read: (u, p, d) => d?.creator?.documentId === u.documentId || p.scopes.includes("utm-tracking-link:read"),
623
+ update: (u, p, d) => d?.creator?.documentId === u.documentId || p.scopes.includes("utm-tracking-link:update"),
624
+ delete: (u, p, d) => d?.creator?.documentId === u.documentId || p.scopes.includes("utm-tracking-link:delete")
625
+ },
626
+ gcflytour: {
627
+ list: true,
628
+ create: false,
629
+ read: true,
630
+ update: false,
631
+ delete: false
632
+ },
633
+ "gcflytour-snap": {
634
+ list: true,
635
+ create: false,
636
+ read: true,
637
+ update: false,
638
+ delete: false
639
+ }
640
+ }
641
+ };
642
+ //#endregion
643
+ //#region src/permissions/permission.constants.ts
644
+ /**
645
+ * Example usage of ClientEntityScope type
646
+ * @reference https://youtube.com/shorts/zOseJFD447U?si=xX8DYEHdl9YtN7S4
647
+ *
648
+ * > const validScope: ClientEntityScope = "utm-tracking-link:list"; // ✅
649
+ * > const invalidScope: ClientEntityScope = "blog-post:import"; // ❌ Type error!
650
+ */
651
+ const CLIENT_ENTITY_PERMISSIONS = {
652
+ client: [
653
+ "admin",
654
+ "owner",
655
+ "manager",
656
+ "billing",
657
+ "access"
658
+ ],
659
+ "client-project": [
660
+ "list",
661
+ "create",
662
+ "read",
663
+ "update",
664
+ "delete",
665
+ "assign"
666
+ ],
667
+ "client-media-platform": [
668
+ "list",
669
+ "create",
670
+ "read",
671
+ "update",
672
+ "delete"
673
+ ],
674
+ "client-media-platform-content-type": [
675
+ "list",
676
+ "create",
677
+ "read",
678
+ "update",
679
+ "delete"
680
+ ],
681
+ "client-content-pillar": [
682
+ "list",
683
+ "create",
684
+ "read",
685
+ "update",
686
+ "delete"
687
+ ],
688
+ "client-report": [
689
+ "list",
690
+ "create",
691
+ "read",
692
+ "update",
693
+ "delete"
694
+ ],
695
+ "client-styleguide": [
696
+ "list",
697
+ "create",
698
+ "read",
699
+ "update",
700
+ "delete"
701
+ ],
702
+ "monday-workspace": [
703
+ "list",
704
+ "create",
705
+ "read",
706
+ "update",
707
+ "delete"
708
+ ],
709
+ "utm-tracking-link": [
710
+ "list",
711
+ "create",
712
+ "read",
713
+ "update",
714
+ "delete"
715
+ ],
716
+ gcflytour: [
717
+ "list",
718
+ "create",
719
+ "read",
720
+ "update",
721
+ "delete"
722
+ ],
723
+ "gcflytour-snap": [
724
+ "list",
725
+ "create",
726
+ "read",
727
+ "update",
728
+ "delete"
729
+ ]
730
+ };
731
+ const CLIENT_ENTITY_KEYS = Object.keys(CLIENT_ENTITY_PERMISSIONS);
732
+ const CLIENT_ENTITY_SCOPES = Object.entries(CLIENT_ENTITY_PERMISSIONS).flatMap(([entity, actions]) => actions.map((action) => `${entity}:${action}`));
733
+ //#endregion
734
+ //#region src/permissions/permission.utilities.ts
735
+ function hasPermission(user, permissions, resource, action, data) {
736
+ if (!user) return false;
737
+ const permission = ROLE_PERMISSIONS[user.role.type][resource]?.[action];
738
+ if (permission == null) return false;
739
+ if (typeof permission === "boolean") return permission;
740
+ return permission(user, permissions, data);
741
+ }
742
+ function canAssignPermission(user, resource, action) {
743
+ if (!user) return false;
744
+ const permission = ROLE_PERMISSIONS[user.role.type][resource]?.[action];
745
+ if (permission == null) return false;
746
+ if (typeof permission === "boolean") return permission;
747
+ if (typeof permission === "function") return true;
748
+ return false;
749
+ }
750
+ //#endregion
751
+ export { CLIENT_ENTITY_KEYS, CLIENT_ENTITY_PERMISSIONS, CLIENT_ENTITY_SCOPES, ROLE_PERMISSIONS, canAssignPermission, hasPermission };
752
+
753
+ //# sourceMappingURL=permissions.mjs.map