@atlasauth/backend 0.18.0 → 0.20.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 (90) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/backchannel-handlers.d.ts +87 -0
  3. package/dist/backchannel-handlers.js +137 -0
  4. package/dist/backchannel-handlers.js.map +1 -0
  5. package/dist/client/activity.d.ts +13 -2
  6. package/dist/client/activity.js.map +1 -1
  7. package/dist/client/audit-logs.d.ts +7 -0
  8. package/dist/client/audit-logs.js.map +1 -1
  9. package/dist/client/compliance.d.ts +216 -0
  10. package/dist/client/compliance.js +77 -0
  11. package/dist/client/compliance.js.map +1 -0
  12. package/dist/client/credentials.d.ts +427 -0
  13. package/dist/client/credentials.js +162 -0
  14. package/dist/client/credentials.js.map +1 -0
  15. package/dist/client/data-subject-requests.d.ts +36 -1
  16. package/dist/client/data-subject-requests.js.map +1 -1
  17. package/dist/client/design.d.ts +48 -0
  18. package/dist/client/design.js +9 -0
  19. package/dist/client/design.js.map +1 -1
  20. package/dist/client/entitlement-overrides.d.ts +30 -0
  21. package/dist/client/entitlement-overrides.js +9 -0
  22. package/dist/client/entitlement-overrides.js.map +1 -1
  23. package/dist/client/env.d.ts +16 -0
  24. package/dist/client/env.js +38 -0
  25. package/dist/client/env.js.map +1 -0
  26. package/dist/client/error.d.ts +12 -0
  27. package/dist/client/error.js +6 -0
  28. package/dist/client/error.js.map +1 -1
  29. package/dist/client/index.d.ts +321 -7
  30. package/dist/client/index.js +39 -1
  31. package/dist/client/index.js.map +1 -1
  32. package/dist/client/instance.d.ts +414 -3
  33. package/dist/client/instance.js +77 -3
  34. package/dist/client/instance.js.map +1 -1
  35. package/dist/client/integrations.d.ts +107 -0
  36. package/dist/client/integrations.js +25 -0
  37. package/dist/client/integrations.js.map +1 -0
  38. package/dist/client/messaging.d.ts +18 -4
  39. package/dist/client/messaging.js +6 -2
  40. package/dist/client/messaging.js.map +1 -1
  41. package/dist/client/oauth-clients.d.ts +18 -3
  42. package/dist/client/oauth-clients.js +4 -2
  43. package/dist/client/oauth-clients.js.map +1 -1
  44. package/dist/client/operator.d.ts +100 -0
  45. package/dist/client/operator.js +132 -0
  46. package/dist/client/operator.js.map +1 -0
  47. package/dist/client/platform.d.ts +250 -9
  48. package/dist/client/platform.js +88 -6
  49. package/dist/client/platform.js.map +1 -1
  50. package/dist/client/privacy.d.ts +127 -0
  51. package/dist/client/privacy.js +44 -0
  52. package/dist/client/privacy.js.map +1 -0
  53. package/dist/client/referrals.d.ts +53 -6
  54. package/dist/client/referrals.js +9 -0
  55. package/dist/client/referrals.js.map +1 -1
  56. package/dist/client/request.d.ts +58 -1
  57. package/dist/client/request.js +6 -2
  58. package/dist/client/request.js.map +1 -1
  59. package/dist/client/sealed-box.d.ts +7 -0
  60. package/dist/client/sealed-box.js +62 -0
  61. package/dist/client/sealed-box.js.map +1 -0
  62. package/dist/client/sessions.d.ts +16 -5
  63. package/dist/client/sessions.js +7 -10
  64. package/dist/client/sessions.js.map +1 -1
  65. package/dist/client/status.d.ts +200 -0
  66. package/dist/client/status.js +54 -0
  67. package/dist/client/status.js.map +1 -0
  68. package/dist/client/users.d.ts +2 -0
  69. package/dist/client/users.js.map +1 -1
  70. package/dist/client/webhooks.d.ts +265 -13
  71. package/dist/client/webhooks.js +52 -3
  72. package/dist/client/webhooks.js.map +1 -1
  73. package/dist/index.d.ts +8 -6
  74. package/dist/index.js +19 -4
  75. package/dist/index.js.map +1 -1
  76. package/dist/oidc.d.ts +75 -1
  77. package/dist/oidc.js +48 -0
  78. package/dist/oidc.js.map +1 -1
  79. package/dist/referral-test-calls.d.ts +26 -13
  80. package/dist/referral-test-calls.js +40 -14
  81. package/dist/referral-test-calls.js.map +1 -1
  82. package/dist/testing.d.ts +45 -6
  83. package/dist/testing.js +37 -2
  84. package/dist/testing.js.map +1 -1
  85. package/dist/verify.d.ts +9 -0
  86. package/dist/verify.js.map +1 -1
  87. package/dist/webhooks.d.ts +8 -0
  88. package/dist/webhooks.js +13 -4
  89. package/dist/webhooks.js.map +1 -1
  90. package/package.json +5 -1
