workos 0.13.1 → 0.13.2
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/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/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/workos-client.d.ts +1 -1
- package/dist/lib/workos-client.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/webhook.js
CHANGED
|
@@ -23,7 +23,26 @@ export async function runWebhookList(apiKey, baseUrl) {
|
|
|
23
23
|
console.log('No webhook endpoints found.');
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
-
const
|
|
26
|
+
const maxEventsChars = 60;
|
|
27
|
+
const rows = result.data.map((ep) => {
|
|
28
|
+
const joined = ep.events.join(', ');
|
|
29
|
+
if (joined.length <= maxEventsChars) {
|
|
30
|
+
return [ep.id, ep.endpoint_url, joined, ep.created_at];
|
|
31
|
+
}
|
|
32
|
+
// Always include the first event so the cell isn't content-free when a single event name exceeds the budget.
|
|
33
|
+
const visible = [ep.events[0]];
|
|
34
|
+
let len = ep.events[0].length;
|
|
35
|
+
for (let i = 1; i < ep.events.length; i++) {
|
|
36
|
+
const next = len + 2 + ep.events[i].length;
|
|
37
|
+
if (next > maxEventsChars)
|
|
38
|
+
break;
|
|
39
|
+
visible.push(ep.events[i]);
|
|
40
|
+
len = next;
|
|
41
|
+
}
|
|
42
|
+
const hidden = ep.events.length - visible.length;
|
|
43
|
+
const suffix = hidden > 0 ? `, … (+${hidden} more)` : '';
|
|
44
|
+
return [ep.id, ep.endpoint_url, `${visible.join(', ')}${suffix}`, ep.created_at];
|
|
45
|
+
});
|
|
27
46
|
console.log(formatTable([{ header: 'ID' }, { header: 'URL' }, { header: 'Events' }, { header: 'Created' }], rows));
|
|
28
47
|
const { before, after } = result.list_metadata;
|
|
29
48
|
if (before && after) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/commands/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,OAAgB;IACnE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE5C,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,4EAA4E;YAC5E,UAAU,CAAC;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,YAAY,EAAE;oBACZ,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;oBACnC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK;iBAClC;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/commands/webhook.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputJson, outputSuccess, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Webhook');\n\nexport async function runWebhookList(apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.webhooks.list();\n\n if (isJsonMode()) {\n // Normalize snake_case list_metadata to camelCase for consistent CLI output\n outputJson({\n data: result.data,\n listMetadata: {\n before: result.list_metadata.before,\n after: result.list_metadata.after,\n },\n });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No webhook endpoints found.');\n return;\n }\n\n const maxEventsChars = 60;\n const rows = result.data.map((ep) => {\n const joined = ep.events.join(', ');\n if (joined.length <= maxEventsChars) {\n return [ep.id, ep.endpoint_url, joined, ep.created_at];\n }\n // Always include the first event so the cell isn't content-free when a single event name exceeds the budget.\n const visible: string[] = [ep.events[0]];\n let len = ep.events[0].length;\n for (let i = 1; i < ep.events.length; i++) {\n const next = len + 2 + ep.events[i].length;\n if (next > maxEventsChars) break;\n visible.push(ep.events[i]);\n len = next;\n }\n const hidden = ep.events.length - visible.length;\n const suffix = hidden > 0 ? `, … (+${hidden} more)` : '';\n return [ep.id, ep.endpoint_url, `${visible.join(', ')}${suffix}`, ep.created_at];\n });\n\n console.log(formatTable([{ header: 'ID' }, { header: 'URL' }, { header: 'Events' }, { header: 'Created' }], rows));\n\n const { before, after } = result.list_metadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runWebhookCreate(url: string, events: string[], apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const endpoint = await client.webhooks.create(url, events);\n\n if (isJsonMode()) {\n outputJson({ status: 'ok', message: 'Created webhook endpoint', data: endpoint });\n return;\n }\n\n console.log(chalk.green('Created webhook endpoint'));\n console.log(JSON.stringify(endpoint, null, 2));\n if (endpoint.secret) {\n console.log('');\n console.log(chalk.yellow('Signing secret: ') + endpoint.secret);\n console.log(chalk.yellow('Save this secret now — it will not be shown again.'));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runWebhookDelete(id: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.webhooks.delete(id);\n outputSuccess('Deleted webhook endpoint', { id });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/emulate/workos/entities.ts"],"names":[],"mappings":"","sourcesContent":["import type { Entity } from '../core/index.js';\n\nexport interface WorkOSOrganization extends Entity {\n object: 'organization';\n name: string;\n external_id: string | null;\n metadata: Record<string, string>;\n stripe_customer_id: string | null;\n}\n\nexport interface WorkOSOrganizationDomain extends Entity {\n object: 'organization_domain';\n organization_id: string;\n domain: string;\n state: 'verified' | 'pending';\n verification_strategy: 'manual' | 'dns';\n verification_token: string;\n verification_prefix: string;\n}\n\nexport interface WorkOSOrganizationMembership extends Entity {\n object: 'organization_membership';\n organization_id: string;\n user_id: string;\n role: { slug: string };\n status: 'active' | 'inactive' | 'pending';\n external_id: string | null;\n metadata: Record<string, string>;\n}\n\nexport interface WorkOSUser extends Entity {\n object: 'user';\n email: string;\n first_name: string | null;\n last_name: string | null;\n email_verified: boolean;\n profile_picture_url: string | null;\n last_sign_in_at: string | null;\n external_id: string | null;\n metadata: Record<string, string>;\n locale: string | null;\n password_hash: string | null;\n impersonator: { email: string; reason: string } | null;\n}\n\nexport interface WorkOSSession extends Entity {\n object: 'session';\n user_id: string;\n organization_id: string | null;\n ip_address: string | null;\n user_agent: string | null;\n}\n\nexport interface WorkOSEmailVerification extends Entity {\n object: 'email_verification';\n user_id: string;\n email: string;\n code: string;\n expires_at: string;\n}\n\nexport interface WorkOSPasswordReset extends Entity {\n object: 'password_reset';\n user_id: string;\n email: string;\n token: string;\n expires_at: string;\n}\n\nexport interface WorkOSMagicAuth extends Entity {\n object: 'magic_auth';\n user_id: string;\n email: string;\n code: string;\n expires_at: string;\n}\n\nexport interface WorkOSAuthenticationFactor extends Entity {\n object: 'authentication_factor';\n user_id: string;\n type: 'totp';\n totp: {\n issuer: string;\n user: string;\n uri: string;\n };\n}\n\nexport interface WorkOSAuthorizationCode extends Entity {\n user_id: string;\n organization_id: string | null;\n code: string;\n redirect_uri: string;\n expires_at: string;\n code_challenge: string | null;\n code_challenge_method: string | null;\n}\n\nexport interface WorkOSIdentity extends Entity {\n object: 'identity';\n user_id: string;\n provider: string;\n provider_id: string;\n type: 'OAuth';\n}\n\nexport type WorkOSConnectionType =\n | 'ADFSSAML'\n | 'AzureSAML'\n | 'GenericOIDC'\n | 'GenericSAML'\n | 'GoogleOAuth'\n | 'GoogleSAML'\n | 'OktaSAML'\n | 'OneLoginSAML'\n | 'PingFederateSAML'\n | 'PingOneSAML'\n | 'GitHubOAuth'\n | 'MicrosoftOAuth'\n | 'AppleOAuth';\n\nexport interface WorkOSConnectionDomain {\n object: 'connection_domain';\n id: string;\n domain: string;\n}\n\nexport interface WorkOSConnection extends Entity {\n object: 'connection';\n organization_id: string;\n connection_type: WorkOSConnectionType;\n name: string;\n state: 'active' | 'inactive' | 'validating';\n domains: WorkOSConnectionDomain[];\n}\n\nexport interface WorkOSSSOProfile extends Entity {\n object: 'profile';\n connection_id: string;\n connection_type: WorkOSConnectionType;\n organization_id: string;\n idp_id: string;\n email: string;\n first_name: string | null;\n last_name: string | null;\n groups: string[];\n raw_attributes: Record<string, unknown>;\n}\n\nexport interface WorkOSSSOAuthorization extends Entity {\n code: string;\n connection_id: string;\n organization_id: string;\n profile_id: string;\n redirect_uri: string;\n state: string | null;\n expires_at: string;\n}\n\nexport interface WorkOSInvitation extends Entity {\n object: 'invitation';\n email: string;\n state: 'pending' | 'accepted' | 'expired' | 'revoked';\n token: string;\n accept_invitation_url: string;\n organization_id: string | null;\n inviter_user_id: string | null;\n role_slug: string | null;\n expires_at: string;\n}\n\nexport interface WorkOSRedirectUri extends Entity {\n object: 'redirect_uri';\n uri: string;\n}\n\nexport interface WorkOSCorsOrigin extends Entity {\n object: 'cors_origin';\n origin: string;\n}\n\nexport interface WorkOSAuthorizedApplication extends Entity {\n object: 'authorized_application';\n user_id: string;\n name: string;\n redirect_uri: string;\n}\n\nexport interface WorkOSConnectedAccount extends Entity {\n object: 'connected_account';\n user_id: string;\n provider: string;\n provider_id: string;\n}\n\nexport type PipeProvider = 'github' | 'slack' | 'google' | 'salesforce';\nexport type PipeConnectionStatus = 'connected' | 'disconnected' | 'requires_reauth';\n\nexport interface WorkOSPipeConnection extends Entity {\n object: 'pipe_connection';\n user_id: string;\n provider: PipeProvider;\n scopes: string[];\n status: PipeConnectionStatus;\n external_account_id: string | null;\n}\n\nexport interface WorkOSRefreshToken extends Entity {\n token: string;\n user_id: string;\n organization_id: string | null;\n session_id: string;\n expires_at: string;\n}\n\nexport interface WorkOSAuthenticationChallenge extends Entity {\n object: 'authentication_challenge';\n user_id: string;\n factor_id: string;\n expires_at: string;\n code: string | null;\n}\n\nexport interface WorkOSDeviceAuthorization extends Entity {\n device_code: string;\n user_code: string;\n user_id: string | null;\n client_id: string;\n expires_at: string;\n interval: number;\n}\n\nexport interface WorkOSRole extends Entity {\n object: 'role';\n slug: string;\n name: string;\n description: string | null;\n type: 'EnvironmentRole' | 'OrganizationRole';\n organization_id: string | null;\n is_default_role: boolean;\n priority: number;\n}\n\nexport interface WorkOSPermission extends Entity {\n object: 'permission';\n slug: string;\n name: string;\n description: string | null;\n}\n\nexport interface WorkOSRolePermission extends Entity {\n role_id: string;\n permission_id: string;\n}\n\nexport interface WorkOSAuthorizationResource extends Entity {\n object: 'authorization_resource';\n resource_type_slug: string;\n external_id: string;\n organization_id: string;\n metadata: Record<string, string>;\n}\n\nexport interface WorkOSRoleAssignment extends Entity {\n object: 'role_assignment';\n organization_membership_id: string;\n role_id: string;\n}\n\nexport interface WorkOSDirectory extends Entity {\n object: 'directory';\n name: string;\n organization_id: string | null;\n domain: string | null;\n type: string;\n state: 'linked' | 'unlinked' | 'deleting' | 'invalid_credentials';\n external_key: string | null;\n}\n\nexport interface WorkOSDirectoryUser extends Entity {\n object: 'directory_user';\n directory_id: string;\n organization_id: string | null;\n idp_id: string;\n first_name: string | null;\n last_name: string | null;\n email: string | null;\n username: string | null;\n state: 'active' | 'inactive';\n role: { slug: string } | null;\n custom_attributes: Record<string, unknown>;\n raw_attributes: Record<string, unknown>;\n groups: Array<{ object: 'directory_group'; id: string; name: string }>;\n}\n\nexport interface WorkOSDirectoryGroup extends Entity {\n object: 'directory_group';\n directory_id: string;\n organization_id: string | null;\n idp_id: string;\n name: string;\n raw_attributes: Record<string, unknown>;\n}\n\nexport interface WorkOSAuditLogAction extends Entity {\n object: 'audit_log_action';\n name: string;\n description: string | null;\n condition: string | null;\n}\n\nexport interface WorkOSAuditLogEvent extends Entity {\n object: 'audit_log_event';\n organization_id: string;\n action: { name: string; type: string; id: string };\n actor: Record<string, unknown>;\n targets: Array<Record<string, unknown>>;\n metadata: Record<string, unknown> | null;\n occurred_at: string;\n}\n\nexport interface WorkOSAuditLogExport extends Entity {\n object: 'audit_log_export';\n organization_id: string;\n state: 'pending' | 'ready' | 'error';\n url: string | null;\n filters: Record<string, unknown>;\n}\n\nexport interface WorkOSFeatureFlag extends Entity {\n object: 'feature_flag';\n slug: string;\n name: string;\n description: string | null;\n type: 'boolean' | 'string' | 'number';\n default_value: unknown;\n enabled: boolean;\n}\n\nexport interface WorkOSFlagTarget extends Entity {\n object: 'flag_target';\n flag_slug: string;\n resource_id: string;\n resource_type: string;\n value: unknown;\n}\n\nexport interface WorkOSConnectApplication extends Entity {\n object: 'connect_application';\n name: string;\n redirect_uris: string[];\n client_id: string;\n logo_url: string | null;\n}\n\nexport interface WorkOSClientSecret extends Entity {\n object: 'client_secret';\n application_id: string;\n value: string;\n last_four: string;\n}\n\nexport interface WorkOSDataIntegrationAuth extends Entity {\n slug: string;\n code: string;\n redirect_uri: string;\n state: string | null;\n expires_at: string;\n}\n\nexport interface WorkOSRadarAttempt extends Entity {\n object: 'radar_attempt';\n user_id: string | null;\n ip_address: string;\n user_agent: string | null;\n verdict: 'allow' | 'deny' | 'challenge';\n signals: Array<{ type: string; confidence: number }>;\n}\n\nexport interface WorkOSApiKey extends Entity {\n object: 'api_key';\n name: string;\n key: string;\n environment: string;\n}\n\nexport interface WorkOSEvent extends Entity {\n object: 'event';\n event: string;\n data: Record<string, unknown>;\n environment_id: string | null;\n}\n\nexport interface WorkOSWebhookEndpoint extends Entity {\n object: 'webhook_endpoint';\n url: string;\n secret: string;\n enabled: boolean;\n events: string[];\n description: string | null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/emulate/workos/entities.ts"],"names":[],"mappings":"","sourcesContent":["import type { Entity } from '../core/index.js';\n\nexport interface WorkOSOrganization extends Entity {\n object: 'organization';\n name: string;\n external_id: string | null;\n metadata: Record<string, string>;\n stripe_customer_id: string | null;\n}\n\nexport interface WorkOSOrganizationDomain extends Entity {\n object: 'organization_domain';\n organization_id: string;\n domain: string;\n state: 'verified' | 'pending';\n verification_strategy: 'manual' | 'dns';\n verification_token: string;\n verification_prefix: string;\n}\n\nexport interface WorkOSOrganizationMembership extends Entity {\n object: 'organization_membership';\n organization_id: string;\n user_id: string;\n role: { slug: string };\n status: 'active' | 'inactive' | 'pending';\n external_id: string | null;\n metadata: Record<string, string>;\n}\n\nexport interface WorkOSUser extends Entity {\n object: 'user';\n email: string;\n first_name: string | null;\n last_name: string | null;\n email_verified: boolean;\n profile_picture_url: string | null;\n last_sign_in_at: string | null;\n external_id: string | null;\n metadata: Record<string, string>;\n locale: string | null;\n password_hash: string | null;\n impersonator: { email: string; reason: string } | null;\n}\n\nexport interface WorkOSSession extends Entity {\n object: 'session';\n user_id: string;\n organization_id: string | null;\n ip_address: string | null;\n user_agent: string | null;\n}\n\nexport interface WorkOSEmailVerification extends Entity {\n object: 'email_verification';\n user_id: string;\n email: string;\n code: string;\n expires_at: string;\n}\n\nexport interface WorkOSPasswordReset extends Entity {\n object: 'password_reset';\n user_id: string;\n email: string;\n token: string;\n expires_at: string;\n}\n\nexport interface WorkOSMagicAuth extends Entity {\n object: 'magic_auth';\n user_id: string;\n email: string;\n code: string;\n expires_at: string;\n}\n\nexport interface WorkOSAuthenticationFactor extends Entity {\n object: 'authentication_factor';\n user_id: string;\n type: 'totp';\n totp: {\n issuer: string;\n user: string;\n uri: string;\n };\n}\n\nexport interface WorkOSAuthorizationCode extends Entity {\n user_id: string;\n organization_id: string | null;\n code: string;\n redirect_uri: string;\n expires_at: string;\n code_challenge: string | null;\n code_challenge_method: string | null;\n}\n\nexport interface WorkOSIdentity extends Entity {\n object: 'identity';\n user_id: string;\n provider: string;\n provider_id: string;\n type: 'OAuth';\n}\n\nexport type WorkOSConnectionType =\n | 'ADFSSAML'\n | 'AzureSAML'\n | 'GenericOIDC'\n | 'GenericSAML'\n | 'GoogleOAuth'\n | 'GoogleSAML'\n | 'OktaSAML'\n | 'OneLoginSAML'\n | 'PingFederateSAML'\n | 'PingOneSAML'\n | 'GitHubOAuth'\n | 'MicrosoftOAuth'\n | 'AppleOAuth';\n\nexport interface WorkOSConnectionDomain {\n object: 'connection_domain';\n id: string;\n domain: string;\n}\n\nexport interface WorkOSConnection extends Entity {\n object: 'connection';\n organization_id: string;\n connection_type: WorkOSConnectionType;\n name: string;\n state: 'active' | 'inactive' | 'validating';\n domains: WorkOSConnectionDomain[];\n}\n\nexport interface WorkOSSSOProfile extends Entity {\n object: 'profile';\n connection_id: string;\n connection_type: WorkOSConnectionType;\n organization_id: string;\n idp_id: string;\n email: string;\n first_name: string | null;\n last_name: string | null;\n groups: string[];\n raw_attributes: Record<string, unknown>;\n}\n\nexport interface WorkOSSSOAuthorization extends Entity {\n code: string;\n connection_id: string;\n organization_id: string;\n profile_id: string;\n redirect_uri: string;\n state: string | null;\n expires_at: string;\n}\n\nexport interface WorkOSInvitation extends Entity {\n object: 'invitation';\n email: string;\n state: 'pending' | 'accepted' | 'expired' | 'revoked';\n token: string;\n accept_invitation_url: string;\n organization_id: string | null;\n inviter_user_id: string | null;\n role_slug: string | null;\n expires_at: string;\n}\n\nexport interface WorkOSRedirectUri extends Entity {\n object: 'redirect_uri';\n uri: string;\n}\n\nexport interface WorkOSCorsOrigin extends Entity {\n object: 'cors_origin';\n origin: string;\n}\n\nexport interface WorkOSAuthorizedApplication extends Entity {\n object: 'authorized_application';\n user_id: string;\n name: string;\n redirect_uri: string;\n}\n\nexport interface WorkOSConnectedAccount extends Entity {\n object: 'connected_account';\n user_id: string;\n provider: string;\n provider_id: string;\n}\n\nexport type PipeProvider = 'github' | 'slack' | 'google' | 'salesforce';\nexport type PipeConnectionStatus = 'connected' | 'disconnected' | 'requires_reauth';\n\nexport interface WorkOSPipeConnection extends Entity {\n object: 'pipe_connection';\n user_id: string;\n provider: PipeProvider;\n scopes: string[];\n status: PipeConnectionStatus;\n external_account_id: string | null;\n}\n\nexport interface WorkOSRefreshToken extends Entity {\n token: string;\n user_id: string;\n organization_id: string | null;\n session_id: string;\n expires_at: string;\n}\n\nexport interface WorkOSAuthenticationChallenge extends Entity {\n object: 'authentication_challenge';\n user_id: string;\n factor_id: string;\n expires_at: string;\n code: string | null;\n}\n\nexport interface WorkOSDeviceAuthorization extends Entity {\n device_code: string;\n user_code: string;\n user_id: string | null;\n client_id: string;\n expires_at: string;\n interval: number;\n}\n\nexport interface WorkOSRole extends Entity {\n object: 'role';\n slug: string;\n name: string;\n description: string | null;\n type: 'EnvironmentRole' | 'OrganizationRole';\n organization_id: string | null;\n is_default_role: boolean;\n priority: number;\n}\n\nexport interface WorkOSPermission extends Entity {\n object: 'permission';\n slug: string;\n name: string;\n description: string | null;\n}\n\nexport interface WorkOSRolePermission extends Entity {\n role_id: string;\n permission_id: string;\n}\n\nexport interface WorkOSAuthorizationResource extends Entity {\n object: 'authorization_resource';\n resource_type_slug: string;\n external_id: string;\n organization_id: string;\n metadata: Record<string, string>;\n}\n\nexport interface WorkOSRoleAssignment extends Entity {\n object: 'role_assignment';\n organization_membership_id: string;\n role_id: string;\n}\n\nexport interface WorkOSDirectory extends Entity {\n object: 'directory';\n name: string;\n organization_id: string | null;\n domain: string | null;\n type: string;\n state: 'linked' | 'unlinked' | 'deleting' | 'invalid_credentials';\n external_key: string | null;\n}\n\nexport interface WorkOSDirectoryUser extends Entity {\n object: 'directory_user';\n directory_id: string;\n organization_id: string | null;\n idp_id: string;\n first_name: string | null;\n last_name: string | null;\n email: string | null;\n username: string | null;\n state: 'active' | 'inactive';\n role: { slug: string } | null;\n custom_attributes: Record<string, unknown>;\n raw_attributes: Record<string, unknown>;\n groups: Array<{ object: 'directory_group'; id: string; name: string }>;\n}\n\nexport interface WorkOSDirectoryGroup extends Entity {\n object: 'directory_group';\n directory_id: string;\n organization_id: string | null;\n idp_id: string;\n name: string;\n raw_attributes: Record<string, unknown>;\n}\n\nexport interface WorkOSAuditLogAction extends Entity {\n object: 'audit_log_action';\n name: string;\n description: string | null;\n condition: string | null;\n}\n\nexport interface WorkOSAuditLogEvent extends Entity {\n object: 'audit_log_event';\n organization_id: string;\n action: { name: string; type: string; id: string };\n actor: Record<string, unknown>;\n targets: Array<Record<string, unknown>>;\n metadata: Record<string, unknown> | null;\n occurred_at: string;\n}\n\nexport interface WorkOSAuditLogExport extends Entity {\n object: 'audit_log_export';\n organization_id: string;\n state: 'pending' | 'ready' | 'error';\n url: string | null;\n filters: Record<string, unknown>;\n}\n\nexport interface WorkOSFeatureFlag extends Entity {\n object: 'feature_flag';\n slug: string;\n name: string;\n description: string | null;\n type: 'boolean' | 'string' | 'number';\n default_value: unknown;\n enabled: boolean;\n}\n\nexport interface WorkOSFlagTarget extends Entity {\n object: 'flag_target';\n flag_slug: string;\n resource_id: string;\n resource_type: string;\n value: unknown;\n}\n\nexport interface WorkOSConnectApplication extends Entity {\n object: 'connect_application';\n name: string;\n redirect_uris: string[];\n client_id: string;\n logo_url: string | null;\n}\n\nexport interface WorkOSClientSecret extends Entity {\n object: 'client_secret';\n application_id: string;\n value: string;\n last_four: string;\n}\n\nexport interface WorkOSDataIntegrationAuth extends Entity {\n slug: string;\n code: string;\n redirect_uri: string;\n state: string | null;\n expires_at: string;\n}\n\nexport interface WorkOSRadarAttempt extends Entity {\n object: 'radar_attempt';\n user_id: string | null;\n ip_address: string;\n user_agent: string | null;\n verdict: 'allow' | 'deny' | 'challenge';\n signals: Array<{ type: string; confidence: number }>;\n}\n\nexport interface WorkOSApiKey extends Entity {\n object: 'api_key';\n name: string;\n key: string;\n environment: string;\n}\n\nexport interface WorkOSEvent extends Entity {\n object: 'event';\n event: string;\n data: Record<string, unknown>;\n environment_id: string | null;\n}\n\nexport interface WorkOSWebhookEndpoint extends Entity {\n object: 'webhook_endpoint';\n endpoint_url: string;\n secret: string;\n enabled: boolean;\n events: string[];\n description: string | null;\n}\n"]}
|
|
@@ -56,7 +56,7 @@ export class EventBus {
|
|
|
56
56
|
created_at: event.created_at,
|
|
57
57
|
});
|
|
58
58
|
const signature = signWebhookPayload(body, endpoint.secret);
|
|
59
|
-
await fetch(endpoint.
|
|
59
|
+
await fetch(endpoint.endpoint_url, {
|
|
60
60
|
method: 'POST',
|
|
61
61
|
headers: {
|
|
62
62
|
'Content-Type': 'application/json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/emulate/workos/event-bus.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/emulate/workos/event-bus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Store } from '../core/index.js';\nimport { getWorkOSStore } from './store.js';\nimport type { WorkOSWebhookEndpoint, WorkOSEvent } from './entities.js';\nimport { signWebhookPayload } from './webhook-signer.js';\nimport type { WorkOSEventName } from './constants.js';\n\nexport interface EventPayload {\n event: WorkOSEventName | string;\n data: Record<string, unknown>;\n environment_id?: string;\n}\n\nexport class EventBus {\n private endpointsByEvent = new Map<string, Set<string>>();\n private catchAllEndpoints = new Set<string>();\n\n constructor(private store: Store) {}\n\n /** Rebuild the event-type index. Auto-called via collection hooks; call manually only in tests. */\n rebuildIndex(): void {\n this.endpointsByEvent.clear();\n this.catchAllEndpoints.clear();\n const ws = getWorkOSStore(this.store);\n for (const ep of ws.webhookEndpoints.all()) {\n if (!ep.enabled) continue;\n if (ep.events.length === 0) {\n this.catchAllEndpoints.add(ep.id);\n } else {\n for (const evt of ep.events) {\n const set = this.endpointsByEvent.get(evt) ?? new Set();\n set.add(ep.id);\n this.endpointsByEvent.set(evt, set);\n }\n }\n }\n }\n\n emit(payload: EventPayload): void {\n const ws = getWorkOSStore(this.store);\n\n const event = ws.events.insert({\n object: 'event',\n event: payload.event,\n data: payload.data,\n environment_id: payload.environment_id ?? null,\n });\n\n // Pre-filtered: only endpoints that care about this event\n const targetIds = new Set(this.catchAllEndpoints);\n const eventSpecific = this.endpointsByEvent.get(payload.event);\n if (eventSpecific) {\n for (const id of eventSpecific) targetIds.add(id);\n }\n\n for (const id of targetIds) {\n const endpoint = ws.webhookEndpoints.get(id);\n if (endpoint) this.deliver(endpoint, event).catch(() => {});\n }\n }\n\n private async deliver(endpoint: WorkOSWebhookEndpoint, event: WorkOSEvent): Promise<void> {\n const body = JSON.stringify({\n id: event.id,\n event: event.event,\n data: event.data,\n created_at: event.created_at,\n });\n\n const signature = signWebhookPayload(body, endpoint.secret);\n\n await fetch(endpoint.endpoint_url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'WorkOS-Signature': signature,\n },\n body,\n signal: AbortSignal.timeout(5000),\n });\n }\n}\n"]}
|
|
@@ -190,7 +190,7 @@ export function formatWebhookEndpoint(ep, opts) {
|
|
|
190
190
|
return {
|
|
191
191
|
object: 'webhook_endpoint',
|
|
192
192
|
id: ep.id,
|
|
193
|
-
|
|
193
|
+
endpoint_url: ep.endpoint_url,
|
|
194
194
|
secret: opts?.includeSecret ? ep.secret : `${ep.secret.slice(0, 8)}****`,
|
|
195
195
|
enabled: ep.enabled,
|
|
196
196
|
events: ep.events,
|
|
@@ -1 +1 @@
|
|
|
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 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":"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,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,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 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"]}
|
|
@@ -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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workos-client.js","sourceRoot":"","sources":["../../src/lib/workos-client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Unified WorkOS client for CLI commands.\n *\n * Wraps @workos-inc/node SDK for documented endpoints and extends with\n * raw-fetch methods for undocumented/write-only endpoints (webhooks, redirect URIs, etc.).\n * Commands import one client; they don't care whether a method is SDK-backed or raw fetch.\n */\n\nimport { WorkOS } from '@workos-inc/node';\nimport { workosRequest, type WorkOSListResponse } from './workos-api.js';\nimport { resolveApiKey, resolveApiBaseUrl } from './api-key.js';\n\nexport interface WebhookEndpoint {\n id: string;\n
|
|
1
|
+
{"version":3,"file":"workos-client.js","sourceRoot":"","sources":["../../src/lib/workos-client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Unified WorkOS client for CLI commands.\n *\n * Wraps @workos-inc/node SDK for documented endpoints and extends with\n * raw-fetch methods for undocumented/write-only endpoints (webhooks, redirect URIs, etc.).\n * Commands import one client; they don't care whether a method is SDK-backed or raw fetch.\n */\n\nimport { WorkOS } from '@workos-inc/node';\nimport { workosRequest, type WorkOSListResponse } from './workos-api.js';\nimport { resolveApiKey, resolveApiBaseUrl } from './api-key.js';\n\nexport interface WebhookEndpoint {\n id: string;\n endpoint_url: string;\n events: string[];\n secret?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface AuditLogAction {\n action: string;\n}\n\nexport interface AuditLogRetention {\n retention_period_in_days: number;\n}\n\nexport interface WorkOSCLIClient {\n sdk: WorkOS;\n webhooks: {\n list(): Promise<WorkOSListResponse<WebhookEndpoint>>;\n create(endpointUrl: string, events: string[]): Promise<WebhookEndpoint>;\n delete(id: string): Promise<void>;\n };\n redirectUris: {\n add(uri: string): Promise<{ success: boolean; alreadyExists: boolean }>;\n };\n corsOrigins: {\n add(origin: string): Promise<{ success: boolean; alreadyExists: boolean }>;\n };\n homepageUrl: {\n set(url: string): Promise<void>;\n };\n auditLogs: {\n listActions(): Promise<WorkOSListResponse<AuditLogAction>>;\n getSchema(action: string): Promise<unknown>;\n getRetention(orgId: string): Promise<AuditLogRetention>;\n };\n}\n\n/**\n * Create a unified WorkOS client.\n *\n * @param apiKey - Explicit API key; falls back to resolveApiKey()\n * @param baseUrl - Explicit base URL; falls back to resolveApiBaseUrl()\n */\nexport function createWorkOSClient(apiKey?: string, baseUrl?: string): WorkOSCLIClient {\n const key = apiKey ?? resolveApiKey();\n const base = baseUrl ?? resolveApiBaseUrl();\n\n // Parse hostname from base URL for SDK init\n const hostname = new URL(base).hostname;\n const sdk = new WorkOS(key, { apiHostname: hostname });\n\n return {\n sdk,\n\n webhooks: {\n async list() {\n return workosRequest<WorkOSListResponse<WebhookEndpoint>>({\n method: 'GET',\n path: '/webhook_endpoints',\n apiKey: key,\n baseUrl: base,\n });\n },\n async create(endpointUrl: string, events: string[]) {\n return workosRequest<WebhookEndpoint>({\n method: 'POST',\n path: '/webhook_endpoints',\n apiKey: key,\n baseUrl: base,\n body: { endpoint_url: endpointUrl, events },\n });\n },\n async delete(id: string) {\n await workosRequest<null>({\n method: 'DELETE',\n path: `/webhook_endpoints/${id}`,\n apiKey: key,\n baseUrl: base,\n });\n },\n },\n\n redirectUris: {\n async add(uri: string) {\n try {\n await workosRequest({\n method: 'POST',\n path: '/user_management/redirect_uris',\n apiKey: key,\n baseUrl: base,\n body: { uri },\n });\n return { success: true, alreadyExists: false };\n } catch (error: unknown) {\n const { WorkOSApiError } = await import('./workos-api.js');\n if (error instanceof WorkOSApiError) {\n if (error.statusCode === 409 || (error.statusCode === 422 && error.message.includes('already exists'))) {\n return { success: true, alreadyExists: true };\n }\n }\n throw error;\n }\n },\n },\n\n corsOrigins: {\n async add(origin: string) {\n try {\n await workosRequest({\n method: 'POST',\n path: '/user_management/cors_origins',\n apiKey: key,\n baseUrl: base,\n body: { origin },\n });\n return { success: true, alreadyExists: false };\n } catch (error: unknown) {\n const { WorkOSApiError } = await import('./workos-api.js');\n if (error instanceof WorkOSApiError) {\n if (error.statusCode === 409 || (error.statusCode === 422 && error.message.includes('already exists'))) {\n return { success: true, alreadyExists: true };\n }\n }\n throw error;\n }\n },\n },\n\n homepageUrl: {\n async set(url: string) {\n await workosRequest({\n method: 'PUT',\n path: '/user_management/app_homepage_url',\n apiKey: key,\n baseUrl: base,\n body: { url },\n });\n },\n },\n\n auditLogs: {\n async listActions() {\n return workosRequest<WorkOSListResponse<AuditLogAction>>({\n method: 'GET',\n path: '/audit_logs/actions',\n apiKey: key,\n baseUrl: base,\n });\n },\n async getSchema(action: string) {\n return workosRequest<unknown>({\n method: 'GET',\n path: `/audit_logs/actions/${encodeURIComponent(action)}/schemas`,\n apiKey: key,\n baseUrl: base,\n });\n },\n async getRetention(orgId: string) {\n return workosRequest<AuditLogRetention>({\n method: 'GET',\n path: `/organizations/${encodeURIComponent(orgId)}/audit_logs_retention`,\n apiKey: key,\n baseUrl: base,\n });\n },\n },\n };\n}\n"]}
|