@authrim/setup 0.1.5 → 0.1.7

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
@@ -14,13 +14,17 @@
14
14
  - Configuring environment-specific settings
15
15
  - Deploying all Authrim workers in the correct order
16
16
  - Setting up the initial administrator account
17
+ - **Managing existing environments** (view, inspect, delete)
17
18
 
18
19
  ## Quick Start
19
20
 
20
21
  ```bash
21
- # Using npx (recommended)
22
+ # Full setup with Web UI (recommended)
22
23
  npx @authrim/setup
23
24
 
25
+ # Manage existing environments (no source download needed)
26
+ npx @authrim/setup manage
27
+
24
28
  # Or install globally
25
29
  npm install -g @authrim/setup
26
30
  authrim-setup
@@ -36,9 +40,26 @@ Run without arguments to launch the interactive Web UI:
36
40
  npx @authrim/setup
37
41
  ```
38
42
 
39
- This opens a browser with a step-by-step wizard that guides you through the entire setup process.
43
+ This opens a browser with a step-by-step wizard featuring:
44
+ - **New Setup**: Create a new Authrim deployment from scratch
45
+ - **Load Config**: Resume or redeploy using an existing configuration
46
+ - **Manage Environments**: View and delete existing environments
47
+
48
+ ### 2. Environment Management Mode
49
+
50
+ Manage existing Authrim environments without downloading source code:
40
51
 
41
- ### 2. CLI Mode
52
+ ```bash
53
+ npx @authrim/setup manage
54
+ ```
55
+
56
+ Features:
57
+ - Auto-detect all Authrim environments in your Cloudflare account
58
+ - View resource counts (Workers, D1, KV, Queues, R2)
59
+ - Delete environments with granular resource selection
60
+ - Real-time progress display
61
+
62
+ ### 3. CLI Mode
42
63
 
43
64
  For terminal-based setup or CI/CD integration:
44
65
 
@@ -46,7 +67,7 @@ For terminal-based setup or CI/CD integration:
46
67
  npx @authrim/setup --cli
47
68
  ```
48
69
 
49
- ### 3. Deploy Existing Configuration
70
+ ### 4. Deploy Existing Configuration
50
71
 
51
72
  If you already have an `authrim-config.json`:
52
73
 
@@ -56,7 +77,7 @@ npx @authrim/setup deploy --config ./authrim-config.json --env prod
56
77
 
57
78
  ## Commands
58
79
 
59
- ### `init`
80
+ ### `init` (default)
60
81
 
61
82
  Initialize a new Authrim project:
62
83
 
@@ -64,12 +85,22 @@ Initialize a new Authrim project:
64
85
  authrim-setup init [options]
65
86
 
66
87
  Options:
67
- -e, --env <env> Environment name (default: "dev")
68
- -d, --dir <dir> Output directory (default: ".")
69
- --keys-dir <dir> Directory for keys (default: ".keys")
70
- --skip-keys Skip key generation
71
- --skip-provision Skip resource provisioning
72
- -y, --yes Skip confirmation prompts
88
+ --cli Use CLI mode instead of Web UI
89
+ --config <path> Load existing configuration file
90
+ --keep <path> Keep source files at specified path
91
+ --env <name> Environment name (prod, staging, dev)
92
+ ```
93
+
94
+ ### `manage`
95
+
96
+ Manage existing Authrim environments (no source code required):
97
+
98
+ ```bash
99
+ authrim-setup manage [options]
100
+
101
+ Options:
102
+ --port <number> Web UI port (default: 3456)
103
+ --no-browser Do not open browser automatically
73
104
  ```
74
105
 
75
106
  ### `deploy`
@@ -89,6 +120,20 @@ Options:
89
120
  -y, --yes Skip confirmation prompts
90
121
  ```
91
122
 
123
+ ### `download`
124
+
125
+ Download Authrim source code only:
126
+
127
+ ```bash
128
+ authrim-setup download [options]
129
+
130
+ Options:
131
+ -o, --output <path> Output directory (default: "./authrim")
132
+ --repo <repository> GitHub repository (default: "sgrastar/authrim")
133
+ --ref <gitRef> Git tag or branch (default: latest release)
134
+ --force Overwrite existing directory
135
+ ```
136
+
92
137
  ### `status`
93
138
 
94
139
  Check deployment status:
@@ -100,6 +145,79 @@ Options:
100
145
  -c, --config <path> Config file path
101
146
  ```
102
147
 
