@getcommunity/gc-validators 0.0.216 → 0.0.218

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 @@
1
+ {"version":3,"file":"permissions.mjs","names":[],"sources":["../src/permissions/permission.abac.ts","../src/permissions/permission.constants.ts","../src/permissions/permission.utilities.ts"],"sourcesContent":["/**\n * Attribute-based access control (ABAC) permissions\n *\n * @reference https://github.com/WebDevSimplified/permission-system/blob/main/auth-abac.ts\n */\n\nimport { RolesWithPermissions } from \"./permission.types\"\n\nexport const ROLE_PERMISSIONS = {\n authenticated: {\n \"user-account\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n comment: {\n list: true,\n create: true,\n update: (u, p, d) => u.id === Number(d?.author?.id),\n delete: (u, p, d) => u.id === Number(d?.author?.id),\n report: true\n },\n client: {\n access: false,\n billing: false,\n owner: false,\n manager: false,\n admin: false,\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-user\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-content-pillar\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-media-platform\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-media-platform-content-type\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-project\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false,\n assign: false\n },\n \"client-report\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-styleguide\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"content-pillar\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"media-platform\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"media-content-type\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"monday-workspace\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"utm-tracking-link\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n gcflytour: {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"gcflytour-snap\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n }\n },\n public: {\n \"user-account\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n comment: {\n list: true,\n create: false,\n update: false,\n delete: false,\n report: false\n },\n client: {\n access: false,\n billing: false,\n owner: false,\n manager: false,\n admin: false,\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-user\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-content-pillar\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-media-platform\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-media-platform-content-type\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-project\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false,\n assign: false\n },\n \"client-report\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"client-styleguide\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"content-pillar\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"media-platform\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"media-content-type\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"monday-workspace\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n \"utm-tracking-link\": {\n list: false,\n create: false,\n read: false,\n update: false,\n delete: false\n },\n gcflytour: {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"gcflytour-snap\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n }\n },\n employee: {\n \"user-account\": {\n list: true,\n create: false,\n read: true,\n update: (u, p, d) => u.account.documentId === d?.documentId,\n delete: false\n },\n comment: {\n list: true,\n create: true,\n update: (u, p, d) => u.id === Number(d?.author?.id),\n delete: (u, p, d) => u.id === Number(d?.author?.id),\n report: true\n },\n client: {\n access: (u, p, d) => p.scopes.includes(\"client:access\"),\n billing: (u, p, d) => p.scopes.includes(\"client:billing\"),\n owner: (u, p, d) => p.scopes.includes(\"client:owner\"),\n manager: (u, p, d) => p.scopes.includes(\"client:manager\"),\n admin: (u, p, d) => p.scopes.includes(\"client:admin\"),\n list: (u, p, d) => p.scopes.includes(\"client:access\"),\n create: false,\n read: (u, p, d) => p.scopes.includes(\"client:access\"),\n update: (u, p, d) => p.scopes.includes(\"client:manager\"),\n delete: false\n },\n \"client-user\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false,\n verify: true\n },\n \"client-content-pillar\": {\n list: (u, p, d) => p.scopes.includes(\"client-content-pillar:list\"),\n create: (u, p) => p.scopes.includes(\"client-content-pillar:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-content-pillar:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-content-pillar:update\"),\n delete: false\n },\n \"client-media-platform\": {\n list: (u, p, d) => p.scopes.includes(\"client-media-platform:list\"),\n create: (u, p) => p.scopes.includes(\"client-media-platform:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-media-platform:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-media-platform:update\"),\n delete: false\n },\n \"client-media-platform-content-type\": {\n list: (u, p, d) => p.scopes.includes(\"client-media-platform-content-type:list\"),\n create: (u, p) => p.scopes.includes(\"client-media-platform-content-type:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-media-platform-content-type:read\"),\n update: (u, p, d) =>\n p.scopes.includes(\"client-media-platform-content-type:update\"),\n delete: false\n },\n \"client-project\": {\n list: (u, p, d) => p.scopes.includes(\"client-project:list\"),\n create: (u, p) => p.scopes.includes(\"client-project:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-project:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-project:update\"),\n delete: false,\n assign: (u, p, d) => p.scopes.includes(\"client-project:assign\")\n },\n \"client-report\": {\n list: (u, p, d) => p.scopes.includes(\"client-report:list\"),\n create: (u, p) => p.scopes.includes(\"client-report:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-report:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-report:update\"),\n delete: false\n },\n \"client-styleguide\": {\n list: (u, p, d) => p.scopes.includes(\"client-styleguide:list\"),\n create: false,\n read: (u, p, d) => p.scopes.includes(\"client-styleguide:read\"),\n update: false,\n delete: false\n },\n \"content-pillar\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"media-platform\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"media-content-type\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"monday-workspace\": {\n list: (u, p, d) => p.scopes.includes(\"monday-workspace:list\"),\n create: (u, p) => p.scopes.includes(\"monday-workspace:create\"),\n read: (u, p, d) => p.scopes.includes(\"monday-workspace:read\"),\n update: (u, p, d) => p.scopes.includes(\"monday-workspace:update\"),\n delete: (u, p, d) => p.scopes.includes(\"monday-workspace:delete\")\n },\n \"utm-tracking-link\": {\n list: (u, p, d) => p.scopes.includes(\"utm-tracking-link:list\"),\n create: (u, p) => p.scopes.includes(\"utm-tracking-link:create\"),\n read: (u, p, d) =>\n d?.creator?.documentId === u.documentId ||\n p.scopes.includes(\"utm-tracking-link:read\"),\n update: (u, p, d) =>\n d?.creator?.documentId === u.documentId ||\n p.scopes.includes(\"utm-tracking-link:update\"),\n delete: (u, p, d) =>\n d?.creator?.documentId === u.documentId ||\n p.scopes.includes(\"utm-tracking-link:delete\")\n },\n gcflytour: {\n list: true,\n create: (u, p) => p.scopes.includes(\"gcflytour:create\"),\n read: true,\n update: (u, p, d) => p.scopes.includes(\"gcflytour:update\"),\n delete: (u, p, d) => p.scopes.includes(\"gcflytour:delete\")\n },\n \"gcflytour-snap\": {\n list: true,\n create: (u, p) => p.scopes.includes(\"gcflytour-snap:create\"),\n read: true,\n update: (u, p, d) => p.scopes.includes(\"gcflytour-snap:update\"),\n delete: (u, p, d) => p.scopes.includes(\"gcflytour-snap:delete\")\n }\n },\n manager: {\n \"user-account\": {\n list: true,\n create: false,\n read: true,\n update: (u, p, d) => u.account.documentId === d?.documentId,\n delete: false\n },\n comment: {\n list: true,\n create: true,\n update: (u, p, d) => u.id === Number(d?.author?.id),\n delete: (u, p, d) => u.id === Number(d?.author?.id),\n report: true\n },\n client: {\n access: true,\n billing: true,\n owner: true,\n manager: true,\n admin: true,\n list: true,\n create: true,\n read: true,\n update: true,\n delete: false\n },\n \"client-user\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true,\n verify: true\n },\n \"client-content-pillar\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"client-media-platform\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"client-media-platform-content-type\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"client-project\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true,\n assign: true\n },\n \"client-report\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"client-styleguide\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"content-pillar\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"media-platform\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"media-content-type\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"monday-workspace\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"utm-tracking-link\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n gcflytour: {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n },\n \"gcflytour-snap\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\n }\n },\n client: {\n \"user-account\": {\n list: true,\n create: false,\n read: true,\n update: (u, p, d) => u.account.documentId === d?.documentId,\n delete: false\n },\n comment: {\n list: true,\n create: true,\n update: (u, p, d) => u.id === Number(d?.author?.id),\n delete: (u, p, d) => u.id === Number(d?.author?.id),\n report: true\n },\n client: {\n access: (u, p, d) => p.scopes.includes(\"client:access\"),\n billing: (u, p, d) => p.scopes.includes(\"client:billing\"),\n owner: (u, p, d) => p.scopes.includes(\"client:owner\"),\n manager: (u, p, d) => p.scopes.includes(\"client:manager\"),\n admin: (u, p, d) => p.scopes.includes(\"client:admin\"),\n list: (u, p, d) => p.scopes.includes(\"client:access\"),\n create: false,\n read: (u, p, d) => p.scopes.includes(\"client:access\"),\n update: (u, p, d) => p.scopes.includes(\"client:manager\"),\n delete: false\n },\n \"client-user\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false,\n verify: true\n },\n \"client-content-pillar\": {\n list: (u, p, d) => p.scopes.includes(\"client-content-pillar:list\"),\n create: (u, p) => p.scopes.includes(\"client-content-pillar:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-content-pillar:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-content-pillar:update\"),\n delete: false\n },\n \"client-media-platform\": {\n list: (u, p, d) => p.scopes.includes(\"client-media-platform:list\"),\n create: (u, p) => p.scopes.includes(\"client-media-platform:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-media-platform:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-media-platform:update\"),\n delete: false\n },\n \"client-media-platform-content-type\": {\n list: (u, p, d) => p.scopes.includes(\"client-media-platform-content-type:list\"),\n create: (u, p) => p.scopes.includes(\"client-media-platform-content-type:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-media-platform-content-type:read\"),\n update: (u, p, d) =>\n p.scopes.includes(\"client-media-platform-content-type:update\"),\n delete: false\n },\n \"client-project\": {\n list: (u, p, d) => p.scopes.includes(\"client-project:list\"),\n create: (u, p) => p.scopes.includes(\"client-project:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-project:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-project:update\"),\n delete: false,\n assign: (u, p, d) => p.scopes.includes(\"client-project:assign\")\n },\n \"client-report\": {\n list: (u, p, d) => p.scopes.includes(\"client-report:list\"),\n create: (u, p) => p.scopes.includes(\"client-report:create\"),\n read: (u, p, d) => p.scopes.includes(\"client-report:read\"),\n update: (u, p, d) => p.scopes.includes(\"client-report:update\"),\n delete: false\n },\n \"client-styleguide\": {\n list: (u, p, d) => p.scopes.includes(\"client-styleguide:list\"),\n create: false,\n read: (u, p, d) => p.scopes.includes(\"client-styleguide:read\"),\n update: false,\n delete: false\n },\n \"content-pillar\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"media-platform\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"media-content-type\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"monday-workspace\": {\n list: (u, p, d) => p.scopes.includes(\"monday-workspace:list\"),\n create: false,\n read: (u, p, d) => p.scopes.includes(\"monday-workspace:read\"),\n update: false,\n delete: false\n },\n \"utm-tracking-link\": {\n list: (u, p, d) => p.scopes.includes(\"utm-tracking-link:list\"),\n create: (u, p) => p.scopes.includes(\"utm-tracking-link:create\"),\n read: (u, p, d) =>\n d?.creator?.documentId === u.documentId ||\n p.scopes.includes(\"utm-tracking-link:read\"),\n update: (u, p, d) =>\n d?.creator?.documentId === u.documentId ||\n p.scopes.includes(\"utm-tracking-link:update\"),\n delete: (u, p, d) =>\n d?.creator?.documentId === u.documentId ||\n p.scopes.includes(\"utm-tracking-link:delete\")\n },\n gcflytour: {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n },\n \"gcflytour-snap\": {\n list: true,\n create: false,\n read: true,\n update: false,\n delete: false\n }\n }\n} as const satisfies RolesWithPermissions\n","/**\n * Example usage of ClientEntityScope type\n * @reference https://youtube.com/shorts/zOseJFD447U?si=xX8DYEHdl9YtN7S4\n *\n * > const validScope: ClientEntityScope = \"utm-tracking-link:list\"; // ✅\n * > const invalidScope: ClientEntityScope = \"blog-post:import\"; // ❌ Type error!\n */\n\nexport const CLIENT_ENTITY_PERMISSIONS = {\n client: [\"admin\", \"owner\", \"manager\", \"billing\", \"access\"],\n \"client-project\": [\"list\", \"create\", \"read\", \"update\", \"delete\", \"assign\"],\n \"client-media-platform\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"client-media-platform-content-type\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"client-content-pillar\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"client-report\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"client-styleguide\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"monday-workspace\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"utm-tracking-link\": [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n gcflytour: [\"list\", \"create\", \"read\", \"update\", \"delete\"],\n \"gcflytour-snap\": [\"list\", \"create\", \"read\", \"update\", \"delete\"]\n} as const\n\nexport type ClientEntityKey = keyof typeof CLIENT_ENTITY_PERMISSIONS\n\nexport type ClientEntityActions<K extends ClientEntityKey = ClientEntityKey> =\n (typeof CLIENT_ENTITY_PERMISSIONS)[K][number]\n\ntype EntityActionJoin<K extends string, V extends string> = `${K}:${V}`\n\nexport type ClientEntityScope = {\n [K in ClientEntityKey]: EntityActionJoin<\n K,\n (typeof CLIENT_ENTITY_PERMISSIONS)[K][number]\n >\n}[ClientEntityKey]\n\nexport const CLIENT_ENTITY_KEYS = Object.keys(\n CLIENT_ENTITY_PERMISSIONS\n) as ClientEntityKey[]\n\nexport const CLIENT_ENTITY_SCOPES: ClientEntityScope[] = Object.entries(\n CLIENT_ENTITY_PERMISSIONS\n).flatMap(([entity, actions]) =>\n actions.map((action) => `${entity}:${action}` as ClientEntityScope)\n)\n","/**\n * Attribute-based access control (ABAC) permissions\n *\n * @reference https://github.com/WebDevSimplified/permission-system/blob/main/auth-abac.ts\n */\n\nimport { AuthorizedUserDocument, ClientUserDocumentStatus, RoleType } from \"../types\"\nimport { ROLE_PERMISSIONS } from \"./permission.abac\"\nimport { Permissions, RolesWithPermissions } from \"./permission.types\"\n\nexport function hasPermission<Resource extends keyof Permissions>(\n user: AuthorizedUserDocument | null,\n permissions: ClientUserDocumentStatus,\n resource: Resource,\n action: Permissions[Resource][\"action\"],\n data?: Permissions[Resource][\"dataType\"]\n) {\n if (!user) return false\n const permission = (ROLE_PERMISSIONS as RolesWithPermissions)[\n user.role.type as RoleType\n ][resource]?.[action]\n if (permission == null) return false\n\n if (typeof permission === \"boolean\") return permission\n return permission(user, permissions, data)\n}\n\nexport function canAssignPermission<Resource extends keyof Permissions>(\n user: AuthorizedUserDocument | null,\n resource: Resource,\n action: Permissions[Resource][\"action\"]\n): boolean {\n if (!user) return false\n const permission = (ROLE_PERMISSIONS as RolesWithPermissions)[\n user.role.type as RoleType\n ][resource]?.[action]\n if (permission == null) return false\n if (typeof permission === \"boolean\") return permission\n if (typeof permission === \"function\") return true\n return false\n}\n"],"mappings":"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"}