latchkey 1.0.1 → 2.0.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/README.md +27 -7
- package/dist/integrations/SKILL.md +9 -2
- package/dist/package.json +1 -1
- package/dist/src/apiCredentialStore.d.ts +1 -1
- package/dist/src/apiCredentialStore.d.ts.map +1 -1
- package/dist/src/apiCredentialStore.js +1 -1
- package/dist/src/apiCredentialStore.js.map +1 -1
- package/dist/src/apiCredentials.d.ts +11 -114
- package/dist/src/apiCredentials.d.ts.map +1 -1
- package/dist/src/apiCredentials.js +9 -101
- package/dist/src/apiCredentials.js.map +1 -1
- package/dist/src/apiCredentialsSerialization.d.ts +119 -0
- package/dist/src/apiCredentialsSerialization.d.ts.map +1 -0
- package/dist/src/apiCredentialsSerialization.js +90 -0
- package/dist/src/apiCredentialsSerialization.js.map +1 -0
- package/dist/src/browserConfig.d.ts +1 -5
- package/dist/src/browserConfig.d.ts.map +1 -1
- package/dist/src/browserConfig.js +2 -8
- package/dist/src/browserConfig.js.map +1 -1
- package/dist/src/cli.js +20 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/cliCommands.d.ts +0 -1
- package/dist/src/cliCommands.d.ts.map +1 -1
- package/dist/src/cliCommands.js +50 -40
- package/dist/src/cliCommands.js.map +1 -1
- package/dist/src/config.d.ts +4 -3
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +17 -23
- package/dist/src/config.js.map +1 -1
- package/dist/src/curl.d.ts +10 -0
- package/dist/src/curl.d.ts.map +1 -1
- package/dist/src/curl.js +88 -0
- package/dist/src/curl.js.map +1 -1
- package/dist/src/encryptedStorage.d.ts +9 -0
- package/dist/src/encryptedStorage.d.ts.map +1 -1
- package/dist/src/encryptedStorage.js +12 -0
- package/dist/src/encryptedStorage.js.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrations.d.ts +9 -0
- package/dist/src/migrations.d.ts.map +1 -0
- package/dist/src/migrations.js +77 -0
- package/dist/src/migrations.js.map +1 -0
- package/dist/src/oauthUtils.d.ts +4 -1
- package/dist/src/oauthUtils.d.ts.map +1 -1
- package/dist/src/oauthUtils.js.map +1 -1
- package/dist/src/playwrightUtils.d.ts +2 -2
- package/dist/src/playwrightUtils.d.ts.map +1 -1
- package/dist/src/playwrightUtils.js +4 -4
- package/dist/src/playwrightUtils.js.map +1 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +18 -2
- package/dist/src/registry.js.map +1 -1
- package/dist/src/services/aws.d.ts +44 -0
- package/dist/src/services/aws.d.ts.map +1 -0
- package/dist/src/services/aws.js +237 -0
- package/dist/src/services/aws.js.map +1 -0
- package/dist/src/services/base.d.ts +14 -0
- package/dist/src/services/base.d.ts.map +1 -1
- package/dist/src/services/base.js +23 -11
- package/dist/src/services/base.js.map +1 -1
- package/dist/src/services/calendly.d.ts +12 -0
- package/dist/src/services/calendly.d.ts.map +1 -0
- package/dist/src/services/calendly.js +18 -0
- package/dist/src/services/calendly.js.map +1 -0
- package/dist/src/services/discord.d.ts +1 -0
- package/dist/src/services/discord.d.ts.map +1 -1
- package/dist/src/services/discord.js +3 -0
- package/dist/src/services/discord.js.map +1 -1
- package/dist/src/services/dropbox.d.ts +2 -1
- package/dist/src/services/dropbox.d.ts.map +1 -1
- package/dist/src/services/dropbox.js +5 -0
- package/dist/src/services/dropbox.js.map +1 -1
- package/dist/src/services/figma.d.ts +12 -0
- package/dist/src/services/figma.d.ts.map +1 -0
- package/dist/src/services/figma.js +14 -0
- package/dist/src/services/figma.js.map +1 -0
- package/dist/src/services/github.d.ts +1 -0
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +3 -0
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/gitlab.d.ts +12 -0
- package/dist/src/services/gitlab.d.ts.map +1 -0
- package/dist/src/services/gitlab.js +14 -0
- package/dist/src/services/gitlab.js.map +1 -0
- package/dist/src/services/google/analytics.d.ts +11 -0
- package/dist/src/services/google/analytics.d.ts.map +1 -0
- package/dist/src/services/google/analytics.js +22 -0
- package/dist/src/services/google/analytics.js.map +1 -0
- package/dist/src/services/google/base.d.ts +73 -0
- package/dist/src/services/google/base.d.ts.map +1 -0
- package/dist/src/services/google/base.js +323 -0
- package/dist/src/services/google/base.js.map +1 -0
- package/dist/src/services/google/calendar.d.ts +11 -0
- package/dist/src/services/google/calendar.d.ts.map +1 -0
- package/dist/src/services/google/calendar.js +22 -0
- package/dist/src/services/google/calendar.js.map +1 -0
- package/dist/src/services/google/directions.d.ts +14 -0
- package/dist/src/services/google/directions.d.ts.map +1 -0
- package/dist/src/services/google/directions.js +49 -0
- package/dist/src/services/google/directions.js.map +1 -0
- package/dist/src/services/google/docs.d.ts +11 -0
- package/dist/src/services/google/docs.d.ts.map +1 -0
- package/dist/src/services/google/docs.js +19 -0
- package/dist/src/services/google/docs.js.map +1 -0
- package/dist/src/services/google/drive.d.ts +11 -0
- package/dist/src/services/google/drive.d.ts.map +1 -0
- package/dist/src/services/google/drive.js +19 -0
- package/dist/src/services/google/drive.js.map +1 -0
- package/dist/src/services/google/gmail.d.ts +11 -0
- package/dist/src/services/google/gmail.d.ts.map +1 -0
- package/dist/src/services/google/gmail.js +24 -0
- package/dist/src/services/google/gmail.js.map +1 -0
- package/dist/src/services/google/maps.d.ts +39 -0
- package/dist/src/services/google/maps.d.ts.map +1 -0
- package/dist/src/services/google/maps.js +94 -0
- package/dist/src/services/google/maps.js.map +1 -0
- package/dist/src/services/google/people.d.ts +11 -0
- package/dist/src/services/google/people.d.ts.map +1 -0
- package/dist/src/services/google/people.js +22 -0
- package/dist/src/services/google/people.js.map +1 -0
- package/dist/src/services/google/sheets.d.ts +11 -0
- package/dist/src/services/google/sheets.d.ts.map +1 -0
- package/dist/src/services/google/sheets.js +19 -0
- package/dist/src/services/google/sheets.js.map +1 -0
- package/dist/src/services/googleAnalytics.d.ts +11 -0
- package/dist/src/services/googleAnalytics.d.ts.map +1 -0
- package/dist/src/services/googleAnalytics.js +18 -0
- package/dist/src/services/googleAnalytics.js.map +1 -0
- package/dist/src/services/googleMaps.d.ts +12 -0
- package/dist/src/services/googleMaps.d.ts.map +1 -0
- package/dist/src/services/googleMaps.js +17 -0
- package/dist/src/services/googleMaps.js.map +1 -0
- package/dist/src/services/index.d.ts +19 -2
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +19 -2
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/linear.d.ts +1 -0
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +3 -0
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/mailchimp.d.ts +2 -1
- package/dist/src/services/mailchimp.d.ts.map +1 -1
- package/dist/src/services/mailchimp.js +4 -3
- package/dist/src/services/mailchimp.js.map +1 -1
- package/dist/src/services/notion.d.ts +1 -0
- package/dist/src/services/notion.d.ts.map +1 -1
- package/dist/src/services/notion.js +3 -0
- package/dist/src/services/notion.js.map +1 -1
- package/dist/src/services/sentry.d.ts +14 -0
- package/dist/src/services/sentry.d.ts.map +1 -0
- package/dist/src/services/sentry.js +43 -0
- package/dist/src/services/sentry.js.map +1 -0
- package/dist/src/services/slack.d.ts +30 -1
- package/dist/src/services/slack.d.ts.map +1 -1
- package/dist/src/services/slack.js +45 -2
- package/dist/src/services/slack.js.map +1 -1
- package/dist/src/services/stripe.d.ts +12 -0
- package/dist/src/services/stripe.d.ts.map +1 -0
- package/dist/src/services/stripe.js +14 -0
- package/dist/src/services/stripe.js.map +1 -0
- package/dist/src/services/telegram.d.ts +40 -0
- package/dist/src/services/telegram.d.ts.map +1 -0
- package/dist/src/services/telegram.js +73 -0
- package/dist/src/services/telegram.js.map +1 -0
- package/dist/src/services/yelp.d.ts +12 -0
- package/dist/src/services/yelp.d.ts.map +1 -0
- package/dist/src/services/yelp.js +16 -0
- package/dist/src/services/yelp.js.map +1 -0
- package/dist/src/services/zoom.d.ts +12 -0
- package/dist/src/services/zoom.d.ts.map +1 -0
- package/dist/src/services/zoom.js +18 -0
- package/dist/src/services/zoom.js.map +1 -0
- package/dist/tests/apiCredentialStore.test.js +2 -19
- package/dist/tests/apiCredentialStore.test.js.map +1 -1
- package/dist/tests/apiCredentials.test.js +139 -178
- package/dist/tests/apiCredentials.test.js.map +1 -1
- package/dist/tests/cli.test.js +160 -260
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/encryptedStorage.test.js +0 -4
- package/dist/tests/encryptedStorage.test.js.map +1 -1
- package/dist/tests/encryptedStorageKeyGeneration.test.d.ts +2 -0
- package/dist/tests/encryptedStorageKeyGeneration.test.d.ts.map +1 -0
- package/dist/tests/encryptedStorageKeyGeneration.test.js +22 -0
- package/dist/tests/encryptedStorageKeyGeneration.test.js.map +1 -0
- package/dist/tests/encryption.test.js +3 -35
- package/dist/tests/encryption.test.js.map +1 -1
- package/dist/tests/migrations.test.d.ts +2 -0
- package/dist/tests/migrations.test.d.ts.map +1 -0
- package/dist/tests/migrations.test.js +164 -0
- package/dist/tests/migrations.test.js.map +1 -0
- package/dist/tests/playwrightDownload.test.js +2 -65
- package/dist/tests/playwrightDownload.test.js.map +1 -1
- package/dist/tests/registry.test.js +49 -75
- package/dist/tests/registry.test.js.map +1 -1
- package/dist/tests/servicesAgainstRecordings.test.js +1 -1
- package/dist/tests/servicesAgainstRecordings.test.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -139,6 +139,25 @@ so you can use the same interface you are used to. The return
|
|
|
139
139
|
code, stdout and stderr are passed back from curl to the caller
|
|
140
140
|
of `latchkey`.
|
|
141
141
|
|
|
142
|
+
### Indirect credentials
|
|
143
|
+
|
|
144
|
+
Some services can't express their credentials as static curl
|
|
145
|
+
arguments. For example:
|
|
146
|
+
|
|
147
|
+
- AWS requires a signature that changes with each request.
|
|
148
|
+
- Telegram expects bot tokens to be directly part of the URL.
|
|
149
|
+
|
|
150
|
+
In similar cases, when supported, you can use the `latchkey auth set-nocurl` command, e.g.
|
|
151
|
+
like this:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
latchkey auth set-nocurl telegram <bot-token>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Latchkey will then modify subsequent `latchkey curl` requests as
|
|
158
|
+
needed. You can find more information (including the expected
|
|
159
|
+
signature) by calling `latchkey services info <service_name>`.
|
|
160
|
+
|
|
142
161
|
### Remembering API credentials
|
|
143
162
|
|
|
144
163
|
Your API credentials and browser state are encrypted and stored
|
|
@@ -200,14 +219,8 @@ latchkey auth clear
|
|
|
200
219
|
You can set these environment variables to override certain
|
|
201
220
|
defaults:
|
|
202
221
|
|
|
203
|
-
- `
|
|
204
|
-
containing stored API credentials
|
|
205
|
-
- `LATCHKEY_BROWSER_STATE`: path to the (typically encrypted) file
|
|
206
|
-
containing the state (cookies, local storage, etc.) of
|
|
207
|
-
the browser used for the login popup
|
|
222
|
+
- `LATCHKEY_DIRECTORY`: path to the directory where Latchkey stores its data (defaults to `~/.latchkey`)
|
|
208
223
|
- `LATCHKEY_CURL`: path to the curl binary
|
|
209
|
-
- `LATCHKEY_CONFIG`: path to the configuration file
|
|
210
|
-
(defaults to `~/.latchkey/config.json`)
|
|
211
224
|
- `LATCHKEY_KEYRING_SERVICE_NAME`, `LATCHKEY_KEYRING_ACCOUNT_NAME`: identifiers that are used to store the encryption password in your keyring
|
|
212
225
|
- `LATCHKEY_ENCRYPTION_KEY`: override the encryption key, e.g. when a keyring is not available. Example: `export LATCHKEY_ENCRYPTION_KEY="$(openssl rand -base64 32)"`
|
|
213
226
|
- `LATCHKEY_DISABLE_BROWSER`: when set (to any non-empty value), disables the browser login flow; commands that would trigger a browser login (`auth browser`, `auth browser-prepare`) will fail with an error instead
|
|
@@ -222,3 +235,10 @@ the browser used for the login popup
|
|
|
222
235
|
- Using agents for automated access may be prohibited by some services' ToS.
|
|
223
236
|
- We reserve the right to change the license of future releases of Latchkey.
|
|
224
237
|
- Latchkey was not tested on Windows.
|
|
238
|
+
|
|
239
|
+
## Currently supported services
|
|
240
|
+
|
|
241
|
+
Latchkey currently offers varying levels of support for the
|
|
242
|
+
following services: AWS, Calendly, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
243
|
+
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
244
|
+
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Yelp, Zoom, and more.
|
|
@@ -68,10 +68,17 @@ latchkey services info slack
|
|
|
68
68
|
Returns auth options, credentials status, and developer notes
|
|
69
69
|
about the service. If `browser` is not present in the
|
|
70
70
|
`authOptions` field, the service requires the user to directly
|
|
71
|
-
set API credentials via `latchkey auth set`
|
|
72
|
-
requests.
|
|
71
|
+
set API credentials via `latchkey auth set` or `latchkey auth
|
|
72
|
+
set-nocurl` before making requests.
|
|
73
73
|
|
|
74
74
|
## Notes
|
|
75
75
|
|
|
76
76
|
- All curl arguments are passed through unchanged
|
|
77
77
|
- Return code, stdout and stderr are passed back from curl
|
|
78
|
+
|
|
79
|
+
## Currently supported services
|
|
80
|
+
|
|
81
|
+
Latchkey currently offers varying levels of support for the
|
|
82
|
+
following services: AWS, Calendly, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
83
|
+
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
84
|
+
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Yelp, Zoom, and more.
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API credential store for persisting and loading API credentials.
|
|
3
3
|
*/
|
|
4
|
-
import { ApiCredentials } from './apiCredentials.js';
|
|
4
|
+
import type { ApiCredentials } from './apiCredentials.js';
|
|
5
5
|
import { EncryptedStorage } from './encryptedStorage.js';
|
|
6
6
|
export declare class ApiCredentialStoreError extends Error {
|
|
7
7
|
constructor(message: string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCredentialStore.d.ts","sourceRoot":"","sources":["../../src/apiCredentialStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"apiCredentialStore.d.ts","sourceRoot":"","sources":["../../src/apiCredentialStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAID,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAExC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB;IAK5D,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,aAAa;IAUrB,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAiB/C,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,IAAI;IAM/D,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAe7C,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;CASrC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API credential store for persisting and loading API credentials.
|
|
3
3
|
*/
|
|
4
|
-
import { ApiCredentialsSchema, deserializeCredentials, serializeCredentials, } from './
|
|
4
|
+
import { ApiCredentialsSchema, deserializeCredentials, serializeCredentials, } from './apiCredentialsSerialization.js';
|
|
5
5
|
export class ApiCredentialStoreError extends Error {
|
|
6
6
|
constructor(message) {
|
|
7
7
|
super(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCredentialStore.js","sourceRoot":"","sources":["../../src/apiCredentialStore.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"apiCredentialStore.js","sourceRoot":"","sources":["../../src/apiCredentialStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Base API credentials types and generic credential implementations.
|
|
4
3
|
*/
|
|
5
4
|
import { z } from 'zod';
|
|
6
5
|
export declare enum ApiCredentialStatus {
|
|
@@ -10,11 +9,15 @@ export declare enum ApiCredentialStatus {
|
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
11
|
* Base interface for all API credentials.
|
|
13
|
-
* Each credential type must specify how to
|
|
12
|
+
* Each credential type must specify how to inject itself into a curl call.
|
|
14
13
|
*/
|
|
15
14
|
export interface ApiCredentials {
|
|
16
15
|
readonly objectType: string;
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Inject credentials into a curl call by modifying the given arguments array.
|
|
18
|
+
* Implementations may add headers, change the URL, or transform arguments in any way.
|
|
19
|
+
*/
|
|
20
|
+
injectIntoCurlCall(curlArguments: readonly string[]): readonly string[];
|
|
18
21
|
/**
|
|
19
22
|
* Check if the credentials are expired.
|
|
20
23
|
* Returns true if expired, false if valid, or undefined if expiration is unknown.
|
|
@@ -39,7 +42,7 @@ export declare class AuthorizationBearer implements ApiCredentials {
|
|
|
39
42
|
readonly objectType: "authorizationBearer";
|
|
40
43
|
readonly token: string;
|
|
41
44
|
constructor(token: string);
|
|
42
|
-
|
|
45
|
+
injectIntoCurlCall(curlArguments: readonly string[]): readonly string[];
|
|
43
46
|
isExpired(): boolean | undefined;
|
|
44
47
|
toJSON(): AuthorizationBearerData;
|
|
45
48
|
static fromJSON(data: AuthorizationBearerData): AuthorizationBearer;
|
|
@@ -62,38 +65,11 @@ export declare class AuthorizationBare implements ApiCredentials {
|
|
|
62
65
|
readonly objectType: "authorizationBare";
|
|
63
66
|
readonly token: string;
|
|
64
67
|
constructor(token: string);
|
|
65
|
-
|
|
68
|
+
injectIntoCurlCall(curlArguments: readonly string[]): readonly string[];
|
|
66
69
|
isExpired(): boolean | undefined;
|
|
67
70
|
toJSON(): AuthorizationBareData;
|
|
68
71
|
static fromJSON(data: AuthorizationBareData): AuthorizationBare;
|
|
69
72
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Slack-specific credentials (token + d cookie).
|
|
72
|
-
*/
|
|
73
|
-
export declare const SlackApiCredentialsSchema: z.ZodObject<{
|
|
74
|
-
objectType: z.ZodLiteral<"slack">;
|
|
75
|
-
token: z.ZodString;
|
|
76
|
-
dCookie: z.ZodString;
|
|
77
|
-
}, "strip", z.ZodTypeAny, {
|
|
78
|
-
objectType: "slack";
|
|
79
|
-
token: string;
|
|
80
|
-
dCookie: string;
|
|
81
|
-
}, {
|
|
82
|
-
objectType: "slack";
|
|
83
|
-
token: string;
|
|
84
|
-
dCookie: string;
|
|
85
|
-
}>;
|
|
86
|
-
export type SlackApiCredentialsData = z.infer<typeof SlackApiCredentialsSchema>;
|
|
87
|
-
export declare class SlackApiCredentials implements ApiCredentials {
|
|
88
|
-
readonly objectType: "slack";
|
|
89
|
-
readonly token: string;
|
|
90
|
-
readonly dCookie: string;
|
|
91
|
-
constructor(token: string, dCookie: string);
|
|
92
|
-
asCurlArguments(): readonly string[];
|
|
93
|
-
isExpired(): boolean | undefined;
|
|
94
|
-
toJSON(): SlackApiCredentialsData;
|
|
95
|
-
static fromJSON(data: SlackApiCredentialsData): SlackApiCredentials;
|
|
96
|
-
}
|
|
97
73
|
/**
|
|
98
74
|
* Raw curl arguments stored directly as credentials.
|
|
99
75
|
* Allows users to manually set arbitrary curl arguments for a service.
|
|
@@ -113,7 +89,7 @@ export declare class RawCurlCredentials implements ApiCredentials {
|
|
|
113
89
|
readonly objectType: "rawCurl";
|
|
114
90
|
readonly curlArguments: readonly string[];
|
|
115
91
|
constructor(curlArguments: readonly string[]);
|
|
116
|
-
|
|
92
|
+
injectIntoCurlCall(curlArguments: readonly string[]): readonly string[];
|
|
117
93
|
isExpired(): boolean | undefined;
|
|
118
94
|
toJSON(): RawCurlCredentialsData;
|
|
119
95
|
static fromJSON(data: RawCurlCredentialsData): RawCurlCredentials;
|
|
@@ -159,7 +135,7 @@ export declare class OAuthCredentials implements ApiCredentials {
|
|
|
159
135
|
readonly accessTokenExpiresAt?: string;
|
|
160
136
|
readonly refreshTokenExpiresAt?: string;
|
|
161
137
|
constructor(clientId: string, clientSecret: string, accessToken?: string, refreshToken?: string, accessTokenExpiresAt?: string, refreshTokenExpiresAt?: string);
|
|
162
|
-
|
|
138
|
+
injectIntoCurlCall(curlArguments: readonly string[]): readonly string[];
|
|
163
139
|
isExpired(): boolean | undefined;
|
|
164
140
|
toJSON(): OAuthCredentialsData;
|
|
165
141
|
static fromJSON(data: OAuthCredentialsData): OAuthCredentials;
|
|
@@ -167,83 +143,4 @@ export declare class OAuthCredentials implements ApiCredentials {
|
|
|
167
143
|
export declare class ApiCredentialsUsageError extends Error {
|
|
168
144
|
constructor(message: string);
|
|
169
145
|
}
|
|
170
|
-
/**
|
|
171
|
-
* Union schema for all credential types.
|
|
172
|
-
*/
|
|
173
|
-
export declare const ApiCredentialsSchema: z.ZodDiscriminatedUnion<"objectType", [z.ZodObject<{
|
|
174
|
-
objectType: z.ZodLiteral<"authorizationBearer">;
|
|
175
|
-
token: z.ZodString;
|
|
176
|
-
}, "strip", z.ZodTypeAny, {
|
|
177
|
-
objectType: "authorizationBearer";
|
|
178
|
-
token: string;
|
|
179
|
-
}, {
|
|
180
|
-
objectType: "authorizationBearer";
|
|
181
|
-
token: string;
|
|
182
|
-
}>, z.ZodObject<{
|
|
183
|
-
objectType: z.ZodLiteral<"authorizationBare">;
|
|
184
|
-
token: z.ZodString;
|
|
185
|
-
}, "strip", z.ZodTypeAny, {
|
|
186
|
-
objectType: "authorizationBare";
|
|
187
|
-
token: string;
|
|
188
|
-
}, {
|
|
189
|
-
objectType: "authorizationBare";
|
|
190
|
-
token: string;
|
|
191
|
-
}>, z.ZodObject<{
|
|
192
|
-
objectType: z.ZodLiteral<"slack">;
|
|
193
|
-
token: z.ZodString;
|
|
194
|
-
dCookie: z.ZodString;
|
|
195
|
-
}, "strip", z.ZodTypeAny, {
|
|
196
|
-
objectType: "slack";
|
|
197
|
-
token: string;
|
|
198
|
-
dCookie: string;
|
|
199
|
-
}, {
|
|
200
|
-
objectType: "slack";
|
|
201
|
-
token: string;
|
|
202
|
-
dCookie: string;
|
|
203
|
-
}>, z.ZodObject<{
|
|
204
|
-
objectType: z.ZodLiteral<"oauth">;
|
|
205
|
-
accessToken: z.ZodOptional<z.ZodString>;
|
|
206
|
-
refreshToken: z.ZodOptional<z.ZodString>;
|
|
207
|
-
clientId: z.ZodString;
|
|
208
|
-
clientSecret: z.ZodString;
|
|
209
|
-
accessTokenExpiresAt: z.ZodOptional<z.ZodString>;
|
|
210
|
-
refreshTokenExpiresAt: z.ZodOptional<z.ZodString>;
|
|
211
|
-
}, "strip", z.ZodTypeAny, {
|
|
212
|
-
objectType: "oauth";
|
|
213
|
-
clientId: string;
|
|
214
|
-
clientSecret: string;
|
|
215
|
-
accessToken?: string | undefined;
|
|
216
|
-
refreshToken?: string | undefined;
|
|
217
|
-
accessTokenExpiresAt?: string | undefined;
|
|
218
|
-
refreshTokenExpiresAt?: string | undefined;
|
|
219
|
-
}, {
|
|
220
|
-
objectType: "oauth";
|
|
221
|
-
clientId: string;
|
|
222
|
-
clientSecret: string;
|
|
223
|
-
accessToken?: string | undefined;
|
|
224
|
-
refreshToken?: string | undefined;
|
|
225
|
-
accessTokenExpiresAt?: string | undefined;
|
|
226
|
-
refreshTokenExpiresAt?: string | undefined;
|
|
227
|
-
}>, z.ZodObject<{
|
|
228
|
-
objectType: z.ZodLiteral<"rawCurl">;
|
|
229
|
-
curlArguments: z.ZodArray<z.ZodString, "many">;
|
|
230
|
-
}, "strip", z.ZodTypeAny, {
|
|
231
|
-
objectType: "rawCurl";
|
|
232
|
-
curlArguments: string[];
|
|
233
|
-
}, {
|
|
234
|
-
objectType: "rawCurl";
|
|
235
|
-
curlArguments: string[];
|
|
236
|
-
}>]>;
|
|
237
|
-
export type ApiCredentialsData = z.infer<typeof ApiCredentialsSchema>;
|
|
238
|
-
/**
|
|
239
|
-
* Deserialize credentials from JSON data.
|
|
240
|
-
*/
|
|
241
|
-
export declare function deserializeCredentials(data: ApiCredentialsData): ApiCredentials;
|
|
242
|
-
/**
|
|
243
|
-
* Serialize credentials to JSON data.
|
|
244
|
-
*/
|
|
245
|
-
export declare function serializeCredentials(credentials: ApiCredentials): ApiCredentialsData;
|
|
246
|
-
export declare class ApiCredentialsSerializationError extends Error {
|
|
247
|
-
constructor(message: string);
|
|
248
|
-
}
|
|
249
146
|
//# sourceMappingURL=apiCredentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCredentials.d.ts","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apiCredentials.d.ts","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Base API credentials types and generic credential implementations.
|
|
4
3
|
*/
|
|
5
4
|
import { z } from 'zod';
|
|
6
5
|
export var ApiCredentialStatus;
|
|
@@ -22,8 +21,8 @@ export class AuthorizationBearer {
|
|
|
22
21
|
constructor(token) {
|
|
23
22
|
this.token = token;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
return ['-H', `Authorization: Bearer ${this.token}
|
|
24
|
+
injectIntoCurlCall(curlArguments) {
|
|
25
|
+
return ['-H', `Authorization: Bearer ${this.token}`, ...curlArguments];
|
|
27
26
|
}
|
|
28
27
|
isExpired() {
|
|
29
28
|
return undefined;
|
|
@@ -51,8 +50,8 @@ export class AuthorizationBare {
|
|
|
51
50
|
constructor(token) {
|
|
52
51
|
this.token = token;
|
|
53
52
|
}
|
|
54
|
-
|
|
55
|
-
return ['-H', `Authorization: ${this.token}
|
|
53
|
+
injectIntoCurlCall(curlArguments) {
|
|
54
|
+
return ['-H', `Authorization: ${this.token}`, ...curlArguments];
|
|
56
55
|
}
|
|
57
56
|
isExpired() {
|
|
58
57
|
return undefined;
|
|
@@ -67,39 +66,6 @@ export class AuthorizationBare {
|
|
|
67
66
|
return new AuthorizationBare(data.token);
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Slack-specific credentials (token + d cookie).
|
|
72
|
-
*/
|
|
73
|
-
export const SlackApiCredentialsSchema = z.object({
|
|
74
|
-
objectType: z.literal('slack'),
|
|
75
|
-
token: z.string(),
|
|
76
|
-
dCookie: z.string(),
|
|
77
|
-
});
|
|
78
|
-
export class SlackApiCredentials {
|
|
79
|
-
objectType = 'slack';
|
|
80
|
-
token;
|
|
81
|
-
dCookie;
|
|
82
|
-
constructor(token, dCookie) {
|
|
83
|
-
this.token = token;
|
|
84
|
-
this.dCookie = dCookie;
|
|
85
|
-
}
|
|
86
|
-
asCurlArguments() {
|
|
87
|
-
return ['-H', `Authorization: Bearer ${this.token}`, '-H', `Cookie: d=${this.dCookie}`];
|
|
88
|
-
}
|
|
89
|
-
isExpired() {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
toJSON() {
|
|
93
|
-
return {
|
|
94
|
-
objectType: this.objectType,
|
|
95
|
-
token: this.token,
|
|
96
|
-
dCookie: this.dCookie,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
static fromJSON(data) {
|
|
100
|
-
return new SlackApiCredentials(data.token, data.dCookie);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
69
|
/**
|
|
104
70
|
* Raw curl arguments stored directly as credentials.
|
|
105
71
|
* Allows users to manually set arbitrary curl arguments for a service.
|
|
@@ -114,8 +80,8 @@ export class RawCurlCredentials {
|
|
|
114
80
|
constructor(curlArguments) {
|
|
115
81
|
this.curlArguments = curlArguments;
|
|
116
82
|
}
|
|
117
|
-
|
|
118
|
-
return this.curlArguments;
|
|
83
|
+
injectIntoCurlCall(curlArguments) {
|
|
84
|
+
return [...this.curlArguments, ...curlArguments];
|
|
119
85
|
}
|
|
120
86
|
isExpired() {
|
|
121
87
|
return undefined;
|
|
@@ -161,11 +127,11 @@ export class OAuthCredentials {
|
|
|
161
127
|
this.accessTokenExpiresAt = accessTokenExpiresAt;
|
|
162
128
|
this.refreshTokenExpiresAt = refreshTokenExpiresAt;
|
|
163
129
|
}
|
|
164
|
-
|
|
130
|
+
injectIntoCurlCall(curlArguments) {
|
|
165
131
|
if (this.accessToken === undefined) {
|
|
166
132
|
throw new ApiCredentialsUsageError('OAuth credentials missing access token. Run login to obtain access tokens.');
|
|
167
133
|
}
|
|
168
|
-
return ['-H', `Authorization: Bearer ${this.accessToken}
|
|
134
|
+
return ['-H', `Authorization: Bearer ${this.accessToken}`, ...curlArguments];
|
|
169
135
|
}
|
|
170
136
|
isExpired() {
|
|
171
137
|
if (this.accessTokenExpiresAt === undefined) {
|
|
@@ -196,62 +162,4 @@ export class ApiCredentialsUsageError extends Error {
|
|
|
196
162
|
this.name = 'ApiCredentialsUsageError';
|
|
197
163
|
}
|
|
198
164
|
}
|
|
199
|
-
/**
|
|
200
|
-
* Union schema for all credential types.
|
|
201
|
-
*/
|
|
202
|
-
export const ApiCredentialsSchema = z.discriminatedUnion('objectType', [
|
|
203
|
-
AuthorizationBearerSchema,
|
|
204
|
-
AuthorizationBareSchema,
|
|
205
|
-
SlackApiCredentialsSchema,
|
|
206
|
-
OAuthCredentialsSchema,
|
|
207
|
-
RawCurlCredentialsSchema,
|
|
208
|
-
]);
|
|
209
|
-
/**
|
|
210
|
-
* Deserialize credentials from JSON data.
|
|
211
|
-
*/
|
|
212
|
-
export function deserializeCredentials(data) {
|
|
213
|
-
switch (data.objectType) {
|
|
214
|
-
case 'authorizationBearer':
|
|
215
|
-
return AuthorizationBearer.fromJSON(data);
|
|
216
|
-
case 'authorizationBare':
|
|
217
|
-
return AuthorizationBare.fromJSON(data);
|
|
218
|
-
case 'slack':
|
|
219
|
-
return SlackApiCredentials.fromJSON(data);
|
|
220
|
-
case 'oauth':
|
|
221
|
-
return OAuthCredentials.fromJSON(data);
|
|
222
|
-
case 'rawCurl':
|
|
223
|
-
return RawCurlCredentials.fromJSON(data);
|
|
224
|
-
default: {
|
|
225
|
-
const exhaustiveCheck = data;
|
|
226
|
-
throw new ApiCredentialsSerializationError(`Unknown credential type: ${exhaustiveCheck.objectType}`);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Serialize credentials to JSON data.
|
|
232
|
-
*/
|
|
233
|
-
export function serializeCredentials(credentials) {
|
|
234
|
-
if (credentials instanceof AuthorizationBearer) {
|
|
235
|
-
return credentials.toJSON();
|
|
236
|
-
}
|
|
237
|
-
if (credentials instanceof AuthorizationBare) {
|
|
238
|
-
return credentials.toJSON();
|
|
239
|
-
}
|
|
240
|
-
if (credentials instanceof SlackApiCredentials) {
|
|
241
|
-
return credentials.toJSON();
|
|
242
|
-
}
|
|
243
|
-
if (credentials instanceof OAuthCredentials) {
|
|
244
|
-
return credentials.toJSON();
|
|
245
|
-
}
|
|
246
|
-
if (credentials instanceof RawCurlCredentials) {
|
|
247
|
-
return credentials.toJSON();
|
|
248
|
-
}
|
|
249
|
-
throw new ApiCredentialsSerializationError(`Unknown credential type: ${credentials.objectType}`);
|
|
250
|
-
}
|
|
251
|
-
export class ApiCredentialsSerializationError extends Error {
|
|
252
|
-
constructor(message) {
|
|
253
|
-
super(message);
|
|
254
|
-
this.name = 'ApiCredentialsSerializationError';
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
165
|
//# sourceMappingURL=apiCredentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCredentials.js","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apiCredentials.js","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialization and deserialization of API credentials.
|
|
3
|
+
*
|
|
4
|
+
* This module is separate from apiCredentials.ts to avoid circular dependencies:
|
|
5
|
+
* service files import base types from apiCredentials.ts, and this module imports
|
|
6
|
+
* from both apiCredentials.ts and service files.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { type ApiCredentials } from './apiCredentials.js';
|
|
10
|
+
/**
|
|
11
|
+
* Union schema for all credential types.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ApiCredentialsSchema: z.ZodDiscriminatedUnion<"objectType", [z.ZodObject<{
|
|
14
|
+
objectType: z.ZodLiteral<"authorizationBearer">;
|
|
15
|
+
token: z.ZodString;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
objectType: "authorizationBearer";
|
|
18
|
+
token: string;
|
|
19
|
+
}, {
|
|
20
|
+
objectType: "authorizationBearer";
|
|
21
|
+
token: string;
|
|
22
|
+
}>, z.ZodObject<{
|
|
23
|
+
objectType: z.ZodLiteral<"authorizationBare">;
|
|
24
|
+
token: z.ZodString;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
objectType: "authorizationBare";
|
|
27
|
+
token: string;
|
|
28
|
+
}, {
|
|
29
|
+
objectType: "authorizationBare";
|
|
30
|
+
token: string;
|
|
31
|
+
}>, z.ZodObject<{
|
|
32
|
+
objectType: z.ZodLiteral<"slack">;
|
|
33
|
+
token: z.ZodString;
|
|
34
|
+
dCookie: z.ZodString;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
objectType: "slack";
|
|
37
|
+
token: string;
|
|
38
|
+
dCookie: string;
|
|
39
|
+
}, {
|
|
40
|
+
objectType: "slack";
|
|
41
|
+
token: string;
|
|
42
|
+
dCookie: string;
|
|
43
|
+
}>, z.ZodObject<{
|
|
44
|
+
objectType: z.ZodLiteral<"oauth">;
|
|
45
|
+
accessToken: z.ZodOptional<z.ZodString>;
|
|
46
|
+
refreshToken: z.ZodOptional<z.ZodString>;
|
|
47
|
+
clientId: z.ZodString;
|
|
48
|
+
clientSecret: z.ZodString;
|
|
49
|
+
accessTokenExpiresAt: z.ZodOptional<z.ZodString>;
|
|
50
|
+
refreshTokenExpiresAt: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
objectType: "oauth";
|
|
53
|
+
clientId: string;
|
|
54
|
+
clientSecret: string;
|
|
55
|
+
accessToken?: string | undefined;
|
|
56
|
+
refreshToken?: string | undefined;
|
|
57
|
+
accessTokenExpiresAt?: string | undefined;
|
|
58
|
+
refreshTokenExpiresAt?: string | undefined;
|
|
59
|
+
}, {
|
|
60
|
+
objectType: "oauth";
|
|
61
|
+
clientId: string;
|
|
62
|
+
clientSecret: string;
|
|
63
|
+
accessToken?: string | undefined;
|
|
64
|
+
refreshToken?: string | undefined;
|
|
65
|
+
accessTokenExpiresAt?: string | undefined;
|
|
66
|
+
refreshTokenExpiresAt?: string | undefined;
|
|
67
|
+
}>, z.ZodObject<{
|
|
68
|
+
objectType: z.ZodLiteral<"rawCurl">;
|
|
69
|
+
curlArguments: z.ZodArray<z.ZodString, "many">;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
objectType: "rawCurl";
|
|
72
|
+
curlArguments: string[];
|
|
73
|
+
}, {
|
|
74
|
+
objectType: "rawCurl";
|
|
75
|
+
curlArguments: string[];
|
|
76
|
+
}>, z.ZodObject<{
|
|
77
|
+
objectType: z.ZodLiteral<"telegramBot">;
|
|
78
|
+
token: z.ZodString;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
objectType: "telegramBot";
|
|
81
|
+
token: string;
|
|
82
|
+
}, {
|
|
83
|
+
objectType: "telegramBot";
|
|
84
|
+
token: string;
|
|
85
|
+
}>, z.ZodObject<{
|
|
86
|
+
objectType: z.ZodLiteral<"aws">;
|
|
87
|
+
accessKeyId: z.ZodString;
|
|
88
|
+
secretAccessKey: z.ZodString;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
objectType: "aws";
|
|
91
|
+
accessKeyId: string;
|
|
92
|
+
secretAccessKey: string;
|
|
93
|
+
}, {
|
|
94
|
+
objectType: "aws";
|
|
95
|
+
accessKeyId: string;
|
|
96
|
+
secretAccessKey: string;
|
|
97
|
+
}>, z.ZodObject<{
|
|
98
|
+
objectType: z.ZodLiteral<"googleApiKey">;
|
|
99
|
+
apiKey: z.ZodString;
|
|
100
|
+
}, "strip", z.ZodTypeAny, {
|
|
101
|
+
objectType: "googleApiKey";
|
|
102
|
+
apiKey: string;
|
|
103
|
+
}, {
|
|
104
|
+
objectType: "googleApiKey";
|
|
105
|
+
apiKey: string;
|
|
106
|
+
}>]>;
|
|
107
|
+
export type ApiCredentialsData = z.infer<typeof ApiCredentialsSchema>;
|
|
108
|
+
/**
|
|
109
|
+
* Deserialize credentials from JSON data.
|
|
110
|
+
*/
|
|
111
|
+
export declare function deserializeCredentials(data: ApiCredentialsData): ApiCredentials;
|
|
112
|
+
/**
|
|
113
|
+
* Serialize credentials to JSON data.
|
|
114
|
+
*/
|
|
115
|
+
export declare function serializeCredentials(credentials: ApiCredentials): ApiCredentialsData;
|
|
116
|
+
export declare class ApiCredentialsSerializationError extends Error {
|
|
117
|
+
constructor(message: string);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=apiCredentialsSerialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiCredentialsSerialization.d.ts","sourceRoot":"","sources":["../../src/apiCredentialsSerialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,KAAK,cAAc,EASpB,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAS/B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEtE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAyB/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,cAAc,GAAG,kBAAkB,CA0BpF;AAED,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,OAAO,EAAE,MAAM;CAI5B"}
|