@seamapi/cli 0.0.1 → 0.5.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 +54 -3
- package/bin/cli.d.ts +2 -0
- package/bin/cli.js +233 -0
- package/bin/cli.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +5 -0
- package/index.js.map +1 -0
- package/lib/blueprint.d.ts +6 -0
- package/lib/blueprint.js +37 -0
- package/lib/blueprint.js.map +1 -0
- package/lib/get-api-blueprint.d.ts +3 -0
- package/lib/get-api-blueprint.js +19 -0
- package/lib/get-api-blueprint.js.map +1 -0
- package/lib/get-command-blueprint-def.d.ts +2 -0
- package/lib/get-command-blueprint-def.js +11 -0
- package/lib/get-command-blueprint-def.js.map +1 -0
- package/lib/get-config-store.d.ts +2 -0
- package/lib/get-config-store.js +5 -0
- package/lib/get-config-store.js.map +1 -0
- package/lib/get-current-workspace-id.d.ts +1 -0
- package/lib/get-current-workspace-id.js +10 -0
- package/lib/get-current-workspace-id.js.map +1 -0
- package/lib/get-seam.d.ts +3 -0
- package/lib/get-seam.js +26 -0
- package/lib/get-seam.js.map +1 -0
- package/lib/get-server.d.ts +1 -0
- package/lib/get-server.js +7 -0
- package/lib/get-server.js.map +1 -0
- package/lib/interact-for-access-code.d.ts +3 -0
- package/lib/interact-for-access-code.js +19 -0
- package/lib/interact-for-access-code.js.map +1 -0
- package/lib/interact-for-acs-entrance.d.ts +1 -0
- package/lib/interact-for-acs-entrance.js +15 -0
- package/lib/interact-for-acs-entrance.js.map +1 -0
- package/lib/interact-for-acs-system.d.ts +1 -0
- package/lib/interact-for-acs-system.js +16 -0
- package/lib/interact-for-acs-system.js.map +1 -0
- package/lib/interact-for-acs-user.d.ts +1 -0
- package/lib/interact-for-acs-user.js +17 -0
- package/lib/interact-for-acs-user.js.map +1 -0
- package/lib/interact-for-action-attempt-poll.d.ts +2 -0
- package/lib/interact-for-action-attempt-poll.js +22 -0
- package/lib/interact-for-action-attempt-poll.js.map +1 -0
- package/lib/interact-for-array.d.ts +1 -0
- package/lib/interact-for-array.js +53 -0
- package/lib/interact-for-array.js.map +1 -0
- package/lib/interact-for-blueprint-object.d.ts +9 -0
- package/lib/interact-for-blueprint-object.js +235 -0
- package/lib/interact-for-blueprint-object.js.map +1 -0
- package/lib/interact-for-command-params.d.ts +5 -0
- package/lib/interact-for-command-params.js +11 -0
- package/lib/interact-for-command-params.js.map +1 -0
- package/lib/interact-for-command-selection.d.ts +2 -0
- package/lib/interact-for-command-selection.js +76 -0
- package/lib/interact-for-command-selection.js.map +1 -0
- package/lib/interact-for-connected-account.d.ts +1 -0
- package/lib/interact-for-connected-account.js +20 -0
- package/lib/interact-for-connected-account.js.map +1 -0
- package/lib/interact-for-custom-metadata.d.ts +6 -0
- package/lib/interact-for-custom-metadata.js +71 -0
- package/lib/interact-for-custom-metadata.js.map +1 -0
- package/lib/interact-for-device.d.ts +1 -0
- package/lib/interact-for-device.js +15 -0
- package/lib/interact-for-device.js.map +1 -0
- package/lib/interact-for-login.d.ts +1 -0
- package/lib/interact-for-login.js +39 -0
- package/lib/interact-for-login.js.map +1 -0
- package/lib/interact-for-resource.d.ts +11 -0
- package/lib/interact-for-resource.js +13 -0
- package/lib/interact-for-resource.js.map +1 -0
- package/lib/interact-for-server-selection.d.ts +1 -0
- package/lib/interact-for-server-selection.js +41 -0
- package/lib/interact-for-server-selection.js.map +1 -0
- package/lib/interact-for-timestamp.d.ts +1 -0
- package/lib/interact-for-timestamp.js +10 -0
- package/lib/interact-for-timestamp.js.map +1 -0
- package/lib/interact-for-use-remote-api-defs.d.ts +1 -0
- package/lib/interact-for-use-remote-api-defs.js +25 -0
- package/lib/interact-for-use-remote-api-defs.js.map +1 -0
- package/lib/interact-for-user-identity.d.ts +1 -0
- package/lib/interact-for-user-identity.js +15 -0
- package/lib/interact-for-user-identity.js.map +1 -0
- package/lib/interact-for-workspace-id.d.ts +1 -0
- package/lib/interact-for-workspace-id.js +31 -0
- package/lib/interact-for-workspace-id.js.map +1 -0
- package/lib/types.d.ts +5 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/util/ellipsis.d.ts +1 -0
- package/lib/util/ellipsis.js +6 -0
- package/lib/util/ellipsis.js.map +1 -0
- package/lib/util/request-seam-api.d.ts +4 -0
- package/lib/util/request-seam-api.js +28 -0
- package/lib/util/request-seam-api.js.map +1 -0
- package/lib/util/with-loading.d.ts +1 -0
- package/lib/util/with-loading.js +14 -0
- package/lib/util/with-loading.js.map +1 -0
- package/lib/validate-token.d.ts +1 -0
- package/lib/validate-token.js +19 -0
- package/lib/validate-token.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.js +3 -0
- package/lib/version.js.map +1 -0
- package/package.json +44 -18
- package/src/bin/cli.ts +265 -0
- package/src/index.ts +4 -1
- package/src/lib/blueprint.ts +53 -0
- package/src/lib/get-api-blueprint.ts +27 -0
- package/src/lib/get-command-blueprint-def.ts +15 -0
- package/src/lib/get-config-store.ts +5 -0
- package/src/lib/get-current-workspace-id.ts +11 -0
- package/src/lib/get-seam.ts +43 -0
- package/src/lib/get-server.ts +9 -0
- package/src/lib/interact-for-access-code.ts +25 -0
- package/src/lib/interact-for-acs-entrance.ts +16 -0
- package/src/lib/interact-for-acs-system.ts +17 -0
- package/src/lib/interact-for-acs-user.ts +21 -0
- package/src/lib/interact-for-action-attempt-poll.ts +35 -0
- package/src/lib/interact-for-array.ts +61 -0
- package/src/lib/interact-for-blueprint-object.ts +274 -0
- package/src/lib/interact-for-command-params.ts +22 -0
- package/src/lib/interact-for-command-selection.ts +107 -0
- package/src/lib/interact-for-connected-account.ts +24 -0
- package/src/lib/interact-for-custom-metadata.ts +89 -0
- package/src/lib/interact-for-device.ts +15 -0
- package/src/lib/interact-for-login.ts +53 -0
- package/src/lib/interact-for-resource.ts +34 -0
- package/src/lib/interact-for-server-selection.ts +46 -0
- package/src/lib/interact-for-timestamp.ts +10 -0
- package/src/lib/interact-for-use-remote-api-defs.ts +27 -0
- package/src/lib/interact-for-user-identity.ts +16 -0
- package/src/lib/interact-for-workspace-id.ts +37 -0
- package/src/lib/types.ts +6 -0
- package/src/lib/util/ellipsis.ts +4 -0
- package/src/lib/util/request-seam-api.ts +43 -0
- package/src/lib/util/with-loading.ts +16 -0
- package/src/lib/validate-token.ts +28 -0
- package/src/lib/version.ts +3 -0
- package/src/lib/index.ts +0 -1
- package/src/lib/todo.ts +0 -1
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
1
3
|
# Seam CLI
|
|
2
4
|
|
|
3
5
|
[](https://www.npmjs.com/package/@seamapi/cli)
|
|
@@ -7,18 +9,61 @@ A command line interface (CLI) for interacting with the Seam API.
|
|
|
7
9
|
|
|
8
10
|
## Description
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
Every command is interactive: the CLI prompts for any missing required
|
|
13
|
+
parameter with suggestions pulled from your workspace. Pass `-y` to take the
|
|
14
|
+
first suggestion instead of being asked.
|
|
11
15
|
|
|
12
16
|
## Installation
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
Install the CLI globally using [npm] with
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
$ npm install --global @seamapi/cli
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
On Arch Linux, install the [`seam-bin`][aur] package from the AUR with
|
|
15
25
|
|
|
16
26
|
```
|
|
17
|
-
$
|
|
27
|
+
$ paru -S seam-bin
|
|
18
28
|
```
|
|
19
29
|
|
|
30
|
+
[aur]: https://aur.archlinux.org/packages/seam-bin
|
|
20
31
|
[npm]: https://www.npmjs.com/
|
|
21
32
|
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
Every `seam` command is interactive and will prompt you for any missing
|
|
36
|
+
required properties with helpful suggestions. To avoid automatic behavior,
|
|
37
|
+
pass `-y`
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Login to Seam
|
|
41
|
+
seam login
|
|
42
|
+
|
|
43
|
+
# Select your workspace
|
|
44
|
+
seam select workspace
|
|
45
|
+
|
|
46
|
+
# Interactively select commands to execute
|
|
47
|
+
seam
|
|
48
|
+
|
|
49
|
+
# Create a connect webview to connect devices
|
|
50
|
+
seam connect-webviews create
|
|
51
|
+
|
|
52
|
+
# List devices in your workspace
|
|
53
|
+
seam devices list
|
|
54
|
+
|
|
55
|
+
MY_DOOR=$(seam devices get --name "Front Door" --id-only)
|
|
56
|
+
|
|
57
|
+
# Unlock a lock
|
|
58
|
+
seam locks unlock-door --device-id $MY_DOOR
|
|
59
|
+
|
|
60
|
+
# Create an access code
|
|
61
|
+
seam access-codes create --code "1234" --name "My Code"
|
|
62
|
+
|
|
63
|
+
# List your access codes
|
|
64
|
+
seam access-codes list --device-id $MY_DOOR
|
|
65
|
+
```
|
|
66
|
+
|
|
22
67
|
## Development and Testing
|
|
23
68
|
|
|
24
69
|
### Quickstart
|
|
@@ -31,6 +76,12 @@ $ npm install
|
|
|
31
76
|
$ npm run test:watch
|
|
32
77
|
```
|
|
33
78
|
|
|
79
|
+
Run the CLI from source with
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
$ npm run seam -- devices list
|
|
83
|
+
```
|
|
84
|
+
|
|
34
85
|
Primary development tasks are defined under `scripts` in `package.json`
|
|
35
86
|
and available via `npm run`.
|
|
36
87
|
View them with
|
package/bin/cli.d.ts
ADDED
package/bin/cli.js
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
import { isDeepStrictEqual as isEqual } from 'node:util';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import commandLineUsage from 'command-line-usage';
|
|
6
|
+
import parseArgs, {} from 'minimist';
|
|
7
|
+
import prompts from 'prompts';
|
|
8
|
+
import { getApiBlueprint } from '../lib/get-api-blueprint.js';
|
|
9
|
+
import { getConfigStore } from '../lib/get-config-store.js';
|
|
10
|
+
import { getServer } from '../lib/get-server.js';
|
|
11
|
+
import { interactForActionAttemptPoll } from '../lib/interact-for-action-attempt-poll.js';
|
|
12
|
+
import { interactForCommandParams } from '../lib/interact-for-command-params.js';
|
|
13
|
+
import { interactForCommandSelection } from '../lib/interact-for-command-selection.js';
|
|
14
|
+
import { interactForLogin } from '../lib/interact-for-login.js';
|
|
15
|
+
import { interactForServerSelection } from '../lib/interact-for-server-selection.js';
|
|
16
|
+
import { interactForUseRemoteApiDefs } from '../lib/interact-for-use-remote-api-defs.js';
|
|
17
|
+
import { interactForWorkspaceId } from '../lib/interact-for-workspace-id.js';
|
|
18
|
+
import { RequestSeamApi } from '../lib/util/request-seam-api.js';
|
|
19
|
+
import { validateToken } from '../lib/validate-token.js';
|
|
20
|
+
import seamapiCliVersion from '../lib/version.js';
|
|
21
|
+
const sections = [
|
|
22
|
+
{
|
|
23
|
+
header: 'Seam CLI',
|
|
24
|
+
content: 'Every seam command is interactive and will prompt you for any missing required properties with helpful suggestions. To avoid automatic behavior, pass -y ',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
header: 'Options',
|
|
28
|
+
optionList: [
|
|
29
|
+
{
|
|
30
|
+
name: 'help',
|
|
31
|
+
description: 'Display this help guide.',
|
|
32
|
+
alias: 'h',
|
|
33
|
+
type: Boolean,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
header: 'Command List Examples',
|
|
39
|
+
content: [
|
|
40
|
+
{ name: 'seam', summary: 'Interactively select commands to execute.' },
|
|
41
|
+
{ name: 'seam login', summary: 'Login to Seam.' },
|
|
42
|
+
{ name: 'seam select workspace', summary: 'Select your workspace.' },
|
|
43
|
+
{
|
|
44
|
+
name: 'seam connect-webviews create',
|
|
45
|
+
summary: 'Create a connect webview to connect devices.',
|
|
46
|
+
},
|
|
47
|
+
{ name: 'seam devices list', summary: 'List devices in your workspace.' },
|
|
48
|
+
{
|
|
49
|
+
name: 'seam locks unlock-door {bold --device-id} $MY_DOOR',
|
|
50
|
+
summary: 'Unlock a lock.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "seam access-codes create {bold --code} '1234' {bold --name} 'My Code'",
|
|
54
|
+
summary: 'Create an access code.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'seam access-codes list {bold --device-id} $MY_DOOR',
|
|
58
|
+
summary: 'List you access codes.',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
async function cli(args) {
|
|
64
|
+
const config = getConfigStore();
|
|
65
|
+
if (args['help'] || args['h']) {
|
|
66
|
+
const usage = commandLineUsage(sections);
|
|
67
|
+
console.log(usage);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (args['version']) {
|
|
71
|
+
console.log(seamapiCliVersion);
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
if (args._[0] === 'config' &&
|
|
75
|
+
args._[1] === 'set' &&
|
|
76
|
+
args._[2] === 'fake-server') {
|
|
77
|
+
const randomstring = randomBytes(5).toString('hex');
|
|
78
|
+
const fakeApiUrl = `https://${randomstring}.fakeseamconnect.seam.vc`;
|
|
79
|
+
config.set('server', fakeApiUrl);
|
|
80
|
+
console.log(`Server URL set to ${fakeApiUrl}`);
|
|
81
|
+
config.set(`${getServer()}.pat`, `seam_apikey1_token`);
|
|
82
|
+
console.log(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (!config.get(`${getServer()}.pat`) &&
|
|
86
|
+
args._[0] !== 'login' &&
|
|
87
|
+
!isEqual(args._, ['select', 'server'])) {
|
|
88
|
+
console.log(`Not logged in. Please run "seam login"`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
args._ = args._.map((arg) => arg.toLowerCase().replace(/_/g, '-'));
|
|
92
|
+
for (const k in args) {
|
|
93
|
+
args[k.toLowerCase().replace(/-/g, '_')] = args[k];
|
|
94
|
+
}
|
|
95
|
+
const use_remote_api_defs = args['remote_api_defs'] ?? config.get('use_remote_api_defs');
|
|
96
|
+
const blueprint = await getApiBlueprint(use_remote_api_defs ?? false);
|
|
97
|
+
const commandParams = {};
|
|
98
|
+
/**
|
|
99
|
+
* Whether or not to auto-select first option
|
|
100
|
+
*/
|
|
101
|
+
const is_interactive = args['y'] !== true;
|
|
102
|
+
const ctx = {
|
|
103
|
+
blueprint,
|
|
104
|
+
is_interactive,
|
|
105
|
+
};
|
|
106
|
+
for (const k in args) {
|
|
107
|
+
if (k === '_')
|
|
108
|
+
continue;
|
|
109
|
+
const v = args[k];
|
|
110
|
+
delete args[k];
|
|
111
|
+
args[k.replace(/-/g, '_')] = v;
|
|
112
|
+
commandParams[k.replace(/-/g, '_')] = v;
|
|
113
|
+
}
|
|
114
|
+
const selectedCommand = await interactForCommandSelection(args._, ctx);
|
|
115
|
+
if (isEqual(selectedCommand, ['login'])) {
|
|
116
|
+
if (args['server']) {
|
|
117
|
+
config.set('server', args['server']);
|
|
118
|
+
config.delete('current_workspace_id');
|
|
119
|
+
}
|
|
120
|
+
if (args['token']) {
|
|
121
|
+
const token = String(args['token']).trim();
|
|
122
|
+
await validateToken(token, args['workspace_id']);
|
|
123
|
+
config.set(`${getServer()}.pat`, token);
|
|
124
|
+
config.delete('current_workspace_id');
|
|
125
|
+
}
|
|
126
|
+
if (args['workspace_id']) {
|
|
127
|
+
config.set(`current_workspace_id`, args['workspace_id']);
|
|
128
|
+
}
|
|
129
|
+
if (args['token'] || args['workspace_id'] || args['server']) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
await interactForLogin();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
else if (isEqual(selectedCommand, ['logout'])) {
|
|
136
|
+
config.delete('pat');
|
|
137
|
+
console.log('Logged out!');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
|
|
141
|
+
console.log(config.path);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
|
|
145
|
+
await interactForUseRemoteApiDefs();
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
else if (isEqual(selectedCommand, ['select', 'workspace'])) {
|
|
149
|
+
await interactForWorkspaceId();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
else if (isEqual(selectedCommand, ['events', 'list'])) {
|
|
153
|
+
if (!commandParams['since']) {
|
|
154
|
+
const date = new Date();
|
|
155
|
+
date.setMonth(date.getMonth() - 1);
|
|
156
|
+
commandParams['since'] = date.toISOString();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (isEqual(selectedCommand, ['select', 'server'])) {
|
|
160
|
+
if (args['server']) {
|
|
161
|
+
config.set('server', args['server']);
|
|
162
|
+
config.delete('current_workspace_id');
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
await interactForServerSelection();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
else if (isEqual(selectedCommand, ['health', 'get-health'])) {
|
|
169
|
+
await RequestSeamApi({
|
|
170
|
+
path: '/health/get_health',
|
|
171
|
+
params: {},
|
|
172
|
+
});
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
// TODO - do this using the OpenAPI spec for the command rather than
|
|
176
|
+
// explicitly encoding the property names
|
|
177
|
+
if (commandParams['accepted_providers']) {
|
|
178
|
+
commandParams['accepted_providers'] =
|
|
179
|
+
commandParams['accepted_providers'].split(',');
|
|
180
|
+
}
|
|
181
|
+
// Hit 'back' on a top-level command path, so we start again
|
|
182
|
+
const lastCommandPath = selectedCommand.slice(-1)[0];
|
|
183
|
+
if (lastCommandPath === '[Back]') {
|
|
184
|
+
return await cli({
|
|
185
|
+
...args,
|
|
186
|
+
_: [],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const params = await interactForCommandParams({ command: selectedCommand, params: commandParams }, ctx);
|
|
190
|
+
if (params === '[Back]') {
|
|
191
|
+
const previousCommands = [...selectedCommand];
|
|
192
|
+
previousCommands.pop();
|
|
193
|
+
return await cli({
|
|
194
|
+
...args,
|
|
195
|
+
_: previousCommands,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const apiPath = `/${selectedCommand.join('/').replace(/-/g, '_')}`;
|
|
199
|
+
if (apiPath.includes('/events/list') && params.between) {
|
|
200
|
+
delete params.since;
|
|
201
|
+
}
|
|
202
|
+
const response = await RequestSeamApi({
|
|
203
|
+
path: apiPath,
|
|
204
|
+
params,
|
|
205
|
+
});
|
|
206
|
+
if (response.data?.connect_webview) {
|
|
207
|
+
await handleConnectWebviewResponse(response.data.connect_webview);
|
|
208
|
+
}
|
|
209
|
+
if (response.data?.action_attempt) {
|
|
210
|
+
interactForActionAttemptPoll(response.data.action_attempt);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const handleConnectWebviewResponse = async (connect_webview) => {
|
|
214
|
+
const url = connect_webview.url;
|
|
215
|
+
if (process.env['INSIDE_WEB_BROWSER'] !== '1') {
|
|
216
|
+
const { action } = await prompts({
|
|
217
|
+
type: 'confirm',
|
|
218
|
+
name: 'action',
|
|
219
|
+
message: 'Would you like to open the webview in your browser?',
|
|
220
|
+
});
|
|
221
|
+
if (action) {
|
|
222
|
+
const { default: open } = await import('open');
|
|
223
|
+
await open(url);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
cli(parseArgs(process.argv.slice(2), { string: ['code'] })).catch((e) => {
|
|
228
|
+
console.log(chalk.red(`CLI Error: ${e.toString()}\n${e.stack}`));
|
|
229
|
+
if (e.toString().includes('object Object')) {
|
|
230
|
+
console.log(e);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=cli.js.map
|
package/bin/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// This package is a CLI, not a library: nothing here is part of a public API.
|
|
2
|
+
// The entrypoint exists so that importing the package resolves to a module
|
|
3
|
+
// instead of failing, for consumers that depend on it to get the bin.
|
|
4
|
+
export default null;
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,sEAAsE;AACtE,eAAe,IAAI,CAAA"}
|