@edge-base/shared 0.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js ADDED
@@ -0,0 +1,561 @@
1
+ // ─── Schema Field Types ───
2
+ export function getDbAccess(dbBlock) {
3
+ return dbBlock?.access;
4
+ }
5
+ export function getTableAccess(tableConfig) {
6
+ return tableConfig?.access;
7
+ }
8
+ export function getTableHooks(tableConfig) {
9
+ return tableConfig?.handlers?.hooks;
10
+ }
11
+ export function getStorageBucketAccess(bucketConfig) {
12
+ return bucketConfig?.access;
13
+ }
14
+ export function getStorageHooks(bucketConfig) {
15
+ return bucketConfig?.handlers?.hooks;
16
+ }
17
+ export function getPushAccess(config) {
18
+ return config?.access;
19
+ }
20
+ export function getPushHandlers(config) {
21
+ return config?.handlers;
22
+ }
23
+ export function getAuthAccess(config) {
24
+ return config?.access;
25
+ }
26
+ export function getAuthHandlers(config) {
27
+ return config?.auth?.handlers;
28
+ }
29
+ export function getAuthEnrichHandler(config) {
30
+ return getAuthHandlers(config)?.hooks?.enrich;
31
+ }
32
+ export function getMailHooks(config) {
33
+ return getAuthHandlers(config)?.email;
34
+ }
35
+ export function getRoomAccess(namespaceConfig) {
36
+ return namespaceConfig?.access;
37
+ }
38
+ export function getRoomStateConfig(namespaceConfig) {
39
+ if (namespaceConfig?.state)
40
+ return namespaceConfig.state;
41
+ const handlers = namespaceConfig?.handlers;
42
+ if (!handlers?.actions && !handlers?.timers)
43
+ return undefined;
44
+ return {
45
+ actions: handlers.actions,
46
+ timers: handlers.timers,
47
+ };
48
+ }
49
+ export function getRoomHooks(namespaceConfig) {
50
+ if (namespaceConfig?.hooks)
51
+ return namespaceConfig.hooks;
52
+ const handlers = namespaceConfig?.handlers;
53
+ if (!handlers?.lifecycle)
54
+ return undefined;
55
+ return {
56
+ lifecycle: handlers.lifecycle,
57
+ };
58
+ }
59
+ export function getRoomHandlers(namespaceConfig) {
60
+ const state = getRoomStateConfig(namespaceConfig);
61
+ const hooks = getRoomHooks(namespaceConfig);
62
+ if (!state?.actions && !state?.timers && !hooks?.lifecycle) {
63
+ return undefined;
64
+ }
65
+ return {
66
+ actions: state?.actions,
67
+ timers: state?.timers,
68
+ lifecycle: hooks?.lifecycle,
69
+ };
70
+ }
71
+ export function getRoomLifecycleHandlers(namespaceConfig) {
72
+ return getRoomHooks(namespaceConfig)?.lifecycle;
73
+ }
74
+ export function getRoomActionHandlers(namespaceConfig) {
75
+ return getRoomStateConfig(namespaceConfig)?.actions;
76
+ }
77
+ export function getRoomTimerHandlers(namespaceConfig) {
78
+ return getRoomStateConfig(namespaceConfig)?.timers;
79
+ }
80
+ export function materializeConfig(config) {
81
+ if (!config || typeof config !== 'object') {
82
+ return {};
83
+ }
84
+ if (config[MATERIALIZED_CONFIG]) {
85
+ return config;
86
+ }
87
+ if (config.plugins?.length) {
88
+ config.databases ??= {};
89
+ for (const plugin of config.plugins) {
90
+ if (!plugin.tables)
91
+ continue;
92
+ const dbKey = plugin.dbBlock ?? 'shared';
93
+ config.databases[dbKey] ??= { tables: {} };
94
+ config.databases[dbKey].tables ??= {};
95
+ for (const [tableName, tableConfig] of Object.entries(plugin.tables)) {
96
+ const namespacedTable = `${plugin.name}/${tableName}`;
97
+ const existing = config.databases[dbKey].tables?.[namespacedTable];
98
+ if (existing && existing !== tableConfig) {
99
+ throw new Error(`Plugin table collision: '${namespacedTable}' already exists in databases.${dbKey}.tables.`);
100
+ }
101
+ config.databases[dbKey].tables[namespacedTable] = tableConfig;
102
+ }
103
+ }
104
+ }
105
+ assertNoLegacyConfigAliases(config);
106
+ normalizeRoomConfig(config);
107
+ normalizeServiceKeysShorthand(config);
108
+ return config;
109
+ }
110
+ /**
111
+ * Normalize `secret` shorthand on service key entries to the canonical
112
+ * `secretSource: 'inline'` + `inlineSecret` form.
113
+ *
114
+ * This allows users to write:
115
+ * { kid: 'dev', tier: 'root', scopes: ['*'], secret: 'sk-xxx' }
116
+ * instead of:
117
+ * { kid: 'dev', tier: 'root', scopes: ['*'], secretSource: 'inline', inlineSecret: 'sk-xxx' }
118
+ */
119
+ function normalizeServiceKeysShorthand(config) {
120
+ if (!config.serviceKeys?.keys?.length)
121
+ return;
122
+ for (const entry of config.serviceKeys.keys) {
123
+ const raw = entry;
124
+ if (raw.secret && !raw.secretSource) {
125
+ raw.secretSource = 'inline';
126
+ raw.inlineSecret = raw.secret;
127
+ delete raw.secret;
128
+ }
129
+ }
130
+ }
131
+ function hasOwnKey(target, key) {
132
+ return Object.prototype.hasOwnProperty.call(target, key);
133
+ }
134
+ function legacyConfigError(path, guidance) {
135
+ return new Error(`Legacy config syntax is no longer supported at ${path}. ${guidance}`);
136
+ }
137
+ const MATERIALIZED_CONFIG = Symbol.for('edgebase.config.materialized');
138
+ function hasEquivalentRecordValues(left, right) {
139
+ if (!left || !right)
140
+ return false;
141
+ const leftRecord = left;
142
+ const rightRecord = right;
143
+ const leftKeys = Object.keys(leftRecord);
144
+ const rightKeys = Object.keys(rightRecord);
145
+ if (leftKeys.length !== rightKeys.length)
146
+ return false;
147
+ return leftKeys.every((key) => rightRecord[key] === leftRecord[key]);
148
+ }
149
+ function normalizeRoomConfig(config) {
150
+ for (const [namespace, roomConfig] of Object.entries(config.rooms ?? {})) {
151
+ const handlers = roomConfig.handlers;
152
+ if (!handlers)
153
+ continue;
154
+ if (handlers.actions &&
155
+ roomConfig.state?.actions &&
156
+ !hasEquivalentRecordValues(roomConfig.state.actions, handlers.actions)) {
157
+ throw new Error(`rooms.${namespace} cannot define both handlers.actions and state.actions. Use the canonical state.actions shape only once.`);
158
+ }
159
+ if (handlers.timers &&
160
+ roomConfig.state?.timers &&
161
+ !hasEquivalentRecordValues(roomConfig.state.timers, handlers.timers)) {
162
+ throw new Error(`rooms.${namespace} cannot define both handlers.timers and state.timers. Use the canonical state.timers shape only once.`);
163
+ }
164
+ if (handlers.lifecycle &&
165
+ roomConfig.hooks?.lifecycle &&
166
+ !hasEquivalentRecordValues(roomConfig.hooks.lifecycle, handlers.lifecycle)) {
167
+ throw new Error(`rooms.${namespace} cannot define both handlers.lifecycle and hooks.lifecycle. Use the canonical hooks.lifecycle shape only once.`);
168
+ }
169
+ if (handlers.actions || handlers.timers) {
170
+ roomConfig.state ??= {};
171
+ if (!roomConfig.state.actions && handlers.actions) {
172
+ roomConfig.state.actions = handlers.actions;
173
+ }
174
+ if (!roomConfig.state.timers && handlers.timers) {
175
+ roomConfig.state.timers = handlers.timers;
176
+ }
177
+ }
178
+ if (handlers.lifecycle) {
179
+ roomConfig.hooks ??= {};
180
+ if (!roomConfig.hooks.lifecycle) {
181
+ roomConfig.hooks.lifecycle = handlers.lifecycle;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ function assertNoLegacyConfigAliases(config) {
187
+ const authConfig = config.auth;
188
+ if (authConfig && hasOwnKey(authConfig, 'shardCount')) {
189
+ throw legacyConfigError('auth.shardCount', 'Auth shards are fixed internally now, so remove shardCount from the config.');
190
+ }
191
+ const functionsConfig = config.functions;
192
+ if (functionsConfig && hasOwnKey(functionsConfig, 'hookTimeout')) {
193
+ throw legacyConfigError('functions.hookTimeout', 'Blocking auth/storage hook timeouts are fixed internally. Remove hookTimeout and use functions.scheduleFunctionTimeout only for scheduled functions.');
194
+ }
195
+ for (const [dbKey, dbBlock] of Object.entries(config.databases ?? {})) {
196
+ const rawDbBlock = dbBlock;
197
+ if (hasOwnKey(rawDbBlock, 'rules')) {
198
+ throw legacyConfigError(`databases.${dbKey}.rules`, `Use databases.${dbKey}.access instead.`);
199
+ }
200
+ for (const [tableName, tableConfig] of Object.entries(dbBlock.tables ?? {})) {
201
+ const rawTableConfig = tableConfig;
202
+ if (hasOwnKey(rawTableConfig, 'rules')) {
203
+ throw legacyConfigError(`databases.${dbKey}.tables.${tableName}.rules`, `Use databases.${dbKey}.tables.${tableName}.access instead.`);
204
+ }
205
+ for (const [fieldName, fieldConfig] of Object.entries(tableConfig.schema ?? {})) {
206
+ if (fieldConfig === false)
207
+ continue;
208
+ const rawFieldConfig = fieldConfig;
209
+ if (hasOwnKey(rawFieldConfig, 'ref')) {
210
+ throw legacyConfigError(`databases.${dbKey}.tables.${tableName}.schema.${fieldName}.ref`, 'Use references instead.');
211
+ }
212
+ }
213
+ for (const [index, migration] of (tableConfig.migrations ?? []).entries()) {
214
+ if (typeof migration.description !== 'string' || migration.description.trim().length === 0) {
215
+ throw new Error(`databases.${dbKey}.tables.${tableName}.migrations[${index}].description is required. ` +
216
+ 'Add a short summary such as "Add slug column".');
217
+ }
218
+ }
219
+ }
220
+ }
221
+ for (const [bucketName, bucketConfig] of Object.entries(config.storage?.buckets ?? {})) {
222
+ const rawBucketConfig = bucketConfig;
223
+ if (hasOwnKey(rawBucketConfig, 'rules')) {
224
+ throw legacyConfigError(`storage.buckets.${bucketName}.rules`, `Use storage.buckets.${bucketName}.access instead.`);
225
+ }
226
+ if (hasOwnKey(rawBucketConfig, 'maxFileSize')) {
227
+ throw legacyConfigError(`storage.buckets.${bucketName}.maxFileSize`, `Validate file.size inside storage.buckets.${bucketName}.access.write instead.`);
228
+ }
229
+ if (hasOwnKey(rawBucketConfig, 'allowedMimeTypes')) {
230
+ throw legacyConfigError(`storage.buckets.${bucketName}.allowedMimeTypes`, `Validate file.contentType inside storage.buckets.${bucketName}.access.write instead.`);
231
+ }
232
+ }
233
+ for (const [namespace, roomConfig] of Object.entries(config.rooms ?? {})) {
234
+ const rawRoomConfig = roomConfig;
235
+ if (hasOwnKey(rawRoomConfig, 'mode')) {
236
+ throw legacyConfigError(`rooms.${namespace}.mode`, 'Room mode no longer exists. Remove the field and use handlers/access only.');
237
+ }
238
+ if (hasOwnKey(rawRoomConfig, 'onCreate')) {
239
+ throw legacyConfigError(`rooms.${namespace}.onCreate`, `Move it to rooms.${namespace}.handlers.lifecycle.onCreate.`);
240
+ }
241
+ if (hasOwnKey(rawRoomConfig, 'onJoin')) {
242
+ throw legacyConfigError(`rooms.${namespace}.onJoin`, `Move it to rooms.${namespace}.handlers.lifecycle.onJoin.`);
243
+ }
244
+ if (hasOwnKey(rawRoomConfig, 'onLeave')) {
245
+ throw legacyConfigError(`rooms.${namespace}.onLeave`, `Move it to rooms.${namespace}.handlers.lifecycle.onLeave.`);
246
+ }
247
+ if (hasOwnKey(rawRoomConfig, 'onDestroy')) {
248
+ throw legacyConfigError(`rooms.${namespace}.onDestroy`, `Move it to rooms.${namespace}.handlers.lifecycle.onDestroy.`);
249
+ }
250
+ if (hasOwnKey(rawRoomConfig, 'onAction')) {
251
+ throw legacyConfigError(`rooms.${namespace}.onAction`, `Move it to rooms.${namespace}.handlers.actions.`);
252
+ }
253
+ if (hasOwnKey(rawRoomConfig, 'onTimer')) {
254
+ throw legacyConfigError(`rooms.${namespace}.onTimer`, `Move it to rooms.${namespace}.handlers.timers.`);
255
+ }
256
+ }
257
+ }
258
+ /** Increment when the public plugin contract changes incompatibly. */
259
+ export const CURRENT_PLUGIN_API_VERSION = 1;
260
+ // ─── Helper Functions ───
261
+ const VALID_FIELD_TYPES = [
262
+ 'string',
263
+ 'text',
264
+ 'number',
265
+ 'boolean',
266
+ 'datetime',
267
+ 'json',
268
+ ];
269
+ /** Auto-field names that cannot be type-overridden in user schema. */
270
+ const AUTO_FIELD_NAMES = ['id', 'createdAt', 'updatedAt'];
271
+ /**
272
+ * Validate table name uniqueness across all DB blocks. (§18)
273
+ * Throws if the same table name appears in multiple DB blocks.
274
+ */
275
+ function validateTableUniqueness(databases) {
276
+ const seen = new Map(); // tableName → dbKey
277
+ for (const [dbKey, dbBlock] of Object.entries(databases)) {
278
+ for (const tableName of Object.keys(dbBlock.tables ?? {})) {
279
+ if (seen.has(tableName)) {
280
+ throw new Error(`Table name '${tableName}' is duplicated in '${seen.get(tableName)}' and '${dbKey}'. ` +
281
+ `Table names must be unique across all DB blocks.`);
282
+ }
283
+ seen.set(tableName, dbKey);
284
+ }
285
+ }
286
+ }
287
+ /**
288
+ * Define an EdgeBase configuration. (§22)
289
+ * Validates the config and throws on invalid values.
290
+ * TypeScript functions are supported — config is bundled via esbuild (§13).
291
+ */
292
+ const VALID_DB_PROVIDERS = ['do', 'd1', 'neon', 'postgres'];
293
+ const VALID_AUTH_PROVIDERS = ['d1', 'neon', 'postgres'];
294
+ const SERVICE_KEY_KID_PATTERN = /^[A-Za-z0-9-]+$/;
295
+ function validateServiceKeysConfig(serviceKeys) {
296
+ const seenKids = new Set();
297
+ for (const [index, entry] of serviceKeys.keys.entries()) {
298
+ if (!entry.kid || typeof entry.kid !== 'string') {
299
+ throw new Error(`serviceKeys.keys[${index}].kid is required and must be a string.`);
300
+ }
301
+ if (!SERVICE_KEY_KID_PATTERN.test(entry.kid)) {
302
+ throw new Error(`serviceKeys.keys[${index}].kid '${entry.kid}' is invalid. ` +
303
+ `Use letters, numbers, and hyphens only. ` +
304
+ `Underscore is reserved by the structured key format 'jb_{kid}_{secret}'.`);
305
+ }
306
+ if (seenKids.has(entry.kid)) {
307
+ throw new Error(`Duplicate Service Key kid '${entry.kid}'. Each serviceKeys.keys entry must be unique.`);
308
+ }
309
+ seenKids.add(entry.kid);
310
+ if (entry.secretSource === 'dashboard' && (!entry.secretRef || typeof entry.secretRef !== 'string')) {
311
+ throw new Error(`serviceKeys.keys[${index}] (${entry.kid}): secretSource 'dashboard' requires a non-empty secretRef.`);
312
+ }
313
+ if (entry.secretSource === 'inline' && (!entry.inlineSecret || typeof entry.inlineSecret !== 'string')) {
314
+ throw new Error(`serviceKeys.keys[${index}] (${entry.kid}): secretSource 'inline' requires a non-empty inlineSecret.`);
315
+ }
316
+ }
317
+ }
318
+ function validateCloudflareConfig(cloudflare) {
319
+ if (cloudflare.extraCrons === undefined)
320
+ return;
321
+ if (!Array.isArray(cloudflare.extraCrons)) {
322
+ throw new Error('cloudflare.extraCrons must be an array of cron strings.');
323
+ }
324
+ for (const [index, cron] of cloudflare.extraCrons.entries()) {
325
+ if (typeof cron !== 'string' || cron.trim().length === 0) {
326
+ throw new Error(`cloudflare.extraCrons[${index}] must be a non-empty cron string.`);
327
+ }
328
+ }
329
+ }
330
+ export function defineConfig(config) {
331
+ config = materializeConfig(config);
332
+ if (config.trustSelfHostedProxy !== undefined && typeof config.trustSelfHostedProxy !== 'boolean') {
333
+ throw new Error('trustSelfHostedProxy must be a boolean.');
334
+ }
335
+ if (config.serviceKeys?.keys?.length) {
336
+ validateServiceKeysConfig(config.serviceKeys);
337
+ }
338
+ if (config.cloudflare) {
339
+ validateCloudflareConfig(config.cloudflare);
340
+ }
341
+ // ─── Auth Provider Validation ───
342
+ if (config.auth?.provider) {
343
+ if (!VALID_AUTH_PROVIDERS.includes(config.auth.provider)) {
344
+ throw new Error(`auth.provider: invalid value '${config.auth.provider}'. Must be one of: ${VALID_AUTH_PROVIDERS.join(', ')}.`);
345
+ }
346
+ }
347
+ if (config.auth?.provider === 'neon' || config.auth?.provider === 'postgres') {
348
+ if (!config.auth.connectionString) {
349
+ throw new Error(`auth.provider '${config.auth.provider}' requires a connectionString (env variable name). ` +
350
+ `Example: connectionString: 'AUTH_POSTGRES_URL'`);
351
+ }
352
+ }
353
+ if ((config.auth?.provider === 'd1' || !config.auth?.provider) && config.auth?.connectionString) {
354
+ throw new Error(`auth.connectionString is not used with provider '${config.auth?.provider ?? 'd1'}'. ` +
355
+ `Remove connectionString or change auth.provider to 'neon' or 'postgres'.`);
356
+ }
357
+ // ─── DB Block Validation ───
358
+ if (config.databases) {
359
+ // Validate provider settings for each DB block
360
+ for (const [dbKey, dbBlock] of Object.entries(config.databases)) {
361
+ const provider = dbBlock.provider ?? 'do';
362
+ // Provider value validation
363
+ if (!VALID_DB_PROVIDERS.includes(provider)) {
364
+ throw new Error(`DB '${dbKey}': invalid provider '${provider}'. Must be one of: ${VALID_DB_PROVIDERS.join(', ')}.`);
365
+ }
366
+ // Multi-tenant blocks (canCreate/access rules or instance: true) cannot use non-DO providers
367
+ const isDynamic = !!(dbBlock.access?.canCreate || dbBlock.access?.access || dbBlock.instance);
368
+ if (isDynamic && provider !== 'do') {
369
+ throw new Error(`DB '${dbKey}': provider '${provider}' is not supported on multi-tenant blocks ` +
370
+ `(blocks with canCreate/access rules or instance: true). Multi-tenant blocks require ` +
371
+ `physical isolation via Durable Objects. Remove the provider field or use provider: 'do'.`);
372
+ }
373
+ // connectionString only valid for PostgreSQL providers
374
+ if ((provider === 'do' || provider === 'd1') && dbBlock.connectionString) {
375
+ throw new Error(`DB '${dbKey}': connectionString is not used with provider '${provider}'. ` +
376
+ `Remove connectionString or change provider to 'neon' or 'postgres'.`);
377
+ }
378
+ const instanceDiscovery = dbBlock.admin?.instances;
379
+ if (instanceDiscovery) {
380
+ if (!isDynamic) {
381
+ throw new Error(`DB '${dbKey}': admin.instances is only supported on dynamic namespaces ` +
382
+ `(blocks with canCreate/access rules or instance: true).`);
383
+ }
384
+ if (instanceDiscovery.placeholder !== undefined && typeof instanceDiscovery.placeholder !== 'string') {
385
+ throw new Error(`DB '${dbKey}': admin.instances.placeholder must be a string.`);
386
+ }
387
+ if (instanceDiscovery.helperText !== undefined && typeof instanceDiscovery.helperText !== 'string') {
388
+ throw new Error(`DB '${dbKey}': admin.instances.helperText must be a string.`);
389
+ }
390
+ if (instanceDiscovery.targetLabel !== undefined && typeof instanceDiscovery.targetLabel !== 'string') {
391
+ throw new Error(`DB '${dbKey}': admin.instances.targetLabel must be a string.`);
392
+ }
393
+ if (instanceDiscovery.source === 'manual') {
394
+ // No additional validation.
395
+ }
396
+ else if (instanceDiscovery.source === 'table') {
397
+ if (!instanceDiscovery.namespace || typeof instanceDiscovery.namespace !== 'string') {
398
+ throw new Error(`DB '${dbKey}': admin.instances.namespace is required when source is 'table'.`);
399
+ }
400
+ if (!instanceDiscovery.table || typeof instanceDiscovery.table !== 'string') {
401
+ throw new Error(`DB '${dbKey}': admin.instances.table is required when source is 'table'.`);
402
+ }
403
+ if (instanceDiscovery.idField !== undefined && typeof instanceDiscovery.idField !== 'string') {
404
+ throw new Error(`DB '${dbKey}': admin.instances.idField must be a string.`);
405
+ }
406
+ if (instanceDiscovery.labelField !== undefined && typeof instanceDiscovery.labelField !== 'string') {
407
+ throw new Error(`DB '${dbKey}': admin.instances.labelField must be a string.`);
408
+ }
409
+ if (instanceDiscovery.descriptionField !== undefined && typeof instanceDiscovery.descriptionField !== 'string') {
410
+ throw new Error(`DB '${dbKey}': admin.instances.descriptionField must be a string.`);
411
+ }
412
+ if (instanceDiscovery.orderBy !== undefined && typeof instanceDiscovery.orderBy !== 'string') {
413
+ throw new Error(`DB '${dbKey}': admin.instances.orderBy must be a string.`);
414
+ }
415
+ if (instanceDiscovery.limit !== undefined) {
416
+ if (!Number.isInteger(instanceDiscovery.limit) || instanceDiscovery.limit < 1 || instanceDiscovery.limit > 100) {
417
+ throw new Error(`DB '${dbKey}': admin.instances.limit must be an integer between 1 and 100.`);
418
+ }
419
+ }
420
+ if (instanceDiscovery.searchFields !== undefined) {
421
+ if (!Array.isArray(instanceDiscovery.searchFields) ||
422
+ instanceDiscovery.searchFields.length === 0 ||
423
+ instanceDiscovery.searchFields.some((field) => typeof field !== 'string' || field.length === 0)) {
424
+ throw new Error(`DB '${dbKey}': admin.instances.searchFields must be a non-empty string array.`);
425
+ }
426
+ }
427
+ const sourceDbBlock = config.databases?.[instanceDiscovery.namespace];
428
+ if (!sourceDbBlock) {
429
+ throw new Error(`DB '${dbKey}': admin.instances.namespace '${instanceDiscovery.namespace}' was not found in databases.`);
430
+ }
431
+ const sourceIsDynamic = !!(sourceDbBlock.access?.canCreate || sourceDbBlock.access?.access || sourceDbBlock.instance);
432
+ if (sourceIsDynamic) {
433
+ throw new Error(`DB '${dbKey}': admin.instances.namespace '${instanceDiscovery.namespace}' must be a single-instance namespace when source is 'table'.`);
434
+ }
435
+ if (!sourceDbBlock.tables?.[instanceDiscovery.table]) {
436
+ throw new Error(`DB '${dbKey}': admin.instances.table '${instanceDiscovery.table}' was not found in namespace '${instanceDiscovery.namespace}'.`);
437
+ }
438
+ }
439
+ else if (instanceDiscovery.source === 'function') {
440
+ if (typeof instanceDiscovery.resolve !== 'function') {
441
+ throw new Error(`DB '${dbKey}': admin.instances.resolve must be a function when source is 'function'.`);
442
+ }
443
+ }
444
+ else {
445
+ const unexpectedSource = instanceDiscovery.source;
446
+ throw new Error(`DB '${dbKey}': admin.instances.source '${String(unexpectedSource)}' is invalid. ` +
447
+ `Must be one of: manual, table, function.`);
448
+ }
449
+ }
450
+ }
451
+ // Validate each DB block's table schemas
452
+ for (const [dbKey, dbBlock] of Object.entries(config.databases)) {
453
+ for (const [tableName, tableConfig] of Object.entries(dbBlock.tables ?? {})) {
454
+ if (!tableConfig.schema)
455
+ continue;
456
+ for (const [field, def] of Object.entries(tableConfig.schema)) {
457
+ // Auto-fields: only `false` (disable) is allowed, type override is blocked
458
+ if (AUTO_FIELD_NAMES.includes(field)) {
459
+ if (def !== false) {
460
+ throw new Error(`DB '${dbKey}' table '${tableName}.${field}': auto-field '${field}' cannot be type-overridden. ` +
461
+ `Use '${field}: false' to disable it, or omit it to use the default.`);
462
+ }
463
+ continue;
464
+ }
465
+ if (def === false)
466
+ continue;
467
+ if (!def.type) {
468
+ throw new Error(`DB '${dbKey}' table '${tableName}.${field}': 'type' is required.`);
469
+ }
470
+ if (!VALID_FIELD_TYPES.includes(def.type)) {
471
+ throw new Error(`DB '${dbKey}' table '${tableName}.${field}': invalid type '${def.type}'. ` +
472
+ `Must be one of: ${VALID_FIELD_TYPES.join(', ')}.`);
473
+ }
474
+ }
475
+ }
476
+ }
477
+ // Validate table name uniqueness (§18)
478
+ validateTableUniqueness(config.databases);
479
+ }
480
+ // ─── Plugin Validation ───
481
+ if (config.plugins) {
482
+ if (!Array.isArray(config.plugins)) {
483
+ throw new Error('plugins must be an array. Example: plugins: [stripePlugin({...})]');
484
+ }
485
+ const seen = new Set();
486
+ for (const p of config.plugins) {
487
+ if (!p.name)
488
+ throw new Error('Each plugin must have a "name" property.');
489
+ if (p.pluginApiVersion !== CURRENT_PLUGIN_API_VERSION) {
490
+ throw new Error(`Plugin '${p.name}' targets pluginApiVersion '${String(p.pluginApiVersion)}', ` +
491
+ `but this EdgeBase build requires '${CURRENT_PLUGIN_API_VERSION}'. ` +
492
+ `Rebuild the plugin against the current @edge-base/plugin-core version.`);
493
+ }
494
+ if (seen.has(p.name))
495
+ throw new Error(`Duplicate plugin: '${p.name}'.`);
496
+ seen.add(p.name);
497
+ }
498
+ // Validate provider consistency: plugin provider must match its target dbBlock provider
499
+ for (const p of config.plugins) {
500
+ if (!p.provider || !p.dbBlock)
501
+ continue;
502
+ const targetBlock = config.databases?.[p.dbBlock];
503
+ if (!targetBlock)
504
+ continue; // dbBlock may not exist yet (created by merge)
505
+ const blockProvider = targetBlock.provider ?? 'do';
506
+ const pluginProvider = p.provider;
507
+ if (blockProvider !== pluginProvider) {
508
+ throw new Error(`Plugin '${p.name}' requires provider '${pluginProvider}' but DB block '${p.dbBlock}' ` +
509
+ `uses provider '${blockProvider}'. All plugins targeting the same DB block must use the same provider.`);
510
+ }
511
+ }
512
+ }
513
+ // ─── Room Config Validation ───
514
+ if (config.rooms) {
515
+ // Detect v1 config structure and provide migration hint
516
+ if (config.rooms.rooms &&
517
+ typeof config.rooms.rooms === 'object') {
518
+ throw new Error('Room config has changed in v2. Remove the nested "rooms" key — namespaces are now top-level:\n' +
519
+ ' Before: rooms: { rooms: { "game:*": { mode: "direct" } } }\n' +
520
+ ' After: rooms: { "game": { handlers: { actions: { ... } } } }');
521
+ }
522
+ for (const [ns, def] of Object.entries(config.rooms)) {
523
+ if (def.maxPlayers !== undefined && (def.maxPlayers < 1 || def.maxPlayers > 32768)) {
524
+ throw new Error(`Room namespace '${ns}': maxPlayers must be between 1 and 32768.`);
525
+ }
526
+ if (def.maxStateSize !== undefined && def.maxStateSize < 1024) {
527
+ throw new Error(`Room namespace '${ns}': maxStateSize must be at least 1024 bytes (1KB).`);
528
+ }
529
+ if (def.reconnectTimeout !== undefined && def.reconnectTimeout < 0) {
530
+ throw new Error(`Room namespace '${ns}': reconnectTimeout must be non-negative.`);
531
+ }
532
+ if (def.rateLimit?.actions !== undefined && def.rateLimit.actions < 1) {
533
+ throw new Error(`Room namespace '${ns}': rateLimit.actions must be at least 1.`);
534
+ }
535
+ if (def.handlers?.timers !== undefined) {
536
+ if (typeof def.handlers.timers !== 'object' || def.handlers.timers === null) {
537
+ throw new Error(`Room namespace '${ns}': handlers.timers must be an object of named handlers.`);
538
+ }
539
+ for (const timerName of Object.keys(def.handlers.timers)) {
540
+ if (typeof def.handlers.timers[timerName] !== 'function') {
541
+ throw new Error(`Room namespace '${ns}': handlers.timers['${timerName}'] must be a function.`);
542
+ }
543
+ }
544
+ }
545
+ }
546
+ }
547
+ Object.defineProperty(config, MATERIALIZED_CONFIG, {
548
+ value: true,
549
+ enumerable: false,
550
+ configurable: false,
551
+ });
552
+ return config;
553
+ }
554
+ export function defineFunction(defOrHandler) {
555
+ if (typeof defOrHandler === 'function') {
556
+ // Method-export form: trigger filled by CLI registry generator (wrapMethodExport)
557
+ return { trigger: { type: 'http' }, handler: defOrHandler };
558
+ }
559
+ return defOrHandler;
560
+ }
561
+ //# sourceMappingURL=config.js.map