workos 0.13.1 → 0.13.3
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/README.md +1 -1
- package/dist/commands/env.js +9 -1
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/login.js +44 -117
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/webhook.js +20 -1
- package/dist/commands/webhook.js.map +1 -1
- package/dist/emulate/workos/entities.d.ts +1 -1
- package/dist/emulate/workos/entities.js.map +1 -1
- package/dist/emulate/workos/event-bus.js +1 -1
- package/dist/emulate/workos/event-bus.js.map +1 -1
- package/dist/emulate/workos/helpers.js +1 -1
- package/dist/emulate/workos/helpers.js.map +1 -1
- package/dist/emulate/workos/index.d.ts +3 -1
- package/dist/emulate/workos/index.js +5 -1
- package/dist/emulate/workos/index.js.map +1 -1
- package/dist/emulate/workos/routes/authorization-org-roles.js.map +1 -1
- package/dist/emulate/workos/routes/authorization-roles.js.map +1 -1
- package/dist/emulate/workos/routes/webhook-endpoints.js +9 -8
- package/dist/emulate/workos/routes/webhook-endpoints.js.map +1 -1
- package/dist/emulate/workos/store.js +1 -1
- package/dist/emulate/workos/store.js.map +1 -1
- package/dist/lib/api-key.d.ts +2 -2
- package/dist/lib/api-key.js +4 -4
- package/dist/lib/api-key.js.map +1 -1
- package/dist/lib/device-auth.d.ts +3 -0
- package/dist/lib/device-auth.js +31 -9
- package/dist/lib/device-auth.js.map +1 -1
- package/dist/lib/workos-client.d.ts +1 -1
- package/dist/lib/workos-client.js.map +1 -1
- package/dist/utils/output.d.ts +6 -1
- package/dist/utils/output.js +12 -2
- package/dist/utils/output.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/emulate/workos/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAA2C,MAAM,kBAAkB,CAAC;AA2C3F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,CAAC,eAAe,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAEtG,MAAM,UAAU,YAAY,CAAmB,MAAS,EAAE,IAAgC;IACxF,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,eAAe,CAAC;IACjD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAgC,EAChC,SAA+C;IAE/C,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAuB,EACvB,EAAe,EACf,IAA+C;IAE/C,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE9G,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO;QACP,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAgC;IAC3D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAA+B;IAC9D,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;AAEnE,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAgB;IAC5C,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAA2B;IACjE,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAuB;IACzD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAmB;IACjD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAA6B;IAC5D,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAiB;IAC9C,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,IAAY;IAC3D,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAsB;IACrD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAmB;IAClD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAwB;IAC3D,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACpD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAoB;IACpD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAmB;IAClD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,CAA8B;IACxE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,CAAyB;IAC9D,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,yEAAyE;AACzE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,GAAG,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,cAAc,CACtB,GAAG,EACH,6CAA6C,MAAM,CAAC,QAAQ,EAAE,EAC9D,sBAAsB,CACvB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAErE,MAAM,UAAU,mBAAmB,CAAC,CAAgC;IAClE,OAAO,YAAY,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAmB;IAClD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,CAA8B;IACxE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAwB;IAC3D,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAA4B;IACpE,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,gBAAgB,EAAE,4DAA4D;QAC9E,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3F,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAkB;IAChD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAsB;IACxD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAuB;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAuB;IAC1D,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAsB;IACxD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAwB;IAC3D,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAoB;IACpD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAmB;IAClD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,CAA2B;IAClE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAErE,MAAM,UAAU,kBAAkB,CAAC,CAAqB;IACtD,OAAO,YAAY,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAqB;IACtD,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,kBAAkB,CAAC,CAAe;IAChD,OAAO,YAAY,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;AAElE,MAAM,UAAU,WAAW,CAAC,CAAc;IACxC,OAAO,YAAY,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,EAAyB,EACzB,IAAkC;IAElC,OAAO;QACL,MAAM,EAAE,kBAAkB;QAC1B,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,GAAG,EAAE,EAAE,CAAC,GAAG;QACX,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;QACxE,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,UAAU,EAAE,EAAE,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAyE,EACzE,MAAc;IAEd,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;IACzD,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC","sourcesContent":["import { randomBytes, createHash, createCipheriv } from 'node:crypto';\nimport { WorkOSApiError, type CursorPaginatedResult, type Entity } from '../core/index.js';\nimport type { WorkOSStore } from './store.js';\nimport type {\n WorkOSOrganization,\n WorkOSOrganizationDomain,\n WorkOSOrganizationMembership,\n WorkOSUser,\n WorkOSSession,\n WorkOSEmailVerification,\n WorkOSPasswordReset,\n WorkOSMagicAuth,\n WorkOSAuthenticationFactor,\n WorkOSIdentity,\n WorkOSConnection,\n WorkOSSSOProfile,\n WorkOSPipeConnection,\n WorkOSInvitation,\n WorkOSRedirectUri,\n WorkOSCorsOrigin,\n WorkOSAuthorizedApplication,\n WorkOSConnectedAccount,\n WorkOSAuthenticationChallenge,\n WorkOSDeviceAuthorization,\n WorkOSRole,\n WorkOSPermission,\n WorkOSAuthorizationResource,\n WorkOSRoleAssignment,\n WorkOSDirectory,\n WorkOSDirectoryUser,\n WorkOSDirectoryGroup,\n WorkOSAuditLogAction,\n WorkOSAuditLogEvent,\n WorkOSAuditLogExport,\n WorkOSFeatureFlag,\n WorkOSFlagTarget,\n WorkOSConnectApplication,\n WorkOSClientSecret,\n WorkOSRadarAttempt,\n WorkOSApiKey,\n WorkOSEvent,\n WorkOSWebhookEndpoint,\n} from './entities.js';\n\nconst INTERNAL_FIELDS = new Set<string>(['password_hash', 'code_challenge', 'code_challenge_method']);\n\nexport function formatEntity<T extends Entity>(entity: T, opts?: { exclude?: Set<string> }): Record<string, unknown> {\n const exclude = opts?.exclude ?? INTERNAL_FIELDS;\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(entity)) {\n if (!exclude.has(key)) result[key] = value;\n }\n return result;\n}\n\nexport function formatListResponse<T>(\n result: CursorPaginatedResult<T>,\n formatter: (item: T) => Record<string, unknown>,\n): { object: 'list'; data: Record<string, unknown>[]; list_metadata: { before: string | null; after: string | null } } {\n return {\n object: 'list',\n data: result.data.map(formatter),\n list_metadata: result.list_metadata,\n };\n}\n\nexport function formatOrganization(\n org: WorkOSOrganization,\n ws: WorkOSStore,\n opts?: { domains?: WorkOSOrganizationDomain[] },\n): Record<string, unknown> {\n const domains = (opts?.domains ?? ws.organizationDomains.findBy('organization_id', org.id)).map(formatDomain);\n\n return {\n object: 'organization',\n id: org.id,\n name: org.name,\n external_id: org.external_id,\n metadata: org.metadata,\n domains,\n stripe_customer_id: org.stripe_customer_id,\n created_at: org.created_at,\n updated_at: org.updated_at,\n };\n}\n\nexport function formatDomain(domain: WorkOSOrganizationDomain): Record<string, unknown> {\n return formatEntity(domain);\n}\n\nexport function formatMembership(m: WorkOSOrganizationMembership): Record<string, unknown> {\n return formatEntity(m);\n}\n\nconst USER_EXCLUDE = new Set([...INTERNAL_FIELDS, 'impersonator']);\n\nexport function formatUser(user: WorkOSUser): Record<string, unknown> {\n return formatEntity(user, { exclude: USER_EXCLUDE });\n}\n\nexport function formatSession(s: WorkOSSession): Record<string, unknown> {\n return formatEntity(s);\n}\n\nexport function formatEmailVerification(ev: WorkOSEmailVerification): Record<string, unknown> {\n return formatEntity(ev);\n}\n\nexport function formatPasswordReset(pr: WorkOSPasswordReset): Record<string, unknown> {\n return formatEntity(pr);\n}\n\nexport function formatMagicAuth(ma: WorkOSMagicAuth): Record<string, unknown> {\n return formatEntity(ma);\n}\n\nexport function formatAuthFactor(f: WorkOSAuthenticationFactor): Record<string, unknown> {\n return formatEntity(f);\n}\n\nexport function formatIdentity(i: WorkOSIdentity): Record<string, unknown> {\n return formatEntity(i);\n}\n\nexport function generateVerificationToken(): string {\n return randomBytes(16).toString('hex');\n}\n\nexport function generateCode(): string {\n return String(Math.floor(100000 + Math.random() * 900000));\n}\n\nexport function hashPassword(password: string): string {\n return createHash('sha256').update(password).digest('hex');\n}\n\nexport function verifyPassword(password: string, hash: string): boolean {\n return hashPassword(password) === hash;\n}\n\nexport function expiresIn(minutes: number): string {\n return new Date(Date.now() + minutes * 60 * 1000).toISOString();\n}\n\nexport function isExpired(expiresAt: string): boolean {\n return new Date(expiresAt).getTime() < Date.now();\n}\n\nexport function formatConnection(conn: WorkOSConnection): Record<string, unknown> {\n return formatEntity(conn);\n}\n\nexport function formatSSOProfile(p: WorkOSSSOProfile): Record<string, unknown> {\n return formatEntity(p);\n}\n\nexport function formatPipeConnection(pc: WorkOSPipeConnection): Record<string, unknown> {\n return formatEntity(pc);\n}\n\nexport function formatInvitation(inv: WorkOSInvitation): Record<string, unknown> {\n return formatEntity(inv);\n}\n\nexport function formatRedirectUri(r: WorkOSRedirectUri): Record<string, unknown> {\n return formatEntity(r);\n}\n\nexport function formatCorsOrigin(o: WorkOSCorsOrigin): Record<string, unknown> {\n return formatEntity(o);\n}\n\nexport function formatAuthorizedApplication(a: WorkOSAuthorizedApplication): Record<string, unknown> {\n return formatEntity(a);\n}\n\nexport function formatConnectedAccount(a: WorkOSConnectedAccount): Record<string, unknown> {\n return formatEntity(a);\n}\n\n/** Allowed redirect URI hosts for the emulator's authorize endpoints. */\nconst ALLOWED_REDIRECT_HOSTS = new Set(['localhost', '127.0.0.1', '[::1]']);\n\n/**\n * Validate that a redirect_uri points to a localhost origin.\n * Prevents the emulator from being used as an open redirect.\n */\nexport function assertLocalRedirectUri(uri: string): void {\n let parsed: URL;\n try {\n parsed = new URL(uri);\n } catch {\n throw new WorkOSApiError(400, 'Invalid redirect_uri', 'invalid_redirect_uri');\n }\n if (!ALLOWED_REDIRECT_HOSTS.has(parsed.hostname)) {\n throw new WorkOSApiError(\n 400,\n `redirect_uri must point to localhost, got ${parsed.hostname}`,\n 'invalid_redirect_uri',\n );\n }\n}\n\nconst AUTH_CHALLENGE_EXCLUDE = new Set([...INTERNAL_FIELDS, 'code']);\n\nexport function formatAuthChallenge(c: WorkOSAuthenticationChallenge): Record<string, unknown> {\n return formatEntity(c, { exclude: AUTH_CHALLENGE_EXCLUDE });\n}\n\nexport function formatRole(role: WorkOSRole): Record<string, unknown> {\n return formatEntity(role);\n}\n\nexport function formatPermission(p: WorkOSPermission): Record<string, unknown> {\n return formatEntity(p);\n}\n\nexport function formatAuthorizationResource(r: WorkOSAuthorizationResource): Record<string, unknown> {\n return formatEntity(r);\n}\n\nexport function formatRoleAssignment(ra: WorkOSRoleAssignment): Record<string, unknown> {\n return formatEntity(ra);\n}\n\nexport function formatDeviceAuthorization(d: WorkOSDeviceAuthorization): Record<string, unknown> {\n return {\n device_code: d.device_code,\n user_code: d.user_code,\n verification_uri: 'http://localhost:0/user_management/authorize/device/verify',\n expires_in: Math.max(0, Math.floor((new Date(d.expires_at).getTime() - Date.now()) / 1000)),\n interval: d.interval,\n };\n}\n\nexport function formatDirectory(d: WorkOSDirectory): Record<string, unknown> {\n return formatEntity(d);\n}\n\nexport function formatDirectoryUser(u: WorkOSDirectoryUser): Record<string, unknown> {\n return formatEntity(u);\n}\n\nexport function formatDirectoryGroup(g: WorkOSDirectoryGroup): Record<string, unknown> {\n return formatEntity(g);\n}\n\nexport function formatAuditLogAction(a: WorkOSAuditLogAction): Record<string, unknown> {\n return formatEntity(a);\n}\n\nexport function formatAuditLogEvent(e: WorkOSAuditLogEvent): Record<string, unknown> {\n return formatEntity(e);\n}\n\nexport function formatAuditLogExport(ex: WorkOSAuditLogExport): Record<string, unknown> {\n return formatEntity(ex);\n}\n\nexport function formatFeatureFlag(f: WorkOSFeatureFlag): Record<string, unknown> {\n return formatEntity(f);\n}\n\nexport function formatFlagTarget(t: WorkOSFlagTarget): Record<string, unknown> {\n return formatEntity(t);\n}\n\nexport function formatConnectApplication(a: WorkOSConnectApplication): Record<string, unknown> {\n return formatEntity(a);\n}\n\nconst CLIENT_SECRET_EXCLUDE = new Set([...INTERNAL_FIELDS, 'value']);\n\nexport function formatClientSecret(s: WorkOSClientSecret): Record<string, unknown> {\n return formatEntity(s, { exclude: CLIENT_SECRET_EXCLUDE });\n}\n\nexport function formatRadarAttempt(a: WorkOSRadarAttempt): Record<string, unknown> {\n return formatEntity(a);\n}\n\nconst API_KEY_EXCLUDE = new Set([...INTERNAL_FIELDS, 'key', 'environment']);\n\nexport function formatApiKeyRecord(k: WorkOSApiKey): Record<string, unknown> {\n return formatEntity(k, { exclude: API_KEY_EXCLUDE });\n}\n\nconst EVENT_EXCLUDE = new Set([...INTERNAL_FIELDS, 'updated_at']);\n\nexport function formatEvent(e: WorkOSEvent): Record<string, unknown> {\n return formatEntity(e, { exclude: EVENT_EXCLUDE });\n}\n\nexport function formatWebhookEndpoint(\n ep: WorkOSWebhookEndpoint,\n opts?: { includeSecret?: boolean },\n): Record<string, unknown> {\n return {\n object: 'webhook_endpoint',\n id: ep.id,\n url: ep.url,\n secret: opts?.includeSecret ? ep.secret : `${ep.secret.slice(0, 8)}****`,\n enabled: ep.enabled,\n events: ep.events,\n description: ep.description,\n created_at: ep.created_at,\n updated_at: ep.updated_at,\n };\n}\n\nexport function sealSession(\n data: { access_token: string; refresh_token: string; session_id: string },\n apiKey: string,\n): string {\n const key = createHash('sha256').update(apiKey).digest();\n const iv = randomBytes(12);\n const cipher = createCipheriv('aes-256-gcm', key, iv);\n const plaintext = JSON.stringify(data);\n const encrypted = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);\n const tag = cipher.getAuthTag();\n return Buffer.concat([iv, tag, encrypted]).toString('base64');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/emulate/workos/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes, createHash, createCipheriv } from 'node:crypto';\nimport { WorkOSApiError, type CursorPaginatedResult, type Entity } from '../core/index.js';\nimport type { WorkOSStore } from './store.js';\nimport type {\n WorkOSOrganization,\n WorkOSOrganizationDomain,\n WorkOSOrganizationMembership,\n WorkOSUser,\n WorkOSSession,\n WorkOSEmailVerification,\n WorkOSPasswordReset,\n WorkOSMagicAuth,\n WorkOSAuthenticationFactor,\n WorkOSIdentity,\n WorkOSConnection,\n WorkOSSSOProfile,\n WorkOSPipeConnection,\n WorkOSInvitation,\n WorkOSRedirectUri,\n WorkOSCorsOrigin,\n WorkOSAuthorizedApplication,\n WorkOSConnectedAccount,\n WorkOSAuthenticationChallenge,\n WorkOSDeviceAuthorization,\n WorkOSRole,\n WorkOSPermission,\n WorkOSAuthorizationResource,\n WorkOSRoleAssignment,\n WorkOSDirectory,\n WorkOSDirectoryUser,\n WorkOSDirectoryGroup,\n WorkOSAuditLogAction,\n WorkOSAuditLogEvent,\n WorkOSAuditLogExport,\n WorkOSFeatureFlag,\n WorkOSFlagTarget,\n WorkOSConnectApplication,\n WorkOSClientSecret,\n WorkOSRadarAttempt,\n WorkOSApiKey,\n WorkOSEvent,\n WorkOSWebhookEndpoint,\n} from './entities.js';\n\nconst INTERNAL_FIELDS = new Set<string>(['password_hash', 'code_challenge', 'code_challenge_method']);\n\nexport function formatEntity<T extends Entity>(entity: T, opts?: { exclude?: Set<string> }): Record<string, unknown> {\n const exclude = opts?.exclude ?? INTERNAL_FIELDS;\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(entity)) {\n if (!exclude.has(key)) result[key] = value;\n }\n return result;\n}\n\nexport function formatListResponse<T>(\n result: CursorPaginatedResult<T>,\n formatter: (item: T) => Record<string, unknown>,\n): { object: 'list'; data: Record<string, unknown>[]; list_metadata: { before: string | null; after: string | null } } {\n return {\n object: 'list',\n data: result.data.map(formatter),\n list_metadata: result.list_metadata,\n };\n}\n\nexport function formatOrganization(\n org: WorkOSOrganization,\n ws: WorkOSStore,\n opts?: { domains?: WorkOSOrganizationDomain[] },\n): Record<string, unknown> {\n const domains = (opts?.domains ?? ws.organizationDomains.findBy('organization_id', org.id)).map(formatDomain);\n\n return {\n object: 'organization',\n id: org.id,\n name: org.name,\n external_id: org.external_id,\n metadata: org.metadata,\n domains,\n stripe_customer_id: org.stripe_customer_id,\n created_at: org.created_at,\n updated_at: org.updated_at,\n };\n}\n\nexport function formatDomain(domain: WorkOSOrganizationDomain): Record<string, unknown> {\n return formatEntity(domain);\n}\n\nexport function formatMembership(m: WorkOSOrganizationMembership): Record<string, unknown> {\n return formatEntity(m);\n}\n\nconst USER_EXCLUDE = new Set([...INTERNAL_FIELDS, 'impersonator']);\n\nexport function formatUser(user: WorkOSUser): Record<string, unknown> {\n return formatEntity(user, { exclude: USER_EXCLUDE });\n}\n\nexport function formatSession(s: WorkOSSession): Record<string, unknown> {\n return formatEntity(s);\n}\n\nexport function formatEmailVerification(ev: WorkOSEmailVerification): Record<string, unknown> {\n return formatEntity(ev);\n}\n\nexport function formatPasswordReset(pr: WorkOSPasswordReset): Record<string, unknown> {\n return formatEntity(pr);\n}\n\nexport function formatMagicAuth(ma: WorkOSMagicAuth): Record<string, unknown> {\n return formatEntity(ma);\n}\n\nexport function formatAuthFactor(f: WorkOSAuthenticationFactor): Record<string, unknown> {\n return formatEntity(f);\n}\n\nexport function formatIdentity(i: WorkOSIdentity): Record<string, unknown> {\n return formatEntity(i);\n}\n\nexport function generateVerificationToken(): string {\n return randomBytes(16).toString('hex');\n}\n\nexport function generateCode(): string {\n return String(Math.floor(100000 + Math.random() * 900000));\n}\n\nexport function hashPassword(password: string): string {\n return createHash('sha256').update(password).digest('hex');\n}\n\nexport function verifyPassword(password: string, hash: string): boolean {\n return hashPassword(password) === hash;\n}\n\nexport function expiresIn(minutes: number): string {\n return new Date(Date.now() + minutes * 60 * 1000).toISOString();\n}\n\nexport function isExpired(expiresAt: string): boolean {\n return new Date(expiresAt).getTime() < Date.now();\n}\n\nexport function formatConnection(conn: WorkOSConnection): Record<string, unknown> {\n return formatEntity(conn);\n}\n\nexport function formatSSOProfile(p: WorkOSSSOProfile): Record<string, unknown> {\n return formatEntity(p);\n}\n\nexport function formatPipeConnection(pc: WorkOSPipeConnection): Record<string, unknown> {\n return formatEntity(pc);\n}\n\nexport function formatInvitation(inv: WorkOSInvitation): Record<string, unknown> {\n return formatEntity(inv);\n}\n\nexport function formatRedirectUri(r: WorkOSRedirectUri): Record<string, unknown> {\n return formatEntity(r);\n}\n\nexport function formatCorsOrigin(o: WorkOSCorsOrigin): Record<string, unknown> {\n return formatEntity(o);\n}\n\nexport function formatAuthorizedApplication(a: WorkOSAuthorizedApplication): Record<string, unknown> {\n return formatEntity(a);\n}\n\nexport function formatConnectedAccount(a: WorkOSConnectedAccount): Record<string, unknown> {\n return formatEntity(a);\n}\n\n/** Allowed redirect URI hosts for the emulator's authorize endpoints. */\nconst ALLOWED_REDIRECT_HOSTS = new Set(['localhost', '127.0.0.1', '[::1]']);\n\n/**\n * Validate that a redirect_uri points to a localhost origin.\n * Prevents the emulator from being used as an open redirect.\n */\nexport function assertLocalRedirectUri(uri: string): void {\n let parsed: URL;\n try {\n parsed = new URL(uri);\n } catch {\n throw new WorkOSApiError(400, 'Invalid redirect_uri', 'invalid_redirect_uri');\n }\n if (!ALLOWED_REDIRECT_HOSTS.has(parsed.hostname)) {\n throw new WorkOSApiError(\n 400,\n `redirect_uri must point to localhost, got ${parsed.hostname}`,\n 'invalid_redirect_uri',\n );\n }\n}\n\nconst AUTH_CHALLENGE_EXCLUDE = new Set([...INTERNAL_FIELDS, 'code']);\n\nexport function formatAuthChallenge(c: WorkOSAuthenticationChallenge): Record<string, unknown> {\n return formatEntity(c, { exclude: AUTH_CHALLENGE_EXCLUDE });\n}\n\nexport function formatRole(role: WorkOSRole): Record<string, unknown> {\n return formatEntity(role);\n}\n\nexport function formatPermission(p: WorkOSPermission): Record<string, unknown> {\n return formatEntity(p);\n}\n\nexport function formatAuthorizationResource(r: WorkOSAuthorizationResource): Record<string, unknown> {\n return formatEntity(r);\n}\n\nexport function formatRoleAssignment(ra: WorkOSRoleAssignment): Record<string, unknown> {\n return formatEntity(ra);\n}\n\nexport function formatDeviceAuthorization(d: WorkOSDeviceAuthorization): Record<string, unknown> {\n return {\n device_code: d.device_code,\n user_code: d.user_code,\n verification_uri: 'http://localhost:0/user_management/authorize/device/verify',\n expires_in: Math.max(0, Math.floor((new Date(d.expires_at).getTime() - Date.now()) / 1000)),\n interval: d.interval,\n };\n}\n\nexport function formatDirectory(d: WorkOSDirectory): Record<string, unknown> {\n return formatEntity(d);\n}\n\nexport function formatDirectoryUser(u: WorkOSDirectoryUser): Record<string, unknown> {\n return formatEntity(u);\n}\n\nexport function formatDirectoryGroup(g: WorkOSDirectoryGroup): Record<string, unknown> {\n return formatEntity(g);\n}\n\nexport function formatAuditLogAction(a: WorkOSAuditLogAction): Record<string, unknown> {\n return formatEntity(a);\n}\n\nexport function formatAuditLogEvent(e: WorkOSAuditLogEvent): Record<string, unknown> {\n return formatEntity(e);\n}\n\nexport function formatAuditLogExport(ex: WorkOSAuditLogExport): Record<string, unknown> {\n return formatEntity(ex);\n}\n\nexport function formatFeatureFlag(f: WorkOSFeatureFlag): Record<string, unknown> {\n return formatEntity(f);\n}\n\nexport function formatFlagTarget(t: WorkOSFlagTarget): Record<string, unknown> {\n return formatEntity(t);\n}\n\nexport function formatConnectApplication(a: WorkOSConnectApplication): Record<string, unknown> {\n return formatEntity(a);\n}\n\nconst CLIENT_SECRET_EXCLUDE = new Set([...INTERNAL_FIELDS, 'value']);\n\nexport function formatClientSecret(s: WorkOSClientSecret): Record<string, unknown> {\n return formatEntity(s, { exclude: CLIENT_SECRET_EXCLUDE });\n}\n\nexport function formatRadarAttempt(a: WorkOSRadarAttempt): Record<string, unknown> {\n return formatEntity(a);\n}\n\nconst API_KEY_EXCLUDE = new Set([...INTERNAL_FIELDS, 'key', 'environment']);\n\nexport function formatApiKeyRecord(k: WorkOSApiKey): Record<string, unknown> {\n return formatEntity(k, { exclude: API_KEY_EXCLUDE });\n}\n\nconst EVENT_EXCLUDE = new Set([...INTERNAL_FIELDS, 'updated_at']);\n\nexport function formatEvent(e: WorkOSEvent): Record<string, unknown> {\n return formatEntity(e, { exclude: EVENT_EXCLUDE });\n}\n\nexport function formatWebhookEndpoint(\n ep: WorkOSWebhookEndpoint,\n opts?: { includeSecret?: boolean },\n): Record<string, unknown> {\n return {\n object: 'webhook_endpoint',\n id: ep.id,\n endpoint_url: ep.endpoint_url,\n secret: opts?.includeSecret ? ep.secret : `${ep.secret.slice(0, 8)}****`,\n enabled: ep.enabled,\n events: ep.events,\n description: ep.description,\n created_at: ep.created_at,\n updated_at: ep.updated_at,\n };\n}\n\nexport function sealSession(\n data: { access_token: string; refresh_token: string; session_id: string },\n apiKey: string,\n): string {\n const key = createHash('sha256').update(apiKey).digest();\n const iv = randomBytes(12);\n const cipher = createCipheriv('aes-256-gcm', key, iv);\n const plaintext = JSON.stringify(data);\n const encrypted = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);\n const tag = cipher.getAuthTag();\n return Buffer.concat([iv, tag, encrypted]).toString('base64');\n}\n"]}
|
|
@@ -72,7 +72,9 @@ export interface WorkOSSeedPermission {
|
|
|
72
72
|
description?: string;
|
|
73
73
|
}
|
|
74
74
|
export interface WorkOSSeedWebhookEndpoint {
|
|
75
|
-
|
|
75
|
+
endpoint_url?: string;
|
|
76
|
+
/** @deprecated Use endpoint_url */
|
|
77
|
+
url?: string;
|
|
76
78
|
events?: string[];
|
|
77
79
|
enabled?: boolean;
|
|
78
80
|
}
|
|
@@ -195,9 +195,13 @@ export function seedFromConfig(store, _baseUrl, config) {
|
|
|
195
195
|
}
|
|
196
196
|
if (config.webhookEndpoints) {
|
|
197
197
|
for (const whConfig of config.webhookEndpoints) {
|
|
198
|
+
const endpointUrl = whConfig.endpoint_url ?? whConfig.url;
|
|
199
|
+
if (!endpointUrl || typeof endpointUrl !== 'string') {
|
|
200
|
+
throw new Error('workos seed config: webhookEndpoints[].endpoint_url is required');
|
|
201
|
+
}
|
|
198
202
|
ws.webhookEndpoints.insert({
|
|
199
203
|
object: 'webhook_endpoint',
|
|
200
|
-
|
|
204
|
+
endpoint_url: endpointUrl,
|
|
201
205
|
secret: randomBytes(32).toString('hex'),
|
|
202
206
|
enabled: whConfig.enabled !== false,
|
|
203
207
|
events: whConfig.events ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emulate/workos/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from 'node:crypto';\nimport type { ServicePlugin, Store, RouteContext } from '../core/index.js';\nimport { generateId } from '../core/index.js';\nimport { getWorkOSStore, type WorkOSStore } from './store.js';\nimport { organizationRoutes } from './routes/organizations.js';\nimport { organizationDomainRoutes } from './routes/organization-domains.js';\nimport { membershipRoutes } from './routes/memberships.js';\nimport { userRoutes } from './routes/users.js';\nimport { emailVerificationRoutes } from './routes/email-verification.js';\nimport { passwordResetRoutes } from './routes/password-reset.js';\nimport { magicAuthRoutes } from './routes/magic-auth.js';\nimport { authFactorRoutes } from './routes/auth-factors.js';\nimport { sessionRoutes } from './routes/sessions.js';\nimport { authRoutes } from './routes/auth.js';\nimport { connectionRoutes } from './routes/connections.js';\nimport { ssoRoutes } from './routes/sso.js';\nimport { pipeRoutes } from './routes/pipes.js';\nimport { authChallengeRoutes } from './routes/auth-challenges.js';\nimport { invitationRoutes } from './routes/invitations.js';\nimport { configRoutes } from './routes/config.js';\nimport { userFeatureRoutes } from './routes/user-features.js';\nimport { widgetRoutes } from './routes/widgets.js';\nimport { authorizationRoleRoutes } from './routes/authorization-roles.js';\nimport { authorizationPermissionRoutes } from './routes/authorization-permissions.js';\nimport { authorizationOrgRoleRoutes } from './routes/authorization-org-roles.js';\nimport { authorizationResourceRoutes } from './routes/authorization-resources.js';\nimport { authorizationCheckRoutes } from './routes/authorization-checks.js';\nimport { portalRoutes } from './routes/portal.js';\nimport { legacyMfaRoutes } from './routes/legacy-mfa.js';\nimport { apiKeyRoutes } from './routes/api-keys.js';\nimport { radarRoutes } from './routes/radar.js';\nimport { connectRoutes } from './routes/connect.js';\nimport { directoryRoutes } from './routes/directories.js';\nimport { auditLogRoutes } from './routes/audit-logs.js';\nimport { featureFlagRoutes } from './routes/feature-flags.js';\nimport { dataIntegrationRoutes } from './routes/data-integrations.js';\nimport { webhookEndpointRoutes } from './routes/webhook-endpoints.js';\nimport { eventRoutes } from './routes/events.js';\nimport { EventBus } from './event-bus.js';\nimport { STORE_KEYS, EVENTS } from './constants.js';\nimport {\n generateVerificationToken,\n hashPassword,\n expiresIn,\n formatUser,\n formatOrganization,\n formatMembership,\n formatConnection,\n formatSession,\n formatInvitation,\n formatRole,\n formatPermission,\n formatDirectory,\n formatDirectoryUser,\n formatDirectoryGroup,\n formatDomain,\n} from './helpers.js';\nimport type { WorkOSConnectionType, PipeProvider, PipeConnectionStatus } from './entities.js';\n\nexport { getWorkOSStore, type WorkOSStore } from './store.js';\nexport * from './entities.js';\n\nexport interface WorkOSSeedOrganization {\n name: string;\n external_id?: string;\n metadata?: Record<string, string>;\n domains?: Array<{ domain: string; state?: 'verified' | 'pending' }>;\n memberships?: Array<{\n user_id: string;\n role?: string;\n status?: 'active' | 'inactive' | 'pending';\n }>;\n}\n\nexport interface WorkOSSeedUser {\n email: string;\n first_name?: string;\n last_name?: string;\n password?: string;\n email_verified?: boolean;\n external_id?: string;\n metadata?: Record<string, string>;\n impersonator?: { email: string; reason: string };\n}\n\nexport interface WorkOSSeedConnection {\n name: string;\n connection_type?: WorkOSConnectionType;\n organization: string;\n state?: 'active' | 'inactive' | 'validating';\n domains?: string[];\n profiles?: Array<{\n email: string;\n first_name?: string;\n last_name?: string;\n idp_id?: string;\n groups?: string[];\n }>;\n}\n\nexport interface WorkOSSeedPipeConnection {\n user_id: string;\n provider: PipeProvider;\n scopes: string[];\n status?: PipeConnectionStatus;\n external_account_id?: string;\n}\n\nexport interface WorkOSSeedInvitation {\n email: string;\n organization_id?: string;\n inviter_user_id?: string;\n role_slug?: string;\n}\n\nexport interface WorkOSSeedRole {\n slug: string;\n name: string;\n description?: string;\n type?: 'EnvironmentRole' | 'OrganizationRole';\n organization_id?: string;\n is_default_role?: boolean;\n priority?: number;\n permissions?: string[];\n}\n\nexport interface WorkOSSeedPermission {\n slug: string;\n name: string;\n description?: string;\n}\n\nexport interface WorkOSSeedWebhookEndpoint {\n url: string;\n events?: string[];\n enabled?: boolean;\n}\n\nexport interface WorkOSSeedConfig {\n organizations?: WorkOSSeedOrganization[];\n users?: WorkOSSeedUser[];\n connections?: WorkOSSeedConnection[];\n pipeConnections?: WorkOSSeedPipeConnection[];\n invitations?: WorkOSSeedInvitation[];\n roles?: WorkOSSeedRole[];\n permissions?: WorkOSSeedPermission[];\n webhookEndpoints?: WorkOSSeedWebhookEndpoint[];\n}\n\nexport function seedFromConfig(store: Store, _baseUrl: string, config: WorkOSSeedConfig): void {\n const ws = getWorkOSStore(store);\n\n if (config.users) {\n for (const userConfig of config.users) {\n ws.users.insert({\n object: 'user',\n email: userConfig.email,\n first_name: userConfig.first_name ?? null,\n last_name: userConfig.last_name ?? null,\n email_verified: userConfig.email_verified ?? false,\n profile_picture_url: null,\n last_sign_in_at: null,\n external_id: userConfig.external_id ?? null,\n metadata: userConfig.metadata ?? {},\n locale: null,\n password_hash: userConfig.password ? hashPassword(userConfig.password) : null,\n impersonator: userConfig.impersonator ?? null,\n });\n }\n }\n\n if (config.organizations) {\n for (const orgConfig of config.organizations) {\n const org = ws.organizations.insert({\n object: 'organization',\n name: orgConfig.name,\n external_id: orgConfig.external_id ?? null,\n metadata: orgConfig.metadata ?? {},\n stripe_customer_id: null,\n });\n\n if (orgConfig.domains) {\n for (const dd of orgConfig.domains) {\n ws.organizationDomains.insert({\n object: 'organization_domain',\n organization_id: org.id,\n domain: dd.domain,\n state: dd.state ?? 'pending',\n verification_strategy: 'manual',\n verification_token: generateVerificationToken(),\n verification_prefix: 'workos-verify',\n });\n }\n }\n\n if (orgConfig.memberships) {\n for (const mm of orgConfig.memberships) {\n ws.organizationMemberships.insert({\n object: 'organization_membership',\n organization_id: org.id,\n user_id: mm.user_id,\n role: { slug: mm.role ?? 'member' },\n status: mm.status ?? 'active',\n external_id: null,\n metadata: {},\n });\n }\n }\n }\n }\n\n if (config.connections) {\n for (const connConfig of config.connections) {\n const org = ws.organizations.findOneBy('name', connConfig.organization);\n if (!org) continue;\n\n const domains = (connConfig.domains ?? []).map((d) => ({\n object: 'connection_domain' as const,\n id: generateId('conn_domain'),\n domain: d,\n }));\n\n const conn = ws.connections.insert({\n object: 'connection',\n organization_id: org.id,\n connection_type: connConfig.connection_type ?? 'GenericSAML',\n name: connConfig.name,\n state: connConfig.state ?? 'active',\n domains,\n });\n\n if (connConfig.profiles) {\n for (const p of connConfig.profiles) {\n ws.ssoProfiles.insert({\n object: 'profile',\n connection_id: conn.id,\n connection_type: conn.connection_type,\n organization_id: org.id,\n idp_id: p.idp_id ?? `idp_${generateId('usr')}`,\n email: p.email,\n first_name: p.first_name ?? null,\n last_name: p.last_name ?? null,\n groups: p.groups ?? [],\n raw_attributes: { email: p.email },\n });\n }\n }\n }\n }\n\n if (config.pipeConnections) {\n for (const pc of config.pipeConnections) {\n ws.pipeConnections.insert({\n object: 'pipe_connection',\n user_id: pc.user_id,\n provider: pc.provider,\n scopes: pc.scopes,\n status: pc.status ?? 'connected',\n external_account_id: pc.external_account_id ?? null,\n });\n }\n }\n\n if (config.permissions) {\n for (const permConfig of config.permissions) {\n ws.permissions.insert({\n object: 'permission',\n slug: permConfig.slug,\n name: permConfig.name,\n description: permConfig.description ?? null,\n });\n }\n }\n\n if (config.roles) {\n for (const roleConfig of config.roles) {\n const role = ws.roles.insert({\n object: 'role',\n slug: roleConfig.slug,\n name: roleConfig.name,\n description: roleConfig.description ?? null,\n type: roleConfig.type ?? 'EnvironmentRole',\n organization_id: roleConfig.organization_id ?? null,\n is_default_role: roleConfig.is_default_role ?? false,\n priority: roleConfig.priority ?? 0,\n });\n\n if (roleConfig.permissions) {\n for (const permSlug of roleConfig.permissions) {\n const perm = ws.permissions.findOneBy('slug', permSlug);\n if (perm) {\n ws.rolePermissions.insert({ role_id: role.id, permission_id: perm.id });\n }\n }\n }\n }\n }\n\n if (config.invitations) {\n for (const invConfig of config.invitations) {\n const token = generateVerificationToken();\n ws.invitations.insert({\n object: 'invitation',\n email: invConfig.email,\n state: 'pending',\n token,\n accept_invitation_url: `${_baseUrl}/user_management/invitations/accept?token=${token}`,\n organization_id: invConfig.organization_id ?? null,\n inviter_user_id: invConfig.inviter_user_id ?? null,\n role_slug: invConfig.role_slug ?? null,\n expires_at: expiresIn(72 * 60),\n });\n }\n }\n\n if (config.webhookEndpoints) {\n for (const whConfig of config.webhookEndpoints) {\n ws.webhookEndpoints.insert({\n object: 'webhook_endpoint',\n url: whConfig.url,\n secret: randomBytes(32).toString('hex'),\n enabled: whConfig.enabled !== false,\n events: whConfig.events ?? [],\n description: null,\n });\n }\n }\n}\n\nexport const workosPlugin: ServicePlugin = {\n name: 'workos',\n register(ctx: RouteContext): void {\n organizationRoutes(ctx);\n organizationDomainRoutes(ctx);\n membershipRoutes(ctx);\n userRoutes(ctx);\n emailVerificationRoutes(ctx);\n passwordResetRoutes(ctx);\n magicAuthRoutes(ctx);\n authFactorRoutes(ctx);\n authChallengeRoutes(ctx);\n sessionRoutes(ctx);\n authRoutes(ctx);\n connectionRoutes(ctx);\n ssoRoutes(ctx);\n pipeRoutes(ctx);\n invitationRoutes(ctx);\n configRoutes(ctx);\n userFeatureRoutes(ctx);\n widgetRoutes(ctx);\n authorizationRoleRoutes(ctx);\n authorizationPermissionRoutes(ctx);\n authorizationOrgRoleRoutes(ctx);\n authorizationResourceRoutes(ctx);\n authorizationCheckRoutes(ctx);\n portalRoutes(ctx);\n legacyMfaRoutes(ctx);\n apiKeyRoutes(ctx);\n radarRoutes(ctx);\n connectRoutes(ctx);\n directoryRoutes(ctx);\n auditLogRoutes(ctx);\n featureFlagRoutes(ctx);\n dataIntegrationRoutes(ctx);\n webhookEndpointRoutes(ctx);\n eventRoutes(ctx);\n\n // Set up event bus with collection hooks (Option A from spec)\n // Store on ctx.store for route-level access (hybrid Option A+B for action events)\n const eventBus = new EventBus(ctx.store);\n ctx.store.setData(STORE_KEYS.eventBus, eventBus);\n const ws = getWorkOSStore(ctx.store);\n\n ws.users.setHooks({\n onInsert: (u) => eventBus.emit({ event: EVENTS.userCreated, data: formatUser(u) }),\n onUpdate: (u) => eventBus.emit({ event: EVENTS.userUpdated, data: formatUser(u) }),\n onDelete: (u) => eventBus.emit({ event: EVENTS.userDeleted, data: formatUser(u) }),\n });\n ws.organizations.setHooks({\n onInsert: (o) => eventBus.emit({ event: EVENTS.organizationCreated, data: formatOrganization(o, ws) }),\n onUpdate: (o) => eventBus.emit({ event: EVENTS.organizationUpdated, data: formatOrganization(o, ws) }),\n onDelete: (o) => eventBus.emit({ event: EVENTS.organizationDeleted, data: formatOrganization(o, ws) }),\n });\n ws.organizationDomains.setHooks({\n onInsert: (d) => eventBus.emit({ event: EVENTS.organizationDomainCreated, data: formatDomain(d) }),\n onUpdate: (d) =>\n eventBus.emit({\n event: d.state === 'verified' ? EVENTS.organizationDomainVerified : EVENTS.organizationDomainUpdated,\n data: formatDomain(d),\n }),\n onDelete: (d) => eventBus.emit({ event: EVENTS.organizationDomainDeleted, data: formatDomain(d) }),\n });\n ws.organizationMemberships.setHooks({\n onInsert: (m) => eventBus.emit({ event: EVENTS.organizationMembershipCreated, data: formatMembership(m) }),\n onUpdate: (m) => eventBus.emit({ event: EVENTS.organizationMembershipUpdated, data: formatMembership(m) }),\n onDelete: (m) => eventBus.emit({ event: EVENTS.organizationMembershipDeleted, data: formatMembership(m) }),\n });\n ws.connections.setHooks({\n onInsert: (c) => eventBus.emit({ event: EVENTS.connectionCreated, data: formatConnection(c) }),\n onUpdate: (c) => eventBus.emit({ event: EVENTS.connectionUpdated, data: formatConnection(c) }),\n onDelete: (c) => eventBus.emit({ event: EVENTS.connectionDeleted, data: formatConnection(c) }),\n });\n ws.sessions.setHooks({\n onInsert: (s) => eventBus.emit({ event: EVENTS.sessionCreated, data: formatSession(s) }),\n onDelete: (s) => eventBus.emit({ event: EVENTS.sessionRevoked, data: formatSession(s) }),\n });\n ws.invitations.setHooks({\n onInsert: (i) => eventBus.emit({ event: EVENTS.invitationCreated, data: formatInvitation(i) }),\n });\n ws.roles.setHooks({\n onInsert: (r) => eventBus.emit({ event: EVENTS.roleCreated, data: formatRole(r) }),\n onUpdate: (r) => eventBus.emit({ event: EVENTS.roleUpdated, data: formatRole(r) }),\n onDelete: (r) => eventBus.emit({ event: EVENTS.roleDeleted, data: formatRole(r) }),\n });\n ws.permissions.setHooks({\n onInsert: (p) => eventBus.emit({ event: EVENTS.permissionCreated, data: formatPermission(p) }),\n onUpdate: (p) => eventBus.emit({ event: EVENTS.permissionUpdated, data: formatPermission(p) }),\n onDelete: (p) => eventBus.emit({ event: EVENTS.permissionDeleted, data: formatPermission(p) }),\n });\n ws.directories.setHooks({\n onInsert: (d) => eventBus.emit({ event: EVENTS.directoryCreated, data: formatDirectory(d) }),\n onUpdate: (d) => eventBus.emit({ event: EVENTS.directoryUpdated, data: formatDirectory(d) }),\n onDelete: (d) => eventBus.emit({ event: EVENTS.directoryDeleted, data: formatDirectory(d) }),\n });\n ws.directoryUsers.setHooks({\n onInsert: (u) => eventBus.emit({ event: EVENTS.directoryUserCreated, data: formatDirectoryUser(u) }),\n onUpdate: (u) => eventBus.emit({ event: EVENTS.directoryUserUpdated, data: formatDirectoryUser(u) }),\n onDelete: (u) => eventBus.emit({ event: EVENTS.directoryUserDeleted, data: formatDirectoryUser(u) }),\n });\n ws.directoryGroups.setHooks({\n onInsert: (g) => eventBus.emit({ event: EVENTS.directoryGroupCreated, data: formatDirectoryGroup(g) }),\n onUpdate: (g) => eventBus.emit({ event: EVENTS.directoryGroupUpdated, data: formatDirectoryGroup(g) }),\n onDelete: (g) => eventBus.emit({ event: EVENTS.directoryGroupDeleted, data: formatDirectoryGroup(g) }),\n });\n ws.webhookEndpoints.setHooks({\n onInsert: () => eventBus.rebuildIndex(),\n onUpdate: () => eventBus.rebuildIndex(),\n onDelete: () => eventBus.rebuildIndex(),\n });\n },\n seed(_store: Store, _baseUrl: string): void {\n // No default seed data — users provide their own via seedFromConfig\n },\n};\n\nexport default workosPlugin;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emulate/workos/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from 'node:crypto';\nimport type { ServicePlugin, Store, RouteContext } from '../core/index.js';\nimport { generateId } from '../core/index.js';\nimport { getWorkOSStore, type WorkOSStore } from './store.js';\nimport { organizationRoutes } from './routes/organizations.js';\nimport { organizationDomainRoutes } from './routes/organization-domains.js';\nimport { membershipRoutes } from './routes/memberships.js';\nimport { userRoutes } from './routes/users.js';\nimport { emailVerificationRoutes } from './routes/email-verification.js';\nimport { passwordResetRoutes } from './routes/password-reset.js';\nimport { magicAuthRoutes } from './routes/magic-auth.js';\nimport { authFactorRoutes } from './routes/auth-factors.js';\nimport { sessionRoutes } from './routes/sessions.js';\nimport { authRoutes } from './routes/auth.js';\nimport { connectionRoutes } from './routes/connections.js';\nimport { ssoRoutes } from './routes/sso.js';\nimport { pipeRoutes } from './routes/pipes.js';\nimport { authChallengeRoutes } from './routes/auth-challenges.js';\nimport { invitationRoutes } from './routes/invitations.js';\nimport { configRoutes } from './routes/config.js';\nimport { userFeatureRoutes } from './routes/user-features.js';\nimport { widgetRoutes } from './routes/widgets.js';\nimport { authorizationRoleRoutes } from './routes/authorization-roles.js';\nimport { authorizationPermissionRoutes } from './routes/authorization-permissions.js';\nimport { authorizationOrgRoleRoutes } from './routes/authorization-org-roles.js';\nimport { authorizationResourceRoutes } from './routes/authorization-resources.js';\nimport { authorizationCheckRoutes } from './routes/authorization-checks.js';\nimport { portalRoutes } from './routes/portal.js';\nimport { legacyMfaRoutes } from './routes/legacy-mfa.js';\nimport { apiKeyRoutes } from './routes/api-keys.js';\nimport { radarRoutes } from './routes/radar.js';\nimport { connectRoutes } from './routes/connect.js';\nimport { directoryRoutes } from './routes/directories.js';\nimport { auditLogRoutes } from './routes/audit-logs.js';\nimport { featureFlagRoutes } from './routes/feature-flags.js';\nimport { dataIntegrationRoutes } from './routes/data-integrations.js';\nimport { webhookEndpointRoutes } from './routes/webhook-endpoints.js';\nimport { eventRoutes } from './routes/events.js';\nimport { EventBus } from './event-bus.js';\nimport { STORE_KEYS, EVENTS } from './constants.js';\nimport {\n generateVerificationToken,\n hashPassword,\n expiresIn,\n formatUser,\n formatOrganization,\n formatMembership,\n formatConnection,\n formatSession,\n formatInvitation,\n formatRole,\n formatPermission,\n formatDirectory,\n formatDirectoryUser,\n formatDirectoryGroup,\n formatDomain,\n} from './helpers.js';\nimport type { WorkOSConnectionType, PipeProvider, PipeConnectionStatus } from './entities.js';\n\nexport { getWorkOSStore, type WorkOSStore } from './store.js';\nexport * from './entities.js';\n\nexport interface WorkOSSeedOrganization {\n name: string;\n external_id?: string;\n metadata?: Record<string, string>;\n domains?: Array<{ domain: string; state?: 'verified' | 'pending' }>;\n memberships?: Array<{\n user_id: string;\n role?: string;\n status?: 'active' | 'inactive' | 'pending';\n }>;\n}\n\nexport interface WorkOSSeedUser {\n email: string;\n first_name?: string;\n last_name?: string;\n password?: string;\n email_verified?: boolean;\n external_id?: string;\n metadata?: Record<string, string>;\n impersonator?: { email: string; reason: string };\n}\n\nexport interface WorkOSSeedConnection {\n name: string;\n connection_type?: WorkOSConnectionType;\n organization: string;\n state?: 'active' | 'inactive' | 'validating';\n domains?: string[];\n profiles?: Array<{\n email: string;\n first_name?: string;\n last_name?: string;\n idp_id?: string;\n groups?: string[];\n }>;\n}\n\nexport interface WorkOSSeedPipeConnection {\n user_id: string;\n provider: PipeProvider;\n scopes: string[];\n status?: PipeConnectionStatus;\n external_account_id?: string;\n}\n\nexport interface WorkOSSeedInvitation {\n email: string;\n organization_id?: string;\n inviter_user_id?: string;\n role_slug?: string;\n}\n\nexport interface WorkOSSeedRole {\n slug: string;\n name: string;\n description?: string;\n type?: 'EnvironmentRole' | 'OrganizationRole';\n organization_id?: string;\n is_default_role?: boolean;\n priority?: number;\n permissions?: string[];\n}\n\nexport interface WorkOSSeedPermission {\n slug: string;\n name: string;\n description?: string;\n}\n\nexport interface WorkOSSeedWebhookEndpoint {\n endpoint_url?: string;\n /** @deprecated Use endpoint_url */\n url?: string;\n events?: string[];\n enabled?: boolean;\n}\n\nexport interface WorkOSSeedConfig {\n organizations?: WorkOSSeedOrganization[];\n users?: WorkOSSeedUser[];\n connections?: WorkOSSeedConnection[];\n pipeConnections?: WorkOSSeedPipeConnection[];\n invitations?: WorkOSSeedInvitation[];\n roles?: WorkOSSeedRole[];\n permissions?: WorkOSSeedPermission[];\n webhookEndpoints?: WorkOSSeedWebhookEndpoint[];\n}\n\nexport function seedFromConfig(store: Store, _baseUrl: string, config: WorkOSSeedConfig): void {\n const ws = getWorkOSStore(store);\n\n if (config.users) {\n for (const userConfig of config.users) {\n ws.users.insert({\n object: 'user',\n email: userConfig.email,\n first_name: userConfig.first_name ?? null,\n last_name: userConfig.last_name ?? null,\n email_verified: userConfig.email_verified ?? false,\n profile_picture_url: null,\n last_sign_in_at: null,\n external_id: userConfig.external_id ?? null,\n metadata: userConfig.metadata ?? {},\n locale: null,\n password_hash: userConfig.password ? hashPassword(userConfig.password) : null,\n impersonator: userConfig.impersonator ?? null,\n });\n }\n }\n\n if (config.organizations) {\n for (const orgConfig of config.organizations) {\n const org = ws.organizations.insert({\n object: 'organization',\n name: orgConfig.name,\n external_id: orgConfig.external_id ?? null,\n metadata: orgConfig.metadata ?? {},\n stripe_customer_id: null,\n });\n\n if (orgConfig.domains) {\n for (const dd of orgConfig.domains) {\n ws.organizationDomains.insert({\n object: 'organization_domain',\n organization_id: org.id,\n domain: dd.domain,\n state: dd.state ?? 'pending',\n verification_strategy: 'manual',\n verification_token: generateVerificationToken(),\n verification_prefix: 'workos-verify',\n });\n }\n }\n\n if (orgConfig.memberships) {\n for (const mm of orgConfig.memberships) {\n ws.organizationMemberships.insert({\n object: 'organization_membership',\n organization_id: org.id,\n user_id: mm.user_id,\n role: { slug: mm.role ?? 'member' },\n status: mm.status ?? 'active',\n external_id: null,\n metadata: {},\n });\n }\n }\n }\n }\n\n if (config.connections) {\n for (const connConfig of config.connections) {\n const org = ws.organizations.findOneBy('name', connConfig.organization);\n if (!org) continue;\n\n const domains = (connConfig.domains ?? []).map((d) => ({\n object: 'connection_domain' as const,\n id: generateId('conn_domain'),\n domain: d,\n }));\n\n const conn = ws.connections.insert({\n object: 'connection',\n organization_id: org.id,\n connection_type: connConfig.connection_type ?? 'GenericSAML',\n name: connConfig.name,\n state: connConfig.state ?? 'active',\n domains,\n });\n\n if (connConfig.profiles) {\n for (const p of connConfig.profiles) {\n ws.ssoProfiles.insert({\n object: 'profile',\n connection_id: conn.id,\n connection_type: conn.connection_type,\n organization_id: org.id,\n idp_id: p.idp_id ?? `idp_${generateId('usr')}`,\n email: p.email,\n first_name: p.first_name ?? null,\n last_name: p.last_name ?? null,\n groups: p.groups ?? [],\n raw_attributes: { email: p.email },\n });\n }\n }\n }\n }\n\n if (config.pipeConnections) {\n for (const pc of config.pipeConnections) {\n ws.pipeConnections.insert({\n object: 'pipe_connection',\n user_id: pc.user_id,\n provider: pc.provider,\n scopes: pc.scopes,\n status: pc.status ?? 'connected',\n external_account_id: pc.external_account_id ?? null,\n });\n }\n }\n\n if (config.permissions) {\n for (const permConfig of config.permissions) {\n ws.permissions.insert({\n object: 'permission',\n slug: permConfig.slug,\n name: permConfig.name,\n description: permConfig.description ?? null,\n });\n }\n }\n\n if (config.roles) {\n for (const roleConfig of config.roles) {\n const role = ws.roles.insert({\n object: 'role',\n slug: roleConfig.slug,\n name: roleConfig.name,\n description: roleConfig.description ?? null,\n type: roleConfig.type ?? 'EnvironmentRole',\n organization_id: roleConfig.organization_id ?? null,\n is_default_role: roleConfig.is_default_role ?? false,\n priority: roleConfig.priority ?? 0,\n });\n\n if (roleConfig.permissions) {\n for (const permSlug of roleConfig.permissions) {\n const perm = ws.permissions.findOneBy('slug', permSlug);\n if (perm) {\n ws.rolePermissions.insert({ role_id: role.id, permission_id: perm.id });\n }\n }\n }\n }\n }\n\n if (config.invitations) {\n for (const invConfig of config.invitations) {\n const token = generateVerificationToken();\n ws.invitations.insert({\n object: 'invitation',\n email: invConfig.email,\n state: 'pending',\n token,\n accept_invitation_url: `${_baseUrl}/user_management/invitations/accept?token=${token}`,\n organization_id: invConfig.organization_id ?? null,\n inviter_user_id: invConfig.inviter_user_id ?? null,\n role_slug: invConfig.role_slug ?? null,\n expires_at: expiresIn(72 * 60),\n });\n }\n }\n\n if (config.webhookEndpoints) {\n for (const whConfig of config.webhookEndpoints) {\n const endpointUrl = whConfig.endpoint_url ?? whConfig.url;\n if (!endpointUrl || typeof endpointUrl !== 'string') {\n throw new Error('workos seed config: webhookEndpoints[].endpoint_url is required');\n }\n ws.webhookEndpoints.insert({\n object: 'webhook_endpoint',\n endpoint_url: endpointUrl,\n secret: randomBytes(32).toString('hex'),\n enabled: whConfig.enabled !== false,\n events: whConfig.events ?? [],\n description: null,\n });\n }\n }\n}\n\nexport const workosPlugin: ServicePlugin = {\n name: 'workos',\n register(ctx: RouteContext): void {\n organizationRoutes(ctx);\n organizationDomainRoutes(ctx);\n membershipRoutes(ctx);\n userRoutes(ctx);\n emailVerificationRoutes(ctx);\n passwordResetRoutes(ctx);\n magicAuthRoutes(ctx);\n authFactorRoutes(ctx);\n authChallengeRoutes(ctx);\n sessionRoutes(ctx);\n authRoutes(ctx);\n connectionRoutes(ctx);\n ssoRoutes(ctx);\n pipeRoutes(ctx);\n invitationRoutes(ctx);\n configRoutes(ctx);\n userFeatureRoutes(ctx);\n widgetRoutes(ctx);\n authorizationRoleRoutes(ctx);\n authorizationPermissionRoutes(ctx);\n authorizationOrgRoleRoutes(ctx);\n authorizationResourceRoutes(ctx);\n authorizationCheckRoutes(ctx);\n portalRoutes(ctx);\n legacyMfaRoutes(ctx);\n apiKeyRoutes(ctx);\n radarRoutes(ctx);\n connectRoutes(ctx);\n directoryRoutes(ctx);\n auditLogRoutes(ctx);\n featureFlagRoutes(ctx);\n dataIntegrationRoutes(ctx);\n webhookEndpointRoutes(ctx);\n eventRoutes(ctx);\n\n // Set up event bus with collection hooks (Option A from spec)\n // Store on ctx.store for route-level access (hybrid Option A+B for action events)\n const eventBus = new EventBus(ctx.store);\n ctx.store.setData(STORE_KEYS.eventBus, eventBus);\n const ws = getWorkOSStore(ctx.store);\n\n ws.users.setHooks({\n onInsert: (u) => eventBus.emit({ event: EVENTS.userCreated, data: formatUser(u) }),\n onUpdate: (u) => eventBus.emit({ event: EVENTS.userUpdated, data: formatUser(u) }),\n onDelete: (u) => eventBus.emit({ event: EVENTS.userDeleted, data: formatUser(u) }),\n });\n ws.organizations.setHooks({\n onInsert: (o) => eventBus.emit({ event: EVENTS.organizationCreated, data: formatOrganization(o, ws) }),\n onUpdate: (o) => eventBus.emit({ event: EVENTS.organizationUpdated, data: formatOrganization(o, ws) }),\n onDelete: (o) => eventBus.emit({ event: EVENTS.organizationDeleted, data: formatOrganization(o, ws) }),\n });\n ws.organizationDomains.setHooks({\n onInsert: (d) => eventBus.emit({ event: EVENTS.organizationDomainCreated, data: formatDomain(d) }),\n onUpdate: (d) =>\n eventBus.emit({\n event: d.state === 'verified' ? EVENTS.organizationDomainVerified : EVENTS.organizationDomainUpdated,\n data: formatDomain(d),\n }),\n onDelete: (d) => eventBus.emit({ event: EVENTS.organizationDomainDeleted, data: formatDomain(d) }),\n });\n ws.organizationMemberships.setHooks({\n onInsert: (m) => eventBus.emit({ event: EVENTS.organizationMembershipCreated, data: formatMembership(m) }),\n onUpdate: (m) => eventBus.emit({ event: EVENTS.organizationMembershipUpdated, data: formatMembership(m) }),\n onDelete: (m) => eventBus.emit({ event: EVENTS.organizationMembershipDeleted, data: formatMembership(m) }),\n });\n ws.connections.setHooks({\n onInsert: (c) => eventBus.emit({ event: EVENTS.connectionCreated, data: formatConnection(c) }),\n onUpdate: (c) => eventBus.emit({ event: EVENTS.connectionUpdated, data: formatConnection(c) }),\n onDelete: (c) => eventBus.emit({ event: EVENTS.connectionDeleted, data: formatConnection(c) }),\n });\n ws.sessions.setHooks({\n onInsert: (s) => eventBus.emit({ event: EVENTS.sessionCreated, data: formatSession(s) }),\n onDelete: (s) => eventBus.emit({ event: EVENTS.sessionRevoked, data: formatSession(s) }),\n });\n ws.invitations.setHooks({\n onInsert: (i) => eventBus.emit({ event: EVENTS.invitationCreated, data: formatInvitation(i) }),\n });\n ws.roles.setHooks({\n onInsert: (r) => eventBus.emit({ event: EVENTS.roleCreated, data: formatRole(r) }),\n onUpdate: (r) => eventBus.emit({ event: EVENTS.roleUpdated, data: formatRole(r) }),\n onDelete: (r) => eventBus.emit({ event: EVENTS.roleDeleted, data: formatRole(r) }),\n });\n ws.permissions.setHooks({\n onInsert: (p) => eventBus.emit({ event: EVENTS.permissionCreated, data: formatPermission(p) }),\n onUpdate: (p) => eventBus.emit({ event: EVENTS.permissionUpdated, data: formatPermission(p) }),\n onDelete: (p) => eventBus.emit({ event: EVENTS.permissionDeleted, data: formatPermission(p) }),\n });\n ws.directories.setHooks({\n onInsert: (d) => eventBus.emit({ event: EVENTS.directoryCreated, data: formatDirectory(d) }),\n onUpdate: (d) => eventBus.emit({ event: EVENTS.directoryUpdated, data: formatDirectory(d) }),\n onDelete: (d) => eventBus.emit({ event: EVENTS.directoryDeleted, data: formatDirectory(d) }),\n });\n ws.directoryUsers.setHooks({\n onInsert: (u) => eventBus.emit({ event: EVENTS.directoryUserCreated, data: formatDirectoryUser(u) }),\n onUpdate: (u) => eventBus.emit({ event: EVENTS.directoryUserUpdated, data: formatDirectoryUser(u) }),\n onDelete: (u) => eventBus.emit({ event: EVENTS.directoryUserDeleted, data: formatDirectoryUser(u) }),\n });\n ws.directoryGroups.setHooks({\n onInsert: (g) => eventBus.emit({ event: EVENTS.directoryGroupCreated, data: formatDirectoryGroup(g) }),\n onUpdate: (g) => eventBus.emit({ event: EVENTS.directoryGroupUpdated, data: formatDirectoryGroup(g) }),\n onDelete: (g) => eventBus.emit({ event: EVENTS.directoryGroupDeleted, data: formatDirectoryGroup(g) }),\n });\n ws.webhookEndpoints.setHooks({\n onInsert: () => eventBus.rebuildIndex(),\n onUpdate: () => eventBus.rebuildIndex(),\n onDelete: () => eventBus.rebuildIndex(),\n });\n },\n seed(_store: Store, _baseUrl: string): void {\n // No default seed data — users provide their own via seedFromConfig\n },\n};\n\nexport default workosPlugin;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-org-roles.js","sourceRoot":"","sources":["../../../../src/emulate/workos/routes/authorization-org-roles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"authorization-org-roles.js","sourceRoot":"","sources":["../../../../src/emulate/workos/routes/authorization-org-roles.ts"],"names":[],"mappings":"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","sourcesContent":["import { type RouteContext, notFound, validationError, parseJsonBody } from '../../core/index.js';\nimport { getWorkOSStore } from '../store.js';\nimport { formatRole } from '../helpers.js';\nimport { findOrgRole, requireOrgRole, registerRoleRoutes } from '../role-helpers.js';\n\nexport function authorizationOrgRoleRoutes(ctx: RouteContext): void {\n const { app, store } = ctx;\n const ws = getWorkOSStore(store);\n const prefix = '/authorization/organizations/:orgId/roles';\n\n // Priority ordering — must be registered before :slug routes\n app.put(`${prefix}/priority`, async (c) => {\n const orgId = c.req.param('orgId');\n const body = await parseJsonBody(c);\n const slugs = body.slugs as string[];\n\n if (!Array.isArray(slugs)) {\n throw validationError('slugs must be an array', [{ field: 'slugs', code: 'invalid' }]);\n }\n\n // Fetch once, build slug map for O(1) lookups\n const orgRoles = ws.roles.findBy('organization_id', orgId).filter((r) => r.type === 'OrganizationRole');\n const rolesBySlug = new Map(orgRoles.map((r) => [r.slug, r]));\n\n for (let i = 0; i < slugs.length; i++) {\n const role = rolesBySlug.get(slugs[i]!);\n if (!role) throw notFound('Role');\n ws.roles.update(role.id, { priority: i });\n }\n\n // Re-fetch for updated priority values\n const updated = ws.roles\n .findBy('organization_id', orgId)\n .filter((r) => r.type === 'OrganizationRole')\n .sort((a, b) => a.priority - b.priority);\n\n return c.json({\n object: 'list',\n data: updated.map(formatRole),\n list_metadata: { before: null, after: null },\n });\n });\n\n registerRoleRoutes(ctx, {\n pathPrefix: prefix,\n roleType: 'OrganizationRole',\n requireRole: (ws, c) => requireOrgRole(ws, c.req.param('orgId')!, c.req.param('slug')!),\n findRole: (ws, c, slug) => findOrgRole(ws, c.req.param('orgId')!, slug),\n listFilter: (c) => (r) => r.organization_id === c.req.param('orgId')! && r.type === 'OrganizationRole',\n insertDefaults: (c) => ({ organization_id: c.req.param('orgId')! }),\n duplicateMessage: 'Role with this slug already exists in this organization',\n validateBeforeCreate: (ws, c) => {\n const org = ws.organizations.get(c.req.param('orgId')!);\n if (!org) throw notFound('Organization');\n },\n });\n\n // Org-specific: delete single permission from role\n app.delete(`${prefix}/:slug/permissions/:permissionSlug`, (c) => {\n const role = requireOrgRole(ws, c.req.param('orgId'), c.req.param('slug'));\n\n const perm = ws.permissions.findOneBy('slug', c.req.param('permissionSlug'));\n if (!perm) throw notFound('Permission');\n\n const rp = ws.rolePermissions.findBy('role_id', role.id).find((rp) => rp.permission_id === perm.id);\n if (!rp) throw notFound('RolePermission');\n\n ws.rolePermissions.delete(rp.id);\n return c.body(null, 204);\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization-roles.js","sourceRoot":"","sources":["../../../../src/emulate/workos/routes/authorization-roles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAErF,MAAM,UAAU,uBAAuB,CAAC,GAAiB;IACvD,kBAAkB,CAAC,GAAG,EAAE;QACtB,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"authorization-roles.js","sourceRoot":"","sources":["../../../../src/emulate/workos/routes/authorization-roles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAErF,MAAM,UAAU,uBAAuB,CAAC,GAAiB;IACvD,kBAAkB,CAAC,GAAG,EAAE;QACtB,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;QAChE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB;QACrD,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACjD,gBAAgB,EAAE,oCAAoC;KACvD,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { RouteContext } from '../../core/index.js';\nimport { findEnvRole, requireEnvRole, registerRoleRoutes } from '../role-helpers.js';\n\nexport function authorizationRoleRoutes(ctx: RouteContext): void {\n registerRoleRoutes(ctx, {\n pathPrefix: '/authorization/roles',\n roleType: 'EnvironmentRole',\n requireRole: (ws, c) => requireEnvRole(ws, c.req.param('slug')!),\n findRole: (ws, _c, slug) => findEnvRole(ws, slug),\n listFilter: () => (r) => r.type === 'EnvironmentRole',\n insertDefaults: () => ({ organization_id: null }),\n duplicateMessage: 'Role with this slug already exists',\n });\n}\n"]}
|
|
@@ -7,14 +7,14 @@ export function webhookEndpointRoutes(ctx) {
|
|
|
7
7
|
const ws = getWorkOSStore(store);
|
|
8
8
|
app.post('/webhook_endpoints', async (c) => {
|
|
9
9
|
const body = await parseJsonBody(c);
|
|
10
|
-
const
|
|
11
|
-
if (!
|
|
12
|
-
throw validationError('
|
|
10
|
+
const endpointUrl = (body.endpoint_url ?? body.url);
|
|
11
|
+
if (!endpointUrl || typeof endpointUrl !== 'string') {
|
|
12
|
+
throw validationError('endpoint_url is required', [{ field: 'endpoint_url', code: 'required' }]);
|
|
13
13
|
}
|
|
14
14
|
const secret = body.secret ?? randomBytes(32).toString('hex');
|
|
15
15
|
const endpoint = ws.webhookEndpoints.insert({
|
|
16
16
|
object: 'webhook_endpoint',
|
|
17
|
-
|
|
17
|
+
endpoint_url: endpointUrl,
|
|
18
18
|
secret,
|
|
19
19
|
enabled: body.enabled !== false,
|
|
20
20
|
events: Array.isArray(body.events) ? body.events : [],
|
|
@@ -40,11 +40,12 @@ export function webhookEndpointRoutes(ctx) {
|
|
|
40
40
|
throw notFound('WebhookEndpoint');
|
|
41
41
|
const body = await parseJsonBody(c);
|
|
42
42
|
const updates = {};
|
|
43
|
-
if ('url' in body) {
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
if ('endpoint_url' in body || 'url' in body) {
|
|
44
|
+
const newUrl = (body.endpoint_url ?? body.url);
|
|
45
|
+
if (!newUrl || typeof newUrl !== 'string') {
|
|
46
|
+
throw validationError('endpoint_url is required', [{ field: 'endpoint_url', code: 'required' }]);
|
|
46
47
|
}
|
|
47
|
-
updates.
|
|
48
|
+
updates.endpoint_url = newUrl;
|
|
48
49
|
}
|
|
49
50
|
if ('enabled' in body)
|
|
50
51
|
updates.enabled = !!body.enabled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../../src/emulate/workos/routes/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAqB,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,UAAU,qBAAqB,CAAC,GAAiB;IACrD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAEjC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,
|
|
1
|
+
{"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../../src/emulate/workos/routes/webhook-endpoints.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { type RouteContext, notFound, validationError, parseJsonBody, parseListParams } from '../../core/index.js';\nimport { getWorkOSStore } from '../store.js';\nimport { formatWebhookEndpoint, formatListResponse } from '../helpers.js';\n\nexport function webhookEndpointRoutes(ctx: RouteContext): void {\n const { app, store } = ctx;\n const ws = getWorkOSStore(store);\n\n app.post('/webhook_endpoints', async (c) => {\n const body = await parseJsonBody(c);\n const endpointUrl = (body.endpoint_url ?? body.url) as string | undefined;\n if (!endpointUrl || typeof endpointUrl !== 'string') {\n throw validationError('endpoint_url is required', [{ field: 'endpoint_url', code: 'required' }]);\n }\n\n const secret = (body.secret as string) ?? randomBytes(32).toString('hex');\n\n const endpoint = ws.webhookEndpoints.insert({\n object: 'webhook_endpoint',\n endpoint_url: endpointUrl,\n secret,\n enabled: body.enabled !== false,\n events: Array.isArray(body.events) ? (body.events as string[]) : [],\n description: (body.description as string) ?? null,\n });\n\n return c.json(formatWebhookEndpoint(endpoint, { includeSecret: true }), 201);\n });\n\n app.get('/webhook_endpoints', (c) => {\n const url = new URL(c.req.url);\n const params = parseListParams(url);\n\n const result = ws.webhookEndpoints.list(params);\n return c.json(formatListResponse(result, (ep) => formatWebhookEndpoint(ep)));\n });\n\n app.get('/webhook_endpoints/:id', (c) => {\n const ep = ws.webhookEndpoints.get(c.req.param('id'));\n if (!ep) throw notFound('WebhookEndpoint');\n return c.json(formatWebhookEndpoint(ep));\n });\n\n app.put('/webhook_endpoints/:id', async (c) => {\n const ep = ws.webhookEndpoints.get(c.req.param('id'));\n if (!ep) throw notFound('WebhookEndpoint');\n\n const body = await parseJsonBody(c);\n const updates: Record<string, unknown> = {};\n\n if ('endpoint_url' in body || 'url' in body) {\n const newUrl = (body.endpoint_url ?? body.url) as string | undefined;\n if (!newUrl || typeof newUrl !== 'string') {\n throw validationError('endpoint_url is required', [{ field: 'endpoint_url', code: 'required' }]);\n }\n updates.endpoint_url = newUrl;\n }\n if ('enabled' in body) updates.enabled = !!body.enabled;\n if ('events' in body) updates.events = Array.isArray(body.events) ? body.events : [];\n if ('description' in body) updates.description = body.description ?? null;\n\n const updated = ws.webhookEndpoints.update(ep.id, updates);\n return c.json(formatWebhookEndpoint(updated!));\n });\n\n app.delete('/webhook_endpoints/:id', (c) => {\n const ep = ws.webhookEndpoints.get(c.req.param('id'));\n if (!ep) throw notFound('WebhookEndpoint');\n ws.webhookEndpoints.delete(ep.id);\n return c.body(null, 204);\n });\n}\n"]}
|
|
@@ -94,7 +94,7 @@ export function getWorkOSStore(store) {
|
|
|
94
94
|
]),
|
|
95
95
|
apiKeyRecords: store.collection('workos.api_keys', ID_PREFIXES.api_key, ['key', 'environment']),
|
|
96
96
|
events: store.collection('workos.events', ID_PREFIXES.event, ['event']),
|
|
97
|
-
webhookEndpoints: store.collection('workos.webhook_endpoints', ID_PREFIXES.webhook_endpoint, ['
|
|
97
|
+
webhookEndpoints: store.collection('workos.webhook_endpoints', ID_PREFIXES.webhook_endpoint, ['endpoint_url']),
|
|
98
98
|
};
|
|
99
99
|
store.setData(STORE_KEYS.workosStore, ws);
|
|
100
100
|
return ws;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/emulate/workos/store.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Store, type Collection, ID_PREFIXES } from '../core/index.js';\nimport { STORE_KEYS } from './constants.js';\nimport type {\n WorkOSOrganization,\n WorkOSOrganizationDomain,\n WorkOSOrganizationMembership,\n WorkOSUser,\n WorkOSSession,\n WorkOSEmailVerification,\n WorkOSPasswordReset,\n WorkOSMagicAuth,\n WorkOSAuthenticationFactor,\n WorkOSAuthorizationCode,\n WorkOSIdentity,\n WorkOSConnection,\n WorkOSSSOProfile,\n WorkOSSSOAuthorization,\n WorkOSPipeConnection,\n WorkOSRefreshToken,\n WorkOSAuthenticationChallenge,\n WorkOSDeviceAuthorization,\n WorkOSInvitation,\n WorkOSRedirectUri,\n WorkOSCorsOrigin,\n WorkOSAuthorizedApplication,\n WorkOSConnectedAccount,\n WorkOSRole,\n WorkOSPermission,\n WorkOSRolePermission,\n WorkOSAuthorizationResource,\n WorkOSRoleAssignment,\n WorkOSDirectory,\n WorkOSDirectoryUser,\n WorkOSDirectoryGroup,\n WorkOSAuditLogAction,\n WorkOSAuditLogEvent,\n WorkOSAuditLogExport,\n WorkOSFeatureFlag,\n WorkOSFlagTarget,\n WorkOSConnectApplication,\n WorkOSClientSecret,\n WorkOSDataIntegrationAuth,\n WorkOSRadarAttempt,\n WorkOSApiKey,\n WorkOSEvent,\n WorkOSWebhookEndpoint,\n} from './entities.js';\n\nexport interface WorkOSStore {\n organizations: Collection<WorkOSOrganization>;\n organizationDomains: Collection<WorkOSOrganizationDomain>;\n organizationMemberships: Collection<WorkOSOrganizationMembership>;\n users: Collection<WorkOSUser>;\n sessions: Collection<WorkOSSession>;\n emailVerifications: Collection<WorkOSEmailVerification>;\n passwordResets: Collection<WorkOSPasswordReset>;\n magicAuths: Collection<WorkOSMagicAuth>;\n authFactors: Collection<WorkOSAuthenticationFactor>;\n authCodes: Collection<WorkOSAuthorizationCode>;\n identities: Collection<WorkOSIdentity>;\n connections: Collection<WorkOSConnection>;\n ssoProfiles: Collection<WorkOSSSOProfile>;\n ssoAuthorizations: Collection<WorkOSSSOAuthorization>;\n pipeConnections: Collection<WorkOSPipeConnection>;\n refreshTokens: Collection<WorkOSRefreshToken>;\n authChallenges: Collection<WorkOSAuthenticationChallenge>;\n deviceAuthorizations: Collection<WorkOSDeviceAuthorization>;\n invitations: Collection<WorkOSInvitation>;\n redirectUris: Collection<WorkOSRedirectUri>;\n corsOrigins: Collection<WorkOSCorsOrigin>;\n authorizedApplications: Collection<WorkOSAuthorizedApplication>;\n connectedAccounts: Collection<WorkOSConnectedAccount>;\n roles: Collection<WorkOSRole>;\n permissions: Collection<WorkOSPermission>;\n rolePermissions: Collection<WorkOSRolePermission>;\n authorizationResources: Collection<WorkOSAuthorizationResource>;\n roleAssignments: Collection<WorkOSRoleAssignment>;\n directories: Collection<WorkOSDirectory>;\n directoryUsers: Collection<WorkOSDirectoryUser>;\n directoryGroups: Collection<WorkOSDirectoryGroup>;\n auditLogActions: Collection<WorkOSAuditLogAction>;\n auditLogEvents: Collection<WorkOSAuditLogEvent>;\n auditLogExports: Collection<WorkOSAuditLogExport>;\n featureFlags: Collection<WorkOSFeatureFlag>;\n flagTargets: Collection<WorkOSFlagTarget>;\n connectApplications: Collection<WorkOSConnectApplication>;\n clientSecrets: Collection<WorkOSClientSecret>;\n dataIntegrationAuths: Collection<WorkOSDataIntegrationAuth>;\n radarAttempts: Collection<WorkOSRadarAttempt>;\n apiKeyRecords: Collection<WorkOSApiKey>;\n events: Collection<WorkOSEvent>;\n webhookEndpoints: Collection<WorkOSWebhookEndpoint>;\n}\n\nexport function getWorkOSStore(store: Store): WorkOSStore {\n const cached = store.getData<WorkOSStore>(STORE_KEYS.workosStore);\n if (cached) return cached;\n\n const ws: WorkOSStore = {\n organizations: store.collection<WorkOSOrganization>('workos.organizations', ID_PREFIXES.organization, [\n 'name',\n 'external_id',\n ]),\n organizationDomains: store.collection<WorkOSOrganizationDomain>(\n 'workos.organization_domains',\n ID_PREFIXES.organization_domain,\n ['organization_id', 'domain'],\n ),\n organizationMemberships: store.collection<WorkOSOrganizationMembership>(\n 'workos.organization_memberships',\n ID_PREFIXES.organization_membership,\n ['organization_id', 'user_id'],\n ),\n users: store.collection<WorkOSUser>('workos.users', ID_PREFIXES.user, ['email', 'external_id']),\n sessions: store.collection<WorkOSSession>('workos.sessions', ID_PREFIXES.session, ['user_id']),\n emailVerifications: store.collection<WorkOSEmailVerification>(\n 'workos.email_verifications',\n ID_PREFIXES.email_verification,\n ['user_id'],\n ),\n passwordResets: store.collection<WorkOSPasswordReset>('workos.password_resets', ID_PREFIXES.password_reset, [\n 'user_id',\n ]),\n magicAuths: store.collection<WorkOSMagicAuth>('workos.magic_auths', ID_PREFIXES.magic_auth, ['user_id']),\n authFactors: store.collection<WorkOSAuthenticationFactor>(\n 'workos.auth_factors',\n ID_PREFIXES.authentication_factor,\n ['user_id'],\n ),\n authCodes: store.collection<WorkOSAuthorizationCode>('workos.auth_codes', ID_PREFIXES.authorization_code, [\n 'user_id',\n 'code',\n ]),\n identities: store.collection<WorkOSIdentity>('workos.identities', ID_PREFIXES.identity, ['user_id']),\n connections: store.collection<WorkOSConnection>('workos.connections', ID_PREFIXES.connection, ['organization_id']),\n ssoProfiles: store.collection<WorkOSSSOProfile>('workos.sso_profiles', ID_PREFIXES.profile, [\n 'connection_id',\n 'email',\n ]),\n ssoAuthorizations: store.collection<WorkOSSSOAuthorization>(\n 'workos.sso_authorizations',\n ID_PREFIXES.sso_authorization,\n ['code'],\n ),\n pipeConnections: store.collection<WorkOSPipeConnection>('workos.pipe_connections', ID_PREFIXES.pipe_connection, [\n 'user_id',\n 'provider',\n ]),\n refreshTokens: store.collection<WorkOSRefreshToken>('workos.refresh_tokens', ID_PREFIXES.refresh_token, [\n 'token',\n 'user_id',\n 'session_id',\n ]),\n authChallenges: store.collection<WorkOSAuthenticationChallenge>(\n 'workos.auth_challenges',\n ID_PREFIXES.authentication_challenge,\n ['user_id', 'factor_id'],\n ),\n deviceAuthorizations: store.collection<WorkOSDeviceAuthorization>(\n 'workos.device_authorizations',\n ID_PREFIXES.device_authorization,\n ['device_code', 'user_code'],\n ),\n invitations: store.collection<WorkOSInvitation>('workos.invitations', ID_PREFIXES.invitation, [\n 'email',\n 'token',\n 'organization_id',\n ]),\n redirectUris: store.collection<WorkOSRedirectUri>('workos.redirect_uris', ID_PREFIXES.redirect_uri, ['uri']),\n corsOrigins: store.collection<WorkOSCorsOrigin>('workos.cors_origins', ID_PREFIXES.cors_origin, ['origin']),\n authorizedApplications: store.collection<WorkOSAuthorizedApplication>(\n 'workos.authorized_applications',\n ID_PREFIXES.authorized_application,\n ['user_id'],\n ),\n connectedAccounts: store.collection<WorkOSConnectedAccount>(\n 'workos.connected_accounts',\n ID_PREFIXES.connected_account,\n ['user_id', 'provider'],\n ),\n roles: store.collection<WorkOSRole>('workos.roles', ID_PREFIXES.role, ['slug', 'organization_id']),\n permissions: store.collection<WorkOSPermission>('workos.permissions', ID_PREFIXES.permission, ['slug']),\n rolePermissions: store.collection<WorkOSRolePermission>('workos.role_permissions', ID_PREFIXES.role_permission, [\n 'role_id',\n 'permission_id',\n ]),\n authorizationResources: store.collection<WorkOSAuthorizationResource>(\n 'workos.authorization_resources',\n ID_PREFIXES.authorization_resource,\n ['organization_id', 'resource_type_slug'],\n ),\n roleAssignments: store.collection<WorkOSRoleAssignment>('workos.role_assignments', ID_PREFIXES.role_assignment, [\n 'organization_membership_id',\n 'role_id',\n ]),\n directories: store.collection<WorkOSDirectory>('workos.directories', ID_PREFIXES.directory, ['organization_id']),\n directoryUsers: store.collection<WorkOSDirectoryUser>('workos.directory_users', ID_PREFIXES.directory_user, [\n 'directory_id',\n 'organization_id',\n ]),\n directoryGroups: store.collection<WorkOSDirectoryGroup>('workos.directory_groups', ID_PREFIXES.directory_group, [\n 'directory_id',\n 'organization_id',\n ]),\n auditLogActions: store.collection<WorkOSAuditLogAction>('workos.audit_log_actions', ID_PREFIXES.audit_log_action, [\n 'name',\n ]),\n auditLogEvents: store.collection<WorkOSAuditLogEvent>('workos.audit_log_events', ID_PREFIXES.audit_log_event, [\n 'organization_id',\n ]),\n auditLogExports: store.collection<WorkOSAuditLogExport>('workos.audit_log_exports', ID_PREFIXES.audit_log_export, [\n 'organization_id',\n ]),\n featureFlags: store.collection<WorkOSFeatureFlag>('workos.feature_flags', ID_PREFIXES.feature_flag, ['slug']),\n flagTargets: store.collection<WorkOSFlagTarget>('workos.flag_targets', ID_PREFIXES.flag_target, [\n 'flag_slug',\n 'resource_id',\n ]),\n connectApplications: store.collection<WorkOSConnectApplication>(\n 'workos.connect_applications',\n ID_PREFIXES.connect_application,\n ['client_id'],\n ),\n clientSecrets: store.collection<WorkOSClientSecret>('workos.client_secrets', ID_PREFIXES.client_secret, [\n 'application_id',\n ]),\n dataIntegrationAuths: store.collection<WorkOSDataIntegrationAuth>(\n 'workos.data_integration_auths',\n ID_PREFIXES.data_integration_auth,\n ['code', 'slug'],\n ),\n radarAttempts: store.collection<WorkOSRadarAttempt>('workos.radar_attempts', ID_PREFIXES.radar_attempt, [\n 'ip_address',\n ]),\n apiKeyRecords: store.collection<WorkOSApiKey>('workos.api_keys', ID_PREFIXES.api_key, ['key', 'environment']),\n events: store.collection<WorkOSEvent>('workos.events', ID_PREFIXES.event, ['event']),\n webhookEndpoints: store.collection<WorkOSWebhookEndpoint>(\n 'workos.webhook_endpoints',\n ID_PREFIXES.webhook_endpoint,\n ['url'],\n ),\n };\n\n store.setData(STORE_KEYS.workosStore, ws);\n return ws;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/emulate/workos/store.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Store, type Collection, ID_PREFIXES } from '../core/index.js';\nimport { STORE_KEYS } from './constants.js';\nimport type {\n WorkOSOrganization,\n WorkOSOrganizationDomain,\n WorkOSOrganizationMembership,\n WorkOSUser,\n WorkOSSession,\n WorkOSEmailVerification,\n WorkOSPasswordReset,\n WorkOSMagicAuth,\n WorkOSAuthenticationFactor,\n WorkOSAuthorizationCode,\n WorkOSIdentity,\n WorkOSConnection,\n WorkOSSSOProfile,\n WorkOSSSOAuthorization,\n WorkOSPipeConnection,\n WorkOSRefreshToken,\n WorkOSAuthenticationChallenge,\n WorkOSDeviceAuthorization,\n WorkOSInvitation,\n WorkOSRedirectUri,\n WorkOSCorsOrigin,\n WorkOSAuthorizedApplication,\n WorkOSConnectedAccount,\n WorkOSRole,\n WorkOSPermission,\n WorkOSRolePermission,\n WorkOSAuthorizationResource,\n WorkOSRoleAssignment,\n WorkOSDirectory,\n WorkOSDirectoryUser,\n WorkOSDirectoryGroup,\n WorkOSAuditLogAction,\n WorkOSAuditLogEvent,\n WorkOSAuditLogExport,\n WorkOSFeatureFlag,\n WorkOSFlagTarget,\n WorkOSConnectApplication,\n WorkOSClientSecret,\n WorkOSDataIntegrationAuth,\n WorkOSRadarAttempt,\n WorkOSApiKey,\n WorkOSEvent,\n WorkOSWebhookEndpoint,\n} from './entities.js';\n\nexport interface WorkOSStore {\n organizations: Collection<WorkOSOrganization>;\n organizationDomains: Collection<WorkOSOrganizationDomain>;\n organizationMemberships: Collection<WorkOSOrganizationMembership>;\n users: Collection<WorkOSUser>;\n sessions: Collection<WorkOSSession>;\n emailVerifications: Collection<WorkOSEmailVerification>;\n passwordResets: Collection<WorkOSPasswordReset>;\n magicAuths: Collection<WorkOSMagicAuth>;\n authFactors: Collection<WorkOSAuthenticationFactor>;\n authCodes: Collection<WorkOSAuthorizationCode>;\n identities: Collection<WorkOSIdentity>;\n connections: Collection<WorkOSConnection>;\n ssoProfiles: Collection<WorkOSSSOProfile>;\n ssoAuthorizations: Collection<WorkOSSSOAuthorization>;\n pipeConnections: Collection<WorkOSPipeConnection>;\n refreshTokens: Collection<WorkOSRefreshToken>;\n authChallenges: Collection<WorkOSAuthenticationChallenge>;\n deviceAuthorizations: Collection<WorkOSDeviceAuthorization>;\n invitations: Collection<WorkOSInvitation>;\n redirectUris: Collection<WorkOSRedirectUri>;\n corsOrigins: Collection<WorkOSCorsOrigin>;\n authorizedApplications: Collection<WorkOSAuthorizedApplication>;\n connectedAccounts: Collection<WorkOSConnectedAccount>;\n roles: Collection<WorkOSRole>;\n permissions: Collection<WorkOSPermission>;\n rolePermissions: Collection<WorkOSRolePermission>;\n authorizationResources: Collection<WorkOSAuthorizationResource>;\n roleAssignments: Collection<WorkOSRoleAssignment>;\n directories: Collection<WorkOSDirectory>;\n directoryUsers: Collection<WorkOSDirectoryUser>;\n directoryGroups: Collection<WorkOSDirectoryGroup>;\n auditLogActions: Collection<WorkOSAuditLogAction>;\n auditLogEvents: Collection<WorkOSAuditLogEvent>;\n auditLogExports: Collection<WorkOSAuditLogExport>;\n featureFlags: Collection<WorkOSFeatureFlag>;\n flagTargets: Collection<WorkOSFlagTarget>;\n connectApplications: Collection<WorkOSConnectApplication>;\n clientSecrets: Collection<WorkOSClientSecret>;\n dataIntegrationAuths: Collection<WorkOSDataIntegrationAuth>;\n radarAttempts: Collection<WorkOSRadarAttempt>;\n apiKeyRecords: Collection<WorkOSApiKey>;\n events: Collection<WorkOSEvent>;\n webhookEndpoints: Collection<WorkOSWebhookEndpoint>;\n}\n\nexport function getWorkOSStore(store: Store): WorkOSStore {\n const cached = store.getData<WorkOSStore>(STORE_KEYS.workosStore);\n if (cached) return cached;\n\n const ws: WorkOSStore = {\n organizations: store.collection<WorkOSOrganization>('workos.organizations', ID_PREFIXES.organization, [\n 'name',\n 'external_id',\n ]),\n organizationDomains: store.collection<WorkOSOrganizationDomain>(\n 'workos.organization_domains',\n ID_PREFIXES.organization_domain,\n ['organization_id', 'domain'],\n ),\n organizationMemberships: store.collection<WorkOSOrganizationMembership>(\n 'workos.organization_memberships',\n ID_PREFIXES.organization_membership,\n ['organization_id', 'user_id'],\n ),\n users: store.collection<WorkOSUser>('workos.users', ID_PREFIXES.user, ['email', 'external_id']),\n sessions: store.collection<WorkOSSession>('workos.sessions', ID_PREFIXES.session, ['user_id']),\n emailVerifications: store.collection<WorkOSEmailVerification>(\n 'workos.email_verifications',\n ID_PREFIXES.email_verification,\n ['user_id'],\n ),\n passwordResets: store.collection<WorkOSPasswordReset>('workos.password_resets', ID_PREFIXES.password_reset, [\n 'user_id',\n ]),\n magicAuths: store.collection<WorkOSMagicAuth>('workos.magic_auths', ID_PREFIXES.magic_auth, ['user_id']),\n authFactors: store.collection<WorkOSAuthenticationFactor>(\n 'workos.auth_factors',\n ID_PREFIXES.authentication_factor,\n ['user_id'],\n ),\n authCodes: store.collection<WorkOSAuthorizationCode>('workos.auth_codes', ID_PREFIXES.authorization_code, [\n 'user_id',\n 'code',\n ]),\n identities: store.collection<WorkOSIdentity>('workos.identities', ID_PREFIXES.identity, ['user_id']),\n connections: store.collection<WorkOSConnection>('workos.connections', ID_PREFIXES.connection, ['organization_id']),\n ssoProfiles: store.collection<WorkOSSSOProfile>('workos.sso_profiles', ID_PREFIXES.profile, [\n 'connection_id',\n 'email',\n ]),\n ssoAuthorizations: store.collection<WorkOSSSOAuthorization>(\n 'workos.sso_authorizations',\n ID_PREFIXES.sso_authorization,\n ['code'],\n ),\n pipeConnections: store.collection<WorkOSPipeConnection>('workos.pipe_connections', ID_PREFIXES.pipe_connection, [\n 'user_id',\n 'provider',\n ]),\n refreshTokens: store.collection<WorkOSRefreshToken>('workos.refresh_tokens', ID_PREFIXES.refresh_token, [\n 'token',\n 'user_id',\n 'session_id',\n ]),\n authChallenges: store.collection<WorkOSAuthenticationChallenge>(\n 'workos.auth_challenges',\n ID_PREFIXES.authentication_challenge,\n ['user_id', 'factor_id'],\n ),\n deviceAuthorizations: store.collection<WorkOSDeviceAuthorization>(\n 'workos.device_authorizations',\n ID_PREFIXES.device_authorization,\n ['device_code', 'user_code'],\n ),\n invitations: store.collection<WorkOSInvitation>('workos.invitations', ID_PREFIXES.invitation, [\n 'email',\n 'token',\n 'organization_id',\n ]),\n redirectUris: store.collection<WorkOSRedirectUri>('workos.redirect_uris', ID_PREFIXES.redirect_uri, ['uri']),\n corsOrigins: store.collection<WorkOSCorsOrigin>('workos.cors_origins', ID_PREFIXES.cors_origin, ['origin']),\n authorizedApplications: store.collection<WorkOSAuthorizedApplication>(\n 'workos.authorized_applications',\n ID_PREFIXES.authorized_application,\n ['user_id'],\n ),\n connectedAccounts: store.collection<WorkOSConnectedAccount>(\n 'workos.connected_accounts',\n ID_PREFIXES.connected_account,\n ['user_id', 'provider'],\n ),\n roles: store.collection<WorkOSRole>('workos.roles', ID_PREFIXES.role, ['slug', 'organization_id']),\n permissions: store.collection<WorkOSPermission>('workos.permissions', ID_PREFIXES.permission, ['slug']),\n rolePermissions: store.collection<WorkOSRolePermission>('workos.role_permissions', ID_PREFIXES.role_permission, [\n 'role_id',\n 'permission_id',\n ]),\n authorizationResources: store.collection<WorkOSAuthorizationResource>(\n 'workos.authorization_resources',\n ID_PREFIXES.authorization_resource,\n ['organization_id', 'resource_type_slug'],\n ),\n roleAssignments: store.collection<WorkOSRoleAssignment>('workos.role_assignments', ID_PREFIXES.role_assignment, [\n 'organization_membership_id',\n 'role_id',\n ]),\n directories: store.collection<WorkOSDirectory>('workos.directories', ID_PREFIXES.directory, ['organization_id']),\n directoryUsers: store.collection<WorkOSDirectoryUser>('workos.directory_users', ID_PREFIXES.directory_user, [\n 'directory_id',\n 'organization_id',\n ]),\n directoryGroups: store.collection<WorkOSDirectoryGroup>('workos.directory_groups', ID_PREFIXES.directory_group, [\n 'directory_id',\n 'organization_id',\n ]),\n auditLogActions: store.collection<WorkOSAuditLogAction>('workos.audit_log_actions', ID_PREFIXES.audit_log_action, [\n 'name',\n ]),\n auditLogEvents: store.collection<WorkOSAuditLogEvent>('workos.audit_log_events', ID_PREFIXES.audit_log_event, [\n 'organization_id',\n ]),\n auditLogExports: store.collection<WorkOSAuditLogExport>('workos.audit_log_exports', ID_PREFIXES.audit_log_export, [\n 'organization_id',\n ]),\n featureFlags: store.collection<WorkOSFeatureFlag>('workos.feature_flags', ID_PREFIXES.feature_flag, ['slug']),\n flagTargets: store.collection<WorkOSFlagTarget>('workos.flag_targets', ID_PREFIXES.flag_target, [\n 'flag_slug',\n 'resource_id',\n ]),\n connectApplications: store.collection<WorkOSConnectApplication>(\n 'workos.connect_applications',\n ID_PREFIXES.connect_application,\n ['client_id'],\n ),\n clientSecrets: store.collection<WorkOSClientSecret>('workos.client_secrets', ID_PREFIXES.client_secret, [\n 'application_id',\n ]),\n dataIntegrationAuths: store.collection<WorkOSDataIntegrationAuth>(\n 'workos.data_integration_auths',\n ID_PREFIXES.data_integration_auth,\n ['code', 'slug'],\n ),\n radarAttempts: store.collection<WorkOSRadarAttempt>('workos.radar_attempts', ID_PREFIXES.radar_attempt, [\n 'ip_address',\n ]),\n apiKeyRecords: store.collection<WorkOSApiKey>('workos.api_keys', ID_PREFIXES.api_key, ['key', 'environment']),\n events: store.collection<WorkOSEvent>('workos.events', ID_PREFIXES.event, ['event']),\n webhookEndpoints: store.collection<WorkOSWebhookEndpoint>(\n 'workos.webhook_endpoints',\n ID_PREFIXES.webhook_endpoint,\n ['endpoint_url'],\n ),\n };\n\n store.setData(STORE_KEYS.workosStore, ws);\n return ws;\n}\n"]}
|
package/dist/lib/api-key.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* API key resolution for management commands.
|
|
3
3
|
*
|
|
4
4
|
* Priority chain:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
5
|
+
* 1. --api-key flag
|
|
6
|
+
* 2. WORKOS_API_KEY environment variable
|
|
7
7
|
* 3. Active environment's stored API key
|
|
8
8
|
*/
|
|
9
9
|
export interface ApiKeyOptions {
|
package/dist/lib/api-key.js
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
* API key resolution for management commands.
|
|
3
3
|
*
|
|
4
4
|
* Priority chain:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
5
|
+
* 1. --api-key flag
|
|
6
|
+
* 2. WORKOS_API_KEY environment variable
|
|
7
7
|
* 3. Active environment's stored API key
|
|
8
8
|
*/
|
|
9
9
|
import { getActiveEnvironment } from './config-store.js';
|
|
10
10
|
import { exitWithError } from '../utils/output.js';
|
|
11
11
|
const DEFAULT_BASE_URL = 'https://api.workos.com';
|
|
12
12
|
export function resolveApiKey(options) {
|
|
13
|
+
if (options?.apiKey)
|
|
14
|
+
return options.apiKey;
|
|
13
15
|
const envVar = process.env.WORKOS_API_KEY;
|
|
14
16
|
if (envVar)
|
|
15
17
|
return envVar;
|
|
16
|
-
if (options?.apiKey)
|
|
17
|
-
return options.apiKey;
|
|
18
18
|
const activeEnv = getActiveEnvironment();
|
|
19
19
|
if (activeEnv?.apiKey)
|
|
20
20
|
return activeEnv.apiKey;
|
package/dist/lib/api-key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/lib/api-key.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAMlD,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,
|
|
1
|
+
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/lib/api-key.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAMlD,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,IAAI,OAAO,EAAE,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,IAAI,SAAS,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IAE/C,aAAa,CAAC;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,iGAAiG;KAC3G,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,OAAO,SAAS,EAAE,QAAQ,IAAI,gBAAgB,CAAC;AACjD,CAAC","sourcesContent":["/**\n * API key resolution for management commands.\n *\n * Priority chain:\n * 1. --api-key flag\n * 2. WORKOS_API_KEY environment variable\n * 3. Active environment's stored API key\n */\n\nimport { getActiveEnvironment } from './config-store.js';\nimport { exitWithError } from '../utils/output.js';\n\nconst DEFAULT_BASE_URL = 'https://api.workos.com';\n\nexport interface ApiKeyOptions {\n apiKey?: string;\n}\n\nexport function resolveApiKey(options?: ApiKeyOptions): string {\n if (options?.apiKey) return options.apiKey;\n\n const envVar = process.env.WORKOS_API_KEY;\n if (envVar) return envVar;\n\n const activeEnv = getActiveEnvironment();\n if (activeEnv?.apiKey) return activeEnv.apiKey;\n\n exitWithError({\n code: 'no_api_key',\n message: 'No API key configured. Run `workos env add` to configure an environment, or set WORKOS_API_KEY.',\n });\n}\n\nexport function resolveApiBaseUrl(): string {\n const activeEnv = getActiveEnvironment();\n return activeEnv?.endpoint || DEFAULT_BASE_URL;\n}\n"]}
|
|
@@ -31,6 +31,9 @@ export interface DeviceAuthResult {
|
|
|
31
31
|
export declare class DeviceAuthError extends Error {
|
|
32
32
|
constructor(message: string);
|
|
33
33
|
}
|
|
34
|
+
export declare class DeviceAuthTimeoutError extends DeviceAuthError {
|
|
35
|
+
constructor(message: string);
|
|
36
|
+
}
|
|
34
37
|
/**
|
|
35
38
|
* Request a device code from the OAuth authorization server.
|
|
36
39
|
* Returns the device code, user code, and verification URIs.
|
package/dist/lib/device-auth.js
CHANGED
|
@@ -11,6 +11,12 @@ export class DeviceAuthError extends Error {
|
|
|
11
11
|
this.name = 'DeviceAuthError';
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
+
export class DeviceAuthTimeoutError extends DeviceAuthError {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = 'DeviceAuthTimeoutError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
14
20
|
const DEFAULT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
|
|
15
21
|
const DEFAULT_POLL_INTERVAL_SECONDS = 5;
|
|
16
22
|
const POLL_REQUEST_TIMEOUT_MS = 30_000;
|
|
@@ -49,14 +55,30 @@ export async function requestDeviceCode(options) {
|
|
|
49
55
|
const scopes = options.scopes ?? DEFAULT_SCOPES;
|
|
50
56
|
const url = `${options.authkitDomain}/oauth2/device_authorization`;
|
|
51
57
|
logInfo('[device-auth] Requesting device code from:', url);
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const controller = new AbortController();
|
|
59
|
+
const timeout = setTimeout(() => controller.abort(), POLL_REQUEST_TIMEOUT_MS);
|
|
60
|
+
let res;
|
|
61
|
+
try {
|
|
62
|
+
res = await fetch(url, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
65
|
+
body: new URLSearchParams({
|
|
66
|
+
client_id: options.clientId,
|
|
67
|
+
scope: scopes.join(' '),
|
|
68
|
+
}),
|
|
69
|
+
signal: controller.signal,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
clearTimeout(timeout);
|
|
74
|
+
if (error instanceof DOMException && error.name === 'AbortError') {
|
|
75
|
+
throw new DeviceAuthTimeoutError('Device authorization request timed out');
|
|
76
|
+
}
|
|
77
|
+
throw new DeviceAuthError(`Device authorization request failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
clearTimeout(timeout);
|
|
81
|
+
}
|
|
60
82
|
logInfo('[device-auth] Device code response status:', res.status);
|
|
61
83
|
if (!res.ok) {
|
|
62
84
|
const text = await res.text();
|
|
@@ -137,7 +159,7 @@ export async function pollForToken(deviceCode, options) {
|
|
|
137
159
|
throw new DeviceAuthError(`Token error: ${errorData.error}`);
|
|
138
160
|
}
|
|
139
161
|
logError('[device-auth] Authentication timed out, last poll:', lastPollSummary);
|
|
140
|
-
throw new
|
|
162
|
+
throw new DeviceAuthTimeoutError(`Authentication timed out after ${Math.round(timeoutMs / 1000)} seconds (last token response: ${lastPollSummary})`);
|
|
141
163
|
}
|
|
142
164
|
function parseTokenResponse(data) {
|
|
143
165
|
const idPayload = parseJwt(data.id_token);
|