@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,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authrim Lock File Module
|
|
3
|
+
*
|
|
4
|
+
* Manages authrim-lock.json which records created resource IDs.
|
|
5
|
+
* This file allows re-deployment and resource management.
|
|
6
|
+
*/
|
|
7
|
+
import { writeFile, readFile } from 'node:fs/promises';
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Schema
|
|
12
|
+
// =============================================================================
|
|
13
|
+
const ResourceEntrySchema = z.object({
|
|
14
|
+
name: z.string(),
|
|
15
|
+
id: z.string(),
|
|
16
|
+
});
|
|
17
|
+
const KVResourceEntrySchema = ResourceEntrySchema.extend({
|
|
18
|
+
previewId: z.string().optional(),
|
|
19
|
+
});
|
|
20
|
+
const WorkerEntrySchema = z.object({
|
|
21
|
+
name: z.string(),
|
|
22
|
+
deployedAt: z.string().datetime().optional(),
|
|
23
|
+
version: z.string().optional(),
|
|
24
|
+
});
|
|
25
|
+
export const AuthrimLockSchema = z.object({
|
|
26
|
+
version: z.string().default('1.0.0'),
|
|
27
|
+
createdAt: z.string().datetime(),
|
|
28
|
+
updatedAt: z.string().datetime().optional(),
|
|
29
|
+
env: z.string(),
|
|
30
|
+
d1: z.record(ResourceEntrySchema).default({}),
|
|
31
|
+
kv: z.record(KVResourceEntrySchema).default({}),
|
|
32
|
+
queues: z.record(ResourceEntrySchema).optional(),
|
|
33
|
+
r2: z.record(z.object({ name: z.string() })).optional(),
|
|
34
|
+
workers: z.record(WorkerEntrySchema).optional(),
|
|
35
|
+
});
|
|
36
|
+
// =============================================================================
|
|
37
|
+
// Lock File Operations
|
|
38
|
+
// =============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Create a new lock file from provisioned resources
|
|
41
|
+
*/
|
|
42
|
+
export function createLockFile(env, resources) {
|
|
43
|
+
const now = new Date().toISOString();
|
|
44
|
+
const lock = {
|
|
45
|
+
version: '1.0.0',
|
|
46
|
+
createdAt: now,
|
|
47
|
+
updatedAt: now,
|
|
48
|
+
env,
|
|
49
|
+
d1: {},
|
|
50
|
+
kv: {},
|
|
51
|
+
};
|
|
52
|
+
// Add D1 databases
|
|
53
|
+
for (const db of resources.d1) {
|
|
54
|
+
lock.d1[db.binding] = {
|
|
55
|
+
name: db.name,
|
|
56
|
+
id: db.id,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Add KV namespaces
|
|
60
|
+
for (const kv of resources.kv) {
|
|
61
|
+
lock.kv[kv.binding] = {
|
|
62
|
+
name: kv.name,
|
|
63
|
+
id: kv.id,
|
|
64
|
+
previewId: kv.previewId,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Add Queues
|
|
68
|
+
if (resources.queues.length > 0) {
|
|
69
|
+
lock.queues = {};
|
|
70
|
+
for (const q of resources.queues) {
|
|
71
|
+
lock.queues[q.binding] = {
|
|
72
|
+
name: q.name,
|
|
73
|
+
id: q.id,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Add R2 buckets
|
|
78
|
+
if (resources.r2.length > 0) {
|
|
79
|
+
lock.r2 = {};
|
|
80
|
+
for (const r of resources.r2) {
|
|
81
|
+
lock.r2[r.binding] = {
|
|
82
|
+
name: r.name,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return lock;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Save lock file to disk
|
|
90
|
+
*/
|
|
91
|
+
export async function saveLockFile(lock, path = 'authrim-lock.json') {
|
|
92
|
+
lock.updatedAt = new Date().toISOString();
|
|
93
|
+
await writeFile(path, JSON.stringify(lock, null, 2), 'utf-8');
|
|
94
|
+
}
|
|
95
|
+
/** Error class for lock file operations */
|
|
96
|
+
export class LockFileError extends Error {
|
|
97
|
+
cause;
|
|
98
|
+
constructor(message, cause) {
|
|
99
|
+
super(message);
|
|
100
|
+
this.cause = cause;
|
|
101
|
+
this.name = 'LockFileError';
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Load lock file from disk
|
|
106
|
+
* @throws LockFileError if file exists but cannot be parsed
|
|
107
|
+
*/
|
|
108
|
+
export async function loadLockFile(path = 'authrim-lock.json') {
|
|
109
|
+
if (!existsSync(path)) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const content = await readFile(path, 'utf-8');
|
|
114
|
+
const data = JSON.parse(content);
|
|
115
|
+
return AuthrimLockSchema.parse(data);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
// Re-throw with context for better debugging
|
|
119
|
+
if (error instanceof SyntaxError) {
|
|
120
|
+
throw new LockFileError('Invalid JSON in lock file', error);
|
|
121
|
+
}
|
|
122
|
+
if (error instanceof z.ZodError) {
|
|
123
|
+
throw new LockFileError(`Invalid lock file schema: ${error.issues.map((i) => i.message).join(', ')}`, error);
|
|
124
|
+
}
|
|
125
|
+
throw new LockFileError('Failed to read lock file', error instanceof Error ? error : undefined);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Update worker deployment info in lock file
|
|
130
|
+
*/
|
|
131
|
+
export function updateWorkerDeployment(lock, workerName, deploymentName, version) {
|
|
132
|
+
if (!lock.workers) {
|
|
133
|
+
lock.workers = {};
|
|
134
|
+
}
|
|
135
|
+
lock.workers[workerName] = {
|
|
136
|
+
name: deploymentName,
|
|
137
|
+
deployedAt: new Date().toISOString(),
|
|
138
|
+
version,
|
|
139
|
+
};
|
|
140
|
+
return lock;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Convert lock file to ResourceIds format for wrangler.ts
|
|
144
|
+
*/
|
|
145
|
+
export function lockToResourceIds(lock) {
|
|
146
|
+
return {
|
|
147
|
+
d1: lock.d1,
|
|
148
|
+
kv: Object.fromEntries(Object.entries(lock.kv).map(([key, value]) => [key, { id: value.id, name: value.name }])),
|
|
149
|
+
queues: lock.queues,
|
|
150
|
+
r2: lock.r2,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Merge two lock files (for updating existing)
|
|
155
|
+
*/
|
|
156
|
+
export function mergeLockFiles(existing, newData) {
|
|
157
|
+
return {
|
|
158
|
+
...existing,
|
|
159
|
+
...newData,
|
|
160
|
+
d1: { ...existing.d1, ...newData.d1 },
|
|
161
|
+
kv: { ...existing.kv, ...newData.kv },
|
|
162
|
+
queues: { ...existing.queues, ...newData.queues },
|
|
163
|
+
r2: { ...existing.r2, ...newData.r2 },
|
|
164
|
+
workers: { ...existing.workers, ...newData.workers },
|
|
165
|
+
updatedAt: new Date().toISOString(),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Validate that all required resources exist in lock file
|
|
170
|
+
*/
|
|
171
|
+
export function validateLockFile(lock) {
|
|
172
|
+
const missing = [];
|
|
173
|
+
// Check required D1 databases
|
|
174
|
+
const requiredD1 = ['DB', 'PII_DB'];
|
|
175
|
+
for (const binding of requiredD1) {
|
|
176
|
+
if (!lock.d1[binding]) {
|
|
177
|
+
missing.push(`D1: ${binding}`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Check required KV namespaces
|
|
181
|
+
const requiredKV = ['CLIENTS_CACHE', 'SETTINGS', 'AUTHRIM_CONFIG', 'USER_CACHE'];
|
|
182
|
+
for (const binding of requiredKV) {
|
|
183
|
+
if (!lock.kv[binding]) {
|
|
184
|
+
missing.push(`KV: ${binding}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
valid: missing.length === 0,
|
|
189
|
+
missing,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Generate summary of resources in lock file
|
|
194
|
+
*/
|
|
195
|
+
export function getLockFileSummary(lock) {
|
|
196
|
+
const lines = [
|
|
197
|
+
`Environment: ${lock.env}`,
|
|
198
|
+
`Created: ${lock.createdAt}`,
|
|
199
|
+
`Updated: ${lock.updatedAt || 'N/A'}`,
|
|
200
|
+
'',
|
|
201
|
+
'D1 Databases:',
|
|
202
|
+
];
|
|
203
|
+
for (const [binding, db] of Object.entries(lock.d1)) {
|
|
204
|
+
lines.push(` • ${binding}: ${db.name} (${db.id.slice(0, 8)}...)`);
|
|
205
|
+
}
|
|
206
|
+
lines.push('', 'KV Namespaces:');
|
|
207
|
+
for (const [binding, kv] of Object.entries(lock.kv)) {
|
|
208
|
+
lines.push(` • ${binding}: ${kv.name} (${kv.id.slice(0, 8)}...)`);
|
|
209
|
+
}
|
|
210
|
+
if (lock.queues && Object.keys(lock.queues).length > 0) {
|
|
211
|
+
lines.push('', 'Queues:');
|
|
212
|
+
for (const [binding, q] of Object.entries(lock.queues)) {
|
|
213
|
+
lines.push(` • ${binding}: ${q.name}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (lock.r2 && Object.keys(lock.r2).length > 0) {
|
|
217
|
+
lines.push('', 'R2 Buckets:');
|
|
218
|
+
for (const [binding, r] of Object.entries(lock.r2)) {
|
|
219
|
+
lines.push(` • ${binding}: ${r.name}`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (lock.workers && Object.keys(lock.workers).length > 0) {
|
|
223
|
+
lines.push('', 'Workers:');
|
|
224
|
+
for (const [name, w] of Object.entries(lock.workers)) {
|
|
225
|
+
lines.push(` • ${name}: ${w.name} (deployed: ${w.deployedAt || 'N/A'})`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return lines.join('\n');
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/core/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IAEf,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;IAChD,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAOH,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,SAA+B;IACzE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,IAAI,GAAgB;QACxB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,GAAG;QACH,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;KACP,CAAC;IAEF,mBAAmB;IACnB,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG;YACpB,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,EAAE,EAAE,EAAE,CAAC,EAAE;SACV,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG;YACpB,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,SAAS,EAAE,EAAE,CAAC,SAAS;SACxB,CAAC;IACJ,CAAC;IAED,aAAa;IACb,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;gBACnB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAiB,EACjB,OAAe,mBAAmB;IAElC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,2CAA2C;AAC3C,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IAFlB,YACE,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,mBAAmB;IAElC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6CAA6C;QAC7C,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,aAAa,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,aAAa,CACrB,6BAA6B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC5E,KAAK,CACN,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,0BAA0B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAiB,EACjB,UAAkB,EAClB,cAAsB,EACtB,OAAgB;IAEhB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QACzB,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,OAAO;KACR,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IAMjD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,EAAE,EAAE,MAAM,CAAC,WAAW,CACpB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CACzF;QACD,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAqB,EAAE,OAA6B;IACjF,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,OAAO;QACV,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE;QACrC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE;QACrC,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;QACjD,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE;QACrC,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QACpD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAIhD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,8BAA8B;IAC9B,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GAAG,CAAC,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;IACjF,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC3B,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,MAAM,KAAK,GAAa;QACtB,gBAAgB,IAAI,CAAC,GAAG,EAAE;QAC1B,YAAY,IAAI,CAAC,SAAS,EAAE;QAC5B,YAAY,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;QACrC,EAAE;QACF,eAAe;KAChB,CAAC;IAEF,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9B,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,UAAU,IAAI,KAAK,GAAG,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authrim Naming Convention Module
|
|
3
|
+
*
|
|
4
|
+
* Implements naming conventions consistent with existing source code:
|
|
5
|
+
* - Workers: {env}-ar-{component}
|
|
6
|
+
* - D1 Databases: {env}-authrim-{db-type}
|
|
7
|
+
* - KV Namespaces: {ENV}-{BINDING_NAME} (uppercase)
|
|
8
|
+
*/
|
|
9
|
+
export declare const WORKER_COMPONENTS: readonly ["ar-lib-core", "ar-discovery", "ar-auth", "ar-token", "ar-userinfo", "ar-management", "ar-router", "ar-async", "ar-policy", "ar-saml", "ar-bridge", "ar-vc"];
|
|
10
|
+
export type WorkerComponent = (typeof WORKER_COMPONENTS)[number];
|
|
11
|
+
export declare const CORE_WORKER_COMPONENTS: WorkerComponent[];
|
|
12
|
+
export declare const OPTIONAL_WORKER_COMPONENTS: WorkerComponent[];
|
|
13
|
+
export declare const DURABLE_OBJECTS: readonly [{
|
|
14
|
+
readonly name: "SESSION_STORE";
|
|
15
|
+
readonly className: "SessionStore";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "KEY_MANAGER";
|
|
18
|
+
readonly className: "KeyManager";
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "AUTH_CODE_STORE";
|
|
21
|
+
readonly className: "AuthorizationCodeStore";
|
|
22
|
+
}, {
|
|
23
|
+
readonly name: "REFRESH_TOKEN_ROTATOR";
|
|
24
|
+
readonly className: "RefreshTokenRotator";
|
|
25
|
+
}, {
|
|
26
|
+
readonly name: "CHALLENGE_STORE";
|
|
27
|
+
readonly className: "ChallengeStore";
|
|
28
|
+
}, {
|
|
29
|
+
readonly name: "RATE_LIMITER";
|
|
30
|
+
readonly className: "RateLimiterCounter";
|
|
31
|
+
}, {
|
|
32
|
+
readonly name: "PAR_REQUEST_STORE";
|
|
33
|
+
readonly className: "PARRequestStore";
|
|
34
|
+
}, {
|
|
35
|
+
readonly name: "DPOP_JTI_STORE";
|
|
36
|
+
readonly className: "DPoPJTIStore";
|
|
37
|
+
}, {
|
|
38
|
+
readonly name: "DEVICE_CODE_STORE";
|
|
39
|
+
readonly className: "DeviceCodeStore";
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "CIBA_REQUEST_STORE";
|
|
42
|
+
readonly className: "CIBARequestStore";
|
|
43
|
+
}, {
|
|
44
|
+
readonly name: "TOKEN_REVOCATION_STORE";
|
|
45
|
+
readonly className: "TokenRevocationStore";
|
|
46
|
+
}, {
|
|
47
|
+
readonly name: "VERSION_MANAGER";
|
|
48
|
+
readonly className: "VersionManager";
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "SAML_REQUEST_STORE";
|
|
51
|
+
readonly className: "SAMLRequestStore";
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "PERMISSION_CHANGE_HUB";
|
|
54
|
+
readonly className: "PermissionChangeHub";
|
|
55
|
+
}];
|
|
56
|
+
export type DurableObjectBinding = (typeof DURABLE_OBJECTS)[number];
|
|
57
|
+
export declare const KV_NAMESPACES: readonly ["CLIENTS_CACHE", "INITIAL_ACCESS_TOKENS", "SETTINGS", "REBAC_CACHE", "USER_CACHE", "AUTHRIM_CONFIG", "STATE_STORE", "CONSENT_CACHE"];
|
|
58
|
+
export type KVNamespace = (typeof KV_NAMESPACES)[number];
|
|
59
|
+
export declare const D1_DATABASES: readonly [{
|
|
60
|
+
readonly binding: "DB";
|
|
61
|
+
readonly dbType: "core-db";
|
|
62
|
+
}, {
|
|
63
|
+
readonly binding: "PII_DB";
|
|
64
|
+
readonly dbType: "pii-db";
|
|
65
|
+
}];
|
|
66
|
+
export type D1Database = (typeof D1_DATABASES)[number];
|
|
67
|
+
/**
|
|
68
|
+
* Generate Worker name
|
|
69
|
+
* Pattern: {env}-ar-{component}
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* getWorkerName('prod', 'ar-auth') => 'prod-ar-auth'
|
|
73
|
+
* getWorkerName('conformance', 'ar-lib-core') => 'conformance-ar-lib-core'
|
|
74
|
+
*/
|
|
75
|
+
export declare function getWorkerName(env: string, component: WorkerComponent): string;
|
|
76
|
+
/**
|
|
77
|
+
* Generate D1 Database name
|
|
78
|
+
* Pattern: {env}-authrim-{db-type}
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* getD1DatabaseName('prod', 'core-db') => 'prod-authrim-core-db'
|
|
82
|
+
* getD1DatabaseName('staging', 'pii-db') => 'staging-authrim-pii-db'
|
|
83
|
+
*/
|
|
84
|
+
export declare function getD1DatabaseName(env: string, dbType: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Generate KV Namespace name
|
|
87
|
+
* Pattern: {ENV}-{BINDING_NAME} (uppercase env)
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* getKVNamespaceName('prod', 'CLIENTS_CACHE') => 'PROD-CLIENTS_CACHE'
|
|
91
|
+
* getKVNamespaceName('conformance', 'SETTINGS') => 'CONFORMANCE-SETTINGS'
|
|
92
|
+
*/
|
|
93
|
+
export declare function getKVNamespaceName(env: string, bindingName: KVNamespace): string;
|
|
94
|
+
/**
|
|
95
|
+
* Generate Queue name
|
|
96
|
+
* Pattern: {env}-{queue-name}
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* getQueueName('prod', 'audit-queue') => 'prod-audit-queue'
|
|
100
|
+
*/
|
|
101
|
+
export declare function getQueueName(env: string, queueName: string): string;
|
|
102
|
+
/**
|
|
103
|
+
* Generate wrangler.toml filename for an environment
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* getWranglerConfigFilename('prod') => 'wrangler.prod.toml'
|
|
107
|
+
* getWranglerConfigFilename('conformance') => 'wrangler.conformance.toml'
|
|
108
|
+
*/
|
|
109
|
+
export declare function getWranglerConfigFilename(env: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* Get the script_name for Durable Object bindings
|
|
112
|
+
* All DOs are defined in ar-lib-core
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* getDOScriptName('prod') => 'prod-ar-lib-core'
|
|
116
|
+
*/
|
|
117
|
+
export declare function getDOScriptName(env: string): string;
|
|
118
|
+
/**
|
|
119
|
+
* Generate auto URL for Workers (workers.dev domain)
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* getAutoWorkerUrl('prod', 'ar-router', 'abc123') => 'https://prod-ar-router.abc123.workers.dev'
|
|
123
|
+
*/
|
|
124
|
+
export declare function getAutoWorkerUrl(env: string, component: WorkerComponent, accountSubdomain: string): string;
|
|
125
|
+
/**
|
|
126
|
+
* Generate auto URL for Pages (pages.dev domain)
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* getAutoPagesUrl('prod', 'ar-ui') => 'https://prod-ar-ui.pages.dev'
|
|
130
|
+
*/
|
|
131
|
+
export declare function getAutoPagesUrl(env: string, projectName: string): string;
|
|
132
|
+
/**
|
|
133
|
+
* Deployment levels - components at the same level can be deployed in parallel
|
|
134
|
+
*/
|
|
135
|
+
export declare const DEPLOYMENT_LEVELS: WorkerComponent[][];
|
|
136
|
+
/**
|
|
137
|
+
* Get deployment order for specified components
|
|
138
|
+
* Returns array of levels, each level contains components that can be deployed in parallel
|
|
139
|
+
*/
|
|
140
|
+
export declare function getDeploymentOrder(enabledComponents: Set<WorkerComponent>): WorkerComponent[][];
|
|
141
|
+
/**
|
|
142
|
+
* Get all components that should be enabled based on configuration
|
|
143
|
+
*/
|
|
144
|
+
export declare function getEnabledComponents(options: {
|
|
145
|
+
saml?: boolean;
|
|
146
|
+
async?: boolean;
|
|
147
|
+
vc?: boolean;
|
|
148
|
+
bridge?: boolean;
|
|
149
|
+
policy?: boolean;
|
|
150
|
+
}): Set<WorkerComponent>;
|
|
151
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/core/naming.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,eAAO,MAAM,iBAAiB,wKAapB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjE,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAQnD,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,eAAe,EAMvD,CAAC;AAMF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAelB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAMpE,eAAO,MAAM,aAAa,gJAShB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAMzD,eAAO,MAAM,YAAY;;;;;;EAGf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAMvD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,eAAe,EAC1B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAExE;AAMD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAAE,EAWhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,eAAe,EAAE,EAAE,CAI/F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,GAAG,CAAC,eAAe,CAAC,CAUvB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authrim Naming Convention Module
|
|
3
|
+
*
|
|
4
|
+
* Implements naming conventions consistent with existing source code:
|
|
5
|
+
* - Workers: {env}-ar-{component}
|
|
6
|
+
* - D1 Databases: {env}-authrim-{db-type}
|
|
7
|
+
* - KV Namespaces: {ENV}-{BINDING_NAME} (uppercase)
|
|
8
|
+
*/
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Worker Components
|
|
11
|
+
// =============================================================================
|
|
12
|
+
export const WORKER_COMPONENTS = [
|
|
13
|
+
'ar-lib-core', // Durable Objects definition (must deploy first)
|
|
14
|
+
'ar-discovery', // OpenID Discovery
|
|
15
|
+
'ar-auth', // Authorization endpoint
|
|
16
|
+
'ar-token', // Token endpoint
|
|
17
|
+
'ar-userinfo', // UserInfo endpoint
|
|
18
|
+
'ar-management', // Management API
|
|
19
|
+
'ar-router', // Service Bindings router (must deploy last)
|
|
20
|
+
'ar-async', // Async queue processing
|
|
21
|
+
'ar-policy', // Policy service (ReBAC)
|
|
22
|
+
'ar-saml', // SAML IdP/SP
|
|
23
|
+
'ar-bridge', // External IdP bridge
|
|
24
|
+
'ar-vc', // Verifiable Credentials
|
|
25
|
+
];
|
|
26
|
+
// Core components that are always deployed
|
|
27
|
+
export const CORE_WORKER_COMPONENTS = [
|
|
28
|
+
'ar-lib-core',
|
|
29
|
+
'ar-discovery',
|
|
30
|
+
'ar-auth',
|
|
31
|
+
'ar-token',
|
|
32
|
+
'ar-userinfo',
|
|
33
|
+
'ar-management',
|
|
34
|
+
'ar-router',
|
|
35
|
+
];
|
|
36
|
+
// Optional components
|
|
37
|
+
export const OPTIONAL_WORKER_COMPONENTS = [
|
|
38
|
+
'ar-async',
|
|
39
|
+
'ar-policy',
|
|
40
|
+
'ar-saml',
|
|
41
|
+
'ar-bridge',
|
|
42
|
+
'ar-vc',
|
|
43
|
+
];
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// Durable Objects
|
|
46
|
+
// =============================================================================
|
|
47
|
+
export const DURABLE_OBJECTS = [
|
|
48
|
+
{ name: 'SESSION_STORE', className: 'SessionStore' },
|
|
49
|
+
{ name: 'KEY_MANAGER', className: 'KeyManager' },
|
|
50
|
+
{ name: 'AUTH_CODE_STORE', className: 'AuthorizationCodeStore' },
|
|
51
|
+
{ name: 'REFRESH_TOKEN_ROTATOR', className: 'RefreshTokenRotator' },
|
|
52
|
+
{ name: 'CHALLENGE_STORE', className: 'ChallengeStore' },
|
|
53
|
+
{ name: 'RATE_LIMITER', className: 'RateLimiterCounter' },
|
|
54
|
+
{ name: 'PAR_REQUEST_STORE', className: 'PARRequestStore' },
|
|
55
|
+
{ name: 'DPOP_JTI_STORE', className: 'DPoPJTIStore' },
|
|
56
|
+
{ name: 'DEVICE_CODE_STORE', className: 'DeviceCodeStore' },
|
|
57
|
+
{ name: 'CIBA_REQUEST_STORE', className: 'CIBARequestStore' },
|
|
58
|
+
{ name: 'TOKEN_REVOCATION_STORE', className: 'TokenRevocationStore' },
|
|
59
|
+
{ name: 'VERSION_MANAGER', className: 'VersionManager' },
|
|
60
|
+
{ name: 'SAML_REQUEST_STORE', className: 'SAMLRequestStore' },
|
|
61
|
+
{ name: 'PERMISSION_CHANGE_HUB', className: 'PermissionChangeHub' },
|
|
62
|
+
];
|
|
63
|
+
// =============================================================================
|
|
64
|
+
// KV Namespaces
|
|
65
|
+
// =============================================================================
|
|
66
|
+
export const KV_NAMESPACES = [
|
|
67
|
+
'CLIENTS_CACHE',
|
|
68
|
+
'INITIAL_ACCESS_TOKENS',
|
|
69
|
+
'SETTINGS',
|
|
70
|
+
'REBAC_CACHE',
|
|
71
|
+
'USER_CACHE',
|
|
72
|
+
'AUTHRIM_CONFIG',
|
|
73
|
+
'STATE_STORE',
|
|
74
|
+
'CONSENT_CACHE',
|
|
75
|
+
];
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// D1 Databases
|
|
78
|
+
// =============================================================================
|
|
79
|
+
export const D1_DATABASES = [
|
|
80
|
+
{ binding: 'DB', dbType: 'core-db' },
|
|
81
|
+
{ binding: 'PII_DB', dbType: 'pii-db' },
|
|
82
|
+
];
|
|
83
|
+
// =============================================================================
|
|
84
|
+
// Naming Functions
|
|
85
|
+
// =============================================================================
|
|
86
|
+
/**
|
|
87
|
+
* Generate Worker name
|
|
88
|
+
* Pattern: {env}-ar-{component}
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* getWorkerName('prod', 'ar-auth') => 'prod-ar-auth'
|
|
92
|
+
* getWorkerName('conformance', 'ar-lib-core') => 'conformance-ar-lib-core'
|
|
93
|
+
*/
|
|
94
|
+
export function getWorkerName(env, component) {
|
|
95
|
+
return `${env}-${component}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Generate D1 Database name
|
|
99
|
+
* Pattern: {env}-authrim-{db-type}
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* getD1DatabaseName('prod', 'core-db') => 'prod-authrim-core-db'
|
|
103
|
+
* getD1DatabaseName('staging', 'pii-db') => 'staging-authrim-pii-db'
|
|
104
|
+
*/
|
|
105
|
+
export function getD1DatabaseName(env, dbType) {
|
|
106
|
+
return `${env}-authrim-${dbType}`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Generate KV Namespace name
|
|
110
|
+
* Pattern: {ENV}-{BINDING_NAME} (uppercase env)
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* getKVNamespaceName('prod', 'CLIENTS_CACHE') => 'PROD-CLIENTS_CACHE'
|
|
114
|
+
* getKVNamespaceName('conformance', 'SETTINGS') => 'CONFORMANCE-SETTINGS'
|
|
115
|
+
*/
|
|
116
|
+
export function getKVNamespaceName(env, bindingName) {
|
|
117
|
+
return `${env.toUpperCase()}-${bindingName}`;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Generate Queue name
|
|
121
|
+
* Pattern: {env}-{queue-name}
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* getQueueName('prod', 'audit-queue') => 'prod-audit-queue'
|
|
125
|
+
*/
|
|
126
|
+
export function getQueueName(env, queueName) {
|
|
127
|
+
return `${env}-${queueName}`;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Generate wrangler.toml filename for an environment
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* getWranglerConfigFilename('prod') => 'wrangler.prod.toml'
|
|
134
|
+
* getWranglerConfigFilename('conformance') => 'wrangler.conformance.toml'
|
|
135
|
+
*/
|
|
136
|
+
export function getWranglerConfigFilename(env) {
|
|
137
|
+
return `wrangler.${env}.toml`;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the script_name for Durable Object bindings
|
|
141
|
+
* All DOs are defined in ar-lib-core
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* getDOScriptName('prod') => 'prod-ar-lib-core'
|
|
145
|
+
*/
|
|
146
|
+
export function getDOScriptName(env) {
|
|
147
|
+
return getWorkerName(env, 'ar-lib-core');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Generate auto URL for Workers (workers.dev domain)
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* getAutoWorkerUrl('prod', 'ar-router', 'abc123') => 'https://prod-ar-router.abc123.workers.dev'
|
|
154
|
+
*/
|
|
155
|
+
export function getAutoWorkerUrl(env, component, accountSubdomain) {
|
|
156
|
+
return `https://${getWorkerName(env, component)}.${accountSubdomain}.workers.dev`;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Generate auto URL for Pages (pages.dev domain)
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* getAutoPagesUrl('prod', 'ar-ui') => 'https://prod-ar-ui.pages.dev'
|
|
163
|
+
*/
|
|
164
|
+
export function getAutoPagesUrl(env, projectName) {
|
|
165
|
+
return `https://${env}-${projectName}.pages.dev`;
|
|
166
|
+
}
|
|
167
|
+
// =============================================================================
|
|
168
|
+
// Deployment Order
|
|
169
|
+
// =============================================================================
|
|
170
|
+
/**
|
|
171
|
+
* Deployment levels - components at the same level can be deployed in parallel
|
|
172
|
+
*/
|
|
173
|
+
export const DEPLOYMENT_LEVELS = [
|
|
174
|
+
// Level 0: DO definitions (must be first)
|
|
175
|
+
['ar-lib-core'],
|
|
176
|
+
// Level 1: Discovery
|
|
177
|
+
['ar-discovery'],
|
|
178
|
+
// Level 2: Core OIDC endpoints (parallel)
|
|
179
|
+
['ar-auth', 'ar-token', 'ar-userinfo', 'ar-management'],
|
|
180
|
+
// Level 3: Optional components (parallel)
|
|
181
|
+
['ar-async', 'ar-policy', 'ar-saml', 'ar-bridge', 'ar-vc'],
|
|
182
|
+
// Level 4: Router with Service Bindings (must be last)
|
|
183
|
+
['ar-router'],
|
|
184
|
+
];
|
|
185
|
+
/**
|
|
186
|
+
* Get deployment order for specified components
|
|
187
|
+
* Returns array of levels, each level contains components that can be deployed in parallel
|
|
188
|
+
*/
|
|
189
|
+
export function getDeploymentOrder(enabledComponents) {
|
|
190
|
+
return DEPLOYMENT_LEVELS.map((level) => level.filter((component) => enabledComponents.has(component))).filter((level) => level.length > 0);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get all components that should be enabled based on configuration
|
|
194
|
+
*/
|
|
195
|
+
export function getEnabledComponents(options) {
|
|
196
|
+
const components = new Set(CORE_WORKER_COMPONENTS);
|
|
197
|
+
if (options.saml)
|
|
198
|
+
components.add('ar-saml');
|
|
199
|
+
if (options.async)
|
|
200
|
+
components.add('ar-async');
|
|
201
|
+
if (options.vc)
|
|
202
|
+
components.add('ar-vc');
|
|
203
|
+
if (options.bridge)
|
|
204
|
+
components.add('ar-bridge');
|
|
205
|
+
if (options.policy)
|
|
206
|
+
components.add('ar-policy');
|
|
207
|
+
return components;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/core/naming.ts"],"names":[],"mappings":"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"}
|