latchkey 0.1.4 → 1.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/LICENSE +1 -1
- package/README.md +93 -56
- package/dist/integrations/SKILL.md +77 -0
- package/dist/package.json +67 -0
- package/dist/scripts/encryptFile.d.ts +21 -0
- package/dist/scripts/encryptFile.d.ts.map +1 -0
- package/dist/scripts/encryptFile.js +101 -0
- package/dist/scripts/encryptFile.js.map +1 -0
- package/dist/src/apiCredentialStore.d.ts +1 -0
- package/dist/src/apiCredentialStore.d.ts.map +1 -1
- package/dist/src/apiCredentialStore.js +12 -0
- package/dist/src/apiCredentialStore.js.map +1 -1
- package/dist/src/apiCredentials.d.ts +116 -1
- package/dist/src/apiCredentials.d.ts.map +1 -1
- package/dist/src/apiCredentials.js +119 -1
- package/dist/src/apiCredentials.js.map +1 -1
- package/dist/src/browserState.d.ts +8 -0
- package/dist/src/browserState.d.ts.map +1 -0
- package/dist/src/browserState.js +21 -0
- package/dist/src/browserState.js.map +1 -0
- package/dist/src/cli.js +5 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/cliCommands.d.ts.map +1 -1
- package/dist/src/cliCommands.js +218 -81
- package/dist/src/cliCommands.js.map +1 -1
- package/dist/src/config.d.ts +13 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +50 -4
- package/dist/src/config.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/oauthUtils.d.ts +49 -0
- package/dist/src/oauthUtils.d.ts.map +1 -0
- package/dist/src/oauthUtils.js +183 -0
- package/dist/src/oauthUtils.js.map +1 -0
- package/dist/src/playwrightUtils.d.ts +14 -1
- package/dist/src/playwrightUtils.d.ts.map +1 -1
- package/dist/src/playwrightUtils.js +37 -8
- package/dist/src/playwrightUtils.js.map +1 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +20 -4
- package/dist/src/registry.js.map +1 -1
- package/dist/src/services/base.d.ts +43 -15
- package/dist/src/services/base.d.ts.map +1 -1
- package/dist/src/services/base.js +49 -9
- package/dist/src/services/base.js.map +1 -1
- package/dist/src/services/discord.d.ts +4 -3
- package/dist/src/services/discord.d.ts.map +1 -1
- package/dist/src/services/discord.js +6 -22
- package/dist/src/services/discord.js.map +1 -1
- package/dist/src/services/dropbox.d.ts +5 -4
- package/dist/src/services/dropbox.d.ts.map +1 -1
- package/dist/src/services/dropbox.js +10 -27
- package/dist/src/services/dropbox.js.map +1 -1
- package/dist/src/services/github.d.ts +5 -4
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +21 -30
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/google.d.ts +34 -0
- package/dist/src/services/google.d.ts.map +1 -0
- package/dist/src/services/google.js +336 -0
- package/dist/src/services/google.js.map +1 -0
- package/dist/src/services/index.d.ts +4 -2
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +4 -1
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/linear.d.ts +5 -4
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +10 -29
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/mailchimp.d.ts +11 -0
- package/dist/src/services/mailchimp.d.ts.map +1 -0
- package/dist/src/services/mailchimp.js +16 -0
- package/dist/src/services/mailchimp.js.map +1 -0
- package/dist/src/services/notion.d.ts +29 -0
- package/dist/src/services/notion.d.ts.map +1 -0
- package/dist/src/services/notion.js +102 -0
- package/dist/src/services/notion.js.map +1 -0
- package/dist/src/services/slack.d.ts +3 -1
- package/dist/src/services/slack.d.ts.map +1 -1
- package/dist/src/services/slack.js +5 -5
- package/dist/src/services/slack.js.map +1 -1
- package/dist/src/skillMd.d.ts +2 -0
- package/dist/src/skillMd.d.ts.map +1 -0
- package/dist/src/skillMd.js +19 -0
- package/dist/src/skillMd.js.map +1 -0
- package/dist/tests/apiCredentials.test.js +59 -1
- package/dist/tests/apiCredentials.test.js.map +1 -1
- package/dist/tests/cli.test.js +283 -104
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/playwrightDownload.test.js +2 -2
- package/dist/tests/playwrightDownload.test.js.map +1 -1
- package/dist/tests/registry.test.js +28 -3
- package/dist/tests/registry.test.js.map +1 -1
- package/dist/tests/servicesAgainstRecordings.test.js +3 -0
- package/dist/tests/servicesAgainstRecordings.test.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* API credentials types and utilities
|
|
2
|
+
* Serialized API credentials types and utilities.
|
|
3
|
+
*
|
|
3
4
|
*/
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
export declare enum ApiCredentialStatus {
|
|
@@ -14,6 +15,11 @@ export declare enum ApiCredentialStatus {
|
|
|
14
15
|
export interface ApiCredentials {
|
|
15
16
|
readonly objectType: string;
|
|
16
17
|
asCurlArguments(): readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* Check if the credentials are expired.
|
|
20
|
+
* Returns true if expired, false if valid, or undefined if expiration is unknown.
|
|
21
|
+
*/
|
|
22
|
+
isExpired(): boolean | undefined;
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Bearer token authentication (Authorization: Bearer <token>).
|
|
@@ -34,6 +40,7 @@ export declare class AuthorizationBearer implements ApiCredentials {
|
|
|
34
40
|
readonly token: string;
|
|
35
41
|
constructor(token: string);
|
|
36
42
|
asCurlArguments(): readonly string[];
|
|
43
|
+
isExpired(): boolean | undefined;
|
|
37
44
|
toJSON(): AuthorizationBearerData;
|
|
38
45
|
static fromJSON(data: AuthorizationBearerData): AuthorizationBearer;
|
|
39
46
|
}
|
|
@@ -56,6 +63,7 @@ export declare class AuthorizationBare implements ApiCredentials {
|
|
|
56
63
|
readonly token: string;
|
|
57
64
|
constructor(token: string);
|
|
58
65
|
asCurlArguments(): readonly string[];
|
|
66
|
+
isExpired(): boolean | undefined;
|
|
59
67
|
toJSON(): AuthorizationBareData;
|
|
60
68
|
static fromJSON(data: AuthorizationBareData): AuthorizationBare;
|
|
61
69
|
}
|
|
@@ -82,9 +90,83 @@ export declare class SlackApiCredentials implements ApiCredentials {
|
|
|
82
90
|
readonly dCookie: string;
|
|
83
91
|
constructor(token: string, dCookie: string);
|
|
84
92
|
asCurlArguments(): readonly string[];
|
|
93
|
+
isExpired(): boolean | undefined;
|
|
85
94
|
toJSON(): SlackApiCredentialsData;
|
|
86
95
|
static fromJSON(data: SlackApiCredentialsData): SlackApiCredentials;
|
|
87
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Raw curl arguments stored directly as credentials.
|
|
99
|
+
* Allows users to manually set arbitrary curl arguments for a service.
|
|
100
|
+
*/
|
|
101
|
+
export declare const RawCurlCredentialsSchema: z.ZodObject<{
|
|
102
|
+
objectType: z.ZodLiteral<"rawCurl">;
|
|
103
|
+
curlArguments: z.ZodArray<z.ZodString, "many">;
|
|
104
|
+
}, "strip", z.ZodTypeAny, {
|
|
105
|
+
objectType: "rawCurl";
|
|
106
|
+
curlArguments: string[];
|
|
107
|
+
}, {
|
|
108
|
+
objectType: "rawCurl";
|
|
109
|
+
curlArguments: string[];
|
|
110
|
+
}>;
|
|
111
|
+
export type RawCurlCredentialsData = z.infer<typeof RawCurlCredentialsSchema>;
|
|
112
|
+
export declare class RawCurlCredentials implements ApiCredentials {
|
|
113
|
+
readonly objectType: "rawCurl";
|
|
114
|
+
readonly curlArguments: readonly string[];
|
|
115
|
+
constructor(curlArguments: readonly string[]);
|
|
116
|
+
asCurlArguments(): readonly string[];
|
|
117
|
+
isExpired(): boolean | undefined;
|
|
118
|
+
toJSON(): RawCurlCredentialsData;
|
|
119
|
+
static fromJSON(data: RawCurlCredentialsData): RawCurlCredentials;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* OAuth 2.0 credentials (access token, refresh token, client ID, and client secret).
|
|
123
|
+
* Used by services that implement OAuth 2.0 authorization flows.
|
|
124
|
+
* Token attributes are optional - when only clientId and clientSecret are present,
|
|
125
|
+
* this represents credentials from the prepare() step before obtaining user tokens.
|
|
126
|
+
*/
|
|
127
|
+
export declare const OAuthCredentialsSchema: z.ZodObject<{
|
|
128
|
+
objectType: z.ZodLiteral<"oauth">;
|
|
129
|
+
accessToken: z.ZodOptional<z.ZodString>;
|
|
130
|
+
refreshToken: z.ZodOptional<z.ZodString>;
|
|
131
|
+
clientId: z.ZodString;
|
|
132
|
+
clientSecret: z.ZodString;
|
|
133
|
+
accessTokenExpiresAt: z.ZodOptional<z.ZodString>;
|
|
134
|
+
refreshTokenExpiresAt: z.ZodOptional<z.ZodString>;
|
|
135
|
+
}, "strip", z.ZodTypeAny, {
|
|
136
|
+
objectType: "oauth";
|
|
137
|
+
clientId: string;
|
|
138
|
+
clientSecret: string;
|
|
139
|
+
accessToken?: string | undefined;
|
|
140
|
+
refreshToken?: string | undefined;
|
|
141
|
+
accessTokenExpiresAt?: string | undefined;
|
|
142
|
+
refreshTokenExpiresAt?: string | undefined;
|
|
143
|
+
}, {
|
|
144
|
+
objectType: "oauth";
|
|
145
|
+
clientId: string;
|
|
146
|
+
clientSecret: string;
|
|
147
|
+
accessToken?: string | undefined;
|
|
148
|
+
refreshToken?: string | undefined;
|
|
149
|
+
accessTokenExpiresAt?: string | undefined;
|
|
150
|
+
refreshTokenExpiresAt?: string | undefined;
|
|
151
|
+
}>;
|
|
152
|
+
export type OAuthCredentialsData = z.infer<typeof OAuthCredentialsSchema>;
|
|
153
|
+
export declare class OAuthCredentials implements ApiCredentials {
|
|
154
|
+
readonly objectType: "oauth";
|
|
155
|
+
readonly accessToken?: string;
|
|
156
|
+
readonly refreshToken?: string;
|
|
157
|
+
readonly clientId: string;
|
|
158
|
+
readonly clientSecret: string;
|
|
159
|
+
readonly accessTokenExpiresAt?: string;
|
|
160
|
+
readonly refreshTokenExpiresAt?: string;
|
|
161
|
+
constructor(clientId: string, clientSecret: string, accessToken?: string, refreshToken?: string, accessTokenExpiresAt?: string, refreshTokenExpiresAt?: string);
|
|
162
|
+
asCurlArguments(): readonly string[];
|
|
163
|
+
isExpired(): boolean | undefined;
|
|
164
|
+
toJSON(): OAuthCredentialsData;
|
|
165
|
+
static fromJSON(data: OAuthCredentialsData): OAuthCredentials;
|
|
166
|
+
}
|
|
167
|
+
export declare class ApiCredentialsUsageError extends Error {
|
|
168
|
+
constructor(message: string);
|
|
169
|
+
}
|
|
88
170
|
/**
|
|
89
171
|
* Union schema for all credential types.
|
|
90
172
|
*/
|
|
@@ -118,6 +200,39 @@ export declare const ApiCredentialsSchema: z.ZodDiscriminatedUnion<"objectType",
|
|
|
118
200
|
objectType: "slack";
|
|
119
201
|
token: string;
|
|
120
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[];
|
|
121
236
|
}>]>;
|
|
122
237
|
export type ApiCredentialsData = z.infer<typeof ApiCredentialsSchema>;
|
|
123
238
|
/**
|
|
@@ -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,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* API credentials types and utilities
|
|
2
|
+
* Serialized API credentials types and utilities.
|
|
3
|
+
*
|
|
3
4
|
*/
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
export var ApiCredentialStatus;
|
|
@@ -24,6 +25,9 @@ export class AuthorizationBearer {
|
|
|
24
25
|
asCurlArguments() {
|
|
25
26
|
return ['-H', `Authorization: Bearer ${this.token}`];
|
|
26
27
|
}
|
|
28
|
+
isExpired() {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
27
31
|
toJSON() {
|
|
28
32
|
return {
|
|
29
33
|
objectType: this.objectType,
|
|
@@ -50,6 +54,9 @@ export class AuthorizationBare {
|
|
|
50
54
|
asCurlArguments() {
|
|
51
55
|
return ['-H', `Authorization: ${this.token}`];
|
|
52
56
|
}
|
|
57
|
+
isExpired() {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
53
60
|
toJSON() {
|
|
54
61
|
return {
|
|
55
62
|
objectType: this.objectType,
|
|
@@ -79,6 +86,9 @@ export class SlackApiCredentials {
|
|
|
79
86
|
asCurlArguments() {
|
|
80
87
|
return ['-H', `Authorization: Bearer ${this.token}`, '-H', `Cookie: d=${this.dCookie}`];
|
|
81
88
|
}
|
|
89
|
+
isExpired() {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
82
92
|
toJSON() {
|
|
83
93
|
return {
|
|
84
94
|
objectType: this.objectType,
|
|
@@ -90,6 +100,102 @@ export class SlackApiCredentials {
|
|
|
90
100
|
return new SlackApiCredentials(data.token, data.dCookie);
|
|
91
101
|
}
|
|
92
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Raw curl arguments stored directly as credentials.
|
|
105
|
+
* Allows users to manually set arbitrary curl arguments for a service.
|
|
106
|
+
*/
|
|
107
|
+
export const RawCurlCredentialsSchema = z.object({
|
|
108
|
+
objectType: z.literal('rawCurl'),
|
|
109
|
+
curlArguments: z.array(z.string()),
|
|
110
|
+
});
|
|
111
|
+
export class RawCurlCredentials {
|
|
112
|
+
objectType = 'rawCurl';
|
|
113
|
+
curlArguments;
|
|
114
|
+
constructor(curlArguments) {
|
|
115
|
+
this.curlArguments = curlArguments;
|
|
116
|
+
}
|
|
117
|
+
asCurlArguments() {
|
|
118
|
+
return this.curlArguments;
|
|
119
|
+
}
|
|
120
|
+
isExpired() {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
toJSON() {
|
|
124
|
+
return {
|
|
125
|
+
objectType: this.objectType,
|
|
126
|
+
curlArguments: [...this.curlArguments],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
static fromJSON(data) {
|
|
130
|
+
return new RawCurlCredentials(data.curlArguments);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* OAuth 2.0 credentials (access token, refresh token, client ID, and client secret).
|
|
135
|
+
* Used by services that implement OAuth 2.0 authorization flows.
|
|
136
|
+
* Token attributes are optional - when only clientId and clientSecret are present,
|
|
137
|
+
* this represents credentials from the prepare() step before obtaining user tokens.
|
|
138
|
+
*/
|
|
139
|
+
export const OAuthCredentialsSchema = z.object({
|
|
140
|
+
objectType: z.literal('oauth'),
|
|
141
|
+
accessToken: z.string().optional(),
|
|
142
|
+
refreshToken: z.string().optional(),
|
|
143
|
+
clientId: z.string(),
|
|
144
|
+
clientSecret: z.string(),
|
|
145
|
+
accessTokenExpiresAt: z.string().optional(),
|
|
146
|
+
refreshTokenExpiresAt: z.string().optional(),
|
|
147
|
+
});
|
|
148
|
+
export class OAuthCredentials {
|
|
149
|
+
objectType = 'oauth';
|
|
150
|
+
accessToken;
|
|
151
|
+
refreshToken;
|
|
152
|
+
clientId;
|
|
153
|
+
clientSecret;
|
|
154
|
+
accessTokenExpiresAt;
|
|
155
|
+
refreshTokenExpiresAt;
|
|
156
|
+
constructor(clientId, clientSecret, accessToken, refreshToken, accessTokenExpiresAt, refreshTokenExpiresAt) {
|
|
157
|
+
this.clientId = clientId;
|
|
158
|
+
this.clientSecret = clientSecret;
|
|
159
|
+
this.accessToken = accessToken;
|
|
160
|
+
this.refreshToken = refreshToken;
|
|
161
|
+
this.accessTokenExpiresAt = accessTokenExpiresAt;
|
|
162
|
+
this.refreshTokenExpiresAt = refreshTokenExpiresAt;
|
|
163
|
+
}
|
|
164
|
+
asCurlArguments() {
|
|
165
|
+
if (this.accessToken === undefined) {
|
|
166
|
+
throw new ApiCredentialsUsageError('OAuth credentials missing access token. Run login to obtain access tokens.');
|
|
167
|
+
}
|
|
168
|
+
return ['-H', `Authorization: Bearer ${this.accessToken}`];
|
|
169
|
+
}
|
|
170
|
+
isExpired() {
|
|
171
|
+
if (this.accessTokenExpiresAt === undefined) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
const expirationDate = new Date(this.accessTokenExpiresAt);
|
|
175
|
+
return Date.now() >= expirationDate.getTime();
|
|
176
|
+
}
|
|
177
|
+
toJSON() {
|
|
178
|
+
const result = {
|
|
179
|
+
objectType: this.objectType,
|
|
180
|
+
clientId: this.clientId,
|
|
181
|
+
clientSecret: this.clientSecret,
|
|
182
|
+
accessToken: this.accessToken,
|
|
183
|
+
refreshToken: this.refreshToken,
|
|
184
|
+
accessTokenExpiresAt: this.accessTokenExpiresAt,
|
|
185
|
+
refreshTokenExpiresAt: this.refreshTokenExpiresAt,
|
|
186
|
+
};
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
static fromJSON(data) {
|
|
190
|
+
return new OAuthCredentials(data.clientId, data.clientSecret, data.accessToken, data.refreshToken, data.accessTokenExpiresAt, data.refreshTokenExpiresAt);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
export class ApiCredentialsUsageError extends Error {
|
|
194
|
+
constructor(message) {
|
|
195
|
+
super(message);
|
|
196
|
+
this.name = 'ApiCredentialsUsageError';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
93
199
|
/**
|
|
94
200
|
* Union schema for all credential types.
|
|
95
201
|
*/
|
|
@@ -97,6 +203,8 @@ export const ApiCredentialsSchema = z.discriminatedUnion('objectType', [
|
|
|
97
203
|
AuthorizationBearerSchema,
|
|
98
204
|
AuthorizationBareSchema,
|
|
99
205
|
SlackApiCredentialsSchema,
|
|
206
|
+
OAuthCredentialsSchema,
|
|
207
|
+
RawCurlCredentialsSchema,
|
|
100
208
|
]);
|
|
101
209
|
/**
|
|
102
210
|
* Deserialize credentials from JSON data.
|
|
@@ -109,6 +217,10 @@ export function deserializeCredentials(data) {
|
|
|
109
217
|
return AuthorizationBare.fromJSON(data);
|
|
110
218
|
case 'slack':
|
|
111
219
|
return SlackApiCredentials.fromJSON(data);
|
|
220
|
+
case 'oauth':
|
|
221
|
+
return OAuthCredentials.fromJSON(data);
|
|
222
|
+
case 'rawCurl':
|
|
223
|
+
return RawCurlCredentials.fromJSON(data);
|
|
112
224
|
default: {
|
|
113
225
|
const exhaustiveCheck = data;
|
|
114
226
|
throw new ApiCredentialsSerializationError(`Unknown credential type: ${exhaustiveCheck.objectType}`);
|
|
@@ -128,6 +240,12 @@ export function serializeCredentials(credentials) {
|
|
|
128
240
|
if (credentials instanceof SlackApiCredentials) {
|
|
129
241
|
return credentials.toJSON();
|
|
130
242
|
}
|
|
243
|
+
if (credentials instanceof OAuthCredentials) {
|
|
244
|
+
return credentials.toJSON();
|
|
245
|
+
}
|
|
246
|
+
if (credentials instanceof RawCurlCredentials) {
|
|
247
|
+
return credentials.toJSON();
|
|
248
|
+
}
|
|
131
249
|
throw new ApiCredentialsSerializationError(`Unknown credential type: ${credentials.objectType}`);
|
|
132
250
|
}
|
|
133
251
|
export class ApiCredentialsSerializationError extends Error {
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"browserState.d.ts","sourceRoot":"","sources":["../../src/browserState.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAUnD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser state management utilities.
|
|
3
|
+
*/
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
const LATCHKEY_BROWSER_STATE_ENV_VAR = 'LATCHKEY_BROWSER_STATE';
|
|
7
|
+
/**
|
|
8
|
+
* Get the browser state path from the LATCHKEY_BROWSER_STATE environment variable.
|
|
9
|
+
*/
|
|
10
|
+
export function getBrowserStatePath() {
|
|
11
|
+
const envValue = process.env[LATCHKEY_BROWSER_STATE_ENV_VAR];
|
|
12
|
+
if (envValue) {
|
|
13
|
+
// Expand ~ to home directory
|
|
14
|
+
if (envValue.startsWith('~')) {
|
|
15
|
+
return resolve(homedir(), envValue.slice(2));
|
|
16
|
+
}
|
|
17
|
+
return resolve(envValue);
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=browserState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserState.js","sourceRoot":"","sources":["../../src/browserState.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,8BAA8B,GAAG,wBAAwB,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACb,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/src/cli.js
CHANGED
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { program } from 'commander';
|
|
6
6
|
import { registerCommands, createDefaultDependencies } from './cliCommands.js';
|
|
7
|
-
import { InsecureFilePermissionsError } from './config.js';
|
|
7
|
+
import { CurlNotFoundError, InsecureFilePermissionsError } from './config.js';
|
|
8
|
+
import packageJson from '../package.json' with { type: 'json' };
|
|
8
9
|
const deps = createDefaultDependencies();
|
|
9
10
|
try {
|
|
10
11
|
deps.config.checkSensitiveFilePermissions();
|
|
12
|
+
deps.config.checkSystemPrerequisites();
|
|
11
13
|
}
|
|
12
14
|
catch (error) {
|
|
13
|
-
if (error instanceof InsecureFilePermissionsError) {
|
|
15
|
+
if (error instanceof InsecureFilePermissionsError || error instanceof CurlNotFoundError) {
|
|
14
16
|
console.error(`Error: ${error.message}`);
|
|
15
17
|
process.exit(1);
|
|
16
18
|
}
|
|
@@ -19,7 +21,7 @@ catch (error) {
|
|
|
19
21
|
program
|
|
20
22
|
.name('latchkey')
|
|
21
23
|
.description('A command-line tool that injects API credentials to curl requests to known public APIs.')
|
|
22
|
-
.version(
|
|
24
|
+
.version(packageJson.version);
|
|
23
25
|
registerCommands(program, deps);
|
|
24
26
|
program.parse();
|
|
25
27
|
//# sourceMappingURL=cli.js.map
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;AAEzC,IAAI,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,4BAA4B,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACxF,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CACV,yFAAyF,CAC1F;KACA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliCommands.d.ts","sourceRoot":"","sources":["../../src/cliCommands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,OAAO,EAAE,MAAM,EAAU,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cliCommands.d.ts","sourceRoot":"","sources":["../../src/cliCommands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,OAAO,EAAE,MAAM,EAAU,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAY,MAAM,eAAe,CAAC;AAwCnD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,UAAU,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CAc3D;AAMD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAyBzE;AAsHD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CA6V9E"}
|