@getcommunity/gc-validators 0.0.224 → 0.0.226
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/{index-BBRZhiHB.d.mts → index-CSVabS9D.d.mts} +9 -6
- package/dist/{index-ChtTxQLs.d.cts → index-CtQDYHdg.d.cts} +9 -6
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/permissions.cjs +3 -3
- package/dist/permissions.cjs.map +1 -1
- package/dist/permissions.d.cts +1 -1
- package/dist/permissions.d.mts +1 -1
- package/dist/permissions.mjs +3 -3
- package/dist/permissions.mjs.map +1 -1
- package/dist/schemas.cjs +53 -53
- package/dist/schemas.cjs.map +1 -1
- package/dist/schemas.d.cts +2 -2
- package/dist/schemas.d.mts +2 -2
- package/dist/schemas.mjs +51 -51
- package/dist/schemas.mjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/utilities.d.cts +1 -1
- package/dist/utilities.d.mts +1 -1
- package/package.json +1 -1
package/dist/permissions.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.cjs","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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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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"}
|
|
1
|
+
{"version":3,"file":"permissions.cjs","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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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 userRole: RoleType,\n resource: Resource,\n action: Permissions[Resource][\"action\"]\n): boolean {\n if (!userRole) return false\n const permission = (ROLE_PERMISSIONS as RolesWithPermissions)[userRole][resource]?.[\n action\n ]\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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"}
|
package/dist/permissions.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Fs as CLIENT_ENTITY_SCOPES, Is as ClientEntityActions, Ls as ClientEntityKey, Ns as CLIENT_ENTITY_KEYS, Ps as CLIENT_ENTITY_PERMISSIONS, Rs as ClientEntityScope, di as canAssignPermission, fi as hasPermission, hi as RolesWithPermissions, mi as Permissions, pi as LCRUDActions, zs as ROLE_PERMISSIONS } from "./index-
|
|
1
|
+
import { Fs as CLIENT_ENTITY_SCOPES, Is as ClientEntityActions, Ls as ClientEntityKey, Ns as CLIENT_ENTITY_KEYS, Ps as CLIENT_ENTITY_PERMISSIONS, Rs as ClientEntityScope, di as canAssignPermission, fi as hasPermission, hi as RolesWithPermissions, mi as Permissions, pi as LCRUDActions, zs as ROLE_PERMISSIONS } from "./index-CtQDYHdg.cjs";
|
|
2
2
|
export { CLIENT_ENTITY_KEYS, CLIENT_ENTITY_PERMISSIONS, CLIENT_ENTITY_SCOPES, ClientEntityActions, ClientEntityKey, ClientEntityScope, LCRUDActions, Permissions, ROLE_PERMISSIONS, RolesWithPermissions, canAssignPermission, hasPermission };
|
package/dist/permissions.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Fs as CLIENT_ENTITY_SCOPES, Is as ClientEntityActions, Ls as ClientEntityKey, Ns as CLIENT_ENTITY_KEYS, Ps as CLIENT_ENTITY_PERMISSIONS, Rs as ClientEntityScope, di as canAssignPermission, fi as hasPermission, hi as RolesWithPermissions, mi as Permissions, pi as LCRUDActions, zs as ROLE_PERMISSIONS } from "./index-
|
|
1
|
+
import { Fs as CLIENT_ENTITY_SCOPES, Is as ClientEntityActions, Ls as ClientEntityKey, Ns as CLIENT_ENTITY_KEYS, Ps as CLIENT_ENTITY_PERMISSIONS, Rs as ClientEntityScope, di as canAssignPermission, fi as hasPermission, hi as RolesWithPermissions, mi as Permissions, pi as LCRUDActions, zs as ROLE_PERMISSIONS } from "./index-CSVabS9D.mjs";
|
|
2
2
|
export { CLIENT_ENTITY_KEYS, CLIENT_ENTITY_PERMISSIONS, CLIENT_ENTITY_SCOPES, ClientEntityActions, ClientEntityKey, ClientEntityScope, LCRUDActions, Permissions, ROLE_PERMISSIONS, RolesWithPermissions, canAssignPermission, hasPermission };
|
package/dist/permissions.mjs
CHANGED
|
@@ -732,9 +732,9 @@ function hasPermission(user, permissions, resource, action, data) {
|
|
|
732
732
|
if (typeof permission === "boolean") return permission;
|
|
733
733
|
return permission(user, permissions, data);
|
|
734
734
|
}
|
|
735
|
-
function canAssignPermission(
|
|
736
|
-
if (!
|
|
737
|
-
const permission = ROLE_PERMISSIONS[
|
|
735
|
+
function canAssignPermission(userRole, resource, action) {
|
|
736
|
+
if (!userRole) return false;
|
|
737
|
+
const permission = ROLE_PERMISSIONS[userRole][resource]?.[action];
|
|
738
738
|
if (permission == null) return false;
|
|
739
739
|
if (typeof permission === "boolean") return permission;
|
|
740
740
|
if (typeof permission === "function") return true;
|
package/dist/permissions.mjs.map
CHANGED
|
@@ -1 +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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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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"}
|
|
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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\n list: true,\n create: true,\n read: true,\n update: true,\n delete: true\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-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 \"media-creative-format\": {\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-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 \"media-creative-format\": {\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-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 userRole: RoleType,\n resource: Resource,\n action: Permissions[Resource][\"action\"]\n): boolean {\n if (!userRole) return false\n const permission = (ROLE_PERMISSIONS as RolesWithPermissions)[userRole][resource]?.[\n action\n ]\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":";AAQA,MAAa,mBAAmB;CAC9B,eAAe;EACb,gBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,SAAS;GACP,MAAM;GACN,QAAQ;GACR,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,QAAQ;GACT;EACD,QAAQ;GACN,QAAQ;GACR,SAAS;GACT,OAAO;GACP,SAAS;GACT,OAAO;GACP,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,eAAe;GACb,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,iBAAiB;GACf,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,sBAAsB;GACpB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,oBAAoB;GAClB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,WAAW;GACT,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACF;CACD,QAAQ;EACN,gBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,SAAS;GACP,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,QAAQ;GACN,QAAQ;GACR,SAAS;GACT,OAAO;GACP,SAAS;GACT,OAAO;GACP,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,eAAe;GACb,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,iBAAiB;GACf,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,sBAAsB;GACpB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,oBAAoB;GAClB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,WAAW;GACT,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACF;CACD,UAAU;EACR,gBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,QAAQ,eAAe,GAAG;GACjD,QAAQ;GACT;EACD,SAAS;GACP,MAAM;GACN,QAAQ;GACR,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,QAAQ;GACT;EACD,QAAQ;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,gBAAgB;GACvD,UAAU,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,iBAAiB;GACzD,QAAQ,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,eAAe;GACrD,UAAU,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,iBAAiB;GACzD,QAAQ,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,eAAe;GACrD,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,gBAAgB;GACrD,QAAQ;GACR,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,gBAAgB;GACrD,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,iBAAiB;GACxD,QAAQ;GACT;EACD,eAAe;GACb,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACnE,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACtE,QAAQ;GACT;EACD,yBAAyB;GACvB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACnE,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACtE,QAAQ;GACT;EACD,kBAAkB;GAChB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,sBAAsB;GAC3D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC5D,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,sBAAsB;GAC3D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC/D,QAAQ;GACR,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAChE;EACD,iBAAiB;GACf,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,qBAAqB;GAC1D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,uBAAuB;GAC3D,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,qBAAqB;GAC1D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,uBAAuB;GAC9D,QAAQ;GACT;EACD,qBAAqB;GACnB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,yBAAyB;GAC9D,QAAQ;GACR,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,yBAAyB;GAC9D,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,sBAAsB;GACpB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,oBAAoB;GAClB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC7D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,0BAA0B;GAC9D,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC7D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,0BAA0B;GACjE,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,0BAA0B;GAClE;EACD,qBAAqB;GACnB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,yBAAyB;GAC9D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,2BAA2B;GAC/D,OAAO,GAAG,GAAG,MACX,GAAG,SAAS,eAAe,EAAE,cAC7B,EAAE,OAAO,SAAS,yBAAyB;GAC7C,SAAS,GAAG,GAAG,MACb,GAAG,SAAS,eAAe,EAAE,cAC7B,EAAE,OAAO,SAAS,2BAA2B;GAC/C,SAAS,GAAG,GAAG,MACb,GAAG,SAAS,eAAe,EAAE,cAC7B,EAAE,OAAO,SAAS,2BAA2B;GAChD;EACD,WAAW;GACT,MAAM;GACN,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,mBAAmB;GACvD,MAAM;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,mBAAmB;GAC1D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,mBAAmB;GAC3D;EACD,kBAAkB;GAChB,MAAM;GACN,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC5D,MAAM;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC/D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAChE;EACF;CACD,SAAS;EACP,gBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,QAAQ,eAAe,GAAG;GACjD,QAAQ;GACT;EACD,SAAS;GACP,MAAM;GACN,QAAQ;GACR,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,QAAQ;GACT;EACD,QAAQ;GACN,QAAQ;GACR,SAAS;GACT,OAAO;GACP,SAAS;GACT,OAAO;GACP,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,eAAe;GACb,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,iBAAiB;GACf,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,sBAAsB;GACpB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,oBAAoB;GAClB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,WAAW;GACT,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACF;CACD,QAAQ;EACN,gBAAgB;GACd,MAAM;GACN,QAAQ;GACR,MAAM;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,QAAQ,eAAe,GAAG;GACjD,QAAQ;GACT;EACD,SAAS;GACP,MAAM;GACN,QAAQ;GACR,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ,GAAG;GACnD,QAAQ;GACT;EACD,QAAQ;GACN,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,gBAAgB;GACvD,UAAU,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,iBAAiB;GACzD,QAAQ,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,eAAe;GACrD,UAAU,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,iBAAiB;GACzD,QAAQ,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,eAAe;GACrD,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,gBAAgB;GACrD,QAAQ;GACR,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,gBAAgB;GACrD,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,iBAAiB;GACxD,QAAQ;GACT;EACD,eAAe;GACb,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACnE,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACtE,QAAQ;GACT;EACD,yBAAyB;GACvB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACnE,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,6BAA6B;GAClE,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,+BAA+B;GACtE,QAAQ;GACT;EACD,kBAAkB;GAChB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,sBAAsB;GAC3D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC5D,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,sBAAsB;GAC3D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC/D,QAAQ;GACR,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAChE;EACD,iBAAiB;GACf,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,qBAAqB;GAC1D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,uBAAuB;GAC3D,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,qBAAqB;GAC1D,SAAS,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,uBAAuB;GAC9D,QAAQ;GACT;EACD,qBAAqB;GACnB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,yBAAyB;GAC9D,QAAQ;GACR,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,yBAAyB;GAC9D,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,sBAAsB;GACpB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,yBAAyB;GACvB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,oBAAoB;GAClB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC7D,QAAQ;GACR,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,wBAAwB;GAC7D,QAAQ;GACR,QAAQ;GACT;EACD,qBAAqB;GACnB,OAAO,GAAG,GAAG,MAAM,EAAE,OAAO,SAAS,yBAAyB;GAC9D,SAAS,GAAG,MAAM,EAAE,OAAO,SAAS,2BAA2B;GAC/D,OAAO,GAAG,GAAG,MACX,GAAG,SAAS,eAAe,EAAE,cAC7B,EAAE,OAAO,SAAS,yBAAyB;GAC7C,SAAS,GAAG,GAAG,MACb,GAAG,SAAS,eAAe,EAAE,cAC7B,EAAE,OAAO,SAAS,2BAA2B;GAC/C,SAAS,GAAG,GAAG,MACb,GAAG,SAAS,eAAe,EAAE,cAC7B,EAAE,OAAO,SAAS,2BAA2B;GAChD;EACD,WAAW;GACT,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,kBAAkB;GAChB,MAAM;GACN,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACF;CACF;;;;;;;;;;AC3oBD,MAAa,4BAA4B;CACvC,QAAQ;EAAC;EAAS;EAAS;EAAW;EAAW;EAAS;CAC1D,kBAAkB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAU;EAAS;CAC1E,yBAAyB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CACvE,yBAAyB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CACvE,iBAAiB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CAC/D,qBAAqB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CACnE,oBAAoB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CAClE,qBAAqB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CACnE,WAAW;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CACzD,kBAAkB;EAAC;EAAQ;EAAU;EAAQ;EAAU;EAAS;CACjE;AAgBD,MAAa,qBAAqB,OAAO,KACvC,0BACD;AAED,MAAa,uBAA4C,OAAO,QAC9D,0BACD,CAAC,SAAS,CAAC,QAAQ,aAClB,QAAQ,KAAK,WAAW,GAAG,OAAO,GAAG,SAA8B,CACpE;;;ACjCD,SAAgB,cACd,MACA,aACA,UACA,QACA,MACA;AACA,KAAI,CAAC,KAAM,QAAO;CAClB,MAAM,aAAc,iBAClB,KAAK,KAAK,MACV,YAAY;AACd,KAAI,cAAc,KAAM,QAAO;AAE/B,KAAI,OAAO,eAAe,UAAW,QAAO;AAC5C,QAAO,WAAW,MAAM,aAAa,KAAK;;AAG5C,SAAgB,oBACd,UACA,UACA,QACS;AACT,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,aAAc,iBAA0C,UAAU,YACtE;AAEF,KAAI,cAAc,KAAM,QAAO;AAC/B,KAAI,OAAO,eAAe,UAAW,QAAO;AAC5C,KAAI,OAAO,eAAe,WAAY,QAAO;AAC7C,QAAO"}
|