latchkey 3.6.0 → 3.8.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/dist/src/oauthUtils.d.ts +2 -2
- package/dist/src/oauthUtils.d.ts.map +1 -1
- package/dist/src/oauthUtils.js +36 -15
- package/dist/src/oauthUtils.js.map +1 -1
- package/dist/src/playwrightUtils.d.ts +57 -0
- package/dist/src/playwrightUtils.d.ts.map +1 -1
- package/dist/src/playwrightUtils.js +247 -8
- package/dist/src/playwrightUtils.js.map +1 -1
- package/dist/src/serviceRegistry.d.ts.map +1 -1
- package/dist/src/serviceRegistry.js +3 -1
- package/dist/src/serviceRegistry.js.map +1 -1
- package/dist/src/services/core/base.d.ts +55 -16
- package/dist/src/services/core/base.d.ts.map +1 -1
- package/dist/src/services/core/base.js +119 -31
- package/dist/src/services/core/base.js.map +1 -1
- package/dist/src/services/fastmail-dav.d.ts +55 -0
- package/dist/src/services/fastmail-dav.d.ts.map +1 -0
- package/dist/src/services/fastmail-dav.js +98 -0
- package/dist/src/services/fastmail-dav.js.map +1 -0
- package/dist/src/services/fastmail.d.ts +79 -0
- package/dist/src/services/fastmail.d.ts.map +1 -0
- package/dist/src/services/fastmail.js +298 -0
- package/dist/src/services/fastmail.js.map +1 -0
- package/dist/src/services/github.d.ts +2 -1
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +13 -0
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/huggingface.d.ts +2 -1
- package/dist/src/services/huggingface.d.ts.map +1 -1
- package/dist/src/services/huggingface.js +13 -0
- package/dist/src/services/huggingface.js.map +1 -1
- package/dist/src/services/index.d.ts +2 -0
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +2 -0
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/linear.d.ts +2 -1
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +14 -0
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/ngrok.d.ts +2 -1
- package/dist/src/services/ngrok.d.ts.map +1 -1
- package/dist/src/services/ngrok.js +12 -0
- package/dist/src/services/ngrok.js.map +1 -1
- package/dist/src/services/openrouter.d.ts +2 -1
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +12 -0
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/services/tailscale.d.ts +2 -1
- package/dist/src/services/tailscale.d.ts.map +1 -1
- package/dist/src/services/tailscale.js +18 -0
- package/dist/src/services/tailscale.js.map +1 -1
- package/dist/src/services/todoist.d.ts +2 -1
- package/dist/src/services/todoist.d.ts.map +1 -1
- package/dist/src/services/todoist.js +6 -0
- package/dist/src/services/todoist.js.map +1 -1
- package/dist/src/services/zoom.d.ts +2 -1
- package/dist/src/services/zoom.d.ts.map +1 -1
- package/dist/src/services/zoom.js +55 -55
- package/dist/src/services/zoom.js.map +1 -1
- package/dist/src/sharedOperations.d.ts +1 -1
- package/dist/src/sharedOperations.d.ts.map +1 -1
- package/dist/src/sharedOperations.js +12 -1
- package/dist/src/sharedOperations.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tests/lint.test.js +1 -1
- package/dist/tests/manualCompletion.test.d.ts +10 -0
- package/dist/tests/manualCompletion.test.d.ts.map +1 -0
- package/dist/tests/manualCompletion.test.js +221 -0
- package/dist/tests/manualCompletion.test.js.map +1 -0
- package/dist/tests/manualCredentialForms.test.d.ts +8 -0
- package/dist/tests/manualCredentialForms.test.d.ts.map +1 -0
- package/dist/tests/manualCredentialForms.test.js +64 -0
- package/dist/tests/manualCredentialForms.test.js.map +1 -0
- package/dist/tests/serviceRegistry.test.js +32 -1
- package/dist/tests/serviceRegistry.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fastmail service implementation.
|
|
3
|
+
*
|
|
4
|
+
* Fastmail's JMAP API is an OAuth 2.1 protected resource: it advertises an
|
|
5
|
+
* authorization server at `https://api.fastmail.com` (RFC 8414 metadata at
|
|
6
|
+
* `/.well-known/oauth-authorization-server`) supporting dynamic client
|
|
7
|
+
* registration, PKCE (S256) and refresh tokens, with public clients
|
|
8
|
+
* (`token_endpoint_auth_method: none`). So no API token has to be created by
|
|
9
|
+
* hand in the account's settings and pasted in — `latchkey auth browser
|
|
10
|
+
* fastmail` is enough.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { OAuthCredentials } from '../apiCredentials/base.js';
|
|
14
|
+
import { DEFAULT_ACCOUNT, fetchAccountFromEndpoint, tryParseJson, } from '../apiCredentials/account.js';
|
|
15
|
+
import { runCapturedAsync } from '../curl.js';
|
|
16
|
+
import { exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, refreshAccessToken, startOAuthCallbackServer, } from '../oauthUtils.js';
|
|
17
|
+
import { Service, ServiceSession, LoginFailedError, LoginCancelledError, buildPreparedCredentials, isBrowserClosedError, } from './core/base.js';
|
|
18
|
+
/**
|
|
19
|
+
* JSON accepted by `latchkey auth prepare fastmail`: an OAuth client id to
|
|
20
|
+
* reuse instead of registering a new client dynamically. Fastmail issues
|
|
21
|
+
* public clients, so no secret is needed. `.strict()` rejects unknown keys so
|
|
22
|
+
* typos are reported instead of silently ignored.
|
|
23
|
+
*/
|
|
24
|
+
export const FastmailPrepareInputSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
clientId: z.string().min(1),
|
|
27
|
+
})
|
|
28
|
+
.strict();
|
|
29
|
+
// The session document, requested directly. Not `/.well-known/jmap`: that
|
|
30
|
+
// 302s to this URL on a *different* host, and curl drops the Authorization
|
|
31
|
+
// header across a cross-host redirect, so following it reports a missing
|
|
32
|
+
// header even when the credential is fine.
|
|
33
|
+
const SESSION_ENDPOINT = 'https://api.fastmail.com/jmap/session';
|
|
34
|
+
const REGISTRATION_ENDPOINT = 'https://api.fastmail.com/oauth/register';
|
|
35
|
+
const AUTHORIZATION_ENDPOINT = 'https://api.fastmail.com/oauth/authorize';
|
|
36
|
+
// Named `/oauth/refresh` rather than `/oauth/token`, but this is the
|
|
37
|
+
// `token_endpoint` of Fastmail's authorization server metadata: it serves both
|
|
38
|
+
// the authorization_code exchange and the refresh_token grant.
|
|
39
|
+
const TOKEN_ENDPOINT = 'https://api.fastmail.com/oauth/refresh';
|
|
40
|
+
/**
|
|
41
|
+
* RFC 8707 resource indicator, required by Fastmail: an authorization request
|
|
42
|
+
* that does not name the resource it is for is refused with `invalid_target`.
|
|
43
|
+
* This is the `resource` of the protected-resource metadata at
|
|
44
|
+
* `/.well-known/oauth-protected-resource/jmap/session`, and it is what scopes
|
|
45
|
+
* the JMAP capabilities to. Fastmail publishes a second, unrelated resource for
|
|
46
|
+
* its MCP endpoint (`https://api.fastmail.com/mcp`) with its own scope; naming
|
|
47
|
+
* the wrong one here would yield tokens JMAP will not accept.
|
|
48
|
+
*/
|
|
49
|
+
const JMAP_RESOURCE = 'https://api.fastmail.com/jmap/session';
|
|
50
|
+
/**
|
|
51
|
+
* One service carries all three JMAP scopes rather than splitting into
|
|
52
|
+
* per-capability services the way the Google ones do. Google's products are
|
|
53
|
+
* separate APIs on separate hosts, so a service each disambiguates cleanly;
|
|
54
|
+
* Fastmail's are one JMAP session behind one host, so sibling services would
|
|
55
|
+
* all match the same URLs and a request could pick whichever credential
|
|
56
|
+
* happened to be registered first — including one lacking the needed scope.
|
|
57
|
+
*
|
|
58
|
+
* Mail plus a refresh token. Fastmail also offers `…scope:contacts` and
|
|
59
|
+
* `…scope:calendars`, which JMAP exposes through the same session document —
|
|
60
|
+
* add them here if latchkey grows callers that need those capabilities, but
|
|
61
|
+
* asking for them today would over-request on the consent screen.
|
|
62
|
+
*
|
|
63
|
+
* These are the names the authorization server's own metadata advertises, and
|
|
64
|
+
* the only ones its registration endpoint accepts. Fastmail's developer docs
|
|
65
|
+
* list a different set (`urn:ietf:params:jmap:core`, `urn:ietf:params:jmap:mail`,
|
|
66
|
+
* …) which apply to clients registered by hand with Fastmail's partnerships
|
|
67
|
+
* team; passing those to dynamic registration fails outright.
|
|
68
|
+
*
|
|
69
|
+
* The same string is sent twice: once when registering the client, and again on
|
|
70
|
+
* the authorization request. They have to agree — see {@link registerClient}.
|
|
71
|
+
*
|
|
72
|
+
* These grant read AND write: Fastmail publishes no read-only OAuth scope, and
|
|
73
|
+
* its registration endpoint rejects every `:readonly` variant. A read-only
|
|
74
|
+
* credential has to be a hand-made API token ("Read-only access" on the API
|
|
75
|
+
* token screen) supplied with `latchkey auth set`, which this service also
|
|
76
|
+
* accepts.
|
|
77
|
+
*/
|
|
78
|
+
const OAUTH_SCOPES = 'urn:ietf:params:oauth:scope:mail ' +
|
|
79
|
+
'urn:ietf:params:oauth:scope:contacts ' +
|
|
80
|
+
'urn:ietf:params:oauth:scope:calendars ' +
|
|
81
|
+
'offline_access';
|
|
82
|
+
const LOGIN_TIMEOUT_MS = 120000;
|
|
83
|
+
/**
|
|
84
|
+
* Register a public OAuth client via RFC 7591 dynamic client registration.
|
|
85
|
+
*
|
|
86
|
+
* Fastmail normalizes a loopback `redirect_uri` by dropping the port (RFC 8252
|
|
87
|
+
* §7.3 lets a native client's loopback port vary), so one registration keeps
|
|
88
|
+
* working across the ephemeral ports {@link startOAuthCallbackServer} picks.
|
|
89
|
+
*/
|
|
90
|
+
async function registerClient(redirectUri, clientName) {
|
|
91
|
+
const body = JSON.stringify({
|
|
92
|
+
client_name: clientName,
|
|
93
|
+
redirect_uris: [redirectUri],
|
|
94
|
+
grant_types: ['authorization_code', 'refresh_token'],
|
|
95
|
+
response_types: ['code'],
|
|
96
|
+
token_endpoint_auth_method: 'none',
|
|
97
|
+
// Required. Fastmail records the scopes at registration time and rejects an
|
|
98
|
+
// authorization request asking for anything outside them ("This MUST be a
|
|
99
|
+
// subset of the scopes registered for the client"). Omitting this registers
|
|
100
|
+
// the client with an empty scope, and every later authorize call comes back
|
|
101
|
+
// to the callback with an error and no code.
|
|
102
|
+
scope: OAUTH_SCOPES,
|
|
103
|
+
});
|
|
104
|
+
const result = await runCapturedAsync(['-s', '-X', 'POST', '-H', 'Content-Type: application/json', '-d', body, REGISTRATION_ENDPOINT], 30);
|
|
105
|
+
if (result.returncode !== 0) {
|
|
106
|
+
throw new LoginFailedError(`Failed to register OAuth client: ${result.stderr}`);
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const response = JSON.parse(result.stdout);
|
|
110
|
+
if (!response.client_id) {
|
|
111
|
+
throw new LoginFailedError(`Client registration response missing client_id: ${result.stdout}`);
|
|
112
|
+
}
|
|
113
|
+
return response;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (error instanceof LoginFailedError) {
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
throw new LoginFailedError(`Failed to parse client registration response: ${error instanceof Error ? error.message : String(error)}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Absolute expiry for an `expires_in`, or undefined when the server did not send
|
|
124
|
+
* a usable one. `OAuthCredentials.accessTokenExpiresAt` is optional and
|
|
125
|
+
* `isExpired()` answers "unknown" without it, so omitting it degrades to
|
|
126
|
+
* refresh-on-failure. Computing it blindly would turn a missing value into
|
|
127
|
+
* `new Date(NaN).toISOString()`, which throws RangeError and loses the tokens
|
|
128
|
+
* that were just successfully obtained.
|
|
129
|
+
*/
|
|
130
|
+
function expiryFromExpiresIn(expiresIn) {
|
|
131
|
+
if (typeof expiresIn !== 'number' || !Number.isFinite(expiresIn) || expiresIn <= 0) {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
return new Date(Date.now() + expiresIn * 1000).toISOString();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The JMAP session document names the authenticated account in `username`
|
|
138
|
+
* (RFC 8620 §2), which for Fastmail is the account's e-mail address.
|
|
139
|
+
*/
|
|
140
|
+
function parseAccountFromSession(responseBody) {
|
|
141
|
+
const session = tryParseJson(responseBody);
|
|
142
|
+
return session?.username ?? null;
|
|
143
|
+
}
|
|
144
|
+
class FastmailSession extends ServiceSession {
|
|
145
|
+
onResponse(_response) {
|
|
146
|
+
// Not used — login detection is via OAuth callback, not response inspection.
|
|
147
|
+
}
|
|
148
|
+
isLoginComplete() {
|
|
149
|
+
// Not used — we override login() entirely.
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
finalizeCredentials(_browser, _context, _oldCredentials) {
|
|
153
|
+
// Not used — we override login() entirely.
|
|
154
|
+
return Promise.resolve(null);
|
|
155
|
+
}
|
|
156
|
+
async login(encryptedStorage, launchOptions = {}, oldCredentials) {
|
|
157
|
+
const { withTempBrowserContext } = await import('../playwrightUtils.js');
|
|
158
|
+
return withTempBrowserContext(encryptedStorage, launchOptions, async ({ context }) => {
|
|
159
|
+
const page = await context.newPage();
|
|
160
|
+
const abortController = new AbortController();
|
|
161
|
+
const closeHandler = () => {
|
|
162
|
+
abortController.abort();
|
|
163
|
+
};
|
|
164
|
+
page.on('close', closeHandler);
|
|
165
|
+
context.on('close', closeHandler);
|
|
166
|
+
try {
|
|
167
|
+
// 1. Start OAuth callback server
|
|
168
|
+
const { port, codePromise } = await startOAuthCallbackServer(LOGIN_TIMEOUT_MS, abortController.signal);
|
|
169
|
+
const redirectUri = `http://localhost:${port.toString()}/oauth2callback`;
|
|
170
|
+
// 2. Register client or reuse existing client_id.
|
|
171
|
+
//
|
|
172
|
+
// Fastmail fixes a client's scopes at registration, so reusing a stored
|
|
173
|
+
// client id pins the scopes granted the first time. If OAUTH_SCOPES ever
|
|
174
|
+
// widens, an existing user's next login is refused for asking outside
|
|
175
|
+
// the old client's scopes, and `latchkey auth clear fastmail --all`
|
|
176
|
+
// (which drops the stored client id) is the way out.
|
|
177
|
+
let clientId;
|
|
178
|
+
if (oldCredentials instanceof OAuthCredentials && oldCredentials.clientId) {
|
|
179
|
+
clientId = oldCredentials.clientId;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
const registration = await registerClient(redirectUri, this.generateAppName());
|
|
183
|
+
clientId = registration.client_id;
|
|
184
|
+
}
|
|
185
|
+
// 3. Generate PKCE verifier/challenge
|
|
186
|
+
const codeVerifier = generateCodeVerifier();
|
|
187
|
+
const codeChallenge = generateCodeChallenge(codeVerifier);
|
|
188
|
+
// 4. Open browser to authorization URL
|
|
189
|
+
const authUrl = new URL(AUTHORIZATION_ENDPOINT);
|
|
190
|
+
authUrl.searchParams.set('client_id', clientId);
|
|
191
|
+
authUrl.searchParams.set('redirect_uri', redirectUri);
|
|
192
|
+
authUrl.searchParams.set('response_type', 'code');
|
|
193
|
+
authUrl.searchParams.set('scope', OAUTH_SCOPES);
|
|
194
|
+
authUrl.searchParams.set('resource', JMAP_RESOURCE);
|
|
195
|
+
authUrl.searchParams.set('code_challenge', codeChallenge);
|
|
196
|
+
authUrl.searchParams.set('code_challenge_method', 'S256');
|
|
197
|
+
await page.goto(authUrl.toString());
|
|
198
|
+
// 5. Wait for user to authorize and callback to receive code
|
|
199
|
+
const code = await codePromise;
|
|
200
|
+
// 6. Exchange code for tokens
|
|
201
|
+
const tokens = await exchangeCodeForTokens(TOKEN_ENDPOINT, code, clientId, '', // public client, no secret
|
|
202
|
+
redirectUri, codeVerifier, { resource: JMAP_RESOURCE });
|
|
203
|
+
const accessTokenExpiresAt = expiryFromExpiresIn(tokens.expires_in);
|
|
204
|
+
await page.close();
|
|
205
|
+
const credentials = new OAuthCredentials(clientId, '', // public client
|
|
206
|
+
tokens.access_token, tokens.refresh_token, accessTokenExpiresAt);
|
|
207
|
+
return {
|
|
208
|
+
credentials,
|
|
209
|
+
// The JMAP session document is the only thing that names the
|
|
210
|
+
// account; Fastmail's token response carries no identity. A session
|
|
211
|
+
// fetch that fails still leaves usable credentials, so fall back to
|
|
212
|
+
// the placeholder rather than failing the whole login.
|
|
213
|
+
account: (await this.service.getAccount(credentials)) ?? DEFAULT_ACCOUNT,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (error instanceof Error && isBrowserClosedError(error)) {
|
|
218
|
+
throw new LoginCancelledError();
|
|
219
|
+
}
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
page.off('close', closeHandler);
|
|
224
|
+
context.off('close', closeHandler);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export class Fastmail extends Service {
|
|
230
|
+
name = 'fastmail';
|
|
231
|
+
displayName = 'Fastmail';
|
|
232
|
+
/**
|
|
233
|
+
* Four host shapes, which is why these are patterns rather than plain
|
|
234
|
+
* prefixes. Session discovery starts at `api.fastmail.com`, but the `apiUrl`
|
|
235
|
+
* and `downloadUrl` it returns point at the shard the account is homed on
|
|
236
|
+
* (`phl.api.fastmail.com`, `phl-www.fastmailusercontent.com`, …). Which
|
|
237
|
+
* shard that is only becomes known after discovery, so the service has to
|
|
238
|
+
* cover them all up front.
|
|
239
|
+
*
|
|
240
|
+
* The blob pattern is anchored on the `www` label rather than accepting any
|
|
241
|
+
* subdomain: the session document only ever names `www.fastmailusercontent.com`
|
|
242
|
+
* or `<shard>-www.…`, and this is the domain Fastmail uses to serve user
|
|
243
|
+
* content, so matching it loosely would offer the access token to hosts the
|
|
244
|
+
* credential has no business reaching.
|
|
245
|
+
*
|
|
246
|
+
* Deliberately NOT covering carddav.fastmail.com / caldav.fastmail.com. Those
|
|
247
|
+
* advertise `WWW-Authenticate: Basic realm=..., Bearer`, so adding them looks
|
|
248
|
+
* right, but Fastmail's OAuth access tokens are refused there (401 on every
|
|
249
|
+
* path tried, including the principal and per-user collections) — the DAV
|
|
250
|
+
* endpoints want an app password over Basic auth, which is a different
|
|
251
|
+
* credential type than this service issues. Contacts and calendars are
|
|
252
|
+
* reachable over JMAP on the hosts below instead.
|
|
253
|
+
*/
|
|
254
|
+
baseApiUrls = [
|
|
255
|
+
/^https:\/\/([a-z0-9-]+\.)?api\.fastmail\.com\//,
|
|
256
|
+
/^https:\/\/([a-z0-9-]+-)?www\.fastmailusercontent\.com\//,
|
|
257
|
+
];
|
|
258
|
+
loginUrl = AUTHORIZATION_ENDPOINT;
|
|
259
|
+
info = 'https://www.fastmail.com/dev/ and https://jmap.io/spec.html. ' +
|
|
260
|
+
'Start at https://api.fastmail.com/jmap/session: that session document names the apiUrl, ' +
|
|
261
|
+
'downloadUrl and account ids for everything else, and its `accounts` entries carry ' +
|
|
262
|
+
'`isReadOnly` and the `accountCapabilities` this credential can reach.';
|
|
263
|
+
credentialCheckCurlArguments = [SESSION_ENDPOINT];
|
|
264
|
+
setCredentialsExample(serviceName) {
|
|
265
|
+
return `latchkey auth set ${serviceName} -H "Authorization: Bearer <token>"`;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Fastmail accepts an OAuth client id prepared in advance via
|
|
269
|
+
* `latchkey auth prepare`, stored as token-less OAuth credentials until
|
|
270
|
+
* login. The login flow reuses this client id instead of registering a new
|
|
271
|
+
* client dynamically.
|
|
272
|
+
*/
|
|
273
|
+
prepareFromJson(parsedJson) {
|
|
274
|
+
return buildPreparedCredentials(this.name, FastmailPrepareInputSchema, parsedJson, ({ clientId }) => new OAuthCredentials(clientId, ''));
|
|
275
|
+
}
|
|
276
|
+
getAccount(apiCredentials) {
|
|
277
|
+
return fetchAccountFromEndpoint(apiCredentials, this.credentialCheckCurlArguments, parseAccountFromSession);
|
|
278
|
+
}
|
|
279
|
+
getSession(appNamePrefix) {
|
|
280
|
+
return new FastmailSession(this, appNamePrefix);
|
|
281
|
+
}
|
|
282
|
+
async refreshCredentials(apiCredentials) {
|
|
283
|
+
if (!(apiCredentials instanceof OAuthCredentials)) {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
if (!apiCredentials.refreshToken) {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
const tokens = await refreshAccessToken(TOKEN_ENDPOINT, apiCredentials.refreshToken, apiCredentials.clientId, apiCredentials.clientSecret, { resource: JMAP_RESOURCE });
|
|
290
|
+
if (tokens === null) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
const accessTokenExpiresAt = expiryFromExpiresIn(tokens.expires_in);
|
|
294
|
+
return new OAuthCredentials(apiCredentials.clientId, apiCredentials.clientSecret, tokens.access_token, tokens.refresh_token ?? apiCredentials.refreshToken, accessTokenExpiresAt, apiCredentials.refreshTokenExpiresAt);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
export const FASTMAIL = new Fastmail();
|
|
298
|
+
//# sourceMappingURL=fastmail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastmail.js","sourceRoot":"","sources":["../../../src/services/fastmail.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Response, BrowserContext } from 'playwright';
|
|
5
5
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
6
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
6
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
7
7
|
export declare class UnexpectedGithubCredentialsError extends Error {
|
|
8
8
|
constructor();
|
|
9
9
|
}
|
|
@@ -22,6 +22,7 @@ export declare class GithubTokenBasicAuth implements ApiCredentials {
|
|
|
22
22
|
}
|
|
23
23
|
declare class GithubServiceSession extends BrowserFollowupServiceSession {
|
|
24
24
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
25
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
25
26
|
private isLoggedIn;
|
|
26
27
|
onResponse(response: Response): void;
|
|
27
28
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAmBxB,qBAAa,gCAAiC,SAAQ,KAAK;;CAK1D;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,QAAQ,CAAC,UAAU,EAAG,sBAAsB,CAAU;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,MAAM;IAIzB,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAIhF,SAAS,IAAI,OAAO,GAAG,SAAS;CAGjC;AAwBD,cAAM,oBAAqB,SAAQ,6BAA6B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAa1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAqBpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAwClC;AAED,qBAAa,MAAO,SAAQ,OAAO;IACjC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,WAAW,8EAIT;IACX,QAAQ,CAAC,QAAQ,4CAAwB;IACzC,QAAQ,CAAC,IAAI,SAE+D;IAE5E,QAAQ,CAAC,4BAA4B,2CAA4C;IAEjF,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,iBAAiB,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc;IAU9E,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,oBAAoB;IAIvD,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAY5E;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -65,6 +65,19 @@ const GITHUB_TOKEN_SCOPES = [
|
|
|
65
65
|
];
|
|
66
66
|
class GithubServiceSession extends BrowserFollowupServiceSession {
|
|
67
67
|
followupWork = FollowupWork.CreateApiToken;
|
|
68
|
+
manualCredentialForm = {
|
|
69
|
+
instructions: `To finish by hand, open ${GITHUB_NEW_TOKEN_URL} in the other tab of this window, ` +
|
|
70
|
+
'give the token a name, tick the appropriate scopes ("repo" and "user" ' +
|
|
71
|
+
'are the usual minimum), and click "Generate token".',
|
|
72
|
+
fields: [
|
|
73
|
+
{
|
|
74
|
+
name: 'token',
|
|
75
|
+
label: 'Personal access token',
|
|
76
|
+
hint: 'Starts with "ghp_" (classic) or "github_pat_" (fine-grained).',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
buildCredentials: (values) => new AuthorizationBearer(values.get('token')),
|
|
80
|
+
};
|
|
68
81
|
isLoggedIn = false;
|
|
69
82
|
onResponse(response) {
|
|
70
83
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/services/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEtF,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,wFAAwF;AACxF,MAAM,oBAAoB,GAAG,wCAAwC,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,gCAAgC,GACpC,iGAAiG,CAAC;AAEpG,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACzD;QACE,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IACtB,UAAU,GAAG,sBAA+B,CAAC;IAC7C,KAAK,CAAS;IAEvB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,aAAgC;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,kBAAkB,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,SAAS;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,mBAAmB,GAAG;IAC1B,MAAM;IACN,UAAU;IACV,gBAAgB;IAChB,iBAAiB;IACjB,MAAM;IACN,eAAe;IACf,WAAW;IACX,iBAAiB;IACjB,gBAAgB;IAChB,MAAM;IACN,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,WAAW;IACX,SAAS;IACT,8BAA8B;IAC9B,SAAS;CACD,CAAC;AAEX,MAAM,oBAAqB,SAAQ,6BAA6B;IAC3C,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;IAC5C,oBAAoB,GAAyB;QAC7D,YAAY,EACV,2BAA2B,oBAAoB,oCAAoC;YACnF,wEAAwE;YACxE,qDAAqD;QACvD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,uBAAuB;gBAC9B,IAAI,EAAE,+DAA+D;aACtE;SACF;QACD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3E,CAAC;IACM,UAAU,GAAG,KAAK,CAAC;IAE3B,UAAU,CAAC,QAAkB;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,+FAA+F;QAC/F,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,oBAAoB,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,uFAAuF;QACvF,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,sBAAsB,CACpC,OAAuB,EACvB,eAAgC;QAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEtC,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACtE,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACzD,MAAM,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE7D,8BAA8B;QAC9B,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,+CAA+C,KAAK,IAAI,CAAC,CAAC;YACxF,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC/B,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,6FAA6F;QAC7F,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QACnF,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC9D,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;QAE7B,6DAA6D;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAChE,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE5D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,MAAO,SAAQ,OAAO;IACxB,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,QAAQ,CAAC;IACvB,WAAW,GAAG;QACrB,yBAAyB;QACzB,6BAA6B;QAC7B,gCAAgC;KACxB,CAAC;IACF,QAAQ,GAAG,oBAAoB,CAAC;IAChC,IAAI,GACX,mCAAmC;QACnC,yEAAyE,CAAC;IAEnE,4BAA4B,GAAG,CAAC,6BAA6B,CAAU,CAAC;IAEjF,qBAAqB,CAAC,WAAmB;QACvC,OAAO,qBAAqB,WAAW,qCAAqC,CAAC;IAC/E,CAAC;IAEQ,iBAAiB,CAAC,cAA8B,EAAE,GAAW;QACpE,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,CAAC,cAAc,YAAY,mBAAmB,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,gCAAgC,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAEQ,UAAU,CAAC,aAAqB;QACvC,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAEQ,UAAU,CAAC,cAA8B;QAChD,OAAO,wBAAwB,CAC7B,cAAc,EACd,IAAI,CAAC,4BAA4B,EACjC,CAAC,YAAY,EAAE,EAAE;YACf,uEAAuE;YACvE,6DAA6D;YAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAA8B,CAAC;YACrE,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;QAC7B,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
|
@@ -16,9 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import type { Response, BrowserContext } from 'playwright';
|
|
18
18
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
19
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
19
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
20
20
|
declare class HuggingfaceServiceSession extends BrowserFollowupServiceSession {
|
|
21
21
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
22
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
22
23
|
private isLoggedIn;
|
|
23
24
|
onResponse(response: Response): void;
|
|
24
25
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAuB,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA4CxB,cAAM,yBAA0B,SAAQ,6BAA6B;IACnE,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAa1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwBpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAmClC;AAED,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,kBAAkB;IACtC,QAAQ,CAAC,WAAW,sIAKT;IACX,QAAQ,CAAC,QAAQ,kCAAgB;IACjC,QAAQ,CAAC,IAAI,SAE8E;IAI3F,QAAQ,CAAC,4BAA4B,oDAA4B;IAEjE,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWlE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,yBAAyB;CAGtE;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -55,6 +55,19 @@ const HF_HUB_HOST = 'huggingface.co';
|
|
|
55
55
|
const HF_PRE_LOGIN_PATH_PATTERN = /^\/(login|join|signup|oauth|sso|auth|logout)/i;
|
|
56
56
|
class HuggingfaceServiceSession extends BrowserFollowupServiceSession {
|
|
57
57
|
followupWork = FollowupWork.CreateApiToken;
|
|
58
|
+
manualCredentialForm = {
|
|
59
|
+
instructions: `To finish by hand, open ${HF_NEW_TOKEN_URL} in the other tab of this window, ` +
|
|
60
|
+
'give the token a name, and create it. The token is shown once, in the dialog ' +
|
|
61
|
+
'that follows.',
|
|
62
|
+
fields: [
|
|
63
|
+
{
|
|
64
|
+
name: 'token',
|
|
65
|
+
label: 'Access token',
|
|
66
|
+
hint: 'Starts with "hf_".',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
buildCredentials: (values) => new AuthorizationBearer(values.get('token')),
|
|
70
|
+
};
|
|
58
71
|
isLoggedIn = false;
|
|
59
72
|
onResponse(response) {
|
|
60
73
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAkB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../../src/services/huggingface.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export { GooglePeople, GOOGLE_PEOPLE } from './google/people.js';
|
|
|
23
23
|
export { Notion, NOTION } from './notion.js';
|
|
24
24
|
export { NotionMcp, NOTION_MCP } from './notion-mcp.js';
|
|
25
25
|
export { Mailchimp, MAILCHIMP } from './mailchimp.js';
|
|
26
|
+
export { Fastmail, FASTMAIL } from './fastmail.js';
|
|
27
|
+
export { FastmailDav, FASTMAIL_DAV } from './fastmail-dav.js';
|
|
26
28
|
export { Gitlab, GITLAB } from './gitlab.js';
|
|
27
29
|
export { Zoom, ZOOM } from './zoom.js';
|
|
28
30
|
export { Telegram, TELEGRAM } from './telegram.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export { GooglePeople, GOOGLE_PEOPLE } from './google/people.js';
|
|
|
23
23
|
export { Notion, NOTION } from './notion.js';
|
|
24
24
|
export { NotionMcp, NOTION_MCP } from './notion-mcp.js';
|
|
25
25
|
export { Mailchimp, MAILCHIMP } from './mailchimp.js';
|
|
26
|
+
export { Fastmail, FASTMAIL } from './fastmail.js';
|
|
27
|
+
export { FastmailDav, FASTMAIL_DAV } from './fastmail-dav.js';
|
|
26
28
|
export { Gitlab, GITLAB } from './gitlab.js';
|
|
27
29
|
export { Zoom, ZOOM } from './zoom.js';
|
|
28
30
|
export { Telegram, TELEGRAM } from './telegram.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Response, BrowserContext } from 'playwright';
|
|
5
5
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
6
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
6
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
7
7
|
declare class LinearServiceSession extends BrowserFollowupServiceSession {
|
|
8
8
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
9
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
9
10
|
private isLoggedIn;
|
|
10
11
|
onResponse(response: Response): void;
|
|
11
12
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqB,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAQ,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqB,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AA4ExB,cAAM,oBAAqB,SAAQ,6BAA6B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAc1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA8BpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAiClC;AAED,qBAAa,MAAO,SAAQ,OAAO;IACjC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,YAAY;IAChC,QAAQ,CAAC,WAAW,uCAAwC;IAC5D,QAAQ,CAAC,QAAQ,8BAAoB;IACrC,QAAQ,CAAC,IAAI,2CAA2C;IAExD,QAAQ,CAAC,4BAA4B,sJAQ1B;IAEX,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAalE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,oBAAoB;CAGjE;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -69,6 +69,20 @@ async function waitForWorkspaceName(page) {
|
|
|
69
69
|
}
|
|
70
70
|
class LinearServiceSession extends BrowserFollowupServiceSession {
|
|
71
71
|
followupWork = FollowupWork.CreateApiToken;
|
|
72
|
+
manualCredentialForm = {
|
|
73
|
+
instructions: 'To finish by hand, open your Linear workspace in the other tab of this window and ' +
|
|
74
|
+
'go to Settings → Security & access → Personal API keys (or ' +
|
|
75
|
+
'https://linear.app/<your-workspace>/settings/account/security/api-keys/new), ' +
|
|
76
|
+
'name the key, and create it. The key is shown once, right after creation.',
|
|
77
|
+
fields: [
|
|
78
|
+
{
|
|
79
|
+
name: 'apiKey',
|
|
80
|
+
label: 'Personal API key',
|
|
81
|
+
hint: 'Starts with "lin_api_".',
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
buildCredentials: (values) => new AuthorizationBare(values.get('apiKey')),
|
|
85
|
+
};
|
|
72
86
|
isLoggedIn = false;
|
|
73
87
|
onResponse(response) {
|
|
74
88
|
if (this.isLoggedIn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/services/linear.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { Response, BrowserContext } from 'playwright';
|
|
16
16
|
import { ApiCredentials } from '../apiCredentials/base.js';
|
|
17
|
-
import { Service, BrowserFollowupServiceSession, FollowupWork } from './core/base.js';
|
|
17
|
+
import { Service, BrowserFollowupServiceSession, FollowupWork, type ManualCredentialForm } from './core/base.js';
|
|
18
18
|
declare class NgrokServiceSession extends BrowserFollowupServiceSession {
|
|
19
19
|
protected readonly followupWork = FollowupWork.CreateApiToken;
|
|
20
|
+
readonly manualCredentialForm: ManualCredentialForm;
|
|
20
21
|
private isLoggedIn;
|
|
21
22
|
onResponse(response: Response): void;
|
|
22
23
|
protected isLoginComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../src/services/ngrok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,
|
|
1
|
+
{"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../src/services/ngrok.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,YAAY,EAEZ,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAkCxB,cAAM,mBAAoB,SAAQ,6BAA6B;IAC7D,SAAS,CAAC,QAAQ,CAAC,YAAY,+BAA+B;IAC9D,SAAkB,oBAAoB,EAAE,oBAAoB,CAY1D;IACF,OAAO,CAAC,UAAU,CAAS;IAE3B,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA4BpC,SAAS,CAAC,eAAe,IAAI,OAAO;cAIpB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,CAAC,EAAE,cAAc,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAkClC;AAED,qBAAa,KAAM,SAAQ,OAAO;IAChC,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,WAAW;IAC/B,QAAQ,CAAC,WAAW,sCAAiC;IACrD,QAAQ,CAAC,QAAQ,uCAAmB;IACpC,QAAQ,CAAC,IAAI,iCAAiC;IAI9C,QAAQ,CAAC,4BAA4B,8CAA+C;IAEpF,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAMzC,UAAU,CAAC,eAAe,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInE,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB;CAGhE;AAED,eAAO,MAAM,KAAK,OAAc,CAAC"}
|
|
@@ -43,6 +43,18 @@ function ngrokCredentials(apiKey) {
|
|
|
43
43
|
}
|
|
44
44
|
class NgrokServiceSession extends BrowserFollowupServiceSession {
|
|
45
45
|
followupWork = FollowupWork.CreateApiToken;
|
|
46
|
+
manualCredentialForm = {
|
|
47
|
+
instructions: `To finish by hand, open ${NGROK_NEW_API_KEY_URL} in the other tab of this window, ` +
|
|
48
|
+
'describe the key, and add it. The key is shown once, right after creation.',
|
|
49
|
+
fields: [
|
|
50
|
+
{
|
|
51
|
+
name: 'apiKey',
|
|
52
|
+
label: 'API key',
|
|
53
|
+
hint: 'The long secret shown in the dialog right after the key is added.',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
buildCredentials: (values) => ngrokCredentials(values.get('apiKey')),
|
|
57
|
+
};
|
|
46
58
|
isLoggedIn = false;
|
|
47
59
|
onResponse(response) {
|
|
48
60
|
if (this.isLoggedIn) {
|