{"version":3,"file":"decorator-CpBMT5C-.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;CACrE,OAAO,oBAAoB;AAC7B;;;;;;;;AASA,SAAgB,iBACd,KACA,YACA,eAAe,OACT;CACN,OAAO,eAAe,KAAK,kBAAkB;EAC3C,OAAO,CAAC;GAAE;GAAY;EAAa,CAAC;EACpC,UAAU;EACV,YAAY;CACd,CAAC;AACH;;;;;;;;;;AAWA,SAAgB,mBACd,KACA,MACA,YACA,eAAe,OACT;CAEN,MAAM,cADe,KAAK,QAAQ,QAAQ,cAAc,GAAG,CAC5B,CAAC,CAAC,SAAS,QAAQ,IAAI,cAAc;CAEpE,IAAI,YACF,YAAY,QAAQ;EAAE;EAAY;CAAa,CAAC;CAGlD,OAAO,eAAe,KAAK,kBAAkB;EAC3C,OAAO;EACP,UAAU;EACV,YAAY;CACd,CAAC;AACH"}