@atlasauth/backend 0.24.0 → 0.25.0

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.
Files changed (166) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/client/abac.d.ts +132 -0
  3. package/dist/client/abac.js +48 -0
  4. package/dist/client/abac.js.map +1 -0
  5. package/dist/client/access-policies.d.ts +100 -0
  6. package/dist/client/access-policies.js +29 -0
  7. package/dist/client/access-policies.js.map +1 -0
  8. package/dist/client/action-gallery.d.ts +1 -1
  9. package/dist/client/action-gallery.js.map +1 -1
  10. package/dist/client/actions.d.ts +129 -6
  11. package/dist/client/actions.js +4 -0
  12. package/dist/client/actions.js.map +1 -1
  13. package/dist/client/analytics-reports.d.ts +215 -0
  14. package/dist/client/analytics-reports.js +56 -0
  15. package/dist/client/analytics-reports.js.map +1 -0
  16. package/dist/client/app-catalog.d.ts +74 -0
  17. package/dist/client/app-catalog.js +30 -0
  18. package/dist/client/app-catalog.js.map +1 -0
  19. package/dist/client/attack-protection.d.ts +10 -0
  20. package/dist/client/attack-protection.js +8 -0
  21. package/dist/client/attack-protection.js.map +1 -1
  22. package/dist/client/audit-events.d.ts +71 -0
  23. package/dist/client/audit-events.js +28 -0
  24. package/dist/client/audit-events.js.map +1 -1
  25. package/dist/client/credentials.d.ts +8 -0
  26. package/dist/client/credentials.js.map +1 -1
  27. package/dist/client/delegated-ui-proxy.d.ts +25 -0
  28. package/dist/client/delegated-ui-proxy.js +46 -0
  29. package/dist/client/delegated-ui-proxy.js.map +1 -0
  30. package/dist/client/devices.d.ts +44 -0
  31. package/dist/client/devices.js +26 -0
  32. package/dist/client/devices.js.map +1 -0
  33. package/dist/client/email-templates.d.ts +1 -1
  34. package/dist/client/email-templates.js.map +1 -1
  35. package/dist/client/flags.d.ts +101 -0
  36. package/dist/client/flags.js +104 -0
  37. package/dist/client/flags.js.map +1 -0
  38. package/dist/client/groups.d.ts +146 -0
  39. package/dist/client/groups.js +67 -0
  40. package/dist/client/groups.js.map +1 -0
  41. package/dist/client/identity-verification.d.ts +62 -0
  42. package/dist/client/identity-verification.js +39 -0
  43. package/dist/client/identity-verification.js.map +1 -0
  44. package/dist/client/index.d.ts +943 -2
  45. package/dist/client/index.js +73 -0
  46. package/dist/client/index.js.map +1 -1
  47. package/dist/client/journeys.d.ts +108 -0
  48. package/dist/client/journeys.js +35 -0
  49. package/dist/client/journeys.js.map +1 -0
  50. package/dist/client/log-streams.d.ts +1 -1
  51. package/dist/client/marketing.d.ts +67 -0
  52. package/dist/client/marketing.js +26 -0
  53. package/dist/client/marketing.js.map +1 -0
  54. package/dist/client/mcp-gateways.d.ts +54 -0
  55. package/dist/client/mcp-gateways.js +25 -0
  56. package/dist/client/mcp-gateways.js.map +1 -0
  57. package/dist/client/messaging.d.ts +14 -3
  58. package/dist/client/messaging.js.map +1 -1
  59. package/dist/client/mfa-factors.d.ts +120 -0
  60. package/dist/client/mfa-factors.js +73 -0
  61. package/dist/client/mfa-factors.js.map +1 -0
  62. package/dist/client/migrations.d.ts +1 -1
  63. package/dist/client/migrations.js.map +1 -1
  64. package/dist/client/network-acls.d.ts +6 -1
  65. package/dist/client/network-acls.js.map +1 -1
  66. package/dist/client/network-zones.d.ts +56 -0
  67. package/dist/client/network-zones.js +29 -0
  68. package/dist/client/network-zones.js.map +1 -0
  69. package/dist/client/notifications.d.ts +1 -1
  70. package/dist/client/notifications.js.map +1 -1
  71. package/dist/client/oauth-clients.d.ts +183 -3
  72. package/dist/client/oauth-clients.js +64 -0
  73. package/dist/client/oauth-clients.js.map +1 -1
  74. package/dist/client/org-role-grants.d.ts +57 -0
  75. package/dist/client/org-role-grants.js +40 -0
  76. package/dist/client/org-role-grants.js.map +1 -0
  77. package/dist/client/organizations.d.ts +52 -0
  78. package/dist/client/organizations.js +44 -0
  79. package/dist/client/organizations.js.map +1 -1
  80. package/dist/client/page-templates.d.ts +78 -0
  81. package/dist/client/page-templates.js +31 -0
  82. package/dist/client/page-templates.js.map +1 -0
  83. package/dist/client/passkey-api.d.ts +73 -0
  84. package/dist/client/passkey-api.js +34 -0
  85. package/dist/client/passkey-api.js.map +1 -0
  86. package/dist/client/resources.d.ts +149 -0
  87. package/dist/client/resources.js +73 -0
  88. package/dist/client/resources.js.map +1 -0
  89. package/dist/client/risk-based-mfa.d.ts +147 -0
  90. package/dist/client/risk-based-mfa.js +30 -0
  91. package/dist/client/risk-based-mfa.js.map +1 -1
  92. package/dist/client/roles.d.ts +4 -0
  93. package/dist/client/roles.js.map +1 -1
  94. package/dist/client/service-connectors.d.ts +83 -0
  95. package/dist/client/service-connectors.js +33 -0
  96. package/dist/client/service-connectors.js.map +1 -0
  97. package/dist/client/ssf.d.ts +111 -0
  98. package/dist/client/ssf.js +49 -0
  99. package/dist/client/ssf.js.map +1 -0
  100. package/dist/client/sso-onboarding.d.ts +6 -0
  101. package/dist/client/sso-onboarding.js.map +1 -1
  102. package/dist/client/users.d.ts +302 -0
  103. package/dist/client/users.js +125 -0
  104. package/dist/client/users.js.map +1 -1
  105. package/dist/client/vault.d.ts +85 -0
  106. package/dist/client/vault.js +50 -0
  107. package/dist/client/vault.js.map +1 -0
  108. package/dist/client/vc.d.ts +128 -0
  109. package/dist/client/vc.js +43 -0
  110. package/dist/client/vc.js.map +1 -0
  111. package/dist/client/webhooks.d.ts +31 -2
  112. package/dist/client/webhooks.js.map +1 -1
  113. package/dist/client/workflows.d.ts +131 -0
  114. package/dist/client/workflows.js +36 -0
  115. package/dist/client/workflows.js.map +1 -0
  116. package/dist/index.d.ts +3 -0
  117. package/dist/index.js +8 -2
  118. package/dist/index.js.map +1 -1
  119. package/dist/magic-did.d.ts +5 -0
  120. package/dist/magic-did.js +49 -0
  121. package/dist/magic-did.js.map +1 -0
  122. package/dist/migration-bridge.d.ts +9 -0
  123. package/dist/migration-bridge.js +28 -2
  124. package/dist/migration-bridge.js.map +1 -1
  125. package/dist/migration-presets-g3.d.ts +2 -0
  126. package/dist/migration-presets-g3.js +254 -0
  127. package/dist/migration-presets-g3.js.map +1 -0
  128. package/dist/migration-presets-g4/authentik.d.ts +14 -0
  129. package/dist/migration-presets-g4/authentik.js +37 -0
  130. package/dist/migration-presets-g4/authentik.js.map +1 -0
  131. package/dist/migration-presets-g4/fusionauth.d.ts +2 -0
  132. package/dist/migration-presets-g4/fusionauth.js +52 -0
  133. package/dist/migration-presets-g4/fusionauth.js.map +1 -0
  134. package/dist/migration-presets-g4/hanko.d.ts +12 -0
  135. package/dist/migration-presets-g4/hanko.js +46 -0
  136. package/dist/migration-presets-g4/hanko.js.map +1 -0
  137. package/dist/migration-presets-g4/keycloak.d.ts +16 -0
  138. package/dist/migration-presets-g4/keycloak.js +37 -0
  139. package/dist/migration-presets-g4/keycloak.js.map +1 -0
  140. package/dist/migration-presets-g4/logto.d.ts +12 -0
  141. package/dist/migration-presets-g4/logto.js +35 -0
  142. package/dist/migration-presets-g4/logto.js.map +1 -0
  143. package/dist/migration-presets-g4/ory.d.ts +2 -0
  144. package/dist/migration-presets-g4/ory.js +67 -0
  145. package/dist/migration-presets-g4/ory.js.map +1 -0
  146. package/dist/migration-presets-g4/supertokens.d.ts +13 -0
  147. package/dist/migration-presets-g4/supertokens.js +35 -0
  148. package/dist/migration-presets-g4/supertokens.js.map +1 -0
  149. package/dist/migration-presets-g4/zitadel.d.ts +2 -0
  150. package/dist/migration-presets-g4/zitadel.js +36 -0
  151. package/dist/migration-presets-g4/zitadel.js.map +1 -0
  152. package/dist/migration-presets-g4.d.ts +10 -0
  153. package/dist/migration-presets-g4.js +30 -0
  154. package/dist/migration-presets-g4.js.map +1 -0
  155. package/dist/migration-presets.d.ts +6 -0
  156. package/dist/migration-presets.js +102 -6
  157. package/dist/migration-presets.js.map +1 -1
  158. package/dist/request-auth.d.ts +32 -0
  159. package/dist/request-auth.js +72 -0
  160. package/dist/request-auth.js.map +1 -0
  161. package/dist/verify.d.ts +2 -0
  162. package/dist/verify.js.map +1 -1
  163. package/dist/workos-session.d.ts +30 -0
  164. package/dist/workos-session.js +123 -0
  165. package/dist/workos-session.js.map +1 -0
  166. package/package.json +1 -1
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vaultResource = vaultResource;
4
+ const enc = encodeURIComponent;
5
+ function vaultResource(request) {
6
+ return {
7
+ create(body, idempotencyKey) {
8
+ return request({ method: 'POST', path: '/v1/vault/objects', body, idempotencyKey });
9
+ },
10
+ /** Metadata only, newest first. */
11
+ list(params = {}) {
12
+ const { key_context, ...rest } = params;
13
+ return request({
14
+ method: 'GET',
15
+ path: '/v1/vault/objects',
16
+ query: { ...rest, ...(key_context ? { key_context: JSON.stringify(key_context) } : {}) },
17
+ });
18
+ },
19
+ /** The decrypted value of the current version, or of `version`. Audited. */
20
+ read(id, version) {
21
+ return request({ method: 'GET', path: `/v1/vault/objects/${enc(id)}`, query: version ? { version } : undefined });
22
+ },
23
+ metadata(id) {
24
+ return request({ method: 'GET', path: `/v1/vault/objects/${enc(id)}/metadata` });
25
+ },
26
+ versions(id) {
27
+ return request({ method: 'GET', path: `/v1/vault/objects/${enc(id)}/versions` });
28
+ },
29
+ /** Append a version. Pass `version_check` (the version you read) to fail with 409 on a concurrent update. */
30
+ update(id, body) {
31
+ return request({ method: 'PUT', path: `/v1/vault/objects/${enc(id)}`, body });
32
+ },
33
+ delete(id) {
34
+ return request({ method: 'DELETE', path: `/v1/vault/objects/${enc(id)}` });
35
+ },
36
+ /** Bring your own AWS KMS, Google Cloud KMS or Azure Key Vault key for new versions. */
37
+ keyProvider: {
38
+ get() {
39
+ return request({ method: 'GET', path: '/v1/vault/key_provider' });
40
+ },
41
+ set(body) {
42
+ return request({ method: 'PUT', path: '/v1/vault/key_provider', body });
43
+ },
44
+ remove() {
45
+ return request({ method: 'DELETE', path: '/v1/vault/key_provider' });
46
+ },
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/client/vault.ts"],"names":[],"mappings":";;AAgEA,sCA4CC;AAzGD,MAAM,GAAG,GAAG,kBAAkB,CAAC;AA6D/B,SAAgB,aAAa,CAAC,OAAkB;IAC9C,OAAO;QACL,MAAM,CAAC,IAA2B,EAAE,cAAuB;YACzD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,mCAAmC;QACnC,IAAI,CAAC,SAAiC,EAAE;YACtC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YACxC,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aACzF,CAAC,CAAC;QACL,CAAC;QACD,4EAA4E;QAC5E,IAAI,CAAC,EAAU,EAAE,OAAgB;YAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACpH,CAAC;QACD,QAAQ,CAAC,EAAU;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,QAAQ,CAAC,EAAU;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,6GAA6G;QAC7G,MAAM,CAAC,EAAU,EAAE,IAA+C;YAChE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,wFAAwF;QACxF,WAAW,EAAE;YACX,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,GAAG,CAAC,IAA6B;gBAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM;gBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACvE,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,128 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface VcClaimMapping {
4
+ name: string;
5
+ /** user_id | email | first_name | last_name | username | public_metadata.<key> */
6
+ source: string;
7
+ /** Selectively disclosable (default true; SD-JWT VC only). */
8
+ disclosable?: boolean;
9
+ /** Typing of the value; full-date is YYYY-MM-DD (an mdoc full-date). */
10
+ value_type?: 'string' | 'number' | 'boolean' | 'full-date';
11
+ }
12
+ export interface VcCredentialType {
13
+ object: 'vc_credential_type';
14
+ id: string;
15
+ /** The vct, or the docType for mso_mdoc. */
16
+ vct: string;
17
+ format: VcFormat;
18
+ namespace: string | null;
19
+ /** mdoc: PEM IACA roots a presentation must chain to. */
20
+ iaca_roots: string[];
21
+ /** mdoc: PEM Document Signer chain published as x5chain. */
22
+ signer_chain: string[];
23
+ name: string;
24
+ claims: VcClaimMapping[];
25
+ lifetime_seconds: number;
26
+ require_wallet_attestation: boolean;
27
+ created_at: number;
28
+ }
29
+ export type VcFormat = 'dc+sd-jwt' | 'mso_mdoc';
30
+ export interface CreateVcCredentialTypeBody {
31
+ /** The vct, or the docType for mso_mdoc (for example org.iso.18013.5.1.mDL). */
32
+ vct: string;
33
+ format?: VcFormat;
34
+ /** mso_mdoc: the namespace of the claims (default the docType). */
35
+ namespace?: string;
36
+ /** mso_mdoc: PEM IACA roots (ISO 18013-5 Annex B); with roots set only a certificate chain is accepted. */
37
+ iaca_roots?: string[];
38
+ /** mso_mdoc: PEM Document Signer certificate (then intermediates) for the instance's mdoc signing key. */
39
+ signer_chain?: string[];
40
+ name: string;
41
+ claims: VcClaimMapping[];
42
+ lifetime_seconds?: number;
43
+ require_wallet_attestation?: boolean;
44
+ wallet_attestation_jwks?: {
45
+ keys: Record<string, unknown>[];
46
+ };
47
+ }
48
+ export interface VcOffer {
49
+ object: 'vc_offer';
50
+ id: string;
51
+ expires_at: number;
52
+ credential_offer: Record<string, unknown>;
53
+ /** The openid-credential-offer:// link for a QR code. Shown once. */
54
+ credential_offer_uri: string;
55
+ }
56
+ export interface VcCredential {
57
+ object: 'vc_credential';
58
+ id: string;
59
+ credential_type_id: string;
60
+ user_id: string;
61
+ status_idx: number;
62
+ issued_at: number;
63
+ expires_at: number;
64
+ revoked_at: number | null;
65
+ }
66
+ export interface VcPresentationRequest {
67
+ object: 'vc_presentation_request';
68
+ id: string;
69
+ vct: string;
70
+ format: VcFormat;
71
+ iaca_roots: string[];
72
+ claims: string[];
73
+ status: 'pending' | 'verified' | 'failed';
74
+ result: {
75
+ issuer: string;
76
+ vct: string;
77
+ claims: Record<string, unknown>;
78
+ } | null;
79
+ error: string | null;
80
+ /** Set when the credential was issued by this instance. */
81
+ user_id: string | null;
82
+ expires_at: number;
83
+ request_uri: string;
84
+ /** The openid4vp:// link for a QR code. */
85
+ authorization_request_uri: string;
86
+ }
87
+ /** Issue verifiable credentials to wallets (OpenID4VCI) and verify presentations (OpenID4VP), SD-JWT VC. */
88
+ export declare function vcResource(request: RequestFn): {
89
+ credentialTypes: {
90
+ list(): Promise<ListPage<VcCredentialType>>;
91
+ create(body: CreateVcCredentialTypeBody): Promise<VcCredentialType>;
92
+ get(id: string): Promise<VcCredentialType>;
93
+ delete(id: string): Promise<{
94
+ object: "vc_credential_type";
95
+ id: string;
96
+ deleted: true;
97
+ }>;
98
+ };
99
+ createOffer(body: {
100
+ credential_type_id: string;
101
+ user_id: string;
102
+ tx_code?: string;
103
+ expires_in_seconds?: number;
104
+ }): Promise<VcOffer>;
105
+ credentials: {
106
+ list(query?: {
107
+ user_id?: string;
108
+ }): Promise<ListPage<VcCredential>>;
109
+ revoke(id: string): Promise<VcCredential>;
110
+ };
111
+ presentationRequests: {
112
+ create(body: {
113
+ vct: string;
114
+ format?: VcFormat;
115
+ /** mso_mdoc: PEM IACA roots for this request. */
116
+ iaca_roots?: string[];
117
+ claims?: string[];
118
+ trusted_issuers?: Array<{
119
+ issuer: string;
120
+ jwks: {
121
+ keys: Record<string, unknown>[];
122
+ };
123
+ }>;
124
+ expires_in_seconds?: number;
125
+ }): Promise<VcPresentationRequest>;
126
+ get(id: string): Promise<VcPresentationRequest>;
127
+ };
128
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vcResource = vcResource;
4
+ const request_1 = require("./request");
5
+ /** Issue verifiable credentials to wallets (OpenID4VCI) and verify presentations (OpenID4VP), SD-JWT VC. */
6
+ function vcResource(request) {
7
+ return {
8
+ credentialTypes: {
9
+ list() {
10
+ return request({ method: 'GET', path: '/v1/vc/credential_types' });
11
+ },
12
+ create(body) {
13
+ return request({ method: 'POST', path: '/v1/vc/credential_types', body });
14
+ },
15
+ get(id) {
16
+ return request({ method: 'GET', path: `/v1/vc/credential_types/${(0, request_1.enc)(id)}` });
17
+ },
18
+ delete(id) {
19
+ return request({ method: 'DELETE', path: `/v1/vc/credential_types/${(0, request_1.enc)(id)}` });
20
+ },
21
+ },
22
+ createOffer(body) {
23
+ return request({ method: 'POST', path: '/v1/vc/offers', body });
24
+ },
25
+ credentials: {
26
+ list(query = {}) {
27
+ return request({ method: 'GET', path: '/v1/vc/credentials', query: { ...query } });
28
+ },
29
+ revoke(id) {
30
+ return request({ method: 'POST', path: `/v1/vc/credentials/${(0, request_1.enc)(id)}/revoke` });
31
+ },
32
+ },
33
+ presentationRequests: {
34
+ create(body) {
35
+ return request({ method: 'POST', path: '/v1/vc/presentation_requests', body });
36
+ },
37
+ get(id) {
38
+ return request({ method: 'GET', path: `/v1/vc/presentation_requests/${(0, request_1.enc)(id)}` });
39
+ },
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=vc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/client/vc.ts"],"names":[],"mappings":";;AAyFA,gCA4CC;AArID,uCAAgD;AAwFhD,4GAA4G;AAC5G,SAAgB,UAAU,CAAC,OAAkB;IAC3C,OAAO;QACL,eAAe,EAAE;YACf,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,IAAgC;gBACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,WAAW,CAAC,IAAoG;YAC9G,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,WAAW,EAAE;YACX,IAAI,CAAC,QAA8B,EAAE;gBACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,oBAAoB,EAAE;YACpB,MAAM,CAAC,IAQN;gBACC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gCAAgC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type ProvisioningFields, type ProvisioningInput, type ProvisioningMetadata } from './compliance';
2
2
  import { type RequestFn } from './request';
3
- export type WebhookDestinationType = 'https' | 'aws_eventbridge' | 'gcp_pubsub' | 'cloudflare_queue';
3
+ export type WebhookDestinationType = 'https' | 'aws_eventbridge' | 'gcp_pubsub' | 'cloudflare_queue' | 'segment' | 'ga4' | 'mixpanel' | 'posthog' | 'amplitude' | 'customerio' | 'slack';
4
4
  /** Where deliveries go. Credentials are never returned. */
5
5
  export type WebhookDestination = {
6
6
  type: 'https';
@@ -17,7 +17,21 @@ export type WebhookDestination = {
17
17
  type: 'cloudflare_queue';
18
18
  account_id: string;
19
19
  queue_id: string;
20
- };
20
+ } | ({
21
+ type: 'segment' | 'mixpanel' | 'posthog' | 'amplitude' | 'customerio';
22
+ region?: 'us' | 'eu';
23
+ } & AnalyticsOptions) | ({
24
+ type: 'ga4';
25
+ measurement_id: string;
26
+ } & AnalyticsOptions) | ({
27
+ type: 'slack';
28
+ } & AnalyticsOptions);
29
+ /** Shared by the analytics and messaging destinations: person-identifying fields are dropped unless `include_pii`. */
30
+ export interface AnalyticsOptions {
31
+ include_pii?: boolean;
32
+ /** Rename events: `{ 'user.created': 'Signed Up' }`. */
33
+ event_map?: Record<string, string>;
34
+ }
21
35
  /** Your own credentials for an event destination (stored encrypted, write-only). */
22
36
  export type WebhookDestinationCredentials = {
23
37
  access_key_id: string;
@@ -27,6 +41,21 @@ export type WebhookDestinationCredentials = {
27
41
  service_account_json: string | Record<string, unknown>;
28
42
  } | {
29
43
  api_token: string;
44
+ } | {
45
+ write_key: string;
46
+ } | {
47
+ api_secret: string;
48
+ } | {
49
+ project_token: string;
50
+ } | {
51
+ project_api_key: string;
52
+ } | {
53
+ api_key: string;
54
+ } | {
55
+ site_id: string;
56
+ api_key: string;
57
+ } | {
58
+ webhook_url: string;
30
59
  };
31
60
  export interface WebhookLastFailure {
32
61
  at: number;
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/client/webhooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/client/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ /** What starts a workflow run. */
4
+ export type WorkflowTrigger = {
5
+ type: 'cron';
6
+ cron: string;
7
+ } | {
8
+ type: 'user_created';
9
+ after_minutes?: number;
10
+ } | {
11
+ type: 'inactive';
12
+ days: number;
13
+ } | {
14
+ type: 'membership_age';
15
+ days: number;
16
+ organization_id?: string;
17
+ } | {
18
+ type: 'trial_end';
19
+ days_before?: number;
20
+ } | {
21
+ type: 'webhook_event';
22
+ event_type: string;
23
+ };
24
+ /** One step. A step that acts on an organization takes `organization_id`, or uses the membership's own for `membership_age`. */
25
+ export type WorkflowStep = {
26
+ type: 'notify';
27
+ subject: string;
28
+ body: string;
29
+ to?: string;
30
+ } | {
31
+ type: 'disable';
32
+ reason?: string;
33
+ } | {
34
+ type: 'delete';
35
+ } | {
36
+ type: 'invite';
37
+ role: string;
38
+ organization_id?: string;
39
+ } | {
40
+ type: 'add_to_org';
41
+ role: string;
42
+ organization_id?: string;
43
+ } | {
44
+ type: 'remove_from_org';
45
+ organization_id?: string;
46
+ } | {
47
+ type: 'add_to_team';
48
+ team_id: string;
49
+ organization_id?: string;
50
+ } | {
51
+ type: 'remove_from_team';
52
+ team_id: string;
53
+ organization_id?: string;
54
+ } | {
55
+ type: 'add_to_group';
56
+ group: string;
57
+ } | {
58
+ type: 'remove_from_group';
59
+ group: string;
60
+ } | {
61
+ type: 'call_action';
62
+ action_id: string;
63
+ };
64
+ export interface Workflow {
65
+ object: 'workflow';
66
+ id: string;
67
+ name: string;
68
+ description: string | null;
69
+ enabled: boolean;
70
+ trigger: WorkflowTrigger;
71
+ steps: WorkflowStep[];
72
+ /** A cron workflow's next slot (Unix ms); null for other triggers. */
73
+ next_run_at: number | null;
74
+ created_at: number;
75
+ updated_at: number;
76
+ }
77
+ export interface WorkflowRunStep {
78
+ index: number;
79
+ type: string;
80
+ status: 'ok' | 'failed' | 'would_run' | 'skipped';
81
+ detail?: string;
82
+ }
83
+ export interface WorkflowRun {
84
+ object: 'workflow_run';
85
+ id: string;
86
+ workflow_id: string;
87
+ subject: string;
88
+ user_id: string | null;
89
+ dry_run: boolean;
90
+ status: 'running' | 'succeeded' | 'failed';
91
+ steps: WorkflowRunStep[];
92
+ error: string | null;
93
+ started_at: number;
94
+ finished_at: number | null;
95
+ }
96
+ export interface CreateWorkflowBody {
97
+ name: string;
98
+ description?: string | null;
99
+ enabled?: boolean;
100
+ trigger: WorkflowTrigger;
101
+ steps: WorkflowStep[];
102
+ }
103
+ export type UpdateWorkflowBody = Partial<CreateWorkflowBody>;
104
+ export declare function workflowsResource(request: RequestFn): {
105
+ list(): Promise<ListPage<Workflow>>;
106
+ create(body: CreateWorkflowBody, idempotencyKey?: string): Promise<Workflow>;
107
+ get(id: string): Promise<Workflow>;
108
+ update(id: string, body: UpdateWorkflowBody): Promise<Workflow>;
109
+ delete(id: string): Promise<{
110
+ object: "workflow";
111
+ id: string;
112
+ deleted: true;
113
+ }>;
114
+ /** Validate every step against live data for a user (none for cron) and report what would happen; changes nothing. */
115
+ dryRun(id: string, target?: {
116
+ user_id?: string;
117
+ organization_id?: string;
118
+ }): Promise<WorkflowRun>;
119
+ /** Run now for one user (none for cron), outside the trigger. */
120
+ run(id: string, target?: {
121
+ user_id?: string;
122
+ organization_id?: string;
123
+ }, idempotencyKey?: string): Promise<WorkflowRun>;
124
+ /** Run history, newest first. */
125
+ runs(id: string, query?: {
126
+ limit?: number;
127
+ starting_after?: string;
128
+ }): Promise<ListPage<WorkflowRun> & {
129
+ next_cursor: string | null;
130
+ }>;
131
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.workflowsResource = workflowsResource;
4
+ const request_1 = require("./request");
5
+ function workflowsResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/workflows' });
9
+ },
10
+ create(body, idempotencyKey) {
11
+ return request({ method: 'POST', path: '/v1/workflows', body, idempotencyKey });
12
+ },
13
+ get(id) {
14
+ return request({ method: 'GET', path: `/v1/workflows/${(0, request_1.enc)(id)}` });
15
+ },
16
+ update(id, body) {
17
+ return request({ method: 'PATCH', path: `/v1/workflows/${(0, request_1.enc)(id)}`, body });
18
+ },
19
+ delete(id) {
20
+ return request({ method: 'DELETE', path: `/v1/workflows/${(0, request_1.enc)(id)}` });
21
+ },
22
+ /** Validate every step against live data for a user (none for cron) and report what would happen; changes nothing. */
23
+ dryRun(id, target = {}) {
24
+ return request({ method: 'POST', path: `/v1/workflows/${(0, request_1.enc)(id)}/dry_run`, body: target });
25
+ },
26
+ /** Run now for one user (none for cron), outside the trigger. */
27
+ run(id, target = {}, idempotencyKey) {
28
+ return request({ method: 'POST', path: `/v1/workflows/${(0, request_1.enc)(id)}/run`, body: target, idempotencyKey });
29
+ },
30
+ /** Run history, newest first. */
31
+ runs(id, query = {}) {
32
+ return request({ method: 'GET', path: `/v1/workflows/${(0, request_1.enc)(id)}/runs`, query });
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/client/workflows.ts"],"names":[],"mappings":";;AAuEA,8CA8BC;AArGD,uCAAgD;AAuEhD,SAAgB,iBAAiB,CAAC,OAAkB;IAClD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,CAAC,IAAwB,EAAE,cAAuB;YACtD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAwB;YACzC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,sHAAsH;QACtH,MAAM,CAAC,EAAU,EAAE,SAAyD,EAAE;YAC5E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,iEAAiE;QACjE,GAAG,CAAC,EAAU,EAAE,SAAyD,EAAE,EAAE,cAAuB;YAClG,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,iCAAiC;QACjC,IAAI,CAAC,EAAU,EAAE,QAAqD,EAAE;YACtE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './jwks-cache';
2
2
  export { DiscoveryError, JwksDiscovery, discoveryUrlFor, instanceIdFromPublishableKey } from './discovery';
3
3
  export * from './verify';
4
+ export * from './request-auth';
4
5
  export * from './recent-auth';
5
6
  export * from './access-control';
6
7
  export * from './handshake';
@@ -8,6 +9,8 @@ export * from './better-auth';
8
9
  export * from './migration-presets';
9
10
  export * from './migration-bridge';
10
11
  export * from './auth0-session';
12
+ export { looksLikeMagicDidToken, magicDidTokenExtractor } from './magic-did';
13
+ export { workosSessionTokenExtractor } from './workos-session';
11
14
  export { BETTER_AUTH_JWT_ALGS, peekIssuer } from './legacy-issuers';
12
15
  export type { LegacyIssuer, LegacyIssuerKind } from './legacy-issuers';
13
16
  export * from './legacy-issuer-presets';
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.buildWwwAuthenticate = exports.DPOP_PROOF_MAX_AGE_SECONDS = exports.ACCESS_TOKEN_CLOCK_SKEW_SECONDS = exports.memoryPcaStore = exports.defaultExtract = exports.requirePCA = exports.verifyPCActn = exports.REFERALLI_API_VERSION = exports.referralEmailHash = exports.referalliSignatureV2 = exports.referalliSignature = exports.signReferralUpdatedEvent = exports.signReferalliCall = exports.signAtlasReferralCall = exports.testTenantClaims = exports.TEST_TOKEN_TAMPERS = exports.createTestIssuer = exports.createAtlasClient = exports.resetOidcCaches = exports.oidcSsoOf = exports.oidcOrganizationsOf = exports.oidcOrganizationOf = exports.oidcVerifyIdToken = exports.oidcStart = exports.oidcLogoutUrl = exports.oidcClearCookie = exports.oidcCallback = exports.oidc = exports.OIDC_FLOW_MAX_AGE_SECONDS = exports.OIDC_FLOW_COOKIE = exports.AtlasOidcError = exports.readLogoutToken = exports.nextBackchannelLogout = exports.handleBackchannelLogout = exports.fetchBackchannelLogout = exports.fastifyBackchannelLogoutPlugin = exports.fastifyBackchannelLogout = exports.expressBackchannelLogout = exports.verifyLogoutToken = exports.memoryLogoutReplayStore = exports.LogoutTokenVerifier = exports.LOGOUT_TOKEN_MAX_AGE_SECONDS = exports.LOGOUT_TOKEN_CLOCK_SKEW_SECONDS = exports.BACKCHANNEL_LOGOUT_EVENT = exports.peekIssuer = exports.BETTER_AUTH_JWT_ALGS = exports.instanceIdFromPublishableKey = exports.discoveryUrlFor = exports.JwksDiscovery = exports.DiscoveryError = void 0;
18
- exports.verifyAccessToken = exports.protectedResourceMetadataPath = exports.protectedResourceMetadata = exports.memoryDpopReplayStore = exports.memoryDpopNonceSource = exports.hmacDpopNonceSource = exports.createIntrospector = exports.createAccessTokenVerifier = void 0;
17
+ exports.memoryPcaStore = exports.defaultExtract = exports.requirePCA = exports.verifyPCActn = exports.REFERALLI_API_VERSION = exports.referralEmailHash = exports.referalliSignatureV2 = exports.referalliSignature = exports.signReferralUpdatedEvent = exports.signReferalliCall = exports.signAtlasReferralCall = exports.testTenantClaims = exports.TEST_TOKEN_TAMPERS = exports.createTestIssuer = exports.createAtlasClient = exports.resetOidcCaches = exports.oidcSsoOf = exports.oidcOrganizationsOf = exports.oidcOrganizationOf = exports.oidcVerifyIdToken = exports.oidcStart = exports.oidcLogoutUrl = exports.oidcClearCookie = exports.oidcCallback = exports.oidc = exports.OIDC_FLOW_MAX_AGE_SECONDS = exports.OIDC_FLOW_COOKIE = exports.AtlasOidcError = exports.readLogoutToken = exports.nextBackchannelLogout = exports.handleBackchannelLogout = exports.fetchBackchannelLogout = exports.fastifyBackchannelLogoutPlugin = exports.fastifyBackchannelLogout = exports.expressBackchannelLogout = exports.verifyLogoutToken = exports.memoryLogoutReplayStore = exports.LogoutTokenVerifier = exports.LOGOUT_TOKEN_MAX_AGE_SECONDS = exports.LOGOUT_TOKEN_CLOCK_SKEW_SECONDS = exports.BACKCHANNEL_LOGOUT_EVENT = exports.peekIssuer = exports.BETTER_AUTH_JWT_ALGS = exports.workosSessionTokenExtractor = exports.magicDidTokenExtractor = exports.looksLikeMagicDidToken = exports.instanceIdFromPublishableKey = exports.discoveryUrlFor = exports.JwksDiscovery = exports.DiscoveryError = void 0;
18
+ exports.verifyAccessToken = exports.protectedResourceMetadataPath = exports.protectedResourceMetadata = exports.memoryDpopReplayStore = exports.memoryDpopNonceSource = exports.hmacDpopNonceSource = exports.createIntrospector = exports.createAccessTokenVerifier = exports.buildWwwAuthenticate = exports.DPOP_PROOF_MAX_AGE_SECONDS = exports.ACCESS_TOKEN_CLOCK_SKEW_SECONDS = void 0;
19
19
  // §7.3 token verification — the original surface, unchanged.
20
20
  __exportStar(require("./jwks-cache"), exports);
21
21
  // OIDC discovery of the JWKS URL when only `issuer` is configured.
@@ -25,6 +25,7 @@ Object.defineProperty(exports, "JwksDiscovery", { enumerable: true, get: functio
25
25
  Object.defineProperty(exports, "discoveryUrlFor", { enumerable: true, get: function () { return discovery_1.discoveryUrlFor; } });
26
26
  Object.defineProperty(exports, "instanceIdFromPublishableKey", { enumerable: true, get: function () { return discovery_1.instanceIdFromPublishableKey; } });
27
27
  __exportStar(require("./verify"), exports);
28
+ __exportStar(require("./request-auth"), exports);
28
29
  __exportStar(require("./recent-auth"), exports);
29
30
  __exportStar(require("./access-control"), exports);
30
31
  __exportStar(require("./handshake"), exports);
@@ -34,6 +35,11 @@ __exportStar(require("./better-auth"), exports);
34
35
  __exportStar(require("./migration-presets"), exports);
35
36
  __exportStar(require("./migration-bridge"), exports);
36
37
  __exportStar(require("./auth0-session"), exports);
38
+ var magic_did_1 = require("./magic-did");
39
+ Object.defineProperty(exports, "looksLikeMagicDidToken", { enumerable: true, get: function () { return magic_did_1.looksLikeMagicDidToken; } });
40
+ Object.defineProperty(exports, "magicDidTokenExtractor", { enumerable: true, get: function () { return magic_did_1.magicDidTokenExtractor; } });
41
+ var workos_session_1 = require("./workos-session");
42
+ Object.defineProperty(exports, "workosSessionTokenExtractor", { enumerable: true, get: function () { return workos_session_1.workosSessionTokenExtractor; } });
37
43
  var legacy_issuers_1 = require("./legacy-issuers");
38
44
  Object.defineProperty(exports, "BETTER_AUTH_JWT_ALGS", { enumerable: true, get: function () { return legacy_issuers_1.BETTER_AUTH_JWT_ALGS; } });
39
45
  Object.defineProperty(exports, "peekIssuer", { enumerable: true, get: function () { return legacy_issuers_1.peekIssuer; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { MigrationTokenExtractor } from './migration-bridge';
2
+ /** Is this a Magic DID token by shape (`[0x…proof, claim JSON with a did:ethr iss]`)? Nothing is verified. */
3
+ export declare function looksLikeMagicDidToken(token: string): boolean;
4
+ /** The bridge token extractor for Magic: the DID token in `Authorization: Bearer`, when there is one. */
5
+ export declare function magicDidTokenExtractor(): MigrationTokenExtractor;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.looksLikeMagicDidToken = looksLikeMagicDidToken;
4
+ exports.magicDidTokenExtractor = magicDidTokenExtractor;
5
+ /**
6
+ * Magic (magic.link) DID tokens for the migration bridge. A Magic app sends
7
+ * `magic.user.getIdToken()` to its server as `Authorization: Bearer <DID token>`;
8
+ * a DID token is base64(JSON `[proof, claim]`), not a JWT, so the bridge's
9
+ * generic Bearer reading (which routes on a JWT's `iss`) does not see it.
10
+ * This extractor picks it out (by shape only — Atlas verifies the signature,
11
+ * expiry and audience on exchange). Runs on every runtime (no Buffer).
12
+ *
13
+ * migrationBridge({ source: 'magic', presetVars: { client_id }, extractToken: magicDidTokenExtractor() })
14
+ */
15
+ const ISSUER = /^did:ethr:0x[0-9a-fA-F]{40}$/;
16
+ function header(headers, name) {
17
+ if (typeof headers.get === 'function')
18
+ return headers.get(name) ?? undefined;
19
+ const record = headers;
20
+ const value = record[name] ?? record[name.toLowerCase()];
21
+ return Array.isArray(value) ? value[0] : value;
22
+ }
23
+ /** Is this a Magic DID token by shape (`[0x…proof, claim JSON with a did:ethr iss]`)? Nothing is verified. */
24
+ function looksLikeMagicDidToken(token) {
25
+ if (!token || token.length > 16_384 || !/^[A-Za-z0-9+/_-]+={0,2}$/.test(token))
26
+ return false;
27
+ try {
28
+ const b64 = token.replace(/-/g, '+').replace(/_/g, '/').padEnd(Math.ceil(token.length / 4) * 4, '=');
29
+ const outer = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(b64), (c) => c.charCodeAt(0))));
30
+ if (!Array.isArray(outer) || outer.length !== 2 || typeof outer[0] !== 'string' || typeof outer[1] !== 'string')
31
+ return false;
32
+ if (!/^0x[0-9a-fA-F]{130}$/.test(outer[0]))
33
+ return false;
34
+ const claim = JSON.parse(outer[1]);
35
+ return typeof claim?.iss === 'string' && ISSUER.test(claim.iss);
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /** The bridge token extractor for Magic: the DID token in `Authorization: Bearer`, when there is one. */
42
+ function magicDidTokenExtractor() {
43
+ return ({ headers }) => {
44
+ const auth = header(headers, 'authorization');
45
+ const m = auth ? /^Bearer\s+(\S+)$/i.exec(auth.trim()) : null;
46
+ return m && looksLikeMagicDidToken(m[1]) ? m[1] : undefined;
47
+ };
48
+ }
49
+ //# sourceMappingURL=magic-did.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magic-did.js","sourceRoot":"","sources":["../src/magic-did.ts"],"names":[],"mappings":";;AAuBA,wDAYC;AAGD,wDAMC;AA1CD;;;;;;;;;GASG;AAEH,MAAM,MAAM,GAAG,8BAA8B,CAAC;AAE9C,SAAS,MAAM,CAAC,OAA0D,EAAE,IAAY;IACtF,IAAI,OAAQ,OAA6B,CAAC,GAAG,KAAK,UAAU;QAAE,OAAQ,OAAgD,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IAC9I,MAAM,MAAM,GAAG,OAAwD,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED,8GAA8G;AAC9G,SAAgB,sBAAsB,CAAC,KAAa;IAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACrG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAY,CAAC;QAClH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9H,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAsB,CAAC;QACxD,OAAO,OAAO,KAAK,EAAE,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,SAAgB,sBAAsB;IACpC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,OAAO,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC"}
@@ -130,11 +130,20 @@ export type MigrationBridgeDecision =
130
130
  };
131
131
  /** Parse a Cookie header into name → raw value (first occurrence wins). */
132
132
  export declare function parseCookieHeader(cookieHeader: string | null | undefined): Record<string, string>;
133
+ /** The token in the PocketBase JS SDK's `authStore.exportToCookie()` cookie (`pb_auth`: JSON `{ token, record }`). */
134
+ export declare function readPocketBaseCookieToken(raw: string | undefined): string | undefined;
133
135
  /**
134
136
  * Supabase SSR cookie: `sb-<ref>-auth-token` (or chunks `.0`, `.1`, … joined in
135
137
  * order), the value JSON or `base64-` + base64url(JSON), holding `access_token`.
136
138
  */
137
139
  export declare function readSupabaseAccessToken(cookies: Record<string, string>, baseName: string): string | undefined;
140
+ /**
141
+ * The refresh token in the same cookie (`refresh_token`, or the second entry
142
+ * of the older auth-helpers array): what the `supabase_refresh_token`
143
+ * session-table preset looks up among the sessions a dump of
144
+ * auth.refresh_tokens imported.
145
+ */
146
+ export declare function readSupabaseRefreshToken(cookies: Record<string, string>, baseName: string): string | undefined;
138
147
  /** Resolve the cookie names / format / bearer flag the bridge uses for its source. */
139
148
  export declare function bridgeCookieConfig(options: Pick<MigrationBridgeOptions, 'source' | 'preset' | 'presetVars' | 'cookieNames' | 'clearCookieNames' | 'tokenFormat' | 'bearer'>): {
140
149
  cookies: string[];