148
+ ### `config`
149
+
150
+ Manage configuration:
151
+
152
+ ```bash
153
+ authrim-setup config [options]
154
+
155
+ Options:
156
+ --show Show current configuration
157
+ --validate Validate configuration file
158
+ --json Output in JSON format
159
+ ```
160
+
161
+ ## Web UI Features
162
+
163
+ ### Resource Provisioning
164
+
165
+ Before creating resources, the UI shows a preview of what will be created:
166
+
167
+ ```
168
+ 📋 Resource Names:
169
+ D1 Databases:
170
+ • prod-authrim-core-db
171
+ • prod-authrim-pii-db
172
+
173
+ KV Namespaces:
174
+ • PROD-CLIENTS_CACHE
175
+ • PROD-SETTINGS
176
+ • PROD-AUTHRIM_CONFIG
177
+ ...
178
+
179
+ Cryptographic Keys:
180
+ • .keys/private.pem (RSA Private Key)
181
+ • .keys/public.jwk.json (JWK Public Key)
182
+ ...
183
+ ```
184
+
185
+ ### Real-time Progress
186
+
187
+ All operations show real-time progress:
188
+
189
+ ```
190
+ 📦 Provisioning 10 resources...
191
+
192
+ 📊 D1 Databases (0/2)
193
+ ⏳ Creating: prod-authrim-core-db...
194
+ ✅ prod-authrim-core-db (ID: 12345678...)
195
+ ⏳ Creating: prod-authrim-pii-db...
196
+ ✅ prod-authrim-pii-db (ID: 87654321...)
197
+ 📊 D1 Databases (2/2) ✓
198
+
199
+ 🗄️ KV Namespaces (0/8)
200
+ ⏳ Creating: PROD-CLIENTS_CACHE...
201
+ ...
202
+ ```
203
+
204
+ ### Environment Management
205
+
206
+ Delete environments with granular control:
207
+
208
+ ```
209
+ ⚠️ Delete Environment: prod
210
+
211
+ Select resources to delete:
212
+ ☑ Workers (12 workers)
213
+ ☑ D1 Databases (2 databases)
214
+ ☑ KV Namespaces (8 namespaces)
215
+ ☐ Queues (0 queues)
216
+ ☐ R2 Buckets (0 buckets)
217
+
218
+ [Cancel] [🗑️ Delete Selected]
219
+ ```
220
+
103
221
  ## Configuration Files
104
222
 
105
223
  ### authrim-config.json
@@ -154,8 +272,8 @@ Records provisioned resource IDs for re-deployment:
154
272
  "PII_DB": { "name": "prod-authrim-pii-db", "id": "..." }
155
273
  },
156
274
  "kv": {
157
- "CLIENTS_CACHE": { "name": "prod-CLIENTS_CACHE", "id": "..." },
158
- "SETTINGS": { "name": "prod-SETTINGS", "id": "..." }
275
+ "CLIENTS_CACHE": { "name": "PROD-CLIENTS_CACHE", "id": "..." },
276
+ "SETTINGS": { "name": "PROD-SETTINGS", "id": "..." }
159
277
  }
160
278
  }
161
279
  ```
@@ -174,6 +292,18 @@ Contains sensitive cryptographic material (gitignored):
174
292
  └── setup_token.txt # Initial admin setup token
175
293
  ```
176
294
 
295
+ ## Resource Naming Convention
296
+
297
+ Resources are named using the environment prefix:
298
+
299
+ | Resource Type | Naming Pattern | Example (prod) |
300
+ |--------------|----------------|----------------|
301
+ | Workers | `{env}-ar-{component}` | `prod-ar-auth` |
302
+ | D1 Database | `{env}-authrim-{type}-db` | `prod-authrim-core-db` |
303
+ | KV Namespace | `{ENV}-{NAME}` | `PROD-CLIENTS_CACHE` |
304
+ | Queue | `{env}-audit-queue` | `prod-audit-queue` |
305
+ | R2 Bucket | `{env}-authrim-avatars` | `prod-authrim-avatars` |
306
+
177
307
  ## Deployment Order
178
308
 
179
309
  Authrim workers are deployed in a specific order to satisfy dependencies:
@@ -217,13 +347,13 @@ This URL allows you to:
217
347
  - **Error Sanitization**: Error messages are sanitized to prevent information leakage
218
348
  - **Operation Locking**: Concurrent operations are serialized to prevent race conditions
219
349
  - **Localhost-Only Web UI**: Web UI only binds to localhost for security
350
+ - **Auto Port Selection**: If default port is in use, automatically finds an available port (3456-3465)
220
351
 
221
- ## Environment Variables
352
+ ## Requirements
222
353
 
223
- | Variable | Description | Default |
224
- |----------|-------------|---------|
225
- | `PORT` | Web UI server port | `3456` |
226
- | `HOST` | Web UI server host | `localhost` |
354
+ - Node.js >= 20.0.0
355
+ - [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/) installed and authenticated
356
+ - Cloudflare account with Workers Paid plan (for D1, KV, Durable Objects)
227
357
 
228
358
  ## Development
229
359
 
@@ -255,12 +385,6 @@ pnpm link --global
255
385
  authrim-setup --help
256
386
  ```
257
387
 
258
- ## Requirements
259
-
260
- - Node.js >= 20.0.0
261
- - [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/) installed and authenticated
262
- - Cloudflare account with Workers Paid plan (for D1, KV, Durable Objects)
263
-
264
388
  ## Troubleshooting
265
389
 
266
390
  ### "Wrangler is not installed"
@@ -288,6 +412,21 @@ Run the init command first to provision resources:
288
412
  authrim-setup init --env prod
289
413
  ```
290
414
 
