latchkey 2.0.0 → 2.2.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 +51 -12
- package/dist/integrations/SKILL.md +15 -8
- package/dist/package.json +3 -3
- package/dist/scripts/codegen.js +1 -1
- package/dist/scripts/codegen.js.map +1 -1
- package/dist/src/apiCredentials.d.ts +2 -1
- package/dist/src/apiCredentials.d.ts.map +1 -1
- package/dist/src/apiCredentials.js +1 -0
- package/dist/src/apiCredentials.js.map +1 -1
- package/dist/src/atomicWrite.d.ts +18 -0
- package/dist/src/atomicWrite.d.ts.map +1 -0
- package/dist/src/atomicWrite.js +42 -0
- package/dist/src/atomicWrite.js.map +1 -0
- package/dist/src/browserConfig.d.ts +1 -28
- package/dist/src/browserConfig.d.ts.map +1 -1
- package/dist/src/browserConfig.js +4 -73
- package/dist/src/browserConfig.js.map +1 -1
- package/dist/src/cli.js +2 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/cliCommands.d.ts.map +1 -1
- package/dist/src/cliCommands.js +112 -4
- package/dist/src/cliCommands.js.map +1 -1
- package/dist/src/configDataStore.d.ts +43 -0
- package/dist/src/configDataStore.d.ts.map +1 -0
- package/dist/src/configDataStore.js +109 -0
- package/dist/src/configDataStore.js.map +1 -0
- package/dist/src/encryptedStorage.d.ts.map +1 -1
- package/dist/src/encryptedStorage.js +3 -2
- package/dist/src/encryptedStorage.js.map +1 -1
- package/dist/src/migrations.d.ts.map +1 -1
- package/dist/src/migrations.js +3 -2
- package/dist/src/migrations.js.map +1 -1
- package/dist/src/oauthUtils.js +1 -1
- package/dist/src/oauthUtils.js.map +1 -1
- package/dist/src/registeredService.d.ts +20 -0
- package/dist/src/registeredService.d.ts.map +1 -0
- package/dist/src/registeredService.js +34 -0
- package/dist/src/registeredService.js.map +1 -0
- package/dist/src/registeredServiceStore.d.ts +24 -0
- package/dist/src/registeredServiceStore.d.ts.map +1 -0
- package/dist/src/registeredServiceStore.js +70 -0
- package/dist/src/registeredServiceStore.js.map +1 -0
- package/dist/src/registry.d.ts +11 -1
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +55 -5
- package/dist/src/registry.js.map +1 -1
- package/dist/src/services/aws.d.ts +1 -1
- package/dist/src/services/aws.d.ts.map +1 -1
- package/dist/src/services/aws.js +1 -1
- package/dist/src/services/aws.js.map +1 -1
- package/dist/src/services/calendly.d.ts +1 -1
- package/dist/src/services/calendly.d.ts.map +1 -1
- package/dist/src/services/calendly.js +1 -1
- package/dist/src/services/calendly.js.map +1 -1
- package/dist/src/services/coolify.d.ts +12 -0
- package/dist/src/services/coolify.d.ts.map +1 -0
- package/dist/src/services/coolify.js +14 -0
- package/dist/src/services/coolify.js.map +1 -0
- package/dist/src/services/core/base.d.ts +141 -0
- package/dist/src/services/core/base.d.ts.map +1 -0
- package/dist/src/services/core/base.js +189 -0
- package/dist/src/services/core/base.js.map +1 -0
- package/dist/src/services/core/registered.d.ts +24 -0
- package/dist/src/services/core/registered.d.ts.map +1 -0
- package/dist/src/services/core/registered.js +53 -0
- package/dist/src/services/core/registered.js.map +1 -0
- package/dist/src/services/discord.d.ts +1 -1
- package/dist/src/services/discord.d.ts.map +1 -1
- package/dist/src/services/discord.js +1 -1
- package/dist/src/services/discord.js.map +1 -1
- package/dist/src/services/dropbox.d.ts +1 -1
- package/dist/src/services/dropbox.d.ts.map +1 -1
- package/dist/src/services/dropbox.js +1 -1
- package/dist/src/services/dropbox.js.map +1 -1
- package/dist/src/services/figma.d.ts +1 -1
- package/dist/src/services/figma.d.ts.map +1 -1
- package/dist/src/services/figma.js +1 -1
- package/dist/src/services/figma.js.map +1 -1
- package/dist/src/services/github.d.ts +1 -1
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +1 -1
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/gitlab.d.ts +1 -1
- package/dist/src/services/gitlab.d.ts.map +1 -1
- package/dist/src/services/gitlab.js +1 -1
- package/dist/src/services/gitlab.js.map +1 -1
- package/dist/src/services/google/base.d.ts +1 -1
- package/dist/src/services/google/base.d.ts.map +1 -1
- package/dist/src/services/google/base.js +1 -1
- package/dist/src/services/google/base.js.map +1 -1
- package/dist/src/services/google/directions.d.ts +1 -1
- package/dist/src/services/google/directions.d.ts.map +1 -1
- package/dist/src/services/google/directions.js +1 -1
- package/dist/src/services/google/directions.js.map +1 -1
- package/dist/src/services/index.d.ts +5 -2
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +5 -2
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/linear.d.ts +1 -1
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +1 -1
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/mailchimp.d.ts +1 -1
- package/dist/src/services/mailchimp.d.ts.map +1 -1
- package/dist/src/services/mailchimp.js +1 -1
- package/dist/src/services/mailchimp.js.map +1 -1
- package/dist/src/services/notion.d.ts +1 -1
- package/dist/src/services/notion.d.ts.map +1 -1
- package/dist/src/services/notion.js +1 -1
- package/dist/src/services/notion.js.map +1 -1
- package/dist/src/services/sentry.d.ts +1 -1
- package/dist/src/services/sentry.d.ts.map +1 -1
- package/dist/src/services/sentry.js +1 -1
- package/dist/src/services/sentry.js.map +1 -1
- package/dist/src/services/slack.d.ts +1 -1
- package/dist/src/services/slack.d.ts.map +1 -1
- package/dist/src/services/slack.js +1 -1
- package/dist/src/services/slack.js.map +1 -1
- package/dist/src/services/stripe.d.ts +1 -1
- package/dist/src/services/stripe.d.ts.map +1 -1
- package/dist/src/services/stripe.js +1 -1
- package/dist/src/services/stripe.js.map +1 -1
- package/dist/src/services/telegram.d.ts +1 -1
- package/dist/src/services/telegram.d.ts.map +1 -1
- package/dist/src/services/telegram.js +1 -1
- package/dist/src/services/telegram.js.map +1 -1
- package/dist/src/services/umami.d.ts +12 -0
- package/dist/src/services/umami.d.ts.map +1 -0
- package/dist/src/services/umami.js +14 -0
- package/dist/src/services/umami.js.map +1 -0
- package/dist/src/services/yelp.d.ts +1 -1
- package/dist/src/services/yelp.d.ts.map +1 -1
- package/dist/src/services/yelp.js +1 -1
- package/dist/src/services/yelp.js.map +1 -1
- package/dist/src/services/zoom.d.ts +1 -1
- package/dist/src/services/zoom.d.ts.map +1 -1
- package/dist/src/services/zoom.js +1 -1
- package/dist/src/services/zoom.js.map +1 -1
- package/dist/tests/atomicWrite.test.d.ts +2 -0
- package/dist/tests/atomicWrite.test.d.ts.map +1 -0
- package/dist/tests/atomicWrite.test.js +95 -0
- package/dist/tests/atomicWrite.test.js.map +1 -0
- package/dist/tests/cli.test.js +693 -2
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/lint.test.js +1 -1
- package/dist/tests/lint.test.js.map +1 -1
- package/dist/tests/registry.test.js +100 -2
- 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 +3 -3
package/README.md
CHANGED
|
@@ -16,13 +16,13 @@ latchkey curl -X POST 'https://slack.com/api/conversations.create' \
|
|
|
16
16
|
|
|
17
17
|
## Overview
|
|
18
18
|
|
|
19
|
-
Latchkey is a command-line tool that injects credentials into curl
|
|
20
|
-
requests to known public APIs.
|
|
19
|
+
Latchkey is a command-line tool that injects credentials into curl commands.
|
|
21
20
|
|
|
22
21
|
- `latchkey services list`
|
|
23
|
-
- List
|
|
22
|
+
- List third-party services (Slack, Google Workspace, Linear, GitHub, etc.) that are supported out-of-the-box.
|
|
23
|
+
- (In simple cases, `latchkey services register` can be used to add basic support for a new service at runtime.)
|
|
24
24
|
- `latchkey curl <arguments>`
|
|
25
|
-
- Automatically inject credentials
|
|
25
|
+
- Automatically inject credentials into your otherwise standard curl calls to HTTP APIs.
|
|
26
26
|
- Credentials must already exist (see below).
|
|
27
27
|
- `latchkey auth set <service_name> <curl_arguments>`
|
|
28
28
|
- Manually store credentials for a service as arbitrary curl arguments.
|
|
@@ -32,14 +32,14 @@ requests to known public APIs.
|
|
|
32
32
|
- Only some services support this option.
|
|
33
33
|
|
|
34
34
|
Latchkey is primarily designed for AI agents. By invoking
|
|
35
|
-
Latchkey, agents can
|
|
36
|
-
then continue interacting with
|
|
37
|
-
curl syntax
|
|
38
|
-
required.
|
|
35
|
+
Latchkey, agents can utilize user-provided credentials or prompt
|
|
36
|
+
the user to authenticate, then continue interacting with HTTP
|
|
37
|
+
APIs using standard curl syntax. No custom integrations or
|
|
38
|
+
embedded credentials are required.
|
|
39
39
|
|
|
40
40
|
Unlike OAuth-based flows or typical MCP-style integrations,
|
|
41
41
|
Latchkey does not introduce an intermediary between the agent
|
|
42
|
-
and the service. When `browser` is used, requests are made
|
|
42
|
+
and the service. When the `browser` command is used, requests are made
|
|
43
43
|
directly on the user’s behalf, which enables greater flexibility
|
|
44
44
|
at the cost of formal delegation: agents authenticate as the
|
|
45
45
|
user.
|
|
@@ -103,7 +103,7 @@ users on top of Latchkey.
|
|
|
103
103
|
|
|
104
104
|
## Demo
|
|
105
105
|
|
|
106
|
-

