UNPKG

@erebus-sh/sdk

Version:
1 lines 5.51 kB
{"version":3,"file":"service-X-4mzCTN.cjs","names":["Access","z","z"],"sources":["../../schemas/grant.ts","../../schemas/request/grantChannelRequest.ts","../src/service/Service.ts","../src/service/patterns.ts","../src/service/types.ts"],"sourcesContent":["import { z } from \"zod\";\n\n/**\n * Grant scope enum for read, write, read-write and huh?\n */\nexport enum Access {\n Read = \"read\",\n Write = \"write\",\n ReadWrite = \"read-write\",\n Huh = \"huh?\",\n}\n\nexport const GrantScopeEnum = z.enum(\n Object.values(Access) as [string, ...string[]],\n);\nexport type GrantScope = z.infer<typeof GrantScopeEnum>;\n\n/**\n * This is the grant for connection to the channel.\n */\nexport const GrantSchema = z.object({\n // Project data\n project_id: z.string(),\n key_id: z.string(),\n webhook_url: z.string(),\n\n // Channel data\n channel: z.string(),\n // Topics: contain everything the user is allowed to subscribe to, or a wildcard \"*\"\n topics: z.array(\n z.object({\n topic: z.string(),\n scope: GrantScopeEnum,\n }),\n ),\n\n // Client data\n userId: z.string().min(1), // The actor making the request\n\n // Token metadata\n issuedAt: z.number(), // When token was issued\n expiresAt: z.number(),\n});\n\nexport type Grant = z.infer<typeof GrantSchema>;\n","import { z } from \"zod\";\nimport { GrantScopeEnum } from \"../grant\";\n\nconst SECRET_KEY_REGEX = /^(sk-er-|dv-er-)[\\w-]{48}$/;\n\nexport const secretKeySchema = z\n .string()\n .min(1)\n .regex(SECRET_KEY_REGEX, \"Invalid API key format\");\n/**\n * This grant only grant you connection to the channel, but don't grant you to subscribe to any topic in the channel.\n * You need to grant the topic access separately.\n */\nexport const grantRequestSchema = z.object({\n secret_key: secretKeySchema,\n // Channel data\n channel: z.string().min(1),\n // Topics: contain everything the user is allowed to subscribe to, or a wildcard \"*\"\n topics: z\n .array(\n z.object({\n topic: z.string(),\n scope: GrantScopeEnum,\n }),\n )\n .min(1),\n userId: z.string().min(1),\n expiresAt: z.number(),\n});\n\nexport type GrantRequest = z.infer<typeof grantRequestSchema>;\n","import { baseClient } from \"./baseClient\";\nimport { ErebusSession } from \"./session\";\nimport { ErebusError } from \"../internal/error\";\nimport {\n type GrantRequest,\n secretKeySchema,\n} from \"@repo/schemas/request/grantChannelRequest\";\n\nexport class ErebusService {\n private readonly client: ReturnType<typeof baseClient>;\n private grantRequest: GrantRequest = {\n userId: \"\",\n channel: \"\",\n topics: [],\n expiresAt: 0,\n secret_key: \"dv-er-abcdefghijklmnopqrstuvwxyzABCDEFGsH1234abcdddddd\",\n };\n constructor({\n secret_api_key,\n base_url,\n }: {\n secret_api_key: string;\n base_url?: string;\n }) {\n // Validate the secret_api_key using the regex from grantChannelRequest.ts\n if (!secretKeySchema.safeParse(secret_api_key).success) {\n throw new ErebusError(\"Invalid API key format\");\n }\n this.grantRequest.secret_key = secret_api_key;\n this.client = baseClient({ base_url: base_url ?? \"https://api.erebus.sh\" });\n }\n\n public async prepareSession({ userId }: { userId: string }) {\n if (!userId) {\n throw new ErebusError(\n \"User ID is required to create a session. Use the ErebusService.prepareSession() method.\",\n );\n }\n this.grantRequest.userId = userId;\n return new ErebusSession(this.grantRequest, this.client);\n }\n}\n","// Keep all pattern formatting in one place (avoid string soup in handlers)\nexport function orgPattern(org: string) {\n return `${org}:*`;\n}\n\nexport function groupPattern(org: string, group?: string) {\n return group ? `${org}:${group}:*` : `${org}:*`; // fallback if no group\n}\n","// @grant.ts\nexport enum Access {\n Read = \"read\",\n Write = \"write\",\n ReadWrite = \"read-write\",\n Huh = \"huh?\",\n}\n"],"mappings":"4JAKA,IAAYA,SAAAA,SAAAA,EAAL,OACL,GAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,UAAA,aACA,EAAA,IAAA,cAGF,MAAa,eAAiBE,IAAAA,EAAE,KAC9B,OAAO,OAAOF,SAAO,CACtB,CAMY,YAAcE,IAAAA,EAAE,OAAO,CAElC,WAAYA,IAAAA,EAAE,QAAQ,CACtB,OAAQA,IAAAA,EAAE,QAAQ,CAClB,YAAaA,IAAAA,EAAE,QAAQ,CAGvB,QAASA,IAAAA,EAAE,QAAQ,CAEnB,OAAQA,IAAAA,EAAE,MACRA,IAAAA,EAAE,OAAO,CACP,MAAOA,IAAAA,EAAE,QAAQ,CACjB,MAAO,eACR,CAAC,CACH,CAGD,OAAQA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAGzB,SAAUA,IAAAA,EAAE,QAAQ,CACpB,UAAWA,IAAAA,EAAE,QAAQ,CACtB,CAAC,CCvCI,iBAAmB,6BAEZ,gBAAkBA,IAAAA,EAC5B,QAAQ,CACR,IAAI,EAAE,CACN,MAAM,iBAAkB,yBAAyB,CAKvC,mBAAqBA,IAAAA,EAAE,OAAO,CACzC,WAAY,gBAEZ,QAASA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAE1B,OAAQA,IAAAA,EACL,MACCA,IAAAA,EAAE,OAAO,CACP,MAAOA,IAAAA,EAAE,QAAQ,CACjB,MAAO,eACR,CAAC,CACH,CACA,IAAI,EAAE,CACT,OAAQA,IAAAA,EAAE,QAAQ,CAAC,IAAI,EAAE,CACzB,UAAWA,IAAAA,EAAE,QAAQ,CACtB,CAAC,CCpBF,IAAa,cAAb,KAA0B,CACP,OACT,aAA6B,CACnC,OAAQ,GACR,QAAS,GACT,OAAQ,EAAE,CACV,UAAW,EACX,WAAY,yDACb,CACD,YAAY,CACV,iBACA,YAID,CAEC,GAAI,CAAC,gBAAgB,UAAU,EAAe,CAAC,QAC7C,MAAM,IAAI,cAAA,YAAY,yBAAyB,CAEjD,KAAK,aAAa,WAAa,EAC/B,KAAK,OAAS,gBAAA,WAAW,CAAE,SAAU,GAAY,wBAAyB,CAAC,CAGtE,MAAM,eAAe,CAAE,UAA4B,CACxD,GAAI,CAAC,EACH,MAAM,IAAI,cAAA,YACR,0FACD,CAGH,MADA,MAAK,aAAa,OAAS,EACpB,IAAI,gBAAA,cAAc,KAAK,aAAc,KAAK,OAAO,GCtC5D,SAAgB,WAAW,EAAW,CACpC,MAAO,GAAG,EAAG,IAGf,SAAgB,aAAa,EAAa,EAAc,CACtD,OAAO,EAAQ,GAAG,EAAG,GAAI,EAAK,IAAO,GAAG,EAAG,ICL7C,IAAY,QAAZ,SAAY,EAAM,CAChB,EAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,UAAA,aACA,EAAA,IAAA,SAJU,SAAM,EAAA,CAAA"}