{"version":3,"file":"decorator-Bjs7qJx3.mjs","names":[],"sources":["../src/helpers/permissions/decorator.ts"],"sourcesContent":["// oxlint-disable-next-line no-explicit-any\nexport type LambdaFunction = (...args: any[]) => any;\n\ninterface SDKFunctionAddition {\n  ezrPermissions: { permission: string; isNamespaced: boolean }[];\n}\n\nexport type SDKFunction = LambdaFunction & SDKFunctionAddition;\n\nexport function isSDKFunction(fnc: LambdaFunction): fnc is SDKFunction {\n  return 'ezrPermissions' in fnc;\n}\n\n/**\n * Assign a permission name to a SDK function, used to check if the user have the permission\n *\n * @param fnc The function to decorate\n * @param permission The permission name (cf. /auth/me/permissions)\n * @param isNamespaced If the permission is namespaced (cf. /auth/me/permissions)\n */\nexport function assignPermission(\n  fnc: LambdaFunction,\n  permission: string,\n  isNamespaced = false\n): void {\n  Object.defineProperty(fnc, 'ezrPermissions', {\n    value: [{ permission, isNamespaced }],\n    writable: false,\n    enumerable: false,\n  });\n}\n\n/**\n * Assign permission names of its dependencies to a SDK function, used to check if the user have\n *  the permission\n *\n * @param fnc The function to decorate\n * @param deps The dependencies\n * @param permission The additional permission name (cf. /auth/me/permissions)\n * @param isNamespaced If the additional permission is namespaced (cf. /auth/me/permissions)\n */\nexport function assignDependencies(\n  fnc: LambdaFunction,\n  deps: LambdaFunction[],\n  permission?: string,\n  isNamespaced = false\n): void {\n  const dependencies = deps.filter((dep) => isSDKFunction(dep));\n  const permissions = dependencies.flatMap((dep) => dep.ezrPermissions);\n\n  if (permission) {\n    permissions.unshift({ permission, isNamespaced });\n  }\n\n  Object.defineProperty(fnc, 'ezrPermissions', {\n    value: permissions,\n    writable: false,\n    enumerable: false,\n  });\n}\n"],"mappings":";AASA,SAAgB,cAAc,KAAyC;AACrE,QAAO,oBAAoB;;;;;;;;;AAU7B,SAAgB,iBACd,KACA,YACA,eAAe,OACT;AACN,QAAO,eAAe,KAAK,kBAAkB;EAC3C,OAAO,CAAC;GAAE;GAAY;GAAc,CAAC;EACrC,UAAU;EACV,YAAY;EACb,CAAC;;;;;;;;;;;AAYJ,SAAgB,mBACd,KACA,MACA,YACA,eAAe,OACT;CAEN,MAAM,cADe,KAAK,QAAQ,QAAQ,cAAc,IAAI,CAAC,CAC5B,SAAS,QAAQ,IAAI,eAAe;AAErE,KAAI,WACF,aAAY,QAAQ;EAAE;EAAY;EAAc,CAAC;AAGnD,QAAO,eAAe,KAAK,kBAAkB;EAC3C,OAAO;EACP,UAAU;EACV,YAAY;EACb,CAAC"}