@authrim/setup 0.1.18 → 0.1.22

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 CHANGED
@@ -159,6 +159,77 @@ Options:
159
159
  --json Output in JSON format
160
160
  ```
161
161
 
162
+ ### `delete`
163
+
164
+ Delete an Authrim environment and its resources:
165
+
166
+ ```bash
167
+ npx @authrim/setup delete [options]
168
+
169
+ Options:
170
+ --env <name> Environment name to delete
171
+ -y, --yes Skip confirmation prompts (for CI/CD)
172
+ --no-workers Keep Workers
173
+ --no-d1 Keep D1 databases
174
+ --no-kv Keep KV namespaces
175
+ --no-queues Keep Queues
176
+ --no-r2 Keep R2 buckets
177
+ --all Delete all resource types (default)
178
+ ```
179
+
180
+ Examples:
181
+
182
+ ```bash
183
+ # Interactive mode - prompts for environment selection
184
+ npx @authrim/setup delete
185
+
186
+ # CI/CD mode - no prompts
187
+ npx @authrim/setup delete --env staging --yes
188
+
189
+ # Partial deletion - keep D1 databases
190
+ npx @authrim/setup delete --env dev --no-d1 --yes
191
+ ```
192
+
193
+ ### `info`
194
+
195
+ Display detailed information about Authrim resources:
196
+
197
+ ```bash
198
+ npx @authrim/setup info [options]
199
+
200
+ Options:
201
+ --env <name> Environment name
202
+ --json Output in JSON format (for scripting/CI)
203
+ --d1 Show only D1 database information
204
+ --workers Show only Worker information
205
+ ```
206
+
207
+ Examples:
208
+
209
+ ```bash
210
+ # Interactive mode
211
+ npx @authrim/setup info
212
+
213
+ # Specific environment with JSON output (for CI/CD)
214
+ npx @authrim/setup info --env prod --json
215
+
216
+ # D1 database details only
217
+ npx @authrim/setup info --env prod --d1
218
+ ```
219
+
220
+ ### `secrets`
221
+
222
+ Upload secrets to Cloudflare Workers:
223
+
224
+ ```bash
225
+ npx @authrim/setup secrets [options]
226
+
227
+ Options:
228
+ --env <name> Environment name
229
+ --config <path> Configuration file path
230
+ --keys-dir <path> Keys directory (default: ".keys")
231
+ ```
232
+
162
233
  ## Web UI Features
163
234
 
164
235
  ### Resource Provisioning
@@ -273,7 +344,9 @@ The main configuration file containing all environment settings:
273
344
  "adminUi": true,
274
345
  "saml": false,
275
346
  "async": false,
276
- "vc": false
347
+ "vc": false,
348
+ "bridge": false,
349
+ "policy": false
277
350
  },
278
351
  "keys": {
279
352
  "keyId": "kid-xxxxxxxx",
@@ -282,6 +355,24 @@ The main configuration file containing all environment settings:
282
355
  }
283
356
  ```
284
357
 
358
+ **URL Configuration**:
359
+ - `custom`: Your custom domain (optional). Set to `null` to use the auto-generated URL.
360
+ - `auto`: Auto-generated Cloudflare URL (workers.dev / pages.dev).
361
+
362
+ **Components**:
363
+ | Component | Description |
364
+ |-----------|-------------|
365
+ | `api` | Core OIDC API (required) |
366
+ | `loginUi` | Login/consent UI |
367
+ | `adminUi` | Admin dashboard |
368
+ | `saml` | SAML 2.0 IdP support |
369
+ | `async` | Async job processing (email, webhooks) |
370
+ | `vc` | Verifiable Credentials |
371
+ | `bridge` | External IdP / Social Login (Google, GitHub, etc.) |
372
+ | `policy` | ReBAC Policy Engine |
373
+
374
+ **CORS Auto-Configuration**: When LoginUI or AdminUI use different origins from the API, CORS allowed origins are automatically configured.
375
+
285
376
  ### authrim-lock.json
286
377
 
287
378
  Records provisioned resource IDs for re-deployment:
@@ -335,11 +426,13 @@ Authrim workers are deployed in a specific order to satisfy dependencies:
335
426
  Level 0: ar-lib-core # Durable Objects definitions (always first)
336
427
  Level 1: ar-discovery # Discovery endpoint
337
428
  Level 2: ar-auth, ar-token, ar-userinfo, ar-management # Core services (parallel)