@@ -0,0 +1,127 @@
1
+ import { type RequestFn } from './request';
2
+ /**
3
+ * The data-rights executor protocol (v2) — the routes any DSAR orchestrator
4
+ * calls to find a person and carry out a request against their identity data
5
+ * (needs a key with `privacy:execute`) — and the instance's own data-rights
6
+ * orchestrator, where Atlas opens a case when an account deletion is scheduled
7
+ * (needs `instance:read` / `instance:write`).
8
+ */
9
+ export type PrivacyCanonicalType = 'access' | 'deletion' | 'closure' | 'restriction' | 'rectification';
10
+ export type PrivacyRequestStatus = 'pending' | 'scheduled' | 'processing' | 'completed' | 'completed_with_retention' | 'rejected' | 'no_match' | 'cancelled';
11
+ export interface PrivacySubject {
12
+ iss?: string;
13
+ sub?: string;
14
+ ext?: string;
15
+ principal?: string;
16
+ }
17
+ export interface PrivacyLookupResult {
18
+ object: 'privacy_lookup';
19
+ status: 'found' | 'no_match';
20
+ subjectId: string | null;
21
+ matchedBy: 'atlas.sub' | 'atlas.ext' | 'email' | 'email_unverified' | null;
22
+ detail: string | null;
23
+ principal?: string;
24
+ }
25
+ export interface PrivacyRequest {
26
+ object: 'privacy_request';
27
+ id: string;
28
+ type: PrivacyCanonicalType;
29
+ canonicalType: PrivacyCanonicalType;
30
+ requestedType: string;
31
+ status: PrivacyRequestStatus;
32
+ subjectId: string;
33
+ caseId: string | null;
34
+ executeAfter: string | null;
35
+ eta: string | null;
36
+ detail: string | null;
37
+ retention: Array<{
38
+ category: string;
39
+ basis: string;
40
+ until: string;
41
+ }>;
42
+ steps: Array<{
43
+ name: string;
44
+ status: string;
45
+ reason?: string;
46
+ at?: number;
47
+ }>;
48
+ trace: string | null;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ completedAt: string | null;
52
+ /** On `getRequest` once done. */
53
+ result?: unknown;
54
+ }
55
+ export interface CreatePrivacyRequestBody {
56
+ subjectId: string;
57
+ type: PrivacyCanonicalType | 'export' | 'erasure' | 'erase';
58
+ caseId: string;
59
+ /** ISO 8601 or epoch ms: nothing is erased before it. */
60
+ executeAfter?: string | number;
61
+ reason?: string;
62
+ }
63
+ export interface PrivacyOrchestrator {
64
+ object: 'privacy_orchestrator';
65
+ configured: boolean;
66
+ enabled: boolean;
67
+ provider: string | null;
68
+ name: string | null;
69
+ case_url: string | null;
70
+ cancel_url: string | null;
71
+ auth_header: string;
72
+ auth_scheme: string;
73
+ api_key_set: boolean;
74
+ signing_secret_set: boolean;
75
+ use_partner_link: boolean;
76
+ open_closure_cases: boolean;
77
+ completion_webhook: Record<string, unknown> | null;
78
+ last_case_at: number | null;
79
+ last_error: string | null;
80
+ last_error_at: number | null;
81
+ presets: Array<Record<string, unknown>>;
82
+ /** Only on the write that minted it. */
83
+ signing_secret?: string;
84
+ /** Only on the write that created the completion endpoint. */
85
+ completion_webhook_secret?: string;
86
+ }
87
+ export interface PrivacyOrchestratorInput {
88
+ /** A preset id (`cookiemunch`, `custom`) or your own lower-case id. */
89
+ provider?: string;
90
+ name?: string;
91
+ enabled?: boolean;
92
+ case_url?: string | null;
93
+ /** Must contain `{id}`. */
94
+ cancel_url?: string | null;
95
+ auth_header?: string;
96
+ auth_scheme?: 'bearer' | 'raw';
97
+ api_key?: string | null;
98
+ /** Call through the partner link the orchestrator granted Atlas (partner id = provider). */
99
+ use_partner_link?: boolean;
100
+ open_closure_cases?: boolean;
101
+ sign_requests?: boolean;
102
+ completion_webhook_url?: string | null;
103
+ }
104
+ export declare function privacyResource(request: RequestFn): {
105
+ /** What this executor speaks (public). */
106
+ discover(): Promise<Record<string, unknown>>;
107
+ /** A ready-made orchestrator connection profile, e.g. `cookiemunch` (public). */
108
+ preset(id: string): Promise<Record<string, unknown>>;
109
+ /** Find a person: `atlas.sub` alone when present, then `atlas.ext`, then emails. */
110
+ lookup(body: {
111
+ emails?: string[];
112
+ atlas?: PrivacySubject;
113
+ }): Promise<PrivacyLookupResult>;
114
+ /** Open a request (or get the existing one for the same case). */
115
+ createRequest(body: CreatePrivacyRequestBody, idempotencyKey?: string): Promise<PrivacyRequest>;
116
+ getRequest(id: string): Promise<PrivacyRequest>;
117
+ /** Cancel before it runs: nothing is erased, the account stays. */
118
+ cancelRequest(id: string, idempotencyKey?: string): Promise<PrivacyRequest>;
119
+ orchestrator: {
120
+ get(): Promise<PrivacyOrchestrator>;
121
+ /** Connect or update; new secrets come back once. */
122
+ set(body: PrivacyOrchestratorInput): Promise<PrivacyOrchestrator>;
123
+ delete(): Promise<PrivacyOrchestrator & {
124
+ deleted: boolean;
125
+ }>;
126
+ };
127
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.privacyResource = privacyResource;
4
+ const request_1 = require("./request");
5
+ function privacyResource(request) {
6
+ return {
7
+ /** What this executor speaks (public). */
8
+ discover() {
9
+ return request({ method: 'GET', path: '/v1/privacy' });
10
+ },
11
+ /** A ready-made orchestrator connection profile, e.g. `cookiemunch` (public). */
12
+ preset(id) {
13
+ return request({ method: 'GET', path: `/v1/privacy/presets/${(0, request_1.enc)(id)}` });
14
+ },
15
+ /** Find a person: `atlas.sub` alone when present, then `atlas.ext`, then emails. */
16
+ lookup(body) {
17
+ return request({ method: 'POST', path: '/v1/privacy/lookup', body });
18
+ },
19
+ /** Open a request (or get the existing one for the same case). */
20
+ createRequest(body, idempotencyKey) {
21
+ return request({ method: 'POST', path: '/v1/privacy/requests', body, idempotencyKey });
22
+ },
23
+ getRequest(id) {
24
+ return request({ method: 'GET', path: `/v1/privacy/requests/${(0, request_1.enc)(id)}` });
25
+ },
26
+ /** Cancel before it runs: nothing is erased, the account stays. */
27
+ cancelRequest(id, idempotencyKey) {
28
+ return request({ method: 'POST', path: `/v1/privacy/requests/${(0, request_1.enc)(id)}/cancel`, idempotencyKey });
29
+ },
30
+ orchestrator: {
31
+ get() {
32
+ return request({ method: 'GET', path: '/v1/instance/privacy_orchestrator' });
33
+ },
34
+ /** Connect or update; new secrets come back once. */
35
+ set(body) {
36
+ return request({ method: 'PUT', path: '/v1/instance/privacy_orchestrator', body });
37
+ },
38
+ delete() {
39
+ return request({ method: 'DELETE', path: '/v1/instance/privacy_orchestrator' });
40
+ },
41
+ },
42
+ };
43
+ }
44
+ //# sourceMappingURL=privacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/client/privacy.ts"],"names":[],"mappings":";;AA8GA,0CAsCC;AApJD,uCAAgD;AA8GhD,SAAgB,eAAe,CAAC,OAAkB;IAChD,OAAO;QACL,0CAA0C;QAC1C,QAAQ;YACN,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,iFAAiF;QACjF,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,oFAAoF;QACpF,MAAM,CAAC,IAAmD;YACxD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,kEAAkE;QAClE,aAAa,CAAC,IAA8B,EAAE,cAAuB;YACnE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,UAAU,CAAC,EAAU;YACnB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,mEAAmE;QACnE,aAAa,CAAC,EAAU,EAAE,cAAuB;YAC/C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,YAAY,EAAE;YACZ,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,qDAAqD;YACrD,GAAG,CAAC,IAA8B;gBAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM;gBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAAC,CAAC;YAClF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -11,7 +11,7 @@ import type { UserReferralResult } from './users';
11
11
  * call is retried, and `user.referral_attributed` is sent when it resolves.
12
12
  *
13
13
  * `provider` is `webhook` (the Atlas referral protocol, which any platform can
14
- * implement; see {@link verifyReferralRequest}), `referally` (the built-in
14
+ * implement; see {@link verifyReferralRequest}), `referalli` (the built-in
15
15
  * Referalli adapter: `endpoint_url` is your Referalli base URL, plus
16
16
  * `connection_id`, `signing_secret` and optionally `tracking_token`) or
17
17
  * another built-in vendor adapter.
@@ -49,6 +49,10 @@ export interface ReferralProviderInfo {
49
49
  needs: Array<'endpoint_url' | 'signing_secret' | 'api_key' | 'connection_id' | 'tracking_token'>;
50
50
  /** The vendor's own first-party tracking cookie, suggested when this provider is picked. */
51
51
  default_context_cookie: string | null;
52
+ /** Every cookie the vendor has written, in the order Atlas tries them. */
53
+ default_context_cookies?: string[];
54
+ /** Retired spellings of `id`, accepted on write (for example `referally` for `referalli`). */
55
+ aliases?: string[];
52
56
  docs_url: string | null;
53
57
  }
54
58
  /** Fraud and bot protection for referred sign-ups (`security` on the settings). */
@@ -117,9 +121,9 @@ export interface ReferralInboundStatus {
117
121
  } | null;
118
122
  }
