@nylas-labs/cli-kit 0.1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nylas, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Client for the Nylas dashboard-account service:
3
+ * - CLI SSO device-authorization flow (login/register)
4
+ * - session management (current, switch-org, refresh, logout)
5
+ * - inbox domains REST (/orgs/inbox/domains/*)
6
+ *
7
+ * All authenticated requests carry `Authorization: Bearer <userToken>`,
8
+ * `X-Nylas-Org: <orgToken>`, and a per-request DPoP proof header.
9
+ */
10
+ import type { DpopKey } from './dpop.js';
11
+ export declare const DEFAULT_DASHBOARD_ACCOUNT_URL = "https://dashboard-account.eu.nylas.com";
12
+ export type SsoLoginType = 'google_SSO' | 'microsoft_SSO' | 'github_SSO';
13
+ export type SsoMode = 'login' | 'register';
14
+ export type DashboardTokens = {
15
+ userToken: string;
16
+ orgToken?: string;
17
+ };
18
+ export type DashboardUser = {
19
+ publicId: string;
20
+ emailAddress?: string;
21
+ firstName?: string;
22
+ lastName?: string;
23
+ };
24
+ export type DashboardOrganization = {
25
+ publicId: string;
26
+ name?: string;
27
+ region?: string;
28
+ role?: string;
29
+ };
30
+ export type SsoStartResponse = {
31
+ flowId: string;
32
+ verificationUri: string;
33
+ verificationUriComplete?: string;
34
+ userCode: string;
35
+ expiresIn: number;
36
+ interval: number;
37
+ };
38
+ export type AuthResponse = {
39
+ userToken: string;
40
+ orgToken: string;
41
+ user: DashboardUser;
42
+ organizations: DashboardOrganization[];
43
+ };
44
+ export type OrgSwitchResponse = {
45
+ orgToken: string;
46
+ orgSessionId: string;
47
+ org: DashboardOrganization;
48
+ previousOrgSessionRevoked: boolean;
49
+ };
50
+ export type SsoPollResponse = {
51
+ status: 'authorization_pending' | 'access_denied' | 'expired_token';
52
+ retryAfter?: number;
53
+ } | ({
54
+ status: 'complete';
55
+ } & AuthResponse) | {
56
+ status: 'mfa_required';
57
+ user: DashboardUser;
58
+ organizations: DashboardOrganization[];
59
+ };
60
+ export type SessionResponse = {
61
+ user: DashboardUser;
62
+ organization?: DashboardOrganization;
63
+ organizations?: DashboardOrganization[];
64
+ };
65
+ export type InboxDomain = {
66
+ id: string;
67
+ name: string;
68
+ domainAddress: string;
69
+ organizationId: string;
70
+ region: 'us' | 'eu';
71
+ branded: boolean;
72
+ verifiedOwnership: boolean;
73
+ verifiedMx: boolean;
74
+ verifiedSpf: boolean;
75
+ verifiedDkim: boolean;
76
+ verifiedDmarc: boolean;
77
+ verifiedArc: boolean;
78
+ verifiedFeedback: boolean;
79
+ createdAt: number;
80
+ updatedAt: number;
81
+ };
82
+ export type DomainAvailability = {
83
+ domainAddress: string;
84
+ available: boolean;
85
+ conflictsWith: 'us' | 'eu' | null;
86
+ };
87
+ export type DomainVerificationResult = {
88
+ domainId?: string;
89
+ attempt: {
90
+ type?: string;
91
+ options: {
92
+ host?: string;
93
+ type?: string;
94
+ value?: string;
95
+ };
96
+ } | null;
97
+ status: string;
98
+ createdAt?: number;
99
+ expiresAt?: number;
100
+ message: string;
101
+ };
102
+ export declare class DashboardAccountError extends Error {
103
+ readonly status: number;
104
+ readonly body: unknown;
105
+ constructor(message: string, status: number, body: unknown);
106
+ }
107
+ export declare class DashboardAccountClient {
108
+ private readonly dpop;
109
+ private readonly baseUrl;
110
+ private readonly fetchImpl;
111
+ constructor(dpop: DpopKey, baseUrl?: string, fetchImpl?: typeof fetch);
112
+ ssoStart(input: {
113
+ loginType: SsoLoginType;
114
+ mode: SsoMode;
115
+ privacyPolicyAccepted?: boolean;
116
+ }): Promise<SsoStartResponse>;
117
+ ssoPoll(input: {
118
+ flowId: string;
119
+ orgPublicId?: string;
120
+ }): Promise<SsoPollResponse>;
121
+ /**
122
+ * Runs the full device flow: start, hand the verification URL to the
123
+ * caller (open a browser, print the code), then poll until terminal.
124
+ */
125
+ ssoAuthorize(input: {
126
+ loginType: SsoLoginType;
127
+ mode: SsoMode;
128
+ orgPublicId?: string;
129
+ }, onStarted: (started: SsoStartResponse) => void | Promise<void>, signal?: AbortSignal): Promise<SsoPollResponse>;
130
+ refresh(tokens: DashboardTokens): Promise<{
131
+ userToken: string;
132
+ orgToken?: string;
133
+ }>;
134
+ logout(tokens: DashboardTokens): Promise<void>;
135
+ currentSession(tokens: DashboardTokens): Promise<SessionResponse>;
136
+ switchOrg(tokens: DashboardTokens, orgPublicId: string): Promise<OrgSwitchResponse>;
137
+ listInboxDomains(tokens: DashboardTokens, query?: {
138
+ limit?: number;
139
+ pageToken?: string;
140
+ }): Promise<InboxDomain[]>;
141
+ domainAvailability(tokens: DashboardTokens, domainAddress: string): Promise<DomainAvailability>;
142
+ createInboxDomain(tokens: DashboardTokens, input: {
143
+ name: string;
144
+ domainAddress: string;
145
+ region: 'us' | 'eu';
146
+ }): Promise<InboxDomain>;
147
+ getInboxDomain(tokens: DashboardTokens, domainIdOrAddress: string, region?: 'us' | 'eu'): Promise<InboxDomain>;
148
+ /** Returns the DNS record the customer must publish for one verification type. */
149
+ domainInfo(tokens: DashboardTokens, domainId: string, query: {
150
+ region: 'us' | 'eu';
151
+ type: string;
152
+ }): Promise<DomainVerificationResult>;
153
+ /** Runs one verification attempt (type: ownership | mx | spf | dkim | feedback | dmarc). */
154
+ verifyDomain(tokens: DashboardTokens, domainId: string, input: {
155
+ type: string;
156
+ }, region: 'us' | 'eu'): Promise<DomainVerificationResult>;
157
+ deleteInboxDomain(tokens: DashboardTokens, domainId: string, region: 'us' | 'eu'): Promise<void>;
158
+ private request;
159
+ /** Unwraps the `{request_id, success, data}` envelope used by REST routes. */
160
+ private requestEnveloped;
161
+ }
162
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Client for the Nylas dashboard-account service:
3
+ * - CLI SSO device-authorization flow (login/register)
4
+ * - session management (current, switch-org, refresh, logout)
5
+ * - inbox domains REST (/orgs/inbox/domains/*)
6
+ *
7
+ * All authenticated requests carry `Authorization: Bearer <userToken>`,
8
+ * `X-Nylas-Org: <orgToken>`, and a per-request DPoP proof header.
9
+ */
10
+ export const DEFAULT_DASHBOARD_ACCOUNT_URL = 'https://dashboard-account.eu.nylas.com';
11
+ const DEFAULT_HTTP_TIMEOUT_MS = 30_000;
12
+ export class DashboardAccountError extends Error {
13
+ status;
14
+ body;
15
+ constructor(message, status, body) {
16
+ super(message);
17
+ this.status = status;
18
+ this.body = body;
19
+ this.name = 'DashboardAccountError';
20
+ }
21
+ }
22
+ export class DashboardAccountClient {
23
+ dpop;
24
+ baseUrl;
25
+ fetchImpl;
26
+ constructor(dpop, baseUrl = DEFAULT_DASHBOARD_ACCOUNT_URL, fetchImpl = fetch) {
27
+ this.dpop = dpop;
28
+ this.baseUrl = baseUrl;
29
+ this.fetchImpl = fetchImpl;
30
+ }
31
+ // ---- CLI SSO device flow -------------------------------------------------
32
+ async ssoStart(input) {
33
+ const body = { loginType: input.loginType, mode: input.mode };
34
+ if (input.mode === 'register') {
35
+ body.privacyPolicyAccepted = input.privacyPolicyAccepted ?? true;
36
+ }
37
+ const data = await this.requestEnveloped('POST', '/auth/cli/sso/start', { body });
38
+ return parseSsoStartResponse(data, '/auth/cli/sso/start');
39
+ }
40
+ async ssoPoll(input) {
41
+ const body = { flowId: input.flowId };
42
+ if (input.orgPublicId)
43
+ body.orgPublicId = input.orgPublicId;
44
+ const data = await this.requestEnveloped('POST', '/auth/cli/sso/poll', { body });
45
+ return parseSsoPollResponse(data, '/auth/cli/sso/poll');
46
+ }
47
+ /**
48
+ * Runs the full device flow: start, hand the verification URL to the
49
+ * caller (open a browser, print the code), then poll until terminal.
50
+ */
51
+ async ssoAuthorize(input, onStarted, signal) {
52
+ const started = await this.ssoStart({ ...input, privacyPolicyAccepted: true });
53
+ await onStarted(started);
54
+ const deadline = Date.now() + started.expiresIn * 1000;
55
+ let intervalMs = Math.max(started.interval, 1) * 1000;
56
+ while (Date.now() < deadline) {
57
+ if (signal?.aborted)
58
+ throw new Error('SSO flow aborted');
59
+ await new Promise((r) => setTimeout(r, intervalMs));
60
+ const poll = await this.ssoPoll({
61
+ flowId: started.flowId,
62
+ ...(input.orgPublicId ? { orgPublicId: input.orgPublicId } : {}),
63
+ });
64
+ if (poll.status !== 'authorization_pending')
65
+ return poll;
66
+ if (poll.retryAfter)
67
+ intervalMs = poll.retryAfter * 1000;
68
+ }
69
+ return { status: 'expired_token' };
70
+ }
71
+ // ---- Sessions --------------------------------------------------------------
72
+ async refresh(tokens) {
73
+ const data = await this.requestEnveloped('POST', '/auth/cli/refresh', { tokens });
74
+ return parseRefreshResponse(data, '/auth/cli/refresh');
75
+ }
76
+ async logout(tokens) {
77
+ await this.requestEnveloped('POST', '/auth/cli/logout', { tokens });
78
+ }
79
+ async currentSession(tokens) {
80
+ const data = await this.requestEnveloped('GET', '/sessions/current', { tokens });
81
+ return parseSessionResponse(data, '/sessions/current');
82
+ }
83
+ async switchOrg(tokens, orgPublicId) {
84
+ const data = await this.requestEnveloped('POST', '/sessions/switch-org', {
85
+ tokens,
86
+ body: { orgPublicId },
87
+ });
88
+ return parseOrgSwitchResponse(data, '/sessions/switch-org');
89
+ }
90
+ // ---- Inbox domains (org-level, aggregated in dashboard-account) -----------
91
+ async listInboxDomains(tokens, query) {
92
+ const params = new URLSearchParams();
93
+ if (query?.limit)
94
+ params.set('limit', String(query.limit));
95
+ if (query?.pageToken)
96
+ params.set('pageToken', query.pageToken);
97
+ const qs = params.size ? `?${params}` : '';
98
+ return this.requestEnveloped('GET', `/orgs/inbox/domains${qs}`, { tokens });
99
+ }
100
+ async domainAvailability(tokens, domainAddress) {
101
+ const qs = new URLSearchParams({ domainAddress });
102
+ return this.requestEnveloped('GET', `/orgs/inbox/domains/availability?${qs}`, { tokens });
103
+ }
104
+ async createInboxDomain(tokens, input) {
105
+ return this.requestEnveloped('POST', '/orgs/inbox/domains', { tokens, body: input });
106
+ }
107
+ async getInboxDomain(tokens, domainIdOrAddress, region) {
108
+ const qs = region ? `?${new URLSearchParams({ region })}` : '';
109
+ return this.requestEnveloped('GET', `/orgs/inbox/domains/${encodeURIComponent(domainIdOrAddress)}${qs}`, {
110
+ tokens,
111
+ });
112
+ }
113
+ /** Returns the DNS record the customer must publish for one verification type. */
114
+ async domainInfo(tokens, domainId, query) {
115
+ const qs = new URLSearchParams(query);
116
+ return this.requestEnveloped('GET', `/orgs/inbox/domains/${encodeURIComponent(domainId)}/info?${qs}`, {
117
+ tokens,
118
+ });
119
+ }
120
+ /** Runs one verification attempt (type: ownership | mx | spf | dkim | feedback | dmarc). */
121
+ async verifyDomain(tokens, domainId, input, region) {
122
+ const qs = new URLSearchParams({ region });
123
+ return this.requestEnveloped('POST', `/orgs/inbox/domains/${encodeURIComponent(domainId)}/verify?${qs}`, {
124
+ tokens,
125
+ body: input,
126
+ });
127
+ }
128
+ async deleteInboxDomain(tokens, domainId, region) {
129
+ const qs = new URLSearchParams({ region });
130
+ await this.requestEnveloped('DELETE', `/orgs/inbox/domains/${encodeURIComponent(domainId)}?${qs}`, {
131
+ tokens,
132
+ });
133
+ }
134
+ // ---- HTTP core -------------------------------------------------------------
135
+ async request(method, path, opts) {
136
+ const url = `${this.baseUrl}${path}`;
137
+ const headers = {
138
+ 'Content-Type': 'application/json',
139
+ DPoP: await this.dpop.proof(method, url, opts.tokens?.userToken),
140
+ };
141
+ if (opts.tokens) {
142
+ headers.Authorization = `Bearer ${opts.tokens.userToken}`;
143
+ if (opts.tokens.orgToken)
144
+ headers['X-Nylas-Org'] = opts.tokens.orgToken;
145
+ }
146
+ const res = await fetchWithTimeout(this.fetchImpl, url, {
147
+ method,
148
+ headers,
149
+ body: opts.body === undefined ? null : JSON.stringify(opts.body),
150
+ redirect: 'error',
151
+ }, `dashboard-account ${method} ${path}`);
152
+ const text = await res.text();
153
+ let parsed = null;
154
+ try {
155
+ parsed = text ? JSON.parse(text) : null;
156
+ }
157
+ catch {
158
+ parsed = text;
159
+ }
160
+ if (!res.ok) {
161
+ throw new DashboardAccountError(`dashboard-account ${method} ${path} failed with ${res.status}`, res.status, parsed);
162
+ }
163
+ return parsed;
164
+ }
165
+ /** Unwraps the `{request_id, success, data}` envelope used by REST routes. */
166
+ async requestEnveloped(method, path, opts) {
167
+ const envelope = unwrapEnvelope(await this.request(method, path, opts), path);
168
+ return envelope.data;
169
+ }
170
+ }
171
+ function unwrapEnvelope(value, path) {
172
+ if (isRecord(value) && value.success === true && 'data' in value) {
173
+ return value;
174
+ }
175
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
176
+ }
177
+ function parseSsoStartResponse(value, path) {
178
+ if (!isRecord(value))
179
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
180
+ const flowId = readString(value, 'flowId', path);
181
+ const verificationUri = readUrl(value, 'verificationUri', path);
182
+ const verificationUriComplete = readOptionalUrl(value, 'verificationUriComplete', path);
183
+ const userCode = readString(value, 'userCode', path);
184
+ const expiresIn = readPositiveNumber(value, 'expiresIn', path);
185
+ const interval = readPositiveNumber(value, 'interval', path);
186
+ return {
187
+ flowId,
188
+ verificationUri,
189
+ ...(verificationUriComplete ? { verificationUriComplete } : {}),
190
+ userCode,
191
+ expiresIn,
192
+ interval,
193
+ };
194
+ }
195
+ function parseSsoPollResponse(value, path) {
196
+ if (!isRecord(value))
197
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
198
+ const status = readString(value, 'status', path);
199
+ if (status === 'authorization_pending') {
200
+ const retryAfter = readOptionalPositiveNumber(value, 'retryAfter', path);
201
+ return retryAfter ? { status, retryAfter } : { status };
202
+ }
203
+ if (status === 'access_denied' || status === 'expired_token')
204
+ return { status };
205
+ if (status === 'mfa_required') {
206
+ return {
207
+ status,
208
+ user: parseDashboardUser(value.user, path),
209
+ organizations: parseOrganizations(value.organizations, path),
210
+ };
211
+ }
212
+ if (status === 'complete') {
213
+ return { status, ...parseAuthResponse(value, path) };
214
+ }
215
+ throw new Error(`dashboard-account ${path} returned an unknown SSO status`);
216
+ }
217
+ function parseAuthResponse(value, path) {
218
+ if (!isRecord(value))
219
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
220
+ return {
221
+ userToken: readString(value, 'userToken', path),
222
+ orgToken: readString(value, 'orgToken', path),
223
+ user: parseDashboardUser(value.user, path),
224
+ organizations: parseOrganizations(value.organizations ?? value.relations, path),
225
+ };
226
+ }
227
+ function parseRefreshResponse(value, path) {
228
+ if (!isRecord(value))
229
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
230
+ const orgToken = readOptionalString(value, 'orgToken');
231
+ return {
232
+ userToken: readString(value, 'userToken', path),
233
+ ...(orgToken ? { orgToken } : {}),
234
+ };
235
+ }
236
+ function parseOrgSwitchResponse(value, path) {
237
+ if (!isRecord(value))
238
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
239
+ return {
240
+ orgToken: readString(value, 'orgToken', path),
241
+ orgSessionId: readString(value, 'orgSessionId', path),
242
+ org: parseOrganization(value.org, path),
243
+ previousOrgSessionRevoked: readBoolean(value, 'previousOrgSessionRevoked', path),
244
+ };
245
+ }
246
+ function parseSessionResponse(value, path) {
247
+ if (!isRecord(value))
248
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
249
+ const organizations = parseOrganizations(value.organizations ?? value.relations ?? [], path);
250
+ const currentOrg = typeof value.currentOrg === 'string' ? value.currentOrg : undefined;
251
+ const directOrganization = value.organization ? parseOrganization(value.organization, path) : undefined;
252
+ const organization = directOrganization ??
253
+ organizations.find((org) => org.publicId === currentOrg) ??
254
+ findCurrentRelationOrganization(value.relations, currentOrg, path);
255
+ return {
256
+ user: parseDashboardUser(value.user, path),
257
+ ...(organization ? { organization } : {}),
258
+ ...(organizations.length > 0 ? { organizations } : {}),
259
+ };
260
+ }
261
+ function parseDashboardUser(value, path) {
262
+ if (!isRecord(value))
263
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
264
+ const user = { publicId: readString(value, 'publicId', path) };
265
+ if (typeof value.emailAddress === 'string')
266
+ user.emailAddress = value.emailAddress;
267
+ if (typeof value.firstName === 'string')
268
+ user.firstName = value.firstName;
269
+ if (typeof value.lastName === 'string')
270
+ user.lastName = value.lastName;
271
+ return user;
272
+ }
273
+ function parseOrganizations(value, path) {
274
+ if (!Array.isArray(value))
275
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
276
+ return value.map((org) => parseOrganization(org, path));
277
+ }
278
+ function findCurrentRelationOrganization(value, currentOrg, path) {
279
+ if (!currentOrg || !Array.isArray(value))
280
+ return undefined;
281
+ const relation = value.find((item) => {
282
+ if (!isRecord(item))
283
+ return false;
284
+ return item.orgId === currentOrg || item.orgPublicId === currentOrg;
285
+ });
286
+ return relation ? parseOrganization(relation, path) : undefined;
287
+ }
288
+ function parseOrganization(value, path) {
289
+ if (!isRecord(value))
290
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
291
+ const publicId = typeof value.publicId === 'string' && value.publicId.length > 0
292
+ ? value.publicId
293
+ : typeof value.orgPublicId === 'string' && value.orgPublicId.length > 0
294
+ ? value.orgPublicId
295
+ : undefined;
296
+ if (!publicId)
297
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
298
+ const parsed = { publicId };
299
+ const name = readOptionalString(value, 'name') ?? readOptionalString(value, 'orgName');
300
+ const region = readOptionalString(value, 'region') ?? readOptionalString(value, 'orgRegion');
301
+ const role = readOptionalString(value, 'role');
302
+ if (name)
303
+ parsed.name = name;
304
+ if (region)
305
+ parsed.region = region;
306
+ if (role)
307
+ parsed.role = role;
308
+ return parsed;
309
+ }
310
+ function isRecord(value) {
311
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
312
+ }
313
+ function readString(record, field, path) {
314
+ const value = record[field];
315
+ if (typeof value === 'string' && value.length > 0)
316
+ return value;
317
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
318
+ }
319
+ function readOptionalString(record, field) {
320
+ const value = record[field];
321
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
322
+ }
323
+ function readBoolean(record, field, path) {
324
+ const value = record[field];
325
+ if (typeof value === 'boolean')
326
+ return value;
327
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
328
+ }
329
+ function readPositiveNumber(record, field, path) {
330
+ const value = record[field];
331
+ if (typeof value === 'number' && Number.isFinite(value) && value > 0)
332
+ return value;
333
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
334
+ }
335
+ function readOptionalPositiveNumber(record, field, path) {
336
+ if (!(field in record))
337
+ return undefined;
338
+ return readPositiveNumber(record, field, path);
339
+ }
340
+ function readUrl(record, field, path) {
341
+ const value = readString(record, field, path);
342
+ if (isHttpUrl(value))
343
+ return value;
344
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
345
+ }
346
+ function readOptionalUrl(record, field, path) {
347
+ if (!(field in record))
348
+ return undefined;
349
+ const value = record[field];
350
+ if (typeof value !== 'string')
351
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
352
+ if (value.length === 0)
353
+ return undefined;
354
+ if (isHttpUrl(value))
355
+ return value;
356
+ throw new Error(`dashboard-account ${path} returned a malformed response`);
357
+ }
358
+ function isHttpUrl(value) {
359
+ try {
360
+ const url = new URL(value);
361
+ return url.protocol === 'https:' || url.protocol === 'http:';
362
+ }
363
+ catch {
364
+ return false;
365
+ }
366
+ }
367
+ async function fetchWithTimeout(fetchImpl, input, init, label) {
368
+ const controller = new AbortController();
369
+ const timeout = setTimeout(() => controller.abort(), DEFAULT_HTTP_TIMEOUT_MS);
370
+ try {
371
+ return await fetchImpl(input, { ...init, signal: controller.signal });
372
+ }
373
+ catch (err) {
374
+ if (err instanceof Error && err.name === 'AbortError') {
375
+ throw new Error(`${label} timed out after ${DEFAULT_HTTP_TIMEOUT_MS / 1000}s`);
376
+ }
377
+ throw err;
378
+ }
379
+ finally {
380
+ clearTimeout(timeout);
381
+ }
382
+ }
383
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
package/dist/dpop.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * DPoP (RFC 9449) proof generation with Ed25519 via WebCrypto.
3
+ *
4
+ * Wire-compatible with the Nylas dashboard-account CLI token binding:
5
+ * header {typ: "dpop+jwt", alg: "EdDSA", jwk: {kty, crv, x}} and claims
6
+ * {jti, htm, htu, iat} plus `ath` (SHA-256 of the access token) when bound.
7
+ *
8
+ * Uses only WebCrypto + fetch-era globals so it runs in Node >= 20 and on
9
+ * Cloudflare Workers.
10
+ */
11
+ export type StoredDpopKey = {
12
+ /** Private key JWK (OKP/Ed25519, includes `d`). Treat as a secret. */
13
+ privateJwk: JsonWebKey;
14
+ };
15
+ export declare class DpopKey {
16
+ private readonly privateKey;
17
+ private readonly publicJwk;
18
+ private readonly privateJwk;
19
+ private constructor();
20
+ static generate(): Promise<DpopKey>;
21
+ static fromStored(stored: StoredDpopKey): Promise<DpopKey>;
22
+ /** Serializable form for persistence (contains the private key). */
23
+ toStored(): StoredDpopKey;
24
+ /** RFC 7638 JWK thumbprint of the public key. */
25
+ thumbprint(): Promise<string>;
26
+ /**
27
+ * Generates a DPoP proof JWT for one HTTP request. When `accessToken` is
28
+ * provided the proof is bound to it via the `ath` claim.
29
+ */
30
+ proof(method: string, url: string, accessToken?: string): Promise<string>;
31
+ }
32
+ //# sourceMappingURL=dpop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dpop.d.ts","sourceRoot":"","sources":["../src/dpop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC3B,sEAAsE;IACtE,UAAU,EAAE,UAAU,CAAA;CACtB,CAAA;AAkBD,qBAAa,OAAO;IAElB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAH5B,OAAO,eAIH;IAEJ,OAAa,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxC;IAED,OAAa,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;IAED,oEAAoE;IACpE,QAAQ,IAAI,aAAa,CAExB;IAED,iDAAiD;IAC3C,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAIlC;IAED;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B9E;CACD"}