338
- Level 3: ar-async, ar-saml, ar-vc, ar-bridge # Optional (parallel)
429
+ Level 3: ar-async, ar-saml, ar-vc, ar-bridge, ar-policy # Optional (parallel)
339
430
  Level 4: ar-router # Service bindings (always last)
340
431
  Level 5: ar-ui # Cloudflare Pages (optional)
341
432
  ```
342
433
 
434
+ **Note**: Only enabled components are deployed. Service bindings in ar-router are automatically configured based on your component selection.
435
+
343
436
  ## Initial Admin Setup
344
437
 
345
438
  After deployment, the CLI displays a one-time setup URL:
@@ -362,15 +455,41 @@ This URL allows you to:
362
455
  2. Access the Admin Dashboard
363
456
  3. Create OAuth clients and configure settings
364
457
 
458
+ ## CI/CD Integration
459
+
460
+ The CLI commands support non-interactive mode for automation:
461
+
462
+ ```bash
463
+ # Deploy without prompts
464
+ npx @authrim/setup deploy --env prod --yes
465
+
466
+ # Delete environment in CI (requires explicit --env)
467
+ npx @authrim/setup delete --env staging --yes
468
+
469
+ # Get resource info as JSON for scripting
470
+ npx @authrim/setup info --env prod --json
471
+
472
+ # Example: Parse JSON output
473
+ npx @authrim/setup info --env prod --json | jq '.d1[0].databaseSize'
474
+ ```
475
+
476
+ ### Environment Variables
477
+
478
+ The CLI respects standard Cloudflare environment variables:
479
+ - `CLOUDFLARE_API_TOKEN` - API token for authentication
480
+ - `CLOUDFLARE_ACCOUNT_ID` - Target account ID
481
+
365
482
  ## Security Features
366
483
 
367
484
  - **Session Token Authentication**: API endpoints require session tokens to prevent unauthorized access
368
485
  - **Path Traversal Prevention**: Key storage directory is validated to prevent directory traversal attacks
369
486
  - **Command Injection Prevention**: Browser launch URLs are validated to prevent shell injection
487
+ - **XSS Prevention**: User-controlled content is rendered safely using textContent instead of innerHTML
370
488
  - **Error Sanitization**: Error messages are sanitized to prevent information leakage
371
489
  - **Operation Locking**: Concurrent operations are serialized to prevent race conditions
372
490
  - **Localhost-Only Web UI**: Web UI only binds to localhost for security
373
491
  - **Auto Port Selection**: If default port is in use, automatically finds an available port (3456-3465)
492
+ - **Selective Deployment**: Only explicitly enabled components are deployed, minimizing attack surface
374
493
 
375
494
  ## Requirements
376
495
 
@@ -454,6 +573,10 @@ npx @authrim/setup manage --port 4000
454
573
 
455
574
  Ensure all dependent workers are deployed. The ar-router must be deployed last as it references other workers via Service Bindings.
456
575
 
576
+ If you see an error like `Could not resolve service binding 'OP_ASYNC'`, it means you're trying to deploy ar-router with a component enabled that hasn't been deployed yet. Either:
577
+ 1. Deploy the missing component first
578
+ 2. Disable the component in your configuration
579
+
457
580
  ## License
458
581
 
459
582
  Apache License 2.0 - see [LICENSE](https://github.com/sgrastar/authrim/blob/main/LICENSE) for details.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Delete Command
3
+ *
4
+ * Deletes an Authrim environment and its resources.
5
+ * Designed for both interactive and CI use.
6
+ */
7
+ export interface DeleteCommandOptions {
8
+ env?: string;
9
+ yes?: boolean;
10
+ workers?: boolean;
11
+ d1?: boolean;
12
+ kv?: boolean;
13
+ queues?: boolean;
14
+ r2?: boolean;
15
+ all?: boolean;
16
+ }
17
+ export declare function deleteCommand(options: DeleteCommandOptions): Promise<void>;
18
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/delete.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAMD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyIhF"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Delete Command
3
+ *
4
+ * Deletes an Authrim environment and its resources.
5
+ * Designed for both interactive and CI use.
6
+ */
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ import { confirm } from '@inquirer/prompts';
10
+ import { isWranglerInstalled, checkAuth, detectEnvironments, deleteEnvironment, } from '../../core/cloudflare.js';
11
+ // =============================================================================
12
+ // Delete Command
13
+ // =============================================================================
14
+ export async function deleteCommand(options) {
15
+ console.log(chalk.bold('\nšŸ—‘ļø Authrim Environment Delete\n'));
16
+ // Check prerequisites
17
+ const spinner = ora('Checking prerequisites...').start();
18
+ if (!(await isWranglerInstalled())) {
19
+ spinner.fail('Wrangler is not installed');
20
+ console.log(chalk.yellow('\nInstall wrangler:'));
21
+ console.log(' npm install -g wrangler');
22
+ process.exit(1);
23
+ }
24
+ const auth = await checkAuth();
25
+ if (!auth.isLoggedIn) {
26
+ spinner.fail('Not logged in to Cloudflare');
27
+ console.log(chalk.yellow('\nLogin with:'));
28
+ console.log(' wrangler login');
29
+ process.exit(1);
30
+ }
31
+ spinner.succeed(`Logged in as ${auth.email || 'unknown'}`);
32
+ // Get environment name
33
+ let env = options.env;
34
+ if (!env) {
35
+ // Detect environments
36
+ const detectSpinner = ora('Detecting environments...').start();
37
+ const environments = await detectEnvironments();
38
+ detectSpinner.stop();
39
+ if (environments.length === 0) {
40
+ console.log(chalk.yellow('\nNo Authrim environments found.'));
41
+ process.exit(0);
42
+ }
43
+ console.log(chalk.cyan('\nDetected environments:'));
44
+ for (const e of environments) {
45
+ console.log(chalk.gray(` • ${e.env} (${e.workers.length} workers, ${e.d1.length} D1, ${e.kv.length} KV)`));
46
+ }
47
+ if (!options.yes) {
48
+ // Interactive mode: ask which environment to delete
49
+ const { select } = await import('@inquirer/prompts');
50
+ env = await select({
51
+ message: 'Select environment to delete:',
52
+ choices: environments.map((e) => ({
53
+ name: `${e.env} (${e.workers.length} workers, ${e.d1.length} D1, ${e.kv.length} KV)`,
54
+ value: e.env,
55
+ })),
56
+ });
57
+ }
58
+ else {
59
+ console.error(chalk.red('\nError: --env is required when using --yes flag'));
60
+ process.exit(1);
61
+ }
62
+ }
63
+ console.log(chalk.cyan(`\nEnvironment: ${env}`));
64
+ // Determine what to delete
65
+ const deleteWorkers = options.all || options.workers !== false;
66
+ const deleteD1 = options.all || options.d1 !== false;
67
+ const deleteKV = options.all || options.kv !== false;
68
+ const deleteQueues = options.all || options.queues !== false;
69
+ const deleteR2 = options.all || options.r2 !== false;
70
+ console.log(chalk.gray('\nResources to delete:'));
71
+ console.log(chalk.gray(` Workers: ${deleteWorkers ? 'āœ“' : 'āœ—'}`));
72
+ console.log(chalk.gray(` D1: ${deleteD1 ? 'āœ“' : 'āœ—'}`));
73
+ console.log(chalk.gray(` KV: ${deleteKV ? 'āœ“' : 'āœ—'}`));
74
+ console.log(chalk.gray(` Queues: ${deleteQueues ? 'āœ“' : 'āœ—'}`));
75
+ console.log(chalk.gray(` R2: ${deleteR2 ? 'āœ“' : 'āœ—'}`));
76
+ // Confirm deletion
77
+ if (!options.yes) {
78
+ console.log('');
79
+ const confirmed = await confirm({
80
+ message: chalk.red(`āš ļø This will permanently delete all resources for "${env}". Continue?`),
81
+ default: false,
82
+ });
83
+ if (!confirmed) {
84
+ console.log(chalk.yellow('\nDeletion cancelled.'));
85
+ return;
86
+ }
87
+ }
88
+ console.log('');
89
+ // Delete environment
90
+ const result = await deleteEnvironment({
91
+ env,
92
+ deleteWorkers,
93
+ deleteD1,
94
+ deleteKV,
95
+ deleteQueues,
96
+ deleteR2,
97
+ onProgress: (msg) => console.log(msg),
98
+ });
99
+ // Summary
100
+ console.log(chalk.bold('\n━━━ Deletion Summary ━━━\n'));
101
+ if (result.deleted.workers.length > 0) {
102
+ console.log(chalk.green(`Workers deleted: ${result.deleted.workers.length}`));
103
+ }
104
+ if (result.deleted.d1.length > 0) {
105
+ console.log(chalk.green(`D1 databases deleted: ${result.deleted.d1.length}`));
106
+ }
107
+ if (result.deleted.kv.length > 0) {
108
+ console.log(chalk.green(`KV namespaces deleted: ${result.deleted.kv.length}`));
109
+ }
110
+ if (result.deleted.queues.length > 0) {
111
+ console.log(chalk.green(`Queues deleted: ${result.deleted.queues.length}`));
112
+ }
113
+ if (result.deleted.r2.length > 0) {
114
+ console.log(chalk.green(`R2 buckets deleted: ${result.deleted.r2.length}`));
115
+ }
116
+ if (result.errors.length > 0) {
117
+ console.log(chalk.yellow(`\nErrors (${result.errors.length}):`));
118
+ for (const error of result.errors) {
119
+ console.log(chalk.red(` • ${error}`));
120
+ }
121
+ }
122
+ if (result.success) {
123
+ console.log(chalk.green('\nāœ… Environment deleted successfully!'));
124
+ }
125
+ else {
126
+ console.log(chalk.yellow('\nāš ļø Environment deletion completed with errors.'));
127
+ process.exit(1);
128
+ }
129
+ }
130
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/cli/commands/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Info Command
3
+ *
4
+ * Displays detailed information about Authrim resources.
5
+ * Designed for both interactive and CI use.
6
+ */
7
+ export interface InfoCommandOptions {
8
+ env?: string;
9
+ json?: boolean;
10
+ d1?: boolean;
11
+ workers?: boolean;
12
+ }
13
+ export declare function infoCommand(options: InfoCommandOptions): Promise<void>;
14
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyL5E"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Info Command
3
+ *
4
+ * Displays detailed information about Authrim resources.
5
+ * Designed for both interactive and CI use.
6
+ */
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ import { isWranglerInstalled, checkAuth, detectEnvironments, getD1Info, getWorkerDeployments, } from '../../core/cloudflare.js';
10
+ // =============================================================================
11
+ // Info Command
12
+ // =============================================================================
13
+ export async function infoCommand(options) {
14
+ if (!options.json) {
15
+ console.log(chalk.bold('\nšŸ“Š Authrim Resource Info\n'));
16
+ }
17
+ // Check prerequisites
18
+ const spinner = ora('Checking prerequisites...').start();
19
+ if (!(await isWranglerInstalled())) {
20
+ spinner.fail('Wrangler is not installed');
21
+ if (!options.json) {
22
+ console.log(chalk.yellow('\nInstall wrangler:'));
23
+ console.log(' npm install -g wrangler');
24
+ }
25
+ process.exit(1);
26
+ }
27
+ const auth = await checkAuth();
28
+ if (!auth.isLoggedIn) {
29
+ spinner.fail('Not logged in to Cloudflare');
30
+ if (!options.json) {
31
+ console.log(chalk.yellow('\nLogin with:'));
32
+ console.log(' wrangler login');
33
+ }
34
+ process.exit(1);
35
+ }
36
+ spinner.succeed(`Logged in as ${auth.email || 'unknown'}`);
37
+ // Get environment
38
+ let env = options.env;
39
+ let envInfo;
40
+ if (!env) {
41
+ // Detect environments
42
+ const detectSpinner = ora('Detecting environments...').start();
43
+ const environments = await detectEnvironments();
44
+ detectSpinner.stop();
45
+ if (environments.length === 0) {
46
+ if (options.json) {
47
+ console.log(JSON.stringify({ error: 'No environments found' }));
48
+ }
49
+ else {
50
+ console.log(chalk.yellow('\nNo Authrim environments found.'));
51
+ }
52
+ process.exit(0);
53
+ }
54
+ if (environments.length === 1) {
55
+ env = environments[0].env;
56
+ envInfo = environments[0];
57
+ }
58
+ else {
59
+ // Interactive mode: ask which environment
60
+ const { select } = await import('@inquirer/prompts');
61
+ env = await select({
62
+ message: 'Select environment:',
63
+ choices: environments.map((e) => ({
64
+ name: `${e.env} (${e.workers.length} workers, ${e.d1.length} D1, ${e.kv.length} KV)`,
65
+ value: e.env,
66
+ })),
67
+ });
68
+ envInfo = environments.find((e) => e.env === env);
69
+ }
70
+ }
71
+ else {
72
+ // Find environment info
73
+ const detectSpinner = ora('Detecting environments...').start();
74
+ const environments = await detectEnvironments();
75
+ detectSpinner.stop();
76
+ envInfo = environments.find((e) => e.env === env);
77
+ if (!envInfo) {
78
+ if (options.json) {
79
+ console.log(JSON.stringify({ error: `Environment not found: ${env}` }));
80
+ }
81
+ else {
82
+ console.error(chalk.red(`\nEnvironment not found: ${env}`));
83
+ }
84
+ process.exit(1);
85
+ }
86
+ }
87
+ const output = { environment: env };
88
+ // Determine what to show (default: both)
89
+ const showD1 = options.d1 || (!options.d1 && !options.workers);
90
+ const showWorkers = options.workers || (!options.d1 && !options.workers);
91
+ // D1 Information
92
+ if (showD1 && envInfo && envInfo.d1.length > 0) {
93
+ if (!options.json) {
94
+ console.log(chalk.bold(`\nšŸ“Š D1 Databases (${envInfo.d1.length})`));
95
+ }
96
+ output.d1 = [];
97
+ for (const db of envInfo.d1) {
98
+ const infoSpinner = options.json ? null : ora(`Fetching info for ${db.name}...`).start();
99
+ try {
100
+ const info = await getD1Info(db.name);
101
+ infoSpinner?.succeed(db.name);
102
+ output.d1.push({
103
+ name: db.name,
104
+ id: db.id,
105
+ databaseSize: info.databaseSize,
106
+ numTables: info.numTables,
107
+ region: info.region,
108
+ });
109
+ if (!options.json) {
110
+ console.log(chalk.gray(` ID: ${db.id}`));
111
+ if (info.databaseSize) {
112
+ console.log(chalk.gray(` Size: ${info.databaseSize}`));
113
+ }
114
+ if (info.numTables !== null && info.numTables !== undefined) {
115
+ console.log(chalk.gray(` Tables: ${info.numTables}`));
116
+ }
117
+ if (info.region) {
118
+ console.log(chalk.gray(` Region: ${info.region}`));
119
+ }
120
+ }
121
+ }
122
+ catch (error) {
123
+ infoSpinner?.fail(db.name);
124
+ output.d1.push({
125
+ name: db.name,
126
+ id: db.id,
127
+ });
128
+ }
129
+ }
130
+ }
131
+ // Worker Information
132
+ if (showWorkers && envInfo && envInfo.workers.length > 0) {
133
+ if (!options.json) {
134
+ console.log(chalk.bold(`\nšŸ”§ Workers (${envInfo.workers.length})`));
135
+ }
136
+ output.workers = [];
137
+ for (const worker of envInfo.workers) {
138
+ const infoSpinner = options.json ? null : ora(`Fetching info for ${worker.name}...`).start();
139
+ try {
140
+ const info = await getWorkerDeployments(worker.name);
141
+ infoSpinner?.succeed(worker.name);
142
+ output.workers.push({
143
+ name: worker.name,
144
+ exists: info.exists,
145
+ versionId: info.versionId,
146
+ lastDeployedAt: info.lastDeployedAt,
147
+ author: info.author,
148
+ });
149
+ if (!options.json) {
150
+ if (info.exists) {
151
+ if (info.versionId) {
152
+ console.log(chalk.gray(` Version: ${info.versionId}`));
153
+ }
154
+ if (info.lastDeployedAt) {
155
+ console.log(chalk.gray(` Deployed: ${info.lastDeployedAt}`));
156
+ }
157
+ if (info.author) {
158
+ console.log(chalk.gray(` Author: ${info.author}`));
159
+ }
160
+ }
161
+ else {
162
+ console.log(chalk.yellow(` Status: Not deployed`));
163
+ }
164
+ }
165
+ }
166
+ catch (error) {
167
+ infoSpinner?.fail(worker.name);
168
+ output.workers.push({
169
+ name: worker.name,
170
+ exists: false,
171
+ });
172
+ }
173
+ }
174
+ }
175
+ // JSON output
176
+ if (options.json) {
177
+ console.log(JSON.stringify(output, null, 2));
178
+ }
179
+ else {
180
+ console.log('');
181
+ }
182
+ }
183
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiDH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgXD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuErE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiDH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAiXD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuErE"}