119
123
  /** A referral program whose script or cookie the browser reads. */
120
- export type ReferralBrowserSource = 'referally' | 'rewardful' | 'tolt' | 'promotekit' | 'firstpromoter' | 'partnerstack' | 'dub';
124
+ export type ReferralBrowserSource = 'referalli' | 'rewardful' | 'tolt' | 'promotekit' | 'firstpromoter' | 'partnerstack' | 'dub';
121
125
  /** Which consent manager decides on the tracking cookie's ids: `auto` (any common one), one manager, or `app` (only the app's own decision). */
122
- export type ReferralConsentProvider = 'auto' | 'cookiemunch' | 'onetrust' | 'cookiebot' | 'didomi' | 'usercentrics' | 'osano' | 'cookieyes' | 'complianz' | 'klaro' | 'tcf' | 'consent_mode' | 'app';
126
+ export type ReferralConsentProvider = 'auto' | 'atlasconsent' | 'cookiemunch' | 'onetrust' | 'cookiebot' | 'didomi' | 'usercentrics' | 'osano' | 'cookieyes' | 'complianz' | 'klaro' | 'tcf' | 'consent_mode' | 'gpc' | 'app';
123
127
  /** What a platform answers to a ping. */
124
128
  export interface ReferralPing {
125
129
  ok: boolean;
@@ -141,6 +145,27 @@ export interface ReferralPing {
141
145
  error_code?: string | null;
142
146
  error?: string | null;
143
147
  }
148
+ /** A one-click (OAuth) install a deployment offers for a referral platform. */
149
+ export interface ReferralOneClick {
150
+ id: string;
151
+ name: string;
152
+ available: boolean;
153
+ /** What the connection is saved as: `referalli` or `webhook` (the generic protocol). */
154
+ provider: string;
155
+ scope: string;
156
+ redirect_uri: string;
157
+ }
158
+ /** `POST /v1/instance/referrals/{preset}/install`. */
159
+ export interface ReferralInstall {
160
+ object: 'referral_install';
161
+ preset: string;
162
+ provider: string;
163
+ /** Send the merchant here to pick an organization and program. */
164
+ authorize_url: string;
165
+ redirect_uri: string;
166
+ /** Epoch ms; the link lasts 15 minutes. */
167
+ expires_at: number;
168
+ }
144
169
  /** `GET /v1/instance/referrals`. */
145
170
  export interface ReferralSettings {
146
171
  object: 'referral_settings';
@@ -159,8 +184,18 @@ export interface ReferralSettings {
159
184
  api_key_set: boolean;
160
185
  /** Query parameters that carry a referral code, in priority order (default `ref`, `via`, `aff`). */
161
186
  url_params: string[];
162
- /** First-party tracking cookie read under consent; null = never read a cookie. */
187
+ /** The first tracking cookie read under consent; null = never read a cookie. `context_cookies` lists them all. */
163
188
  context_cookie: string | null;
189
+ /** Every tracking cookie, in the order they are tried. */
190
+ context_cookies?: string[];
191
+ /** Retired spellings of `provider` that are still accepted on write. */
192
+ provider_aliases?: string[];
193
+ /** What the chosen provider can do now: its built-in capabilities plus what its last ping advertised. */
194
+ capabilities?: ReferralProviderCapabilities | null;
195
+ /** One-click connect to Referalli (the `referalli` preset). */
196
+ one_click?: ReferralOneClick | null;
197
+ /** Every platform this deployment offers a one-click install for. */
198
+ one_click_presets?: ReferralOneClick[];
164
199
  consent_category: string;
165
200
  consent_fallback_category: string | null;
166
201
  /** Every new user becomes a referrer (gets a code and link from the platform). */
@@ -170,7 +205,7 @@ export interface ReferralSettings {
170
205
  /** How long a sign-up waits for the platform (100-5000 ms, default 3000). */
171
206
  timeout_ms: number;
172
207
  security: ReferralSecuritySettings;
173
- /** Public tracking token (the `referally` adapter derives the code lookup from it). */
208
+ /** Public tracking token (the `referalli` adapter derives the code lookup from it). */
174
209
  tracking_token?: string | null;
175
210
  /** Public, CORS-enabled lookup with `{code}` for "X invited you" on hosted sign-up. */
176
211
  code_lookup_url?: string | null;
@@ -221,7 +256,10 @@ export interface UpdateReferralSettingsBody {
221
256
  inbound_endpoint_id?: string | null;
222
257
  /** 1-10 names of `[A-Za-z0-9_.-]{1,40}`. */
223
258
  url_params?: string[];
224
- context_cookie?: string | null;
259
+ /** A cookie name, or a list of up to 5 tried in order; null clears. */
260
+ context_cookie?: string | string[] | null;
261
+ /** The same with a list; wins over `context_cookie`. */
262
+ context_cookies?: string[] | null;
225
263
  consent_category?: string;
226
264
  consent_fallback_category?: string | null;
227
265
  auto_enroll_users?: boolean;
@@ -433,6 +471,15 @@ export declare function referralsResource(request: RequestFn): {
433
471
  kind?: ReferralCallKind;
434
472
  error_code?: string;
435
473
  }, idempotencyKey?: string): Promise<ReferralRetryFailedResult>;
474
+ /**
475
+ * `POST /v1/instance/referrals/{preset}/install` — start a one-click
476
+ * connection to a referral platform (`referalli`, or any id in
477
+ * `one_click_presets`). 422 `REFERRALS_NOT_CONFIGURED` when the deployment
478
+ * does not offer it; connect with a key or signing secret then.
479
+ */
480
+ install(preset: string, body?: {
481
+ return_to?: string | null;
482
+ }): Promise<ReferralInstall>;
436
483
  /**
437
484
  * `POST /v1/instance/referrals/simulate` — send a sign-up call for a fake
438
485
  * user (`atlas_test_<random>`, never stored) with an optional code, and
@@ -38,6 +38,15 @@ function referralsResource(request) {
38
38
  retryFailed(filter = {}, idempotencyKey) {
39
39
  return request({ method: 'POST', path: '/v1/instance/referrals/calls/retry_failed', body: filter, idempotencyKey });
40
40
  },
41
+ /**
42
+ * `POST /v1/instance/referrals/{preset}/install` — start a one-click
43
+ * connection to a referral platform (`referalli`, or any id in
44
+ * `one_click_presets`). 422 `REFERRALS_NOT_CONFIGURED` when the deployment
45
+ * does not offer it; connect with a key or signing secret then.
46
+ */
47
+ install(preset, body = {}) {
48
+ return request({ method: 'POST', path: `/v1/instance/referrals/${(0, request_1.enc)(preset)}/install`, body });
49
+ },
41
50
  /**
42
51
  * `POST /v1/instance/referrals/simulate` — send a sign-up call for a fake
43
52
  * user (`atlas_test_<random>`, never stored) with an optional code, and
@@ -1 +1 @@
1
- {"version":3,"file":"referrals.js","sourceRoot":"","sources":["../../src/client/referrals.ts"],"names":[],"mappings":";;AAoaA,8CAmEC;AAveD,uCAAgD;AAoahD,SAAgB,iBAAiB,CAAC,OAAkB;IAClD,OAAO;QACL,8FAA8F;QAC9F,GAAG;YACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,+EAA+E;QAC/E,MAAM,CAAC,IAAgC,EAAE,cAAuB;YAC9D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD;;;WAGG;QACH,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,uEAAuE;QACvE,SAAS,CAAC,SAAkC,EAAE;YAC5C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QACD;;;WAGG;QACH,SAAS,CAAC,EAAU,EAAE,cAAuB;YAC3C,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,gCAAgC,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ;gBACrD,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QACD,6GAA6G;QAC7G,WAAW,CACT,SAA2D,EAAE,EAC7D,cAAuB;YAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACtH,CAAC;QACD;;;;WAIG;QACH,QAAQ,CAAC,OAA0B,EAAE;YACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD;;;;WAIG;QACH,QAAQ,CAAC,IAA0B,EAAE,cAAuB;YAC1D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,iDAAiD;QACjD,WAAW,CAAC,EAAU;YACpB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mCAAmC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QACD;;;WAGG;QACH,UAAU,CAAC,MAAc;YACvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"referrals.js","sourceRoot":"","sources":["../../src/client/referrals.ts"],"names":[],"mappings":";;AA8cA,8CA4EC;AA1hBD,uCAAgD;AA8chD,SAAgB,iBAAiB,CAAC,OAAkB;IAClD,OAAO;QACL,8FAA8F;QAC9F,GAAG;YACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,+EAA+E;QAC/E,MAAM,CAAC,IAAgC,EAAE,cAAuB;YAC9D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD;;;WAGG;QACH,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,uEAAuE;QACvE,SAAS,CAAC,SAAkC,EAAE;YAC5C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QACD;;;WAGG;QACH,SAAS,CAAC,EAAU,EAAE,cAAuB;YAC3C,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,gCAAgC,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ;gBACrD,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QACD,6GAA6G;QAC7G,WAAW,CACT,SAA2D,EAAE,EAC7D,cAAuB;YAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACtH,CAAC;QACD;;;;;WAKG;QACH,OAAO,CAAC,MAAc,EAAE,OAAsC,EAAE;YAC9D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,IAAA,aAAG,EAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,CAAC;QACD;;;;WAIG;QACH,QAAQ,CAAC,OAA0B,EAAE;YACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD;;;;WAIG;QACH,QAAQ,CAAC,IAA0B,EAAE,cAAuB;YAC1D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,iDAAiD;QACjD,WAAW,CAAC,EAAU;YACpB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mCAAmC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QACD;;;WAGG;QACH,UAAU,CAAC,MAAc;YACvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -38,6 +38,60 @@ export interface AtlasClientConfig {
38
38
  * newer API version. Not called in strict mode, where the write fails instead.
39
39
  */
40
40
  onUnknownFields?: (event: UnknownFieldsEvent) => void;
41
+ /**
42
+ * Dry run: every write (POST/PUT/PATCH/DELETE) is sent with `?dry_run=true`,
43
+ * so Atlas validates it and answers with the changes it WOULD make
44
+ * ({@link DryRunResult}) without changing anything. Use it for a single plan
45
+ * with `client.withOptions({ dryRun: true })`; the method's declared return
46
+ * type is then a `DryRunResult` at runtime.
47
+ */
48
+ dryRun?: boolean;
49
+ /**
50
+ * Sealed secret delivery: an `x25519:<public key>` (see `generateSealKeyPair`
51
+ * in `@atlasauth/backend`). Sent as `X-Secret-Recipient` on every request, so
52
+ * every shown-once secret in a response arrives sealed (`sealed_secret`, …)
53
+ * instead of in plaintext. Open it with `openSealedSecret`.
54
+ */
55
+ secretRecipient?: string;
56
+ }
57
+ /** One change a write would make (or made), in the config-changelog shape. */
58
+ export interface DryRunChange {
59
+ section: string;
60
+ before: unknown;
61
+ after: unknown;
62
+ }
63
+ /** What a write answers with `?dry_run=true` (see {@link AtlasClientConfig.dryRun}). */
64
+ export interface DryRunResult {
65
+ object: 'dry_run';
66
+ dry_run: true;
67
+ /**
68
+ * `native`: the endpoint's own dry run, validated in full. `rollback`: the
69
+ * real write ran in a transaction that was rolled back, every side effect
70
+ * held back, validated in full. `plan`: validation could not run to the end
71
+ * (a third-party call decided the outcome); see `validation_skipped`.
72
+ */
73
+ mode: 'native' | 'rollback' | 'plan';
74
+ validated: boolean;
75
+ method: string;
76
+ path: string;
77
+ changes: DryRunChange[];
78
+ /** The same non-fatal warnings the real write returns (e.g. `origin_still_referenced`). */
79
+ warnings?: Array<{
80
+ code: string;
81
+ message?: string;
82
+ [key: string]: unknown;
83
+ }>;
84
+ would_return?: unknown;
85
+ /** The status the real write would answer with (`rollback` mode). */
86
+ would_return_status?: number;
87
+ /** Side effects held back: `email`, `sms`, `voice`, `push`, `outbound_network`, `redis`, `cache`, `file`. */
88
+ suppressed?: string[];
89
+ /** `plan` mode: why validation did not run to the end. */
90
+ validation_skipped?: {
91
+ reason: 'external_call' | 'database' | 'unsupported_response';
92
+ detail: string;
93
+ };
94
+ note: string;
41
95
  }
42
96
  /** What {@link AtlasClientConfig.onUnknownFields} receives. */
43
97
  export interface UnknownFieldsEvent {
@@ -48,7 +102,7 @@ export interface UnknownFieldsEvent {
48
102
  fields: string[];
49
103
  }
50
104
  /** Per-client settings `withOptions` can override. */
51
- export type AtlasRequestSettings = Pick<AtlasClientConfig, 'strict' | 'onUnknownFields'>;
105
+ export type AtlasRequestSettings = Pick<AtlasClientConfig, 'strict' | 'onUnknownFields' | 'dryRun'>;
52
106
  /** A raw (non-JSON) request body, e.g. image bytes for a design-asset upload. */
53
107
  export interface RawBody {
54
108
  data: Blob | ArrayBuffer | ArrayBufferView;
@@ -74,6 +128,8 @@ export interface RequestOptions {
74
128
  raw?: boolean;
75
129
  /** Per-request override of {@link AtlasClientConfig.strict}. */
76
130
  strict?: boolean;
131
+ /** Extra request headers. */
132
+ headers?: Record<string, string>;
77
133
  }
78
134
  /** Serialize a query object to a string, dropping null/undefined, spreading arrays. */
79
135
  export declare function serializeQuery(query: QueryParams | undefined): string;
@@ -89,6 +145,7 @@ export declare function createRequest(config: AtlasClientConfig): RequestFn;
89
145
  export interface KeyedRequestConfig extends AtlasRequestSettings {
90
146
  apiUrl?: string;
91
147
  fetch?: typeof fetch;
148
+ secretRecipient?: string;
92
149
  }
93
150
  /**
94
151
  * The request core for any bearer key: the secret key (`sk_...`) of the
@@ -49,11 +49,15 @@ function createKeyedRequest(key, config) {
49
49
  throw new Error('No fetch implementation found. Pass { fetch } to createAtlasClient on a runtime without a global fetch.');
50
50
  }
51
51
  return async function request(options) {
52
- const url = joinUrl(base, options.path) + serializeQuery(options.query);
52
+ const dryRun = config.dryRun === true && options.method !== 'GET';
53
+ const url = joinUrl(base, options.path) + serializeQuery(dryRun ? { ...options.query, dry_run: 'true' } : options.query);
53
54
  const headers = {
55
+ ...(options.headers ?? {}),
54
56
  authorization: `Bearer ${key}`,
55
57
  accept: 'application/json',
56
58
  };
59
+ if (config.secretRecipient)
60
+ headers['x-secret-recipient'] = config.secretRecipient;
57
61
  let body;
58
62
  if (options.rawBody !== undefined) {
59
63
  const { data, contentType } = options.rawBody;
@@ -68,7 +72,7 @@ function createKeyedRequest(key, config) {
68
72
  headers['content-type'] = 'application/json';
69
73
  body = JSON.stringify(options.body);
70
74
  }
71
- if (options.idempotencyKey) {
75
+ if (options.idempotencyKey && !dryRun) {
72
76
  headers['idempotency-key'] = options.idempotencyKey;
73
77
  }
74
78
  const strict = options.strict ?? config.strict;
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/client/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/client/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function beforeNm(publicKey: Uint8Array, secretKey: Uint8Array): Uint8Array;
2
+ export declare function generateSealKeyPair(): {
3
+ publicKey: Uint8Array;
4
+ secretKey: Uint8Array;
5
+ };
6
+ export declare function sealBox(message: Uint8Array | string, recipientPublicKey: Uint8Array): Uint8Array;
7
+ export declare function openSealedBox(sealed: Uint8Array, publicKey: Uint8Array, secretKey: Uint8Array): Uint8Array;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.beforeNm = beforeNm;
4
+ exports.generateSealKeyPair = generateSealKeyPair;
5
+ exports.sealBox = sealBox;
6
+ exports.openSealedBox = openSealedBox;
7
+ const ed25519_1 = require("@noble/curves/ed25519");
8
+ const salsa_1 = require("@noble/ciphers/salsa");
9
+ const blake2b_1 = require("@noble/hashes/blake2b");
10
+ /**
11
+ * libsodium `crypto_box_seal` / `crypto_box_seal_open`, in pure JS so the
12
+ * client keeps running on every runtime (Node, Deno, Bun, edge, browsers).
13
+ *
14
+ * nonce = BLAKE2b-192(epk ‖ pk); k = HSalsa20(X25519(sk, pk), 0¹⁶)
15
+ * box = epk ‖ XSalsa20-Poly1305(k, nonce, message)
16
+ */
17
+ const SIGMA = new Uint32Array([0x61707865, 0x3320646e, 0x79622d32, 0x6b206574]);
18
+ function u32(b) {
19
+ const out = new Uint32Array(b.length / 4);
20
+ for (let i = 0; i < out.length; i += 1)
21
+ out[i] = (b[i * 4] | (b[i * 4 + 1] << 8) | (b[i * 4 + 2] << 16) | (b[i * 4 + 3] << 24)) >>> 0;
22
+ return out;
23
+ }
24
+ function beforeNm(publicKey, secretKey) {
25
+ const shared = ed25519_1.x25519.getSharedSecret(secretKey, publicKey);
26
+ const out = new Uint32Array(8);
27
+ (0, salsa_1.hsalsa)(SIGMA, u32(shared), new Uint32Array(4), out);
28
+ const bytes = new Uint8Array(32);
29
+ out.forEach((w, i) => {
30
+ bytes[i * 4] = w & 0xff;
31
+ bytes[i * 4 + 1] = (w >>> 8) & 0xff;
32
+ bytes[i * 4 + 2] = (w >>> 16) & 0xff;
33
+ bytes[i * 4 + 3] = (w >>> 24) & 0xff;
34
+ });
35
+ return bytes;
36
+ }
37
+ function nonceFor(epk, pk) {
38
+ const input = new Uint8Array(64);
39
+ input.set(epk, 0);
40
+ input.set(pk, 32);
41
+ return (0, blake2b_1.blake2b)(input, { dkLen: 24 });
42
+ }
43
+ function generateSealKeyPair() {
44
+ const secretKey = ed25519_1.x25519.utils.randomPrivateKey();
45
+ return { publicKey: ed25519_1.x25519.getPublicKey(secretKey), secretKey };
46
+ }
47
+ function sealBox(message, recipientPublicKey) {
48
+ const plain = typeof message === 'string' ? new TextEncoder().encode(message) : message;
49
+ const eph = generateSealKeyPair();
50
+ const boxed = (0, salsa_1.xsalsa20poly1305)(beforeNm(recipientPublicKey, eph.secretKey), nonceFor(eph.publicKey, recipientPublicKey)).encrypt(plain);
51
+ const out = new Uint8Array(32 + boxed.length);
52
+ out.set(eph.publicKey, 0);
53
+ out.set(boxed, 32);
54
+ return out;
55
+ }
56
+ function openSealedBox(sealed, publicKey, secretKey) {
57
+ if (sealed.length < 48)
58
+ throw new Error('openSealedBox: too short');
59
+ const epk = sealed.subarray(0, 32);
60
+ return (0, salsa_1.xsalsa20poly1305)(beforeNm(epk, secretKey), nonceFor(epk, publicKey)).decrypt(sealed.subarray(32));
61
+ }
62
+ //# sourceMappingURL=sealed-box.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sealed-box.js","sourceRoot":"","sources":["../../src/client/sealed-box.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,16 @@ export interface MintedSession {
59
59
  custom_data?: Record<string, unknown> | null;
60
60
  }
61
61
  /** A JWT minted from a named JWT template. */
62
+ /** An identity-integration token (claims: /schemas/integration-token-v1.json). */
63
+ export interface SessionIntegrationToken {
64
+ object: 'integration_token';
65
+ integration: string;
66
+ product: string;
67
+ jwt: string;
68
+ /** Seconds until the token expires (at most 120). */
69
+ expires_in: number;
70
+ audience: string;
71
+ }
62
72
  export interface SessionTemplateToken {
63
73
  object: string;
64
74
  jwt: string;
@@ -98,9 +108,10 @@ export declare function sessionsResource(request: RequestFn): {
98
108
  * effective write per minute, so calling it on every request is safe.
99
109
  */
100
110
  touch(id: string): Promise<TouchedSession>;
101
- /**
102
- * `POST /v1/sessions/:id/tokens/:template` — mint a token from a named JWT
103
- * template for this session. The reserved name `session` is refused.
104
- */
105
- getToken(id: string, template: string): Promise<SessionTemplateToken>;
111
+ getToken: {
112
+ (id: string, template: string): Promise<SessionTemplateToken>;
113
+ (id: string, options: {
114
+ for: string;
115
+ }): Promise<SessionIntegrationToken>;
116
+ };
106
117
  };
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sessionsResource = sessionsResource;
4
4
  const request_1 = require("./request");
5
5
  function sessionsResource(request) {
6
+ function getToken(id, what) {
7
+ if (typeof what === 'object') {
8
+ return request({ method: 'POST', path: `/v1/sessions/${(0, request_1.enc)(id)}/integration_tokens/${(0, request_1.enc)(what.for)}` });
9
+ }
10
+ return request({ method: 'POST', path: `/v1/sessions/${(0, request_1.enc)(id)}/tokens/${(0, request_1.enc)(what)}` });
11
+ }
6
12
  return {
7
13
  /**
8
14
  * `POST /v1/sessions` — mint a session for a user without the sign-in flow.
@@ -46,16 +52,7 @@ function sessionsResource(request) {
46
52
  touch(id) {
47
53
  return request({ method: 'POST', path: `/v1/sessions/${(0, request_1.enc)(id)}/touch` });
48
54
  },
49
- /**
50
- * `POST /v1/sessions/:id/tokens/:template` — mint a token from a named JWT
51
- * template for this session. The reserved name `session` is refused.
52
- */
53
- getToken(id, template) {
54
- return request({
55
- method: 'POST',
56
- path: `/v1/sessions/${(0, request_1.enc)(id)}/tokens/${(0, request_1.enc)(template)}`,
57
- });
58
- },
55
+ getToken,
59
56
  };
60
57
  }
61
58
  //# sourceMappingURL=sessions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/client/sessions.ts"],"names":[],"mappings":";;AAsEA,4CAuDC;AA7HD,uCAAgD;AAsEhD,SAAgB,gBAAgB,CAAC,OAAkB;IACjD,OAAO;QACL;;;WAGG;QACH,MAAM,CAAC,MAA2B;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,wDAAwD;QACxD,IAAI,CAAC,MAA0B;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD;;;;WAIG;QACH,aAAa,CAAC,EAAU,EAAE,UAA0C;YAClE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACpH,CAAC;QACD;;;WAGG;QACH,gBAAgB,CAAC,EAAU,EAAE,KAA8B;YACzD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjH,CAAC;QACD;;;;;;WAMG;QACH,KAAK,CAAC,EAAU;YACd,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD;;;WAGG;QACH,QAAQ,CAAC,EAAU,EAAE,QAAgB;YACnC,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,WAAW,IAAA,aAAG,EAAC,QAAQ,CAAC,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/client/sessions.ts"],"names":[],"mappings":";;AAiFA,4CA+DC;AAhJD,uCAAgD;AAiFhD,SAAgB,gBAAgB,CAAC,OAAkB;IAYjD,SAAS,QAAQ,CAAC,EAAU,EAAE,IAA8B;QAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,uBAAuB,IAAA,aAAG,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,WAAW,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO;QACL;;;WAGG;QACH,MAAM,CAAC,MAA2B;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,wDAAwD;QACxD,IAAI,CAAC,MAA0B;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD;;;;WAIG;QACH,aAAa,CAAC,EAAU,EAAE,UAA0C;YAClE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACpH,CAAC;QACD;;;WAGG;QACH,gBAAgB,CAAC,EAAU,EAAE,KAA8B;YACzD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjH,CAAC;QACD;;;;;;WAMG;QACH,KAAK,CAAC,EAAU;YACd,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,QAAQ;KACT,CAAC;AACJ,CAAC"}