@authrim/setup 0.1.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 +303 -0
- package/dist/__tests__/config.test.d.ts +5 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +115 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/keys.test.d.ts +5 -0
- package/dist/__tests__/keys.test.d.ts.map +1 -0
- package/dist/__tests__/keys.test.js +87 -0
- package/dist/__tests__/keys.test.js.map +1 -0
- package/dist/__tests__/naming.test.d.ts +5 -0
- package/dist/__tests__/naming.test.d.ts.map +1 -0
- package/dist/__tests__/naming.test.js +84 -0
- package/dist/__tests__/naming.test.js.map +1 -0
- package/dist/cli/commands/config.d.ts +13 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +231 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +21 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +304 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/init.d.ts +14 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +1248 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/core/admin.d.ts +64 -0
- package/dist/core/admin.d.ts.map +1 -0
- package/dist/core/admin.js +247 -0
- package/dist/core/admin.js.map +1 -0
- package/dist/core/cloudflare.d.ts +157 -0
- package/dist/core/cloudflare.d.ts.map +1 -0
- package/dist/core/cloudflare.js +452 -0
- package/dist/core/cloudflare.js.map +1 -0
- package/dist/core/config.d.ts +891 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +208 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/deploy.d.ts +81 -0
- package/dist/core/deploy.d.ts.map +1 -0
- package/dist/core/deploy.js +389 -0
- package/dist/core/deploy.js.map +1 -0
- package/dist/core/keys.d.ts +111 -0
- package/dist/core/keys.d.ts.map +1 -0
- package/dist/core/keys.js +287 -0
- package/dist/core/keys.js.map +1 -0
- package/dist/core/lock.d.ts +220 -0
- package/dist/core/lock.d.ts.map +1 -0
- package/dist/core/lock.js +230 -0
- package/dist/core/lock.js.map +1 -0
- package/dist/core/naming.d.ts +151 -0
- package/dist/core/naming.d.ts.map +1 -0
- package/dist/core/naming.js +209 -0
- package/dist/core/naming.js.map +1 -0
- package/dist/core/source.d.ts +68 -0
- package/dist/core/source.d.ts.map +1 -0
- package/dist/core/source.js +285 -0
- package/dist/core/source.js.map +1 -0
- package/dist/core/wrangler.d.ts +87 -0
- package/dist/core/wrangler.d.ts.map +1 -0
- package/dist/core/wrangler.js +398 -0
- package/dist/core/wrangler.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +117 -0
- package/dist/index.js.map +1 -0
- package/dist/web/api.d.ts +21 -0
- package/dist/web/api.d.ts.map +1 -0
- package/dist/web/api.js +423 -0
- package/dist/web/api.js.map +1 -0
- package/dist/web/server.d.ts +12 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +112 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/ui.d.ts +7 -0
- package/dist/web/ui.d.ts.map +1 -0
- package/dist/web/ui.js +765 -0
- package/dist/web/ui.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authrim Deployment Module
|
|
3
|
+
*
|
|
4
|
+
* Handles the deployment order, parallel execution, and retry logic
|
|
5
|
+
* for Authrim Workers.
|
|
6
|
+
*/
|
|
7
|
+
import { execa } from 'execa';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
10
|
+
import { getWorkerName, getDeploymentOrder, CORE_WORKER_COMPONENTS, WORKER_COMPONENTS, } from './naming.js';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Validation Helpers
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Validate that a component is a valid WorkerComponent
|
|
16
|
+
* Prevents path traversal attacks by ensuring component is from allowed list
|
|
17
|
+
*/
|
|
18
|
+
function isValidComponent(component) {
|
|
19
|
+
return WORKER_COMPONENTS.includes(component);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Validate environment name to prevent injection
|
|
23
|
+
*/
|
|
24
|
+
function isValidEnv(env) {
|
|
25
|
+
return /^[a-z][a-z0-9-]*$/.test(env);
|
|
26
|
+
}
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Deployment Order
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Get deployment levels - components that can be deployed in parallel
|
|
32
|
+
*/
|
|
33
|
+
export function getDeploymentLevels(enabledComponents) {
|
|
34
|
+
// Convert array to Set for getDeploymentOrder
|
|
35
|
+
const componentSet = enabledComponents
|
|
36
|
+
? new Set(enabledComponents)
|
|
37
|
+
: new Set(CORE_WORKER_COMPONENTS);
|
|
38
|
+
// getDeploymentOrder already returns components grouped by level
|
|
39
|
+
return getDeploymentOrder(componentSet);
|
|
40
|
+
}
|
|
41
|
+
// =============================================================================
|
|
42
|
+
// Single Worker Deployment
|
|
43
|
+
// =============================================================================
|
|
44
|
+
/**
|
|
45
|
+
* Deploy a single worker with retry logic
|
|
46
|
+
*/
|
|
47
|
+
export async function deployWorker(component, options) {
|
|
48
|
+
const { env, rootDir, maxRetries = 3, retryDelayMs = 5000, onProgress } = options;
|
|
49
|
+
const startTime = Date.now();
|
|
50
|
+
// Security: Validate component to prevent path traversal
|
|
51
|
+
if (!isValidComponent(component)) {
|
|
52
|
+
return {
|
|
53
|
+
component,
|
|
54
|
+
workerName: '',
|
|
55
|
+
success: false,
|
|
56
|
+
error: 'Invalid component name',
|
|
57
|
+
duration: Date.now() - startTime,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Security: Validate environment name
|
|
61
|
+
if (!isValidEnv(env)) {
|
|
62
|
+
return {
|
|
63
|
+
component,
|
|
64
|
+
workerName: '',
|
|
65
|
+
success: false,
|
|
66
|
+
error: 'Invalid environment name',
|
|
67
|
+
duration: Date.now() - startTime,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const workerName = getWorkerName(env, component);
|
|
71
|
+
const packageDir = join(rootDir, 'packages', component);
|
|
72
|
+
const wranglerConfig = options.configFile || `wrangler.${env}.toml`;
|
|
73
|
+
const wranglerConfigPath = join(packageDir, wranglerConfig);
|
|
74
|
+
// Check if package directory exists
|
|
75
|
+
if (!existsSync(packageDir)) {
|
|
76
|
+
return {
|
|
77
|
+
component,
|
|
78
|
+
workerName,
|
|
79
|
+
success: false,
|
|
80
|
+
error: 'Package directory not found', // Don't expose full path
|
|
81
|
+
duration: Date.now() - startTime,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Check if wrangler config exists
|
|
85
|
+
if (!existsSync(wranglerConfigPath)) {
|
|
86
|
+
return {
|
|
87
|
+
component,
|
|
88
|
+
workerName,
|
|
89
|
+
success: false,
|
|
90
|
+
error: 'Wrangler config not found', // Don't expose full path
|
|
91
|
+
duration: Date.now() - startTime,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
let lastError;
|
|
95
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
96
|
+
try {
|
|
97
|
+
onProgress?.(`[${attempt}/${maxRetries}] Deploying ${workerName}...`);
|
|
98
|
+
if (options.dryRun) {
|
|
99
|
+
onProgress?.(` [DRY RUN] Would deploy ${component} with config ${wranglerConfig}`);
|
|
100
|
+
return {
|
|
101
|
+
component,
|
|
102
|
+
workerName,
|
|
103
|
+
success: true,
|
|
104
|
+
deployedAt: new Date().toISOString(),
|
|
105
|
+
duration: Date.now() - startTime,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// Use deploy script if available for version management
|
|
109
|
+
const deployScript = join(rootDir, 'scripts', 'deploy-with-retry.sh');
|
|
110
|
+
let result;
|
|
111
|
+
if (existsSync(deployScript)) {
|
|
112
|
+
// Use deploy script (handles version management)
|
|
113
|
+
result = await execa(deployScript, [component, env], {
|
|
114
|
+
cwd: rootDir,
|
|
115
|
+
reject: true,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Fall back to direct wrangler deploy
|
|
120
|
+
result = await execa('wrangler', ['deploy', '--config', wranglerConfig], {
|
|
121
|
+
cwd: packageDir,
|
|
122
|
+
reject: true,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Extract version from output if available
|
|
126
|
+
const versionMatch = result.stdout.match(/Deployed.*version[:\s]+([a-f0-9-]+)/i);
|
|
127
|
+
onProgress?.(` ✓ ${workerName} deployed successfully`);
|
|
128
|
+
return {
|
|
129
|
+
component,
|
|
130
|
+
workerName,
|
|
131
|
+
success: true,
|
|
132
|
+
deployedAt: new Date().toISOString(),
|
|
133
|
+
version: versionMatch?.[1],
|
|
134
|
+
duration: Date.now() - startTime,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
lastError = error;
|
|
139
|
+
const execaError = error;
|
|
140
|
+
onProgress?.(` ✗ Attempt ${attempt} failed: ${execaError.message || String(error)}`);
|
|
141
|
+
if (attempt < maxRetries) {
|
|
142
|
+
const delay = retryDelayMs * attempt; // Exponential backoff
|
|
143
|
+
onProgress?.(` ⏳ Retrying in ${delay / 1000}s...`);
|
|
144
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
component,
|
|
150
|
+
workerName,
|
|
151
|
+
success: false,
|
|
152
|
+
error: lastError?.message || 'Unknown error',
|
|
153
|
+
duration: Date.now() - startTime,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// =============================================================================
|
|
157
|
+
// Parallel Deployment
|
|
158
|
+
// =============================================================================
|
|
159
|
+
/**
|
|
160
|
+
* Deploy multiple workers in parallel
|
|
161
|
+
*/
|
|
162
|
+
export async function deployParallel(components, options) {
|
|
163
|
+
const { onProgress } = options;
|
|
164
|
+
if (components.length === 0) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
onProgress?.(`Deploying ${components.length} component(s) in parallel: ${components.join(', ')}`);
|
|
168
|
+
const results = await Promise.all(components.map((component) => deployWorker(component, options)));
|
|
169
|
+
return results;
|
|
170
|
+
}
|
|
171
|
+
// =============================================================================
|
|
172
|
+
// Full Deployment
|
|
173
|
+
// =============================================================================
|
|
174
|
+
/**
|
|
175
|
+
* Deploy all workers in the correct order
|
|
176
|
+
*/
|
|
177
|
+
export async function deployAll(options, enabledComponents) {
|
|
178
|
+
const { onProgress, onError } = options;
|
|
179
|
+
const startedAt = new Date().toISOString();
|
|
180
|
+
const startTime = Date.now();
|
|
181
|
+
const levels = getDeploymentLevels(enabledComponents);
|
|
182
|
+
const allResults = [];
|
|
183
|
+
onProgress?.('Starting Authrim deployment...\n');
|
|
184
|
+
onProgress?.(`Environment: ${options.env}`);
|
|
185
|
+
onProgress?.(`Root directory: ${options.rootDir}`);
|
|
186
|
+
onProgress?.(`Deployment levels: ${levels.length}\n`);
|
|
187
|
+
for (let levelIndex = 0; levelIndex < levels.length; levelIndex++) {
|
|
188
|
+
const level = levels[levelIndex];
|
|
189
|
+
onProgress?.(`\n━━━ Level ${levelIndex} ━━━`);
|
|
190
|
+
// Level 0 and 4 are sequential (single component)
|
|
191
|
+
// Levels 1-3 can be parallel
|
|
192
|
+
const isParallel = level.length > 1;
|
|
193
|
+
if (isParallel) {
|
|
194
|
+
const results = await deployParallel(level, options);
|
|
195
|
+
allResults.push(...results);
|
|
196
|
+
// Check for failures
|
|
197
|
+
const failures = results.filter((r) => !r.success);
|
|
198
|
+
if (failures.length > 0) {
|
|
199
|
+
for (const failure of failures) {
|
|
200
|
+
onError?.(failure.component, new Error(failure.error));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
for (const component of level) {
|
|
206
|
+
const result = await deployWorker(component, options);
|
|
207
|
+
allResults.push(result);
|
|
208
|
+
if (!result.success) {
|
|
209
|
+
onError?.(component, new Error(result.error));
|
|
210
|
+
// Stop deployment if critical component fails
|
|
211
|
+
if (['ar-lib-core', 'ar-discovery'].includes(component)) {
|
|
212
|
+
onProgress?.(`\n⚠️ Critical component ${component} failed. Stopping deployment.`);
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const completedAt = new Date().toISOString();
|
|
220
|
+
const successCount = allResults.filter((r) => r.success).length;
|
|
221
|
+
const failedCount = allResults.filter((r) => !r.success).length;
|
|
222
|
+
const summary = {
|
|
223
|
+
totalComponents: allResults.length,
|
|
224
|
+
successCount,
|
|
225
|
+
failedCount,
|
|
226
|
+
results: allResults,
|
|
227
|
+
startedAt,
|
|
228
|
+
completedAt,
|
|
229
|
+
duration: Date.now() - startTime,
|
|
230
|
+
};
|
|
231
|
+
// Print summary
|
|
232
|
+
onProgress?.('\n━━━ Deployment Summary ━━━');
|
|
233
|
+
onProgress?.(`Total: ${summary.totalComponents}`);
|
|
234
|
+
onProgress?.(`Success: ${successCount}`);
|
|
235
|
+
onProgress?.(`Failed: ${failedCount}`);
|
|
236
|
+
onProgress?.(`Duration: ${(summary.duration / 1000).toFixed(1)}s`);
|
|
237
|
+
if (failedCount > 0) {
|
|
238
|
+
onProgress?.('\nFailed components:');
|
|
239
|
+
for (const result of allResults.filter((r) => !r.success)) {
|
|
240
|
+
onProgress?.(` • ${result.component}: ${result.error}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return summary;
|
|
244
|
+
}
|
|
245
|
+
// =============================================================================
|
|
246
|
+
// Lock File Update
|
|
247
|
+
// =============================================================================
|
|
248
|
+
/**
|
|
249
|
+
* Update lock file with deployment results
|
|
250
|
+
*/
|
|
251
|
+
export function updateLockWithDeployments(lock, results) {
|
|
252
|
+
const workers = { ...lock.workers };
|
|
253
|
+
for (const result of results) {
|
|
254
|
+
if (result.success && result.deployedAt) {
|
|
255
|
+
workers[result.component] = {
|
|
256
|
+
name: result.workerName,
|
|
257
|
+
deployedAt: result.deployedAt,
|
|
258
|
+
version: result.version,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
...lock,
|
|
264
|
+
workers,
|
|
265
|
+
updatedAt: new Date().toISOString(),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
// =============================================================================
|
|
269
|
+
// Secrets Upload
|
|
270
|
+
// =============================================================================
|
|
271
|
+
/**
|
|
272
|
+
* Upload secrets to all workers that need them
|
|
273
|
+
*/
|
|
274
|
+
export async function uploadSecrets(secrets, options, workers) {
|
|
275
|
+
const { env, rootDir, onProgress, dryRun } = options;
|
|
276
|
+
const errors = [];
|
|
277
|
+
// Workers that need secrets
|
|
278
|
+
const targetWorkers = workers || [
|
|
279
|
+
'ar-auth',
|
|
280
|
+
'ar-token',
|
|
281
|
+
'ar-userinfo',
|
|
282
|
+
'ar-management',
|
|
283
|
+
'ar-lib-core',
|
|
284
|
+
];
|
|
285
|
+
const wranglerConfig = options.configFile || `wrangler.${env}.toml`;
|
|
286
|
+
for (const component of targetWorkers) {
|
|
287
|
+
const workerName = getWorkerName(env, component);
|
|
288
|
+
const packageDir = join(rootDir, 'packages', component);
|
|
289
|
+
if (!existsSync(packageDir)) {
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
for (const [secretName, secretValue] of Object.entries(secrets)) {
|
|
293
|
+
try {
|
|
294
|
+
onProgress?.(`Uploading ${secretName} to ${workerName}...`);
|
|
295
|
+
if (dryRun) {
|
|
296
|
+
onProgress?.(` [DRY RUN] Would upload ${secretName}`);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
await execa('wrangler', ['secret', 'put', secretName, '--config', wranglerConfig], {
|
|
300
|
+
cwd: packageDir,
|
|
301
|
+
input: secretValue,
|
|
302
|
+
});
|
|
303
|
+
onProgress?.(` ✓ ${secretName} uploaded`);
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
const errorMsg = `Failed to upload ${secretName} to ${workerName}: ${error}`;
|
|
307
|
+
errors.push(errorMsg);
|
|
308
|
+
onProgress?.(` ✗ ${errorMsg}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return {
|
|
313
|
+
success: errors.length === 0,
|
|
314
|
+
errors,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Deploy UI to Cloudflare Pages
|
|
319
|
+
*/
|
|
320
|
+
export async function deployPages(options) {
|
|
321
|
+
const { env, rootDir, projectName, onProgress, dryRun } = options;
|
|
322
|
+
// Security: Validate environment name
|
|
323
|
+
if (!isValidEnv(env)) {
|
|
324
|
+
return {
|
|
325
|
+
component: 'ar-ui',
|
|
326
|
+
projectName: projectName || `${env}-ar-ui`,
|
|
327
|
+
success: false,
|
|
328
|
+
error: 'Invalid environment name',
|
|
329
|
+
duration: 0,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
const uiDir = join(rootDir, 'packages', 'ar-ui');
|
|
333
|
+
const distDir = join(uiDir, 'dist');
|
|
334
|
+
const startTime = Date.now();
|
|
335
|
+
if (!existsSync(uiDir)) {
|
|
336
|
+
return {
|
|
337
|
+
component: 'ar-ui',
|
|
338
|
+
projectName: projectName || `${env}-ar-ui`,
|
|
339
|
+
success: false,
|
|
340
|
+
error: 'ar-ui package not found',
|
|
341
|
+
duration: Date.now() - startTime,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
try {
|
|
345
|
+
// Build the UI first
|
|
346
|
+
onProgress?.('Building ar-ui...');
|
|
347
|
+
if (!dryRun) {
|
|
348
|
+
await execa('pnpm', ['run', 'build'], {
|
|
349
|
+
cwd: uiDir,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
onProgress?.('Deploying to Cloudflare Pages...');
|
|
353
|
+
if (dryRun) {
|
|
354
|
+
onProgress?.('[DRY RUN] Would deploy ar-ui to Pages');
|
|
355
|
+
return {
|
|
356
|
+
component: 'ar-ui',
|
|
357
|
+
projectName: projectName || `${env}-ar-ui`,
|
|
358
|
+
success: true,
|
|
359
|
+
deployedAt: new Date().toISOString(),
|
|
360
|
+
duration: Date.now() - startTime,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
const pagesProjectName = projectName || `${env}-ar-ui`;
|
|
364
|
+
await execa('wrangler', ['pages', 'deploy', distDir, '--project-name', pagesProjectName], {
|
|
365
|
+
cwd: uiDir,
|
|
366
|
+
});
|
|
367
|
+
onProgress?.(`✓ ar-ui deployed to Pages: ${pagesProjectName}`);
|
|
368
|
+
return {
|
|
369
|
+
component: 'ar-ui',
|
|
370
|
+
projectName: pagesProjectName,
|
|
371
|
+
success: true,
|
|
372
|
+
deployedAt: new Date().toISOString(),
|
|
373
|
+
duration: Date.now() - startTime,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
// Sanitize error message to prevent path exposure
|
|
378
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
379
|
+
const sanitizedError = errorMsg.replace(/\/[^\s:]+/g, '[path]').replace(/\\[^\s:]+/g, '[path]');
|
|
380
|
+
return {
|
|
381
|
+
component: 'ar-ui',
|
|
382
|
+
projectName: projectName || `${env}-ar-ui`,
|
|
383
|
+
success: false,
|
|
384
|
+
error: sanitizedError,
|
|
385
|
+
duration: Date.now() - startTime,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/core/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authrim Key Generation Module
|
|
3
|
+
*
|
|
4
|
+
* Generates RSA key pairs for JWT signing and other cryptographic secrets.
|
|
5
|
+
* Based on the existing setup-keys.sh script functionality.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* JSON Web Key structure (subset of W3C spec for RSA keys)
|
|
9
|
+
*/
|
|
10
|
+
export interface JWK {
|
|
11
|
+
kty: string;
|
|
12
|
+
n?: string;
|
|
13
|
+
e?: string;
|
|
14
|
+
d?: string;
|
|
15
|
+
p?: string;
|
|
16
|
+
q?: string;
|
|
17
|
+
dp?: string;
|
|
18
|
+
dq?: string;
|
|
19
|
+
qi?: string;
|
|
20
|
+
kid?: string;
|
|
21
|
+
use?: string;
|
|
22
|
+
alg?: string;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface KeyPair {
|
|
26
|
+
/** Private key in PEM format */
|
|
27
|
+
privateKeyPem: string;
|
|
28
|
+
/** Public key in JWK format */
|
|
29
|
+
publicKeyJwk: JWK;
|
|
30
|
+
/** Key ID (kid) */
|
|
31
|
+
keyId: string;
|
|
32
|
+
/** Creation timestamp */
|
|
33
|
+
createdAt: string;
|
|
34
|
+
}
|
|
35
|
+
export interface KeyMetadata {
|
|
36
|
+
kid: string;
|
|
37
|
+
algorithm: string;
|
|
38
|
+
keySize: number;
|
|
39
|
+
createdAt: string;
|
|
40
|
+
files: {
|
|
41
|
+
privateKey: string;
|
|
42
|
+
publicKey: string;
|
|
43
|
+
rpTokenEncryptionKey?: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface GeneratedSecrets {
|
|
47
|
+
/** RSA key pair for JWT signing */
|
|
48
|
+
keyPair: KeyPair;
|
|
49
|
+
/** RP Token encryption key (hex encoded) */
|
|
50
|
+
rpTokenEncryptionKey: string;
|
|
51
|
+
/** Admin API secret */
|
|
52
|
+
adminApiSecret: string;
|
|
53
|
+
/** Key Manager secret */
|
|
54
|
+
keyManagerSecret: string;
|
|
55
|
+
/** Setup token for initial admin creation */
|
|
56
|
+
setupToken?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generate a unique key ID (kid)
|
|
60
|
+
*
|
|
61
|
+
* Format: {prefix}-key-{timestamp}-{random}
|
|
62
|
+
*/
|
|
63
|
+
export declare function generateKeyId(prefix?: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Generate an RSA key pair for JWT signing
|
|
66
|
+
*
|
|
67
|
+
* @param keyId - Custom key ID or auto-generated
|
|
68
|
+
* @param keySize - RSA key size in bits (default: 2048)
|
|
69
|
+
*/
|
|
70
|
+
export declare function generateRsaKeyPair(keyId?: string, keySize?: number): KeyPair;
|
|
71
|
+
/**
|
|
72
|
+
* Generate a random hex-encoded secret
|
|
73
|
+
*
|
|
74
|
+
* @param bytes - Number of random bytes (default: 32 = 256 bits)
|
|
75
|
+
*/
|
|
76
|
+
export declare function generateHexSecret(bytes?: number): string;
|
|
77
|
+
/**
|
|
78
|
+
* Generate a random base64url-encoded secret
|
|
79
|
+
*
|
|
80
|
+
* @param bytes - Number of random bytes (default: 32 = 256 bits)
|
|
81
|
+
*/
|
|
82
|
+
export declare function generateBase64Secret(bytes?: number): string;
|
|
83
|
+
/**
|
|
84
|
+
* Generate all required secrets for Authrim
|
|
85
|
+
*/
|
|
86
|
+
export declare function generateAllSecrets(keyId?: string): GeneratedSecrets;
|
|
87
|
+
/**
|
|
88
|
+
* Save keys and secrets to the .keys directory
|
|
89
|
+
*/
|
|
90
|
+
export declare function saveKeysToDirectory(secrets: GeneratedSecrets, keysDir?: string): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Load existing keys from directory
|
|
93
|
+
*/
|
|
94
|
+
export declare function loadKeysFromDirectory(keysDir?: string): Promise<{
|
|
95
|
+
keyPair?: Partial<KeyPair>;
|
|
96
|
+
metadata?: KeyMetadata;
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Generate wrangler commands for uploading secrets
|
|
100
|
+
* @deprecated Use uploadSecrets from deploy.ts instead for programmatic upload
|
|
101
|
+
*/
|
|
102
|
+
export declare function generateWranglerSecretCommands(secrets: GeneratedSecrets, keysDir?: string, env?: string): string[];
|
|
103
|
+
/**
|
|
104
|
+
* Validate that a private key PEM is valid RSA
|
|
105
|
+
*/
|
|
106
|
+
export declare function validatePrivateKey(pem: string): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Validate that a public key JWK has required properties
|
|
109
|
+
*/
|
|
110
|
+
export declare function validatePublicKeyJwk(jwk: JWK): boolean;
|
|
111
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/core/keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,YAAY,EAAE,GAAG,CAAC;IAClB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,MAAc,GAAG,MAAM,CAI5D;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAsClF;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAUnE;AAyCD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,MAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,MAAgB,GAAG,OAAO,CAAC;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB,CAAC,CA+BD;AA6BD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE,MAAgB,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,EAAE,CA+BV;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAKtD"}
|