{"version":3,"file":"client-scopes.mjs","names":[],"sources":["../../../../src/libs/http/middleware/client-scopes.ts"],"sourcesContent":["import { createMiddleware } from \"hono/factory\";\nimport type { LucidHonoContext } from \"../../../types/hono.js\";\nimport { LucidAPIError } from \"../../../utils/errors/index.js\";\nimport { copy } from \"../../i18n/index.js\";\n\nexport const clientScopeCheck = (\n\tc: LucidHonoContext,\n\trequiredScopes: string[],\n) => {\n\tconst auth = c.get(\"clientIntegrationAuth\");\n\tconst missingScopes = requiredScopes.filter(\n\t\t(scope) => !auth.scopes.includes(scope),\n\t);\n\tconst hasAllRequired = requiredScopes.every((scope) =>\n\t\tauth.scopes.includes(scope),\n\t);\n\n\tif (!hasAllRequired) {\n\t\tthrow new LucidAPIError({\n\t\t\ttype: \"authorisation\",\n\t\t\tname: copy(\"server:core.client.integrations.scopes.error.name\"),\n\t\t\tmessage: copy(\"server:core.client.integrations.scopes.missing.message\", {\n\t\t\t\tdata: {\n\t\t\t\t\trequiredScopes: requiredScopes.join(\", \"),\n\t\t\t\t\tmissingScopes: missingScopes.join(\", \"),\n\t\t\t\t},\n\t\t\t}),\n\t\t\tstatus: 403,\n\t\t});\n\t}\n};\n\nconst clientScopes = (\n\trequiredScopes: string[] | ((c: LucidHonoContext) => string[]),\n) =>\n\tcreateMiddleware(async (c: LucidHonoContext, next) => {\n\t\tclientScopeCheck(\n\t\t\tc,\n\t\t\ttypeof requiredScopes === \"function\" ? requiredScopes(c) : requiredScopes,\n\t\t);\n\t\treturn await next();\n\t});\n\nexport default clientScopes;\n"],"mappings":"oJAKA,MAAa,GACZ,EACA,IACI,CACJ,IAAM,EAAO,EAAE,IAAI,uBAAuB,EACpC,EAAgB,EAAe,OACnC,GAAU,CAAC,EAAK,OAAO,SAAS,CAAK,CACvC,EAKA,GAAI,CAJmB,EAAe,MAAO,GAC5C,EAAK,OAAO,SAAS,CAAK,CAGT,EACjB,MAAM,IAAI,EAAc,CACvB,KAAM,gBACN,KAAM,EAAK,mDAAmD,EAC9D,QAAS,EAAK,yDAA0D,CACvE,KAAM,CACL,eAAgB,EAAe,KAAK,IAAI,EACxC,cAAe,EAAc,KAAK,IAAI,CACvC,CACD,CAAC,EACD,OAAQ,GACT,CAAC,CAEH,EAEM,EACL,GAEA,EAAiB,MAAO,EAAqB,KAC5C,EACC,EACA,OAAO,GAAmB,WAAa,EAAe,CAAC,EAAI,CAC5D,EACO,MAAM,EAAK,EAClB"}