workos 0.11.2 → 0.12.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 +165 -6
- package/dist/bin.js +22 -1
- package/dist/bin.js.map +1 -1
- package/dist/check-coverage.ts +237 -0
- package/dist/commands/debug.js +0 -1
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/dev.d.ts +23 -0
- package/dist/commands/dev.js +139 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/emulate.d.ts +6 -0
- package/dist/commands/emulate.js +64 -0
- package/dist/commands/emulate.js.map +1 -0
- package/dist/commands/login.js +0 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/emulate/core/id.d.ts +48 -0
- package/dist/emulate/core/id.js +73 -0
- package/dist/emulate/core/id.js.map +1 -0
- package/dist/emulate/core/index.d.ts +8 -0
- package/dist/emulate/core/index.js +8 -0
- package/dist/emulate/core/index.js.map +1 -0
- package/dist/emulate/core/jwt.d.ts +28 -0
- package/dist/emulate/core/jwt.js +78 -0
- package/dist/emulate/core/jwt.js.map +1 -0
- package/dist/emulate/core/middleware/auth.d.ts +15 -0
- package/dist/emulate/core/middleware/auth.js +17 -0
- package/dist/emulate/core/middleware/auth.js.map +1 -0
- package/dist/emulate/core/middleware/error-handler.d.ts +22 -0
- package/dist/emulate/core/middleware/error-handler.js +72 -0
- package/dist/emulate/core/middleware/error-handler.js.map +1 -0
- package/dist/emulate/core/pagination.d.ts +27 -0
- package/dist/emulate/core/pagination.js +43 -0
- package/dist/emulate/core/pagination.js.map +1 -0
- package/dist/emulate/core/plugin.d.ts +15 -0
- package/dist/emulate/core/plugin.js +2 -0
- package/dist/emulate/core/plugin.js.map +1 -0
- package/dist/emulate/core/server.d.ts +17 -0
- package/dist/emulate/core/server.js +90 -0
- package/dist/emulate/core/server.js.map +1 -0
- package/dist/emulate/core/store.d.ts +44 -0
- package/dist/emulate/core/store.js +169 -0
- package/dist/emulate/core/store.js.map +1 -0
- package/dist/emulate/index.d.ts +25 -0
- package/dist/emulate/index.js +47 -0
- package/dist/emulate/index.js.map +1 -0
- package/dist/emulate/workos/constants.d.ts +56 -0
- package/dist/emulate/workos/constants.js +56 -0
- package/dist/emulate/workos/constants.js.map +1 -0
- package/dist/emulate/workos/entities.d.ts +360 -0
- package/dist/emulate/workos/entities.js +2 -0
- package/dist/emulate/workos/entities.js.map +1 -0
- package/dist/emulate/workos/event-bus.d.ts +17 -0
- package/dist/emulate/workos/event-bus.js +70 -0
- package/dist/emulate/workos/event-bus.js.map +1 -0
- package/dist/emulate/workos/helpers.d.ts +72 -0
- package/dist/emulate/workos/helpers.js +211 -0
- package/dist/emulate/workos/helpers.js.map +1 -0
- package/dist/emulate/workos/index.d.ts +91 -0
- package/dist/emulate/workos/index.js +322 -0
- package/dist/emulate/workos/index.js.map +1 -0
- package/dist/emulate/workos/role-helpers.d.ts +21 -0
- package/dist/emulate/workos/role-helpers.js +130 -0
- package/dist/emulate/workos/role-helpers.js.map +1 -0
- package/dist/emulate/workos/routes/api-keys.d.ts +2 -0
- package/dist/emulate/workos/routes/api-keys.js +32 -0
- package/dist/emulate/workos/routes/api-keys.js.map +1 -0
- package/dist/emulate/workos/routes/audit-logs.d.ts +2 -0
- package/dist/emulate/workos/routes/audit-logs.js +104 -0
- package/dist/emulate/workos/routes/audit-logs.js.map +1 -0
- package/dist/emulate/workos/routes/auth-challenges.d.ts +2 -0
- package/dist/emulate/workos/routes/auth-challenges.js +51 -0
- package/dist/emulate/workos/routes/auth-challenges.js.map +1 -0
- package/dist/emulate/workos/routes/auth-factors.d.ts +2 -0
- package/dist/emulate/workos/routes/auth-factors.js +51 -0
- package/dist/emulate/workos/routes/auth-factors.js.map +1 -0
- package/dist/emulate/workos/routes/auth.d.ts +2 -0
- package/dist/emulate/workos/routes/auth.js +350 -0
- package/dist/emulate/workos/routes/auth.js.map +1 -0
- package/dist/emulate/workos/routes/authorization-checks.d.ts +10 -0
- package/dist/emulate/workos/routes/authorization-checks.js +123 -0
- package/dist/emulate/workos/routes/authorization-checks.js.map +1 -0
- package/dist/emulate/workos/routes/authorization-org-roles.d.ts +2 -0
- package/dist/emulate/workos/routes/authorization-org-roles.js +64 -0
- package/dist/emulate/workos/routes/authorization-org-roles.js.map +1 -0
- package/dist/emulate/workos/routes/authorization-permissions.d.ts +2 -0
- package/dist/emulate/workos/routes/authorization-permissions.js +67 -0
- package/dist/emulate/workos/routes/authorization-permissions.js.map +1 -0
- package/dist/emulate/workos/routes/authorization-resources.d.ts +2 -0
- package/dist/emulate/workos/routes/authorization-resources.js +117 -0
- package/dist/emulate/workos/routes/authorization-resources.js.map +1 -0
- package/dist/emulate/workos/routes/authorization-roles.d.ts +2 -0
- package/dist/emulate/workos/routes/authorization-roles.js +13 -0
- package/dist/emulate/workos/routes/authorization-roles.js.map +1 -0
- package/dist/emulate/workos/routes/config.d.ts +2 -0
- package/dist/emulate/workos/routes/config.js +57 -0
- package/dist/emulate/workos/routes/config.js.map +1 -0
- package/dist/emulate/workos/routes/connect.d.ts +2 -0
- package/dist/emulate/workos/routes/connect.js +65 -0
- package/dist/emulate/workos/routes/connect.js.map +1 -0
- package/dist/emulate/workos/routes/connections.d.ts +2 -0
- package/dist/emulate/workos/routes/connections.js +73 -0
- package/dist/emulate/workos/routes/connections.js.map +1 -0
- package/dist/emulate/workos/routes/data-integrations.d.ts +2 -0
- package/dist/emulate/workos/routes/data-integrations.js +55 -0
- package/dist/emulate/workos/routes/data-integrations.js.map +1 -0
- package/dist/emulate/workos/routes/directories.d.ts +2 -0
- package/dist/emulate/workos/routes/directories.js +90 -0
- package/dist/emulate/workos/routes/directories.js.map +1 -0
- package/dist/emulate/workos/routes/email-verification.d.ts +2 -0
- package/dist/emulate/workos/routes/email-verification.js +49 -0
- package/dist/emulate/workos/routes/email-verification.js.map +1 -0
- package/dist/emulate/workos/routes/events.d.ts +2 -0
- package/dist/emulate/workos/routes/events.js +18 -0
- package/dist/emulate/workos/routes/events.js.map +1 -0
- package/dist/emulate/workos/routes/feature-flags.d.ts +2 -0
- package/dist/emulate/workos/routes/feature-flags.js +103 -0
- package/dist/emulate/workos/routes/feature-flags.js.map +1 -0
- package/dist/emulate/workos/routes/invitations.d.ts +2 -0
- package/dist/emulate/workos/routes/invitations.js +122 -0
- package/dist/emulate/workos/routes/invitations.js.map +1 -0
- package/dist/emulate/workos/routes/legacy-mfa.d.ts +2 -0
- package/dist/emulate/workos/routes/legacy-mfa.js +75 -0
- package/dist/emulate/workos/routes/legacy-mfa.js.map +1 -0
- package/dist/emulate/workos/routes/magic-auth.d.ts +2 -0
- package/dist/emulate/workos/routes/magic-auth.js +32 -0
- package/dist/emulate/workos/routes/magic-auth.js.map +1 -0
- package/dist/emulate/workos/routes/memberships.d.ts +2 -0
- package/dist/emulate/workos/routes/memberships.js +114 -0
- package/dist/emulate/workos/routes/memberships.js.map +1 -0
- package/dist/emulate/workos/routes/organization-domains.d.ts +2 -0
- package/dist/emulate/workos/routes/organization-domains.js +58 -0
- package/dist/emulate/workos/routes/organization-domains.js.map +1 -0
- package/dist/emulate/workos/routes/organizations.d.ts +2 -0
- package/dist/emulate/workos/routes/organizations.js +131 -0
- package/dist/emulate/workos/routes/organizations.js.map +1 -0
- package/dist/emulate/workos/routes/password-reset.d.ts +2 -0
- package/dist/emulate/workos/routes/password-reset.js +61 -0
- package/dist/emulate/workos/routes/password-reset.js.map +1 -0
- package/dist/emulate/workos/routes/pipes.d.ts +2 -0
- package/dist/emulate/workos/routes/pipes.js +82 -0
- package/dist/emulate/workos/routes/pipes.js.map +1 -0
- package/dist/emulate/workos/routes/portal.d.ts +2 -0
- package/dist/emulate/workos/routes/portal.js +18 -0
- package/dist/emulate/workos/routes/portal.js.map +1 -0
- package/dist/emulate/workos/routes/radar.d.ts +2 -0
- package/dist/emulate/workos/routes/radar.js +41 -0
- package/dist/emulate/workos/routes/radar.js.map +1 -0
- package/dist/emulate/workos/routes/sessions.d.ts +2 -0
- package/dist/emulate/workos/routes/sessions.js +51 -0
- package/dist/emulate/workos/routes/sessions.js.map +1 -0
- package/dist/emulate/workos/routes/sso.d.ts +2 -0
- package/dist/emulate/workos/routes/sso.js +161 -0
- package/dist/emulate/workos/routes/sso.js.map +1 -0
- package/dist/emulate/workos/routes/user-features.d.ts +2 -0
- package/dist/emulate/workos/routes/user-features.js +50 -0
- package/dist/emulate/workos/routes/user-features.js.map +1 -0
- package/dist/emulate/workos/routes/users.d.ts +2 -0
- package/dist/emulate/workos/routes/users.js +129 -0
- package/dist/emulate/workos/routes/users.js.map +1 -0
- package/dist/emulate/workos/routes/webhook-endpoints.d.ts +2 -0
- package/dist/emulate/workos/routes/webhook-endpoints.js +66 -0
- package/dist/emulate/workos/routes/webhook-endpoints.js.map +1 -0
- package/dist/emulate/workos/routes/widgets.d.ts +2 -0
- package/dist/emulate/workos/routes/widgets.js +27 -0
- package/dist/emulate/workos/routes/widgets.js.map +1 -0
- package/dist/emulate/workos/store.d.ts +48 -0
- package/dist/emulate/workos/store.js +102 -0
- package/dist/emulate/workos/store.js.map +1 -0
- package/dist/emulate/workos/webhook-signer.d.ts +1 -0
- package/dist/emulate/workos/webhook-signer.js +8 -0
- package/dist/emulate/workos/webhook-signer.js.map +1 -0
- package/dist/gen-routes-lib.spec.ts +659 -0
- package/dist/gen-routes-lib.ts +647 -0
- package/dist/gen-routes.ts +96 -0
- package/dist/lib/dev-command.d.ts +26 -0
- package/dist/lib/dev-command.js +122 -0
- package/dist/lib/dev-command.js.map +1 -0
- package/dist/lib/run-with-core.js +0 -3
- package/dist/lib/run-with-core.js.map +1 -1
- package/dist/lib/settings.js +1 -1
- package/dist/lib/settings.js.map +1 -1
- package/dist/utils/help-json.js +1 -0
- package/dist/utils/help-json.js.map +1 -1
- package/dist/utils/register-subcommand.d.ts +5 -2
- package/dist/utils/register-subcommand.js +16 -19
- package/dist/utils/register-subcommand.js.map +1 -1
- package/package.json +21 -8
package/README.md
CHANGED
|
@@ -192,6 +192,164 @@ Inspects a directory's sync state, user/group counts, recent events, and detects
|
|
|
192
192
|
workos debug-sync directory_01ABC123
|
|
193
193
|
```
|
|
194
194
|
|
|
195
|
+
<!-- UNRELEASED: Local Development (emulator) — hidden until beta testing is complete.
|
|
196
|
+
To restore, uncomment this section and re-enable the `emulate` and `dev` commands
|
|
197
|
+
in src/bin.ts and src/utils/help-json.ts.
|
|
198
|
+
|
|
199
|
+
### Local Development
|
|
200
|
+
|
|
201
|
+
Test your WorkOS integration locally without hitting the live API. The emulator provides a full in-memory WorkOS API replacement with all major endpoints.
|
|
202
|
+
|
|
203
|
+
#### `workos dev` — One command to start everything
|
|
204
|
+
|
|
205
|
+
The fastest way to develop locally. Starts the emulator and your app together, auto-detecting your framework and injecting the right environment variables.
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Auto-detects framework (Next.js, Vite, Remix, SvelteKit, etc.) and dev command
|
|
209
|
+
workos dev
|
|
210
|
+
|
|
211
|
+
# Override the dev command
|
|
212
|
+
workos dev -- npx vite --port 5173
|
|
213
|
+
|
|
214
|
+
# Custom emulator port and seed data
|
|
215
|
+
workos dev --port 8080 --seed workos-emulate.config.yaml
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Your app receives these environment variables automatically:
|
|
219
|
+
|
|
220
|
+
- `WORKOS_API_BASE_URL` — points to the local emulator (e.g. `http://localhost:4100`)
|
|
221
|
+
- `WORKOS_API_KEY` — `sk_test_default`
|
|
222
|
+
- `WORKOS_CLIENT_ID` — `client_emulate`
|
|
223
|
+
|
|
224
|
+
#### `workos emulate` — Standalone emulator
|
|
225
|
+
|
|
226
|
+
Run the emulator on its own for CI, test suites, or when you want manual control.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# Start with defaults (port 4100)
|
|
230
|
+
workos emulate
|
|
231
|
+
|
|
232
|
+
# CI-friendly: JSON output, custom port
|
|
233
|
+
workos emulate --port 9100 --json
|
|
234
|
+
# → {"url":"http://localhost:9100","port":9100,"apiKey":"sk_test_default","health":"http://localhost:9100/health"}
|
|
235
|
+
|
|
236
|
+
# Pre-load seed data
|
|
237
|
+
workos emulate --seed workos-emulate.config.yaml
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
The emulator supports `GET /health` for readiness polling and shuts down cleanly on Ctrl+C.
|
|
241
|
+
|
|
242
|
+
#### Seed configuration
|
|
243
|
+
|
|
244
|
+
Create a `workos-emulate.config.yaml` (auto-detected) or pass `--seed <path>`:
|
|
245
|
+
|
|
246
|
+
```yaml
|
|
247
|
+
users:
|
|
248
|
+
- email: alice@acme.com
|
|
249
|
+
first_name: Alice
|
|
250
|
+
password: test123
|
|
251
|
+
email_verified: true
|
|
252
|
+
|
|
253
|
+
organizations:
|
|
254
|
+
- name: Acme Corp
|
|
255
|
+
domains:
|
|
256
|
+
- domain: acme.com
|
|
257
|
+
state: verified
|
|
258
|
+
memberships:
|
|
259
|
+
- user_id: <user_id>
|
|
260
|
+
role: admin
|
|
261
|
+
|
|
262
|
+
connections:
|
|
263
|
+
- name: Acme SSO
|
|
264
|
+
organization: Acme Corp
|
|
265
|
+
connection_type: GenericSAML
|
|
266
|
+
domains: [acme.com]
|
|
267
|
+
|
|
268
|
+
roles:
|
|
269
|
+
- slug: admin
|
|
270
|
+
name: Admin
|
|
271
|
+
permissions: [posts:read, posts:write]
|
|
272
|
+
|
|
273
|
+
permissions:
|
|
274
|
+
- slug: posts:read
|
|
275
|
+
name: Read Posts
|
|
276
|
+
- slug: posts:write
|
|
277
|
+
name: Write Posts
|
|
278
|
+
|
|
279
|
+
webhookEndpoints:
|
|
280
|
+
- url: http://localhost:3000/webhooks
|
|
281
|
+
events: [user.created, organization.updated]
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
#### Programmatic API
|
|
285
|
+
|
|
286
|
+
Use the emulator directly in test suites without the CLI:
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
import { createEmulator } from 'workos/emulate';
|
|
290
|
+
|
|
291
|
+
const emulator = await createEmulator({
|
|
292
|
+
port: 0, // random available port
|
|
293
|
+
seed: {
|
|
294
|
+
users: [{ email: 'test@example.com', password: 'secret' }],
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
// Use emulator.url as your WORKOS_API_BASE_URL
|
|
299
|
+
const res = await fetch(`${emulator.url}/user_management/users`, {
|
|
300
|
+
headers: { Authorization: 'Bearer sk_test_default' },
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// Reset between tests (clears data, re-applies seed)
|
|
304
|
+
emulator.reset();
|
|
305
|
+
|
|
306
|
+
// Clean up
|
|
307
|
+
await emulator.close();
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### Emulated endpoints
|
|
311
|
+
|
|
312
|
+
The emulator covers the full WorkOS API surface (~84% of OpenAPI spec endpoints). Run `pnpm check:coverage <openapi-spec>` to see exact coverage.
|
|
313
|
+
|
|
314
|
+
| Endpoint Group | Routes |
|
|
315
|
+
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
316
|
+
| Organizations | CRUD, external_id lookup, domain management |
|
|
317
|
+
| Users | CRUD, email uniqueness, password management |
|
|
318
|
+
| Organization memberships | CRUD, role assignment, deactivate/reactivate |
|
|
319
|
+
| Organization domains | CRUD, verification |
|
|
320
|
+
| SSO connections | CRUD, domain-based lookup |
|
|
321
|
+
| SSO flow | Authorize, token exchange, profile, JWKS, SSO logout |
|
|
322
|
+
| AuthKit | OAuth authorize (login_hint, multi-user), authenticate (7 grant types incl. refresh_token, MFA TOTP, org selection, device code), PKCE, sealed sessions, impersonation |
|
|
323
|
+
| Sessions | List, revoke, logout redirect, JWKS per client |
|
|
324
|
+
| Email verification | Send code, confirm |
|
|
325
|
+
| Password reset | Create token, confirm |
|
|
326
|
+
| Magic auth | Create code |
|
|
327
|
+
| Auth factors | TOTP enrollment, delete |
|
|
328
|
+
| MFA challenges | Create challenge, verify code |
|
|
329
|
+
| Invitations | CRUD, accept, revoke, resend, get by token |
|
|
330
|
+
| Config | Redirect URIs, CORS origins, JWT template |
|
|
331
|
+
| User features | Authorized apps, connected accounts, data providers |
|
|
332
|
+
| Widgets | Token generation |
|
|
333
|
+
| Authorization (RBAC) | Environment roles, org roles (priority ordering), permissions, role-permission management |
|
|
334
|
+
| Authorization (FGA) | Resources CRUD, permission checks, role assignments |
|
|
335
|
+
| Directory Sync | List/get/delete directories, users, groups |
|
|
336
|
+
| Audit Logs | Actions, schemas, events, exports, org config/retention |
|
|
337
|
+
| Feature Flags | List/get, enable/disable, targets, org/user evaluations |
|
|
338
|
+
| Connect | Applications CRUD, client secrets |
|
|
339
|
+
| Data Integrations | OAuth authorize + token exchange |
|
|
340
|
+
| Radar | Attempts list/get, allow/deny lists |
|
|
341
|
+
| API Keys | Validate, delete, list by org |
|
|
342
|
+
| Portal | Generate admin portal links |
|
|
343
|
+
| Legacy MFA | Enroll/get/delete factors, challenge/verify |
|
|
344
|
+
| Webhook Endpoints | CRUD with auto-generated secrets, secret masking |
|
|
345
|
+
| Events | Paginated event stream with type filtering |
|
|
346
|
+
| Event Bus | Auto-emits events on entity CRUD via collection hooks, fire-and-forget webhook delivery with HMAC signatures |
|
|
347
|
+
| Pipes | Connection CRUD, mock `getAccessToken()` |
|
|
348
|
+
|
|
349
|
+
JWT tokens include `role` and `permissions` claims for org-scoped sessions. All list endpoints support cursor pagination (`before`, `after`, `limit`, `order`). Error responses match the WorkOS format (`{ message, code, errors }`).
|
|
350
|
+
|
|
351
|
+
END UNRELEASED -->
|
|
352
|
+
|
|
195
353
|
### Environment Management
|
|
196
354
|
|
|
197
355
|
```bash
|
|
@@ -466,12 +624,13 @@ workos install --api-key sk_test_xxx --client-id client_xxx --no-commit 2>/dev/n
|
|
|
466
624
|
|
|
467
625
|
### Environment Variables
|
|
468
626
|
|
|
469
|
-
| Variable | Effect
|
|
470
|
-
| ------------------------ |
|
|
471
|
-
| `WORKOS_API_KEY` | API key for management commands (bypasses stored config)
|
|
472
|
-
| `
|
|
473
|
-
| `
|
|
474
|
-
| `
|
|
627
|
+
| Variable | Effect |
|
|
628
|
+
| ------------------------ | --------------------------------------------------------- |
|
|
629
|
+
| `WORKOS_API_KEY` | API key for management commands (bypasses stored config) |
|
|
630
|
+
| `WORKOS_API_BASE_URL` | Override API base URL (set automatically by `workos dev`) |
|
|
631
|
+
| `WORKOS_NO_PROMPT=1` | Force non-interactive mode + JSON output |
|
|
632
|
+
| `WORKOS_FORCE_TTY=1` | Force interactive mode even when piped |
|
|
633
|
+
| `WORKOS_TELEMETRY=false` | Disable telemetry |
|
|
475
634
|
|
|
476
635
|
### Command Discovery
|
|
477
636
|
|
package/dist/bin.js
CHANGED
|
@@ -159,6 +159,7 @@ const installerOptions = {
|
|
|
159
159
|
if (!isJsonMode())
|
|
160
160
|
await checkForUpdates();
|
|
161
161
|
yargs(rawArgs)
|
|
162
|
+
.parserConfiguration({ 'populate--': true })
|
|
162
163
|
.env('WORKOS_INSTALLER')
|
|
163
164
|
.option('json', {
|
|
164
165
|
type: 'boolean',
|
|
@@ -171,7 +172,7 @@ yargs(rawArgs)
|
|
|
171
172
|
// Excluded: auth/claim/install/dashboard handle their own credential flows;
|
|
172
173
|
// skills/doctor/env/debug are utility commands where the warning is unnecessary.
|
|
173
174
|
const command = String(argv._?.[0] ?? '');
|
|
174
|
-
if (['auth', 'skills', 'doctor', 'env', 'claim', 'install', 'debug', 'dashboard', ''].includes(command))
|
|
175
|
+
if (['auth', 'skills', 'doctor', 'env', 'claim', 'install', 'debug', 'dashboard', 'emulate', 'dev', ''].includes(command))
|
|
175
176
|
return;
|
|
176
177
|
await applyInsecureStorage(argv.insecureStorage);
|
|
177
178
|
await maybeWarnUnclaimed();
|
|
@@ -1215,6 +1216,26 @@ yargs(rawArgs)
|
|
|
1215
1216
|
await resolveInstallCredentials(argv.apiKey, argv.installDir, argv.skipAuth, ensureAuthenticated);
|
|
1216
1217
|
const { handleInstall } = await import('./commands/install.js');
|
|
1217
1218
|
await handleInstall(argv);
|
|
1219
|
+
})
|
|
1220
|
+
.command('emulate', false, // Hidden: unreleased beta feature
|
|
1221
|
+
(yargs) => yargs.options({
|
|
1222
|
+
port: { type: 'number', default: 4100, describe: 'Port to listen on' },
|
|
1223
|
+
seed: { type: 'string', describe: 'Path to seed config file (YAML or JSON)' },
|
|
1224
|
+
}), async (argv) => {
|
|
1225
|
+
const { runEmulate } = await import('./commands/emulate.js');
|
|
1226
|
+
await runEmulate({ port: argv.port, seed: argv.seed, json: argv.json });
|
|
1227
|
+
})
|
|
1228
|
+
.command('dev', false, // Hidden: unreleased beta feature
|
|
1229
|
+
(yargs) => yargs.options({
|
|
1230
|
+
port: { type: 'number', default: 4100, describe: 'Emulator port' },
|
|
1231
|
+
seed: { type: 'string', describe: 'Path to seed config file' },
|
|
1232
|
+
}), async (argv) => {
|
|
1233
|
+
const { runDev } = await import('./commands/dev.js');
|
|
1234
|
+
await runDev({
|
|
1235
|
+
port: argv.port,
|
|
1236
|
+
seed: argv.seed,
|
|
1237
|
+
'--': argv['--'],
|
|
1238
|
+
});
|
|
1218
1239
|
})
|
|
1219
1240
|
.command('debug', false, (yargs) => {
|
|
1220
1241
|
yargs.options(insecureStorageOption);
|