|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
## Direct usage
|
|
@@ -139,6 +139,42 @@ 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
|
+
|
|
143
|
+
### Self-hosted services
|
|
144
|
+
|
|
145
|
+
For services that can be self-hosted, like GitLab, first make Latchkey aware of your service instance:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
latchkey services register my-gitlab-instance --service-family=gitlab --base-api-url="https://gitlab.example.com/api/v4/"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Then continue as usual.
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
latchkey auth set my-gitlab-instance -H "PRIVATE-TOKEN: <token>"
|
|
155
|
+
|
|
156
|
+
# Agents can then call the API.
|
|
157
|
+
latchkey curl https://gitlab.example.com/api/v4/user
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
### Entirely new services
|
|
162
|
+
|
|
163
|
+
If you want to use Latchkey with a service that is not in the
|
|
164
|
+
list of supported built-in services, you can still use the
|
|
165
|
+
mechanism described above to register a new service at runtime:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
latchkey services register mastodon --base-api-url="https://mastodon.social/api/v1/"
|
|
169
|
+
latchkey auth set mastodon -H "Authorization: Bearer <your_access_token>"
|
|
170
|
+
|
|
171
|
+
# Agents can then call the service:
|
|
172
|
+
latchkey curl https://mastodon.social/api/v1/timelines/public?limit=2
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
User-registered services only support authentication via static curl arguments provided through `latchkey auth set`.
|
|
176
|
+
|
|
177
|
+
|
|
142
178
|
### Indirect credentials
|
|
143
179
|
|
|
144
180
|
Some services can't express their credentials as static curl
|
|
@@ -151,7 +187,7 @@ In similar cases, when supported, you can use the `latchkey auth set-nocurl` com
|
|
|
151
187
|
like this:
|
|
152
188
|
|
|
153
189
|
```
|
|
154
|
-
latchkey auth set-nocurl
|
|
190
|
+
latchkey auth set-nocurl aws <access-key-id> <secret-access-key>
|
|
155
191
|
```
|
|
156
192
|
|
|
157
193
|
Latchkey will then modify subsequent `latchkey curl` requests as
|
|
@@ -161,7 +197,9 @@ signature) by calling `latchkey services info <service_name>`.
|
|
|
161
197
|
### Remembering API credentials
|
|
162
198
|
|
|
163
199
|
Your API credentials and browser state are encrypted and stored
|
|
164
|
-
by default under `~/.latchkey`.
|
|
200
|
+
by default under `~/.latchkey`. They are never transmitted
|
|
201
|
+
anywhere beyond the endpoints specified by the actual curl
|
|
202
|
+
calls.
|
|
165
203
|
|
|
166
204
|
|
|
167
205
|
### Inspecting the status of stored credentials
|
|
@@ -173,6 +211,7 @@ credentials status line will show one of:
|
|
|
173
211
|
- `missing`
|
|
174
212
|
- `invalid`
|
|
175
213
|
- `valid`
|
|
214
|
+
- `unknown` (for user-registered services)
|
|
176
215
|
|
|
177
216
|
### Clearing credentials
|
|
178
217
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: latchkey
|
|
3
|
-
description: Interact with third-party services (Slack, Google Workspace, Dropbox, GitHub, Linear...) on the user's behalf
|
|
3
|
+
description: Interact with third-party or self-hosted services (Slack, Google Workspace, Dropbox, GitHub, Linear, Coolify...) using their HTTP APIs on the user's behalf.
|
|
4
4
|
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey). A desktop/GUI environment is required for the browser functionality.
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,19 +8,19 @@ compatibility: Requires node.js, curl and latchkey (npm install -g latchkey). A
|
|
|
8
8
|
|
|
9
9
|
## Instructions
|
|
10
10
|
|
|
11
|
-
Latchkey is a CLI tool that automatically injects credentials into curl commands
|
|
11
|
+
Latchkey is a CLI tool that automatically injects credentials into curl commands. Credentials (mostly API tokens) can be either manually managed or, for some services, Latchkey can open a browser login pop-up window and extract API credentials from the session.
|
|
12
12
|
|
|
13
|
-
Use this skill when the user asks you to work with
|
|
13
|
+
Use this skill when the user asks you to work on their behalf with services that have HTTP APIs, like AWS, GitLab, Google Drive, Discord or others.
|
|
14
14
|
|
|
15
15
|
Usage:
|
|
16
16
|
|
|
17
17
|
1. **Use `latchkey curl`** instead of regular `curl` for supported services.
|
|
18
18
|
2. **Pass through all regular curl arguments** - latchkey is a transparent wrapper.
|
|
19
|
-
3. **
|
|
19
|
+
3. **Always check for `latchkey services list --viable`** to get a list of currently usable services.
|
|
20
20
|
4. **Use `latchkey services info <service_name>`** to get information about a specific service (auth options, credentials status, API docs links, special requirements, etc.).
|
|
21
21
|
5. **If necessary, get or renew credentials first.** Run `latchkey auth browser <service_name>` to open a browser login pop-up window if supported.
|
|
22
22
|
6. **Look for the newest documentation of the desired public API online.** If using the `browser` auth command, avoid bot-only endpoints.
|
|
23
|
-
7. **Do not initiate a new login if the credentials status is `valid`** - the user might just not have the necessary permissions for the action you're trying to do.
|
|
23
|
+
7. **Do not initiate a new login if the credentials status is `valid` or `unknown`** - the user might just not have the necessary permissions for the action you're trying to do.
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
## Examples
|
|
@@ -53,12 +53,13 @@ latchkey curl 'https://discord.com/api/v10/users/@me'
|
|
|
53
53
|
|
|
54
54
|
Only do this when you notice that your previous call ended up not being authenticated (HTTP 401 or 403).
|
|
55
55
|
|
|
56
|
-
### List
|
|
56
|
+
### List usable services
|
|
57
|
+
|
|
57
58
|
```bash
|
|
58
|
-
latchkey services list
|
|
59
|
+
latchkey services list --viable
|
|
59
60
|
```
|
|
60
61
|
|
|
61
|
-
Lists
|
|
62
|
+
Lists services that either have stored credentials or can be authenticated via a browser.
|
|
62
63
|
|
|
63
64
|
### Get service-specific info
|
|
64
65
|
```bash
|
|
@@ -75,6 +76,7 @@ set-nocurl` before making requests.
|
|
|
75
76
|
|
|
76
77
|
- All curl arguments are passed through unchanged
|
|
77
78
|
- Return code, stdout and stderr are passed back from curl
|
|
79
|
+
- Credentials are always stored encrypted and are never transmitted anywhere beyond the endpoints specified by the actual curl calls.
|
|
78
80
|
|
|
79
81
|
## Currently supported services
|
|
80
82
|
|
|
@@ -82,3 +84,8 @@ Latchkey currently offers varying levels of support for the
|
|
|
82
84
|
following services: AWS, Calendly, Discord, Dropbox, Figma, GitHub, GitLab,
|
|
83
85
|
Gmail, Google Analytics, Google Calendar, Google Docs, Google Drive, Google Sheets,
|
|
84
86
|
Linear, Mailchimp, Notion, Sentry, Slack, Stripe, Telegram, Yelp, Zoom, and more.
|
|
87
|
+
|
|
88
|
+
### User-registered services
|
|
89
|
+
|
|
90
|
+
Note for humans: users can also add limited support for new services
|
|
91
|
+
at runtime using the `latchkey services register` command.
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "latchkey",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "A CLI tool that injects API credentials into curl requests
|
|
3
|
+
"version": "2.2.0",
|
|
4
|
+
"description": "A CLI tool that injects API credentials into curl requests to third-party services",
|
|
5
5
|
"author": "Imbue <hynek@imbue.com>",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -62,6 +62,6 @@
|
|
|
62
62
|
"prettier": "^3.8.1",
|
|
63
63
|
"typescript": "^5.3.0",
|
|
64
64
|
"typescript-eslint": "^8.53.1",
|
|
65
|
-
"vitest": "^
|
|
65
|
+
"vitest": "^4.0.18"
|
|
66
66
|
}
|
|
67
67
|
}
|
package/dist/scripts/codegen.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* npx tsx scripts/codegen.ts wordpress https://wordpress.com/generate-api-key
|
|
21
21
|
* npx tsx scripts/codegen.ts slack https://api.slack.com/apps
|
|
22
22
|
*/
|
|
23
|
-
import { loadBrowserConfig } from '../src/
|
|
23
|
+
import { loadBrowserConfig } from '../src/configDataStore.js';
|
|
24
24
|
import { CONFIG } from '../src/config.js';
|
|
25
25
|
import { runCodegen } from './codegen/index.js';
|
|
26
26
|
class InvalidArgumentsError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../scripts/codegen.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../scripts/codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCredentials.d.ts","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAAC;IACxE;;;OAGG;IACH,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,UAAU,EAAG,qBAAqB,CAAU;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,MAAM;IAIzB,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAIvE,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC,MAAM,IAAI,uBAAuB;IAOjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,mBAAmB;CAGpE;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;EAGlC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE5E,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,UAAU,EAAG,mBAAmB,CAAU;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,MAAM;IAIzB,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAIvE,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC,MAAM,IAAI,qBAAqB;IAO/B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB;CAGhE;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE9E,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,UAAU,EAAG,SAAS,CAAU;IACzC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;gBAE9B,aAAa,EAAE,SAAS,MAAM,EAAE;IAI5C,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAIvE,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC,MAAM,IAAI,sBAAsB;IAOhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;CAGlE;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;EAQjC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE1E,qBAAa,gBAAiB,YAAW,cAAc;IACrD,QAAQ,CAAC,UAAU,EAAG,OAAO,CAAU;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;gBAGtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,qBAAqB,CAAC,EAAE,MAAM;IAUhC,kBAAkB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IASvE,SAAS,IAAI,OAAO,GAAG,SAAS;IAQhC,MAAM,IAAI,oBAAoB;IAa9B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB;CAU9D;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAI5B"}
|
|
1
|
+
{"version":3,"file":"apiCredentials.d.ts","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export var ApiCredentialStatus;
|
|
|
7
7
|
ApiCredentialStatus["Missing"] = "missing";
|
|
8
8
|
ApiCredentialStatus["Valid"] = "valid";
|
|
9
9
|
ApiCredentialStatus["Invalid"] = "invalid";
|
|
10
|
+
ApiCredentialStatus["Unknown"] = "unknown";
|
|
10
11
|
})(ApiCredentialStatus || (ApiCredentialStatus = {}));
|
|
11
12
|
/**
|
|
12
13
|
* Bearer token authentication (Authorization: Bearer <token>).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiCredentials.js","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"apiCredentials.js","sourceRoot":"","sources":["../../src/apiCredentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic file write: writes to a temporary file in the same directory,
|
|
3
|
+
* then renames into place. rename() is atomic on POSIX when source and
|
|
4
|
+
* destination are on the same filesystem, which is guaranteed here since
|
|
5
|
+
* the temp file is a sibling of the target.
|
|
6
|
+
*
|
|
7
|
+
* This prevents readers from ever seeing a half-written file.
|
|
8
|
+
*/
|
|
9
|
+
import { type BinaryLike } from 'node:crypto';
|
|
10
|
+
export declare class AtomicWriteError extends Error {
|
|
11
|
+
readonly targetPath: string;
|
|
12
|
+
constructor(message: string, targetPath: string);
|
|
13
|
+
}
|
|
14
|
+
export declare function writeFileAtomic(filePath: string, content: string | BinaryLike, options?: {
|
|
15
|
+
mode?: number;
|
|
16
|
+
encoding?: BufferEncoding;
|
|
17
|
+
}): void;
|
|
18
|
+
//# sourceMappingURL=atomicWrite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomicWrite.d.ts","sourceRoot":"","sources":["../../src/atomicWrite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAI3D,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM;CAKrC;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAO,GACzD,IAAI,CAuBN"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atomic file write: writes to a temporary file in the same directory,
|
|
3
|
+
* then renames into place. rename() is atomic on POSIX when source and
|
|
4
|
+
* destination are on the same filesystem, which is guaranteed here since
|
|
5
|
+
* the temp file is a sibling of the target.
|
|
6
|
+
*
|
|
7
|
+
* This prevents readers from ever seeing a half-written file.
|
|
8
|
+
*/
|
|
9
|
+
import { randomBytes } from 'node:crypto';
|
|
10
|
+
import { renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
export class AtomicWriteError extends Error {
|
|
13
|
+
targetPath;
|
|
14
|
+
constructor(message, targetPath) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.targetPath = targetPath;
|
|
17
|
+
this.name = 'AtomicWriteError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function writeFileAtomic(filePath, content, options = {}) {
|
|
21
|
+
const directory = dirname(filePath);
|
|
22
|
+
const suffix = randomBytes(6).toString('hex');
|
|
23
|
+
const tempPath = join(directory, `.tmp.${suffix}`);
|
|
24
|
+
try {
|
|
25
|
+
writeFileSync(tempPath, content, {
|
|
26
|
+
encoding: options.encoding ?? 'utf-8',
|
|
27
|
+
mode: options.mode,
|
|
28
|
+
});
|
|
29
|
+
renameSync(tempPath, filePath);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
// Clean up temp file on failure (best-effort)
|
|
33
|
+
try {
|
|
34
|
+
unlinkSync(tempPath);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Ignore cleanup errors
|
|
38
|
+
}
|
|
39
|
+
throw new AtomicWriteError(`Failed to atomically write ${filePath}: ${error instanceof Error ? error.message : String(error)}`, filePath);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=atomicWrite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomicWrite.js","sourceRoot":"","sources":["../../src/atomicWrite.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IAFlB,YACE,OAAe,EACC,UAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,OAA4B,EAC5B,UAAwD,EAAE;IAE1D,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE;YAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO;YACrC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,8CAA8C;QAC9C,IAAI,CAAC;YACH,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,8BAA8B,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACnG,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Downloading Chromium via Playwright when needed
|
|
8
8
|
* - Persisting the discovered browser path
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { type BrowserConfig } from './configDataStore.js';
|
|
11
11
|
/**
|
|
12
12
|
* Browser sources that can be used for discovery.
|
|
13
13
|
*/
|
|
@@ -17,23 +17,6 @@ export type BrowserSource = (typeof BROWSER_SOURCES)[number];
|
|
|
17
17
|
* Default order for browser source discovery.
|
|
18
18
|
*/
|
|
19
19
|
export declare const DEFAULT_BROWSER_SOURCES: readonly BrowserSource[];
|
|
20
|
-
/**
|
|
21
|
-
* Schema for the browser configuration.
|
|
22
|
-
*/
|
|
23
|
-
declare const BrowserConfigSchema: z.ZodObject<{
|
|
24
|
-
executablePath: z.ZodString;
|
|
25
|
-
source: z.ZodEnum<["system", "playwright", "downloaded"]>;
|
|
26
|
-
discoveredAt: z.ZodString;
|
|
27
|
-
}, "strip", z.ZodTypeAny, {
|
|
28
|
-
executablePath: string;
|
|
29
|
-
source: "system" | "playwright" | "downloaded";
|
|
30
|
-
discoveredAt: string;
|
|
31
|
-
}, {
|
|
32
|
-
executablePath: string;
|
|
33
|
-
source: "system" | "playwright" | "downloaded";
|
|
34
|
-
discoveredAt: string;
|
|
35
|
-
}>;
|
|
36
|
-
export type BrowserConfig = z.infer<typeof BrowserConfigSchema>;
|
|
37
20
|
export declare class BrowserNotFoundError extends Error {
|
|
38
21
|
constructor(message: string);
|
|
39
22
|
}
|
|
@@ -68,15 +51,6 @@ export declare function discoverBrowserFromSources(sources: readonly BrowserSour
|
|
|
68
51
|
config: BrowserConfig;
|
|
69
52
|
source: BrowserSource;
|
|
70
53
|
}>;
|
|
71
|
-
/**
|
|
72
|
-
* Save browser configuration to disk.
|
|
73
|
-
*/
|
|
74
|
-
export declare function saveBrowserConfig(configPath: string, config: BrowserConfig): void;
|
|
75
|
-
/**
|
|
76
|
-
* Load browser configuration from disk.
|
|
77
|
-
* Returns null if the file doesn't exist or is invalid.
|
|
78
|
-
*/
|
|
79
|
-
export declare function loadBrowserConfig(configPath: string): BrowserConfig | null;
|
|
80
54
|
/**
|
|
81
55
|
* Ensure a browser is available and return its configuration.
|
|
82
56
|
* Tries sources in the specified order, saves the result to the config file.
|
|
@@ -85,5 +59,4 @@ export declare function ensureBrowser(configPath: string, sources?: readonly Bro
|
|
|
85
59
|
config: BrowserConfig;
|
|
86
60
|
source: BrowserSource;
|
|
87
61
|
}>;
|
|
88
|
-
export {};
|
|
89
62
|
//# sourceMappingURL=browserConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserConfig.d.ts","sourceRoot":"","sources":["../../src/browserConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"browserConfig.d.ts","sourceRoot":"","sources":["../../src/browserConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhG;;GAEG;AACH,eAAO,MAAM,eAAe,8GAKlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,aAAa,EAK3D,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAyDD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CA2BjD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAMrD;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEjE;AA8CD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAS3D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,SAAS,aAAa,EAA4B,GAC1D,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAS3D"}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
* - Downloading Chromium via Playwright when needed
|
|
8
8
|
* - Persisting the discovered browser path
|
|
9
9
|
*/
|
|
10
|
-
import { existsSync
|
|
10
|
+
import { existsSync } from 'node:fs';
|
|
11
11
|
import { platform } from 'node:os';
|
|
12
|
-
import {
|
|
12
|
+
import { join } from 'node:path';
|
|
13
13
|
import { chromium } from 'playwright';
|
|
14
|
-
import {
|
|
14
|
+
import { loadBrowserConfig, saveBrowserConfig } from './configDataStore.js';
|
|
15
15
|
import { downloadChromium } from './playwrightDownload.js';
|
|
16
16
|
/**
|
|
17
17
|
* Browser sources that can be used for discovery.
|
|
@@ -31,20 +31,6 @@ export const DEFAULT_BROWSER_SOURCES = [
|
|
|
31
31
|
'existing-playwright-browser',
|
|
32
32
|
'download-playwright-browser',
|
|
33
33
|
];
|
|
34
|
-
/**
|
|
35
|
-
* Schema for the browser configuration.
|
|
36
|
-
*/
|
|
37
|
-
const BrowserConfigSchema = z.object({
|
|
38
|
-
executablePath: z.string(),
|
|
39
|
-
source: z.enum(['system', 'playwright', 'downloaded']),
|
|
40
|
-
discoveredAt: z.string().datetime(),
|
|
41
|
-
});
|
|
42
|
-
/**
|
|
43
|
-
* Schema for the top-level configuration file.
|
|
44
|
-
*/
|
|
45
|
-
const ConfigFileSchema = z.object({
|
|
46
|
-
browser: BrowserConfigSchema.optional(),
|
|
47
|
-
});
|
|
48
34
|
export class BrowserNotFoundError extends Error {
|
|
49
35
|
constructor(message) {
|
|
50
36
|
super(message);
|
|
@@ -167,7 +153,7 @@ export async function downloadPlaywrightBrowser() {
|
|
|
167
153
|
async function tryBrowserSource(source, configPath) {
|
|
168
154
|
switch (source) {
|
|
169
155
|
case 'existing-config': {
|
|
170
|
-
return
|
|
156
|
+
return loadBrowserConfig(configPath);
|
|
171
157
|
}
|
|
172
158
|
case 'system-browser': {
|
|
173
159
|
const systemPath = findSystemBrowser();
|
|
@@ -214,61 +200,6 @@ export async function discoverBrowserFromSources(sources, configPath) {
|
|
|
214
200
|
}
|
|
215
201
|
throw new BrowserNotFoundError(`No browser found after trying sources: ${sources.join(', ')}`);
|
|
216
202
|
}
|
|
217
|
-
/**
|
|
218
|
-
* Save browser configuration to disk.
|
|
219
|
-
*/
|
|
220
|
-
export function saveBrowserConfig(configPath, config) {
|
|
221
|
-
const directory = dirname(configPath);
|
|
222
|
-
if (!existsSync(directory)) {
|
|
223
|
-
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
224
|
-
}
|
|
225
|
-
// Load existing config file if it exists, to preserve other settings
|
|
226
|
-
let existingConfig = {};
|
|
227
|
-
if (existsSync(configPath)) {
|
|
228
|
-
try {
|
|
229
|
-
const existingContent = readFileSync(configPath, 'utf-8');
|
|
230
|
-
existingConfig = JSON.parse(existingContent);
|
|
231
|
-
}
|
|
232
|
-
catch {
|
|
233
|
-
// Ignore parse errors, start fresh
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
const newConfig = { ...existingConfig, browser: config };
|
|
237
|
-
const content = JSON.stringify(newConfig, null, 2);
|
|
238
|
-
writeFileSync(configPath, content, { encoding: 'utf-8', mode: 0o600 });
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Internal function to load browser configuration from disk.
|
|
242
|
-
* Returns null if the file doesn't exist, is invalid, or the browser no longer exists.
|
|
243
|
-
*/
|
|
244
|
-
function loadBrowserConfigInternal(configPath) {
|
|
245
|
-
if (!existsSync(configPath)) {
|
|
246
|
-
return null;
|
|
247
|
-
}
|
|
248
|
-
try {
|
|
249
|
-
const content = readFileSync(configPath, 'utf-8');
|
|
250
|
-
const data = JSON.parse(content);
|
|
251
|
-
const configFile = ConfigFileSchema.parse(data);
|
|
252
|
-
if (!configFile.browser) {
|
|
253
|
-
return null;
|
|
254
|
-
}
|
|
255
|
-
// Verify the browser still exists
|
|
256
|
-
if (!existsSync(configFile.browser.executablePath)) {
|
|
257
|
-
return null;
|
|
258
|
-
}
|
|
259
|
-
return configFile.browser;
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Load browser configuration from disk.
|
|
267
|
-
* Returns null if the file doesn't exist or is invalid.
|
|
268
|
-
*/
|
|
269
|
-
export function loadBrowserConfig(configPath) {
|
|
270
|
-
return loadBrowserConfigInternal(configPath);
|
|
271
|
-
}
|
|
272
203
|
/**
|
|
273
204
|
* Ensure a browser is available and return its configuration.
|
|
274
205
|
* Tries sources in the specified order, saves the result to the config file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserConfig.js","sourceRoot":"","sources":["../../src/browserConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"browserConfig.js","sourceRoot":"","sources":["../../src/browserConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ import { registerCommands, createDefaultDependencies } from './cliCommands.js';
|
|
|
8
8
|
import { CurlNotFoundError, InsecureFilePermissionsError } from './config.js';
|
|
9
9
|
import { EncryptedStorage, EncryptionKeyLostError } from './encryptedStorage.js';
|
|
10
10
|
import { MigrationError, runMigrations } from './migrations.js';
|
|
11
|
+
import { loadRegisteredServicesIntoRegistry } from './registry.js';
|
|
11
12
|
import packageJson from '../package.json' with { type: 'json' };
|
|
12
13
|
const deps = createDefaultDependencies();
|
|
13
14
|
try {
|
|
@@ -38,6 +39,7 @@ catch (error) {
|
|
|
38
39
|
}
|
|
39
40
|
throw error;
|
|
40
41
|
}
|
|
42
|
+
loadRegisteredServicesIntoRegistry(deps.config.configPath, deps.registry);
|
|
41
43
|
program
|
|
42
44
|
.name('latchkey')
|
|
43
45
|
.description('A command-line tool that injects API credentials to curl requests to known public APIs.')
|
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,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,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,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,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,MAAM,gBAAgB,GACpB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE1F,IAAI,CAAC;IACH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC5C,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;QACxD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,kBAAkB,EAAE,CAAC,gBAAgB;KACtC,CAAC,CAAC;IACH,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,sBAAsB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QAC/E,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
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,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,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,kCAAkC,EAAE,MAAM,eAAe,CAAC;AACnE,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,MAAM,gBAAgB,GACpB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE1F,IAAI,CAAC;IACH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;QAC5C,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;QACxD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,kBAAkB,EAAE,CAAC,gBAAgB;KACtC,CAAC,CAAC;IACH,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,sBAAsB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QAC/E,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,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE1E,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;
|
|
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;AAYzC,OAAO,EAAE,MAAM,EAAU,MAAM,aAAa,CAAC;AAO7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAGL,QAAQ,EAGT,MAAM,eAAe,CAAC;AA2CvB;;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;AAyHD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAuiB9E"}
|