415
+ ### "Port 3456 is already in use"
416
+
417
+ The tool automatically tries ports 3456-3465. If all are in use:
418
+
419
+ ```bash
420
+ # Find process using the port
421
+ lsof -i :3456
422
+
423
+ # Kill the process
424
+ kill <PID>
425
+
426
+ # Or specify a different port
427
+ authrim-setup manage --port 4000
428
+ ```
429
+
291
430
  ### Deployment fails with "Service Bindings"
292
431
 
293
432
  Ensure all dependent workers are deployed. The ar-router must be deployed last as it references other workers via Service Bindings.
@@ -23,7 +23,7 @@ function printBanner() {
23
23
  console.log('');
24
24
  console.log(chalk.blue('╔═══════════════════════════════════════════════════════════╗'));
25
25
  console.log(chalk.blue('║') +
26
- chalk.bold.white(' 🔐 Authrim Setup v0.1.5 ') +
26
+ chalk.bold.white(' 🔐 Authrim Setup v0.1.7 ') +
27
27
  chalk.blue('║'));
28
28
  console.log(chalk.blue('║') +
29
29
  chalk.gray(' OIDC Provider on Cloudflare Workers ') +
@@ -81,6 +81,17 @@ export declare function createD1Database(name: string): Promise<{
81
81
  * Delete a D1 database
82
82
  */
83
83
  export declare function deleteD1Database(name: string): Promise<boolean>;
84
+ /**
85
+ * Get D1 database info (size, tables, region, etc.)
86
+ */
87
+ export interface D1Info {
88
+ name: string;
89
+ createdAt: string | null;
90
+ databaseSize: string | null;
91
+ numTables: number | null;
92
+ region: string | null;
93
+ }
94
+ export declare function getD1Info(name: string): Promise<D1Info>;
84
95
  /**
85
96
  * List all KV namespaces
86
97
  * @throws Error if wrangler command fails (caller should handle)
@@ -154,4 +165,96 @@ export declare function toResourceIds(resources: ProvisionedResources): {
154
165
  name: string;
155
166
  }>;
156
167
  };
168
+ export interface EnvironmentInfo {
169
+ env: string;
170
+ workers: Array<{
171
+ name: string;
172
+ id?: string;
173
+ }>;
174
+ d1: Array<{
175
+ name: string;
176
+ id: string;
177
+ }>;
178
+ kv: Array<{
179
+ name: string;
180
+ id: string;
181
+ }>;
182
+ queues: Array<{
183
+ name: string;
184
+ id?: string;
185
+ }>;
186
+ r2: Array<{
187
+ name: string;
188
+ }>;
189
+ }
190
+ export interface DeleteOptions {
191
+ env: string;
192
+ deleteWorkers?: boolean;
193
+ deleteD1?: boolean;
194
+ deleteKV?: boolean;
195
+ deleteQueues?: boolean;
196
+ deleteR2?: boolean;
197
+ onProgress?: (message: string) => void;
198
+ }
199
+ /**
200
+ * List all Workers
201
+ */
202
+ export declare function listWorkers(): Promise<Array<{
203
+ name: string;
204
+ id?: string;
205
+ }>>;
206
+ /**
207
+ * List R2 buckets
208
+ */
209
+ export declare function listR2Buckets(): Promise<Array<{
210
+ name: string;
211
+ }>>;
212
+ /**
213
+ * List Queues
214
+ */
215
+ export declare function listQueues(): Promise<Array<{
216
+ name: string;
217
+ id?: string;
218
+ }>>;
219
+ /**
220
+ * Detect all Authrim environments from existing resources
221
+ */
222
+ export declare function detectEnvironments(onProgress?: (message: string) => void): Promise<EnvironmentInfo[]>;
223
+ /**
224
+ * Delete a Worker
225
+ */
226
+ export declare function deleteWorker(name: string): Promise<boolean>;
227
+ /**
228
+ * Get Worker deployment info (last deployed, author, version)
229
+ */
230
+ export interface WorkerDeploymentInfo {
231
+ name: string;
232
+ exists: boolean;
233
+ lastDeployedAt: string | null;
234
+ author: string | null;
235
+ versionId: string | null;
236
+ }
237
+ export declare function getWorkerDeployments(name: string): Promise<WorkerDeploymentInfo>;
238
+ /**
239
+ * Delete a Queue
240
+ */
241
+ export declare function deleteQueue(name: string): Promise<boolean>;
242
+ /**
243
+ * Delete an R2 bucket
244
+ */
245
+ export declare function deleteR2Bucket(name: string): Promise<boolean>;
246
+ /**
247
+ * Delete an environment and its resources
248
+ */
249
+ export declare function deleteEnvironment(options: DeleteOptions): Promise<{
250
+ success: boolean;
251
+ deleted: {
252
+ workers: string[];
253
+ d1: string[];
254
+ kv: string[];
255
+ queues: string[];
256
+ r2: string[];
257
+ };
258
+ errors: string[];
259
+ }>;
157
260
  //# sourceMappingURL=cloudflare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/core/cloudflare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/core/cloudflare.ts"],"names":[],"mappings":"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"}