@open-mercato/cli 0.4.11-develop.1925.0436f3b988 → 0.4.11-develop.1926.e34f3af1bf
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/generators/module-registry.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'node:fs'\nimport path from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { VariableDeclarationKind, type WriterFunction } from 'ts-morph'\nimport ts from 'typescript'\nimport type { PackageResolver } from '../resolver'\nimport {\n calculateStructureChecksum,\n toVar,\n moduleHasExport,\n type GeneratorResult,\n createGeneratorResult,\n writeGeneratedFile,\n} from '../utils'\nimport {\n addAutoGeneratedComment,\n addImportSpec,\n addImportStatements,\n arrayLiteral,\n awaitExpression,\n block,\n asExpression,\n arrowFunction,\n binaryExpression,\n callExpression,\n conditionalExpression,\n createGeneratedSourceFile,\n elementAccess,\n returnStatement,\n getSourceText,\n identifier,\n importExpression,\n logicalAnd,\n logicalOr,\n methodCall,\n nullishCoalesce,\n objectLiteral,\n optionalPropertyAccess,\n parenthesized,\n propertyAccess,\n spreadExpression,\n type GeneratedObjectEntry,\n variableStatement,\n writeValue,\n writeStatements,\n} from './ast'\nimport {\n emptyArray,\n emptyObject,\n namespaceFallback,\n namespaceImportSpec,\n} from './extensions/shared'\nimport {\n scanModuleDir,\n resolveModuleFile,\n resolveFirstModuleFile,\n SCAN_CONFIGS,\n MODULE_CODE_EXTENSIONS,\n type ModuleRoots,\n type ModuleImports,\n stripModuleCodeExtension,\n isModulePageFile,\n resolveStandaloneSourceMirrorBase,\n} from './scanner'\nimport { loadGeneratorExtensions } from './extensions'\nimport type { ModuleScanContext, StandaloneConfigOptions } from './extension'\n\ntype HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nexport interface ModuleRegistryOptions {\n resolver: PackageResolver\n quiet?: boolean\n}\n\ntype DashboardWidgetEntry = {\n moduleId: string\n key: string\n source: 'app' | 'package'\n importPath: string\n}\n\ntype RuntimeApiMethodMetadata = {\n requireAuth?: boolean\n requireRoles?: string[]\n requireFeatures?: string[]\n rateLimit?: {\n points: number\n duration: number\n blockDuration?: number\n keyPrefix?: string\n }\n}\n\ntype PageRouteGenerationResult = {\n eagerRoutes: string[]\n runtimeRoutes: string[]\n manifestRoutes: string[]\n}\n\ntype ApiRouteGenerationResult = {\n eagerApis: string[]\n runtimeApis: string[]\n manifestApis: string[]\n}\n\ntype SerializablePageMetadata = {\n requireAuth?: boolean\n requireRoles?: string[]\n requireFeatures?: string[]\n requireCustomerAuth?: boolean\n requireCustomerFeatures?: string[]\n title?: string\n titleKey?: string\n pageTitle?: string\n pageTitleKey?: string\n group?: string\n groupKey?: string\n pageGroup?: string\n pageGroupKey?: string\n order?: number\n pageOrder?: number\n priority?: number\n pagePriority?: number\n navHidden?: boolean\n breadcrumb?: Array<{ label: string; labelKey?: string; href?: string }>\n pageContext?: 'main' | 'admin' | 'settings' | 'profile'\n placement?: {\n section: string\n sectionLabel?: string\n sectionLabelKey?: string\n order?: number\n }\n icon?: string\n}\n\ntype SerializableSubscriberMetadata = {\n id?: string\n event?: string\n persistent?: boolean\n sync?: boolean\n priority?: number\n}\n\ntype SerializableWorkerMetadata = {\n id?: string\n queue?: string\n concurrency?: number\n}\n\ntype PageMetadataManifestLoadResult = {\n manifestExpr: string\n requiresRuntimeImport: boolean\n}\n\nfunction scanDashboardWidgetEntries(options: {\n modId: string\n roots: ModuleRoots\n appImportBase: string\n pkgImportBase: string\n}): DashboardWidgetEntry[] {\n const { modId, roots, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.dashboardWidgets)\n return files.map(({ relPath, fromApp }) => {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const base = file.replace(/\\.(t|j)sx?$/, '')\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/widgets/dashboard/${[...segs, base].join('/')}`\n )\n const key = [modId, ...segs, base].filter(Boolean).join(':')\n const source = fromApp ? 'app' : 'package'\n return { moduleId: modId, key, source, importPath }\n })\n}\n\nasync function loadModuleExportsFromSource<T = Record<string, unknown>>(sourceFile: string): Promise<T | null> {\n try {\n return await import(buildCacheBustedSourceImportUrl(sourceFile)) as T\n } catch {\n return null\n }\n}\n\nfunction buildCacheBustedSourceImportUrl(sourceFile: string): string {\n const url = pathToFileURL(sourceFile)\n try {\n const stat = fs.statSync(sourceFile)\n url.searchParams.set('v', `${stat.mtimeMs}-${stat.size}`)\n } catch {}\n return url.href\n}\n\nfunction unwrapObjectLiteralExpression(\n expression: ts.Expression | undefined,\n): ts.ObjectLiteralExpression | undefined {\n if (!expression) return undefined\n if (ts.isObjectLiteralExpression(expression)) return expression\n if (ts.isAsExpression(expression) || ts.isTypeAssertionExpression(expression)) {\n return unwrapObjectLiteralExpression(expression.expression)\n }\n if (ts.isParenthesizedExpression(expression)) {\n return unwrapObjectLiteralExpression(expression.expression)\n }\n return undefined\n}\n\nfunction extractNamedObjectLiteralSource(sourceFile: string, exportName: string): string | null {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return null\n }\n\n const parsed = ts.createSourceFile(\n sourceFile,\n source,\n ts.ScriptTarget.Latest,\n true,\n inferScriptKind(sourceFile),\n )\n\n const exportedNames = new Set<string>()\n for (const statement of parsed.statements) {\n if (\n ts.isExportDeclaration(statement)\n && statement.exportClause\n && ts.isNamedExports(statement.exportClause)\n && !statement.moduleSpecifier\n ) {\n for (const element of statement.exportClause.elements) {\n exportedNames.add(element.name.text)\n }\n }\n }\n\n for (const statement of parsed.statements) {\n if (!ts.isVariableStatement(statement)) continue\n\n const statementExportsNameDirectly = (ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined)\n ?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword)\n\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name) || declaration.name.text !== exportName) continue\n if (!statementExportsNameDirectly && !exportedNames.has(exportName)) continue\n\n const objectLiteral = unwrapObjectLiteralExpression(declaration.initializer)\n if (!objectLiteral) return null\n return source.slice(objectLiteral.getStart(parsed), objectLiteral.end)\n }\n }\n\n return null\n}\n\nfunction resolveLocalStringConstants(parsed: ts.SourceFile): Map<string, string> {\n const constants = new Map<string, string>()\n for (const statement of parsed.statements) {\n if (!ts.isVariableStatement(statement)) continue\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name)) continue\n if (!declaration.initializer) continue\n if (ts.isStringLiteral(declaration.initializer) || ts.isNoSubstitutionTemplateLiteral(declaration.initializer)) {\n constants.set(declaration.name.text, declaration.initializer.text)\n }\n }\n }\n return constants\n}\n\nfunction extractObjectPropertiesFromAst(sourceFile: string, exportName: string): Record<string, unknown> | null {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return null\n }\n\n const parsed = ts.createSourceFile(\n sourceFile,\n source,\n ts.ScriptTarget.Latest,\n true,\n inferScriptKind(sourceFile),\n )\n\n const exportedNames = new Set<string>()\n for (const statement of parsed.statements) {\n if (\n ts.isExportDeclaration(statement)\n && statement.exportClause\n && ts.isNamedExports(statement.exportClause)\n && !statement.moduleSpecifier\n ) {\n for (const element of statement.exportClause.elements) {\n exportedNames.add(element.name.text)\n }\n }\n }\n\n let objectLiteral: ts.ObjectLiteralExpression | undefined\n for (const statement of parsed.statements) {\n if (!ts.isVariableStatement(statement)) continue\n const statementExportsNameDirectly = (ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined)\n ?.some((modifier: ts.Modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword)\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name) || declaration.name.text !== exportName) continue\n if (!statementExportsNameDirectly && !exportedNames.has(exportName)) continue\n objectLiteral = unwrapObjectLiteralExpression(declaration.initializer)\n break\n }\n if (objectLiteral) break\n }\n\n if (!objectLiteral) return null\n\n const localConstants = resolveLocalStringConstants(parsed)\n const result: Record<string, unknown> = {}\n\n for (const property of objectLiteral.properties) {\n if (!ts.isPropertyAssignment(property)) continue\n const key = ts.isIdentifier(property.name) ? property.name.text\n : ts.isStringLiteral(property.name) ? property.name.text\n : null\n if (!key) continue\n\n const initializer = property.initializer\n if (ts.isStringLiteral(initializer) || ts.isNoSubstitutionTemplateLiteral(initializer)) {\n result[key] = initializer.text\n } else if (ts.isNumericLiteral(initializer)) {\n result[key] = Number(initializer.text)\n } else if (initializer.kind === ts.SyntaxKind.TrueKeyword) {\n result[key] = true\n } else if (initializer.kind === ts.SyntaxKind.FalseKeyword) {\n result[key] = false\n } else if (ts.isIdentifier(initializer) && localConstants.has(initializer.text)) {\n result[key] = localConstants.get(initializer.text)\n }\n }\n\n return Object.keys(result).length > 0 ? result : null\n}\n\nfunction extractNamedObjectLiteralExport(sourceFile: string, exportName: string): Record<string, unknown> | null {\n const literal = extractNamedObjectLiteralSource(sourceFile, exportName)\n if (!literal) return null\n try {\n const extracted = Function(`\"use strict\"; return (${literal});`)()\n return extracted && typeof extracted === 'object' ? extracted as Record<string, unknown> : null\n } catch {\n return extractObjectPropertiesFromAst(sourceFile, exportName)\n }\n}\n\nfunction inferScriptKind(filePath: string): ts.ScriptKind {\n if (filePath.endsWith('.tsx')) return ts.ScriptKind.TSX\n if (filePath.endsWith('.jsx')) return ts.ScriptKind.JSX\n if (filePath.endsWith('.js')) return ts.ScriptKind.JS\n return ts.ScriptKind.TS\n}\n\nfunction hasDefaultExport(sourceFile: string): boolean {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return false\n }\n\n const parsed = ts.createSourceFile(\n sourceFile,\n source,\n ts.ScriptTarget.Latest,\n true,\n inferScriptKind(sourceFile),\n )\n\n for (const statement of parsed.statements) {\n if (ts.isExportAssignment(statement) && !statement.isExportEquals) {\n return true\n }\n\n if (\n ts.isExportDeclaration(statement)\n && statement.exportClause\n && ts.isNamedExports(statement.exportClause)\n && statement.exportClause.elements.some(\n (element) => element.name.text === 'default' || element.propertyName?.text === 'default',\n )\n ) {\n return true\n }\n\n const modifiers = ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined\n if (modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword)) {\n return true\n }\n }\n\n return false\n}\n\nfunction requiresRuntimePageMetadataFromSourceFile(sourceFile: string): boolean {\n const literal = extractNamedObjectLiteralSource(sourceFile, 'metadata')\n if (!literal) return false\n\n if (/\\b(?:visible|enabled)\\s*(?::|[,}])/.test(literal)) {\n return true\n }\n\n if (!/\\bicon\\s*(?::|[,}])/.test(literal)) {\n return false\n }\n\n const iconMatch = /\\bicon\\s*:\\s*([^,\\n}]+)/m.exec(literal)\n if (!iconMatch) return true\n\n return !/^['\"`]/.test(iconMatch[1].trim())\n}\n\nfunction toLiteral(value: unknown): string {\n return JSON.stringify(value)\n}\n\nconst GENERATED_MODULE_SPECIFIER_PREFIXES = ['@/', '@open-mercato/', '../../src/modules/', './'] as const\nconst GENERATED_MODULE_SPECIFIER_SEGMENT = /^[A-Za-z0-9_.\\-[\\]()']+$/\n\nfunction sanitizeGeneratedModuleSpecifierSegment(segment: string, importPath: string): string {\n const match = GENERATED_MODULE_SPECIFIER_SEGMENT.exec(segment)\n if (!match || segment === '.' || segment === '..') {\n throw new Error(`Unsafe generated module specifier: ${importPath}`)\n }\n return match[0]\n}\n\nfunction sanitizeGeneratedModuleSpecifier(importPath: string): string {\n const prefix = GENERATED_MODULE_SPECIFIER_PREFIXES.find((candidate) => importPath.startsWith(candidate))\n if (!prefix) {\n throw new Error(`Unsafe generated module specifier prefix: ${importPath}`)\n }\n\n const suffix = importPath.slice(prefix.length)\n if (!suffix) {\n throw new Error(`Unsafe generated module specifier: ${importPath}`)\n }\n\n const segments = suffix\n .split('/')\n .map((segment) => sanitizeGeneratedModuleSpecifierSegment(segment, importPath))\n\n return `${prefix}${segments.join('/')}`\n}\n\nfunction buildImportStatement(importClause: string, importPath: string): string {\n return `import ${importClause} from ${toLiteral(sanitizeGeneratedModuleSpecifier(importPath))}`\n}\n\nfunction buildBareImportStatement(importPath: string): string {\n return `import ${toLiteral(sanitizeGeneratedModuleSpecifier(importPath))}`\n}\n\nfunction buildDynamicImportExpression(importPath: string): string {\n return `import(${toLiteral(sanitizeGeneratedModuleSpecifier(importPath))})`\n}\n\nfunction serializeGeneratedImport(\n statement: string | {\n moduleSpecifier?: string\n defaultImport?: string\n namespaceImport?: string\n namedImports?: Array<string | { name: string; alias?: string; isTypeOnly?: boolean }>\n isTypeOnly?: boolean\n },\n): string {\n if (typeof statement === 'string') {\n return statement\n }\n\n const moduleSpecifier = statement.moduleSpecifier ?? ''\n const clauses: string[] = []\n\n if (statement.defaultImport) {\n clauses.push(statement.defaultImport)\n }\n\n if (statement.namespaceImport) {\n clauses.push(`* as ${statement.namespaceImport}`)\n }\n\n if (statement.namedImports && statement.namedImports.length > 0) {\n const namedImports = statement.namedImports.map((namedImport) => {\n if (typeof namedImport === 'string') {\n return namedImport\n }\n const prefix = namedImport.isTypeOnly ? 'type ' : ''\n const alias = namedImport.alias ? ` as ${namedImport.alias}` : ''\n return `${prefix}${namedImport.name}${alias}`\n })\n clauses.push(`{ ${namedImports.join(', ')} }`)\n }\n\n const typePrefix = statement.isTypeOnly ? 'type ' : ''\n if (clauses.length === 0) {\n return `import ${toLiteral(moduleSpecifier)}`\n }\n\n return `import ${typePrefix}${clauses.join(', ')} from ${toLiteral(moduleSpecifier)}`\n}\n\nfunction findExistingModuleFile(baseDir: string, relativePath: string): string | null {\n const directPath = path.join(baseDir, relativePath)\n if (fs.existsSync(directPath)) return directPath\n\n const stripped = stripModuleCodeExtension(relativePath)\n for (const extension of MODULE_CODE_EXTENSIONS) {\n const candidate = path.join(baseDir, `${stripped}${extension}`)\n if (fs.existsSync(candidate)) return candidate\n }\n\n return null\n}\n\nfunction findExistingModuleFileByBaseNames(baseDir: string, relativeBaseNames: string[]): string | null {\n for (const relativeBaseName of relativeBaseNames) {\n const resolved = findExistingModuleFile(baseDir, relativeBaseName)\n if (resolved) return resolved\n }\n return null\n}\n\nfunction toModuleImportSubpath(filePath: string, baseDir: string): string {\n const relativePath = path.relative(baseDir, filePath).replace(/\\\\/g, '/')\n return stripModuleCodeExtension(relativePath)\n}\n\nfunction normalizeApiMethodMetadata(raw: unknown): RuntimeApiMethodMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: RuntimeApiMethodMetadata = {}\n\n if (typeof source.requireAuth === 'boolean') {\n normalized.requireAuth = source.requireAuth\n }\n if (Array.isArray(source.requireRoles)) {\n normalized.requireRoles = source.requireRoles.filter((role): role is string => typeof role === 'string' && role.length > 0)\n }\n if (Array.isArray(source.requireFeatures)) {\n normalized.requireFeatures = source.requireFeatures.filter((feature): feature is string => typeof feature === 'string' && feature.length > 0)\n }\n if (source.rateLimit && typeof source.rateLimit === 'object') {\n const rateLimit = source.rateLimit as Record<string, unknown>\n if (typeof rateLimit.points === 'number' && typeof rateLimit.duration === 'number') {\n normalized.rateLimit = {\n points: rateLimit.points,\n duration: rateLimit.duration,\n blockDuration: typeof rateLimit.blockDuration === 'number' ? rateLimit.blockDuration : undefined,\n keyPrefix: typeof rateLimit.keyPrefix === 'string' ? rateLimit.keyPrefix : undefined,\n }\n }\n }\n\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nfunction buildApiMetadataLiteral(metadata: unknown, method?: HttpMethod): string {\n if (!metadata || typeof metadata !== 'object') return 'undefined'\n const source = metadata as Record<string, unknown>\n const methods: HttpMethod[] = method ? [method] : ['GET', 'POST', 'PUT', 'PATCH', 'DELETE']\n const normalized: Partial<Record<HttpMethod, RuntimeApiMethodMetadata>> = {}\n\n for (const entryMethod of methods) {\n const candidate = method ? source : source[entryMethod]\n const value = normalizeApiMethodMetadata(candidate)\n if (value) {\n normalized[entryMethod] = value\n }\n }\n\n return Object.keys(normalized).length > 0 ? toLiteral(normalized) : 'undefined'\n}\n\nfunction resolveApiPathFromMetadata(metadata: unknown, fallbackPath: string): string {\n if (!metadata || typeof metadata !== 'object') return fallbackPath\n const candidate = (metadata as Record<string, unknown>).path\n return typeof candidate === 'string' && candidate.length > 0 ? candidate : fallbackPath\n}\n\nfunction detectExportedHttpMethods(sourceFile: string): HttpMethod[] {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return []\n }\n\n const knownMethods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'] as HttpMethod[]\n const exportedMethods = new Set<HttpMethod>()\n const collectKnownMethods = (rawSpecifiers: string[], opts?: { useExportedAlias?: boolean; useDestructuredProperty?: boolean }) => {\n for (const specifier of rawSpecifiers) {\n const trimmed = specifier.trim()\n if (!trimmed) continue\n\n let candidate = trimmed\n if (opts?.useExportedAlias) {\n candidate = trimmed.split(/\\s+as\\s+/i).pop()?.trim() ?? trimmed\n }\n if (opts?.useDestructuredProperty) {\n candidate = trimmed.split(':')[0]?.trim() ?? trimmed\n }\n\n if (knownMethods.includes(candidate as HttpMethod)) {\n exportedMethods.add(candidate as HttpMethod)\n }\n }\n }\n\n for (const method of knownMethods) {\n const pattern = new RegExp(`export\\\\s+(?:async\\\\s+)?function\\\\s+${method}\\\\b|export\\\\s+(?:const|let|var)\\\\s+${method}\\\\b`)\n if (pattern.test(source)) {\n exportedMethods.add(method)\n }\n }\n\n const reExportPattern = /export\\s*{([^}]+)}/g\n for (const match of source.matchAll(reExportPattern)) {\n const exportBlock = match[1] ?? ''\n collectKnownMethods(\n exportBlock\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0),\n { useExportedAlias: true },\n )\n }\n\n const destructuredExportPattern = /export\\s+(?:const|let|var)\\s*{([^}]+)}/g\n for (const match of source.matchAll(destructuredExportPattern)) {\n const exportBlock = match[1] ?? ''\n collectKnownMethods(\n exportBlock\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0),\n { useDestructuredProperty: true },\n )\n }\n\n return knownMethods.filter((method) => exportedMethods.has(method))\n}\n\nfunction buildPageRouteProps(metaExpr: string, routePath: string): string {\n return `pattern: ${toLiteral(routePath || '/')}, requireAuth: (${metaExpr})?.requireAuth, requireRoles: (${metaExpr})?.requireRoles, requireFeatures: (${metaExpr})?.requireFeatures, requireCustomerAuth: (${metaExpr})?.requireCustomerAuth, requireCustomerFeatures: (${metaExpr})?.requireCustomerFeatures, title: (${metaExpr})?.pageTitle ?? (${metaExpr})?.title, titleKey: (${metaExpr})?.pageTitleKey ?? (${metaExpr})?.titleKey, group: (${metaExpr})?.pageGroup ?? (${metaExpr})?.group, groupKey: (${metaExpr})?.pageGroupKey ?? (${metaExpr})?.groupKey, icon: (${metaExpr})?.icon, order: (${metaExpr})?.pageOrder ?? (${metaExpr})?.order, priority: (${metaExpr})?.pagePriority ?? (${metaExpr})?.priority, navHidden: (${metaExpr})?.navHidden, visible: (${metaExpr})?.visible, enabled: (${metaExpr})?.enabled, breadcrumb: (${metaExpr})?.breadcrumb, pageContext: (${metaExpr})?.pageContext, placement: (${metaExpr})?.placement`\n}\n\nfunction normalizeBreadcrumb(raw: unknown): SerializablePageMetadata['breadcrumb'] {\n if (!Array.isArray(raw)) return undefined\n const breadcrumb = raw\n .map((entry) => {\n if (!entry || typeof entry !== 'object') return null\n const source = entry as Record<string, unknown>\n if (typeof source.label !== 'string') return null\n return {\n label: source.label,\n labelKey: typeof source.labelKey === 'string' ? source.labelKey : undefined,\n href: typeof source.href === 'string' ? source.href : undefined,\n }\n })\n .filter((entry): entry is NonNullable<typeof entry> => entry !== null)\n return breadcrumb.length > 0 ? breadcrumb : undefined\n}\n\nfunction normalizePlacement(raw: unknown): SerializablePageMetadata['placement'] {\n if (!raw || typeof raw !== 'object') return undefined\n const source = raw as Record<string, unknown>\n if (typeof source.section !== 'string' || source.section.length === 0) return undefined\n return {\n section: source.section,\n sectionLabel: typeof source.sectionLabel === 'string' ? source.sectionLabel : undefined,\n sectionLabelKey: typeof source.sectionLabelKey === 'string' ? source.sectionLabelKey : undefined,\n order: typeof source.order === 'number' ? source.order : undefined,\n }\n}\n\nfunction normalizePageMetadata(raw: unknown): SerializablePageMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: SerializablePageMetadata = {}\n\n if (typeof source.requireAuth === 'boolean') normalized.requireAuth = source.requireAuth\n if (Array.isArray(source.requireRoles)) normalized.requireRoles = source.requireRoles.filter((role): role is string => typeof role === 'string' && role.length > 0)\n if (Array.isArray(source.requireFeatures)) normalized.requireFeatures = source.requireFeatures.filter((feature): feature is string => typeof feature === 'string' && feature.length > 0)\n if (typeof source.requireCustomerAuth === 'boolean') normalized.requireCustomerAuth = source.requireCustomerAuth\n if (Array.isArray(source.requireCustomerFeatures)) normalized.requireCustomerFeatures = source.requireCustomerFeatures.filter((feature): feature is string => typeof feature === 'string' && feature.length > 0)\n if (typeof source.title === 'string') normalized.title = source.title\n if (typeof source.titleKey === 'string') normalized.titleKey = source.titleKey\n if (typeof source.pageTitle === 'string') normalized.pageTitle = source.pageTitle\n if (typeof source.pageTitleKey === 'string') normalized.pageTitleKey = source.pageTitleKey\n if (typeof source.group === 'string') normalized.group = source.group\n if (typeof source.groupKey === 'string') normalized.groupKey = source.groupKey\n if (typeof source.pageGroup === 'string') normalized.pageGroup = source.pageGroup\n if (typeof source.pageGroupKey === 'string') normalized.pageGroupKey = source.pageGroupKey\n if (typeof source.order === 'number') normalized.order = source.order\n if (typeof source.pageOrder === 'number') normalized.pageOrder = source.pageOrder\n if (typeof source.priority === 'number') normalized.priority = source.priority\n if (typeof source.pagePriority === 'number') normalized.pagePriority = source.pagePriority\n if (typeof source.navHidden === 'boolean') normalized.navHidden = source.navHidden\n if (typeof source.pageContext === 'string' && ['main', 'admin', 'settings', 'profile'].includes(source.pageContext)) {\n normalized.pageContext = source.pageContext as SerializablePageMetadata['pageContext']\n }\n const breadcrumb = normalizeBreadcrumb(source.breadcrumb)\n if (breadcrumb) normalized.breadcrumb = breadcrumb\n const placement = normalizePlacement(source.placement)\n if (placement) normalized.placement = placement\n if (typeof source.icon === 'string') normalized.icon = source.icon\n\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nfunction requiresRuntimePageMetadata(raw: unknown): boolean {\n if (!raw || typeof raw !== 'object') return false\n const source = raw as Record<string, unknown>\n if (typeof source.visible === 'function' || typeof source.enabled === 'function') {\n return true\n }\n return source.icon != null && typeof source.icon !== 'string'\n}\n\nfunction normalizeSubscriberMetadata(raw: unknown): SerializableSubscriberMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: SerializableSubscriberMetadata = {}\n if (typeof source.id === 'string' && source.id.length > 0) normalized.id = source.id\n if (typeof source.event === 'string' && source.event.length > 0) normalized.event = source.event\n if (typeof source.persistent === 'boolean') normalized.persistent = source.persistent\n if (typeof source.sync === 'boolean') normalized.sync = source.sync\n if (typeof source.priority === 'number') normalized.priority = source.priority\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nfunction normalizeWorkerMetadata(raw: unknown): SerializableWorkerMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: SerializableWorkerMetadata = {}\n if (typeof source.id === 'string' && source.id.length > 0) normalized.id = source.id\n if (typeof source.queue === 'string' && source.queue.length > 0) normalized.queue = source.queue\n if (typeof source.concurrency === 'number') normalized.concurrency = source.concurrency\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nasync function loadSubscriberMetadata(sourceFile: string): Promise<SerializableSubscriberMetadata | null> {\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n return normalizeSubscriberMetadata(sourceModule?.metadata)\n ?? normalizeSubscriberMetadata(extractNamedObjectLiteralExport(sourceFile, 'metadata'))\n}\n\nasync function loadWorkerMetadata(sourceFile: string): Promise<SerializableWorkerMetadata | null> {\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n return normalizeWorkerMetadata(sourceModule?.metadata)\n ?? normalizeWorkerMetadata(extractNamedObjectLiteralExport(sourceFile, 'metadata'))\n}\n\nasync function loadPageMetadataForManifest(options: {\n sourceFile: string\n metaPath?: string\n runtimeExpr: string\n allowRuntimeFallback?: boolean\n}): Promise<PageMetadataManifestLoadResult> {\n const metadataModule = options.metaPath ?? options.sourceFile\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(metadataModule)\n const runtimeMetadata = sourceModule?.metadata\n\n if (\n options.allowRuntimeFallback\n && (requiresRuntimePageMetadata(runtimeMetadata) || requiresRuntimePageMetadataFromSourceFile(metadataModule))\n ) {\n return {\n manifestExpr: options.runtimeExpr,\n requiresRuntimeImport: true,\n }\n }\n\n const normalized = normalizePageMetadata(runtimeMetadata)\n ?? normalizePageMetadata(extractNamedObjectLiteralExport(metadataModule, 'metadata'))\n\n return {\n manifestExpr: normalized ? `(${toLiteral(normalized)} as any)` : '(undefined as any)',\n requiresRuntimeImport: false,\n }\n}\n\nasync function processPageFiles(options: {\n files: Array<{ relPath: string; fromApp: boolean }>\n type: 'frontend' | 'backend'\n modId: string\n appDir: string\n pkgDir: string\n appImportBase: string\n pkgImportBase: string\n eagerImports: string[]\n runtimeImports: string[]\n manifestImports?: string[]\n importIdRef: { value: number }\n}): Promise<PageRouteGenerationResult> {\n const { files, type, modId, appDir, pkgDir, appImportBase, pkgImportBase, eagerImports, runtimeImports, manifestImports, importIdRef } = options\n const prefix = type === 'frontend' ? 'C' : 'B'\n const modPrefix = type === 'frontend' ? 'CM' : 'BM'\n const metaPrefix = type === 'frontend' ? 'M' : 'BM'\n const eagerRoutes: string[] = []\n const runtimeRoutes: string[] = []\n const manifestRoutes: string[] = []\n\n // Next-style page.* files\n for (const { relPath, fromApp } of files.filter(({ relPath: f }) => isModulePageFile(path.basename(f)))) {\n const segs = relPath.split('/')\n const pageFile = segs.pop()!\n const pageBaseName = stripModuleCodeExtension(pageFile)\n const importName = `${prefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const pageModName = `${modPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const runtimeMetaName = `${metaPrefix}Runtime${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const sub = segs.length ? `${segs.join('/')}/${pageBaseName}` : pageBaseName\n const importPath = sanitizeGeneratedModuleSpecifier(`${fromApp ? appImportBase : pkgImportBase}/${type}/${sub}`)\n const routePath = type === 'frontend'\n ? '/' + (segs.join('/') || '')\n : '/backend/' + (segs.join('/') || modId)\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, pageFile)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, ['page.meta', 'meta'])\n let metaExpr = 'undefined'\n let runtimeMetaExpr = 'undefined'\n let manifestMetaExpr = 'undefined'\n let manifestImportStatement: string | null = null\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${toModuleImportSubpath(metaPath, fromApp ? appDir : pkgDir)}`\n )\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n eagerImports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, metaImportPath))\n metaExpr = `(${metaImportName}.metadata as any)`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile: metaPath,\n metaPath,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, metaImportPath)\n }\n eagerImports.push(buildImportStatement(importName, importPath))\n } else {\n metaExpr = `(${pageModName} as any).metadata`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, importPath)\n }\n eagerImports.push(buildImportStatement(`${importName}, * as ${pageModName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, importPath))\n }\n if (manifestImportStatement) {\n manifestImports?.push(manifestImportStatement)\n }\n const baseProps = buildPageRouteProps(metaExpr, routePath)\n const runtimeBaseProps = buildPageRouteProps(runtimeMetaExpr, routePath)\n const manifestBaseProps = buildPageRouteProps(manifestMetaExpr, routePath)\n eagerRoutes.push(`{ ${baseProps}, Component: ${importName} }`)\n runtimeRoutes.push(`{ ${runtimeBaseProps}, Component: async (props: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; const Component = (mod.default ?? mod) as any; return createElement(Component, props) } }`)\n manifestRoutes.push(`{ moduleId: ${toLiteral(modId)}, ${manifestBaseProps}, load: async () => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod.default ?? mod) as any } }`)\n }\n\n // Back-compat direct files (old-style pages like login.tsx instead of login/page.tsx)\n for (const { relPath, fromApp } of files.filter(({ relPath: f }) => !isModulePageFile(path.basename(f)))) {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const routeSegs = [...segs, name].filter(Boolean)\n const importName = `${prefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const pageModName = `${modPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const runtimeMetaName = `${metaPrefix}Runtime${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, name].join('/')}`\n )\n const routePath = type === 'frontend'\n ? '/' + (routeSegs.join('/') || '')\n : '/backend/' + (segs[0] === modId\n ? [...segs, name].filter(Boolean).join('/')\n : [modId, ...segs, name].filter(Boolean).join('/'))\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, file)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, [`${name}.meta`, 'meta'])\n let metaExpr = 'undefined'\n let runtimeMetaExpr = 'undefined'\n let manifestMetaExpr = 'undefined'\n let manifestImportStatement: string | null = null\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const metaBase = path.basename(metaPath)\n const metaImportSub = stripModuleCodeExtension(metaBase) === 'meta' ? 'meta' : `${name}.meta`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, metaImportSub].join('/')}`\n )\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n eagerImports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, metaImportPath))\n metaExpr = type === 'frontend' ? `(${metaImportName}.metadata as any)` : `${metaImportName}.metadata`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile: metaPath,\n metaPath,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, metaImportPath)\n }\n eagerImports.push(buildImportStatement(importName, importPath))\n } else {\n metaExpr = `(${pageModName} as any).metadata`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, importPath)\n }\n eagerImports.push(buildImportStatement(`${importName}, * as ${pageModName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, importPath))\n }\n if (manifestImportStatement) {\n manifestImports?.push(manifestImportStatement)\n }\n const baseProps = buildPageRouteProps(metaExpr, routePath)\n const runtimeBaseProps = buildPageRouteProps(runtimeMetaExpr, routePath)\n const manifestBaseProps = buildPageRouteProps(manifestMetaExpr, routePath)\n eagerRoutes.push(`{ ${baseProps}, Component: ${importName} }`)\n runtimeRoutes.push(`{ ${runtimeBaseProps}, Component: async (props: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; const Component = (mod.default ?? mod) as any; return createElement(Component, props) } }`)\n manifestRoutes.push(`{ moduleId: ${toLiteral(modId)}, ${manifestBaseProps}, load: async () => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod.default ?? mod) as any } }`)\n }\n\n return {\n eagerRoutes,\n runtimeRoutes,\n manifestRoutes,\n }\n}\n\nasync function processApiRoutes(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n eagerImports: string[]\n importIdRef: { value: number }\n}): Promise<ApiRouteGenerationResult> {\n const { roots, modId, appImportBase, pkgImportBase, eagerImports, importIdRef } = options\n const apiApp = path.join(roots.appBase, 'api')\n const apiPkg = path.join(roots.pkgBase, 'api')\n if (!fs.existsSync(apiApp) && !fs.existsSync(apiPkg)) {\n return { eagerApis: [], runtimeApis: [], manifestApis: [] }\n }\n\n const eagerApis: string[] = []\n const runtimeApis: string[] = []\n const manifestApis: string[] = []\n\n // route.* aggregations\n const routeFiles = scanModuleDir(roots, SCAN_CONFIGS.apiRoutes)\n for (const { relPath, fromApp } of routeFiles) {\n const segs = relPath.split('/')\n const routeFile = segs.pop()!\n const reqSegs = [modId, ...segs]\n const importName = `R${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const sourceDir = fromApp ? apiApp : apiPkg\n const sourceFile = findExistingModuleFile(path.join(sourceDir, ...segs), routeFile)\n if (!sourceFile) continue\n const apiSegPath = segs.join('/')\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/api${apiSegPath ? `/${apiSegPath}` : ''}/${stripModuleCodeExtension(routeFile)}`\n )\n const routePath = '/' + reqSegs.filter(Boolean).join('/')\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n const metadata = sourceModule?.metadata ?? extractNamedObjectLiteralExport(sourceFile, 'metadata')\n const resolvedPath = resolveApiPathFromMetadata(metadata, routePath)\n const exportedMethods = detectExportedHttpMethods(sourceFile)\n if (exportedMethods.length === 0) continue\n const metadataLiteral = buildApiMetadataLiteral(metadata)\n const hasOpenApi = await moduleHasExport(sourceFile, 'openApi')\n const docsPart = hasOpenApi ? `, docs: ((${importName} as any).openApi as any)` : ''\n eagerImports.push(buildImportStatement(`* as ${importName}`, importPath))\n eagerApis.push(`{ path: ((${importName} as any).metadata?.path ?? ${toLiteral(routePath)}), metadata: (${importName} as any).metadata, handlers: ${importName} as any${docsPart} }`)\n runtimeApis.push(`{ path: ${toLiteral(resolvedPath)}, metadata: ${metadataLiteral}, handlers: { ${exportedMethods.map((method) => `${method}: async (req: Request, ctx?: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod as any).${method}(req, ctx) }`).join(', ')} } }`)\n manifestApis.push(`{ moduleId: ${toLiteral(modId)}, kind: ${toLiteral('route-file')}, path: ${toLiteral(resolvedPath)}, methods: [${exportedMethods.map((method) => toLiteral(method)).join(', ')}], load: async () => ${buildDynamicImportExpression(importPath)} }`)\n }\n\n // Single files (plain scripts, not route.*, not tests, skip method dirs)\n const plainFiles = scanModuleDir(roots, SCAN_CONFIGS.apiPlainFiles)\n for (const { relPath, fromApp } of plainFiles) {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const pathWithoutExt = stripModuleCodeExtension(file)\n const fullSegs = [...segs, pathWithoutExt]\n const routePath = '/' + [modId, ...fullSegs].filter(Boolean).join('/')\n const importName = `R${importIdRef.value++}_${toVar(modId)}_${toVar(fullSegs.join('_') || 'index')}`\n const plainSegPath = fullSegs.join('/')\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/api${plainSegPath ? `/${plainSegPath}` : ''}`\n )\n const sourceFile = findExistingModuleFile(fromApp ? apiApp : apiPkg, relPath)\n if (!sourceFile) continue\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n const metadata = sourceModule?.metadata ?? extractNamedObjectLiteralExport(sourceFile, 'metadata')\n const resolvedPath = resolveApiPathFromMetadata(metadata, routePath)\n const exportedMethods = detectExportedHttpMethods(sourceFile)\n if (exportedMethods.length === 0) continue\n const metadataLiteral = buildApiMetadataLiteral(metadata)\n const hasOpenApi = await moduleHasExport(sourceFile, 'openApi')\n const docsPart = hasOpenApi ? `, docs: ((${importName} as any).openApi as any)` : ''\n eagerImports.push(buildImportStatement(`* as ${importName}`, importPath))\n eagerApis.push(`{ path: ((${importName} as any).metadata?.path ?? ${toLiteral(routePath)}), metadata: (${importName} as any).metadata, handlers: ${importName} as any${docsPart} }`)\n runtimeApis.push(`{ path: ${toLiteral(resolvedPath)}, metadata: ${metadataLiteral}, handlers: { ${exportedMethods.map((entryMethod) => `${entryMethod}: async (req: Request, ctx?: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod as any).${entryMethod}(req, ctx) }`).join(', ')} } }`)\n manifestApis.push(`{ moduleId: ${toLiteral(modId)}, kind: ${toLiteral('route-file')}, path: ${toLiteral(resolvedPath)}, methods: [${exportedMethods.map((entryMethod) => toLiteral(entryMethod)).join(', ')}], load: async () => ${buildDynamicImportExpression(importPath)} }`)\n }\n\n // Legacy per-method\n const methods: HttpMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE']\n for (const method of methods) {\n const methodDirSegment = path.posix.join('api', method.toLowerCase())\n const methodRoots: ModuleRoots = {\n appBase: path.join(roots.appBase, 'api', method.toLowerCase()),\n pkgBase: path.join(roots.pkgBase, 'api', method.toLowerCase()),\n }\n const methodConfig = {\n folder: '',\n include: (name: string) => ['.ts', '.js'].some((extension) => name.endsWith(extension)) && !/\\.(test|spec)\\.[jt]s$/.test(name),\n }\n const apiFiles = scanModuleDir(methodRoots, methodConfig)\n for (const { relPath } of apiFiles) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join(methodDirSegment, relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n\n const segs = relPath.split('/')\n const file = segs.pop()!\n const pathWithoutExt = stripModuleCodeExtension(file)\n const fullSegs = [...segs, pathWithoutExt]\n const routePath = '/' + [modId, ...fullSegs].filter(Boolean).join('/')\n const importName = `H${importIdRef.value++}_${toVar(modId)}_${toVar(method)}_${toVar(fullSegs.join('_'))}`\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n const metaName = `RM${importIdRef.value++}_${toVar(modId)}_${toVar(method)}_${toVar(fullSegs.join('_'))}`\n const sourceFile = resolved.absolutePath\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n const metadata = sourceModule?.metadata ?? extractNamedObjectLiteralExport(sourceFile, 'metadata')\n const resolvedPath = resolveApiPathFromMetadata(metadata, routePath)\n const metadataLiteral = buildApiMetadataLiteral(metadata, method)\n const hasOpenApi = await moduleHasExport(sourceFile, 'openApi')\n const docsPart = hasOpenApi ? `, docs: ((${metaName} as any).openApi as any)` : ''\n eagerImports.push(buildImportStatement(`${importName}, * as ${metaName}`, importPath))\n eagerApis.push(`{ method: ${toLiteral(method)}, path: (${metaName}.metadata?.path ?? ${toLiteral(routePath)}), handler: ${importName}, metadata: ${metaName}.metadata${docsPart} }`)\n runtimeApis.push(`{ method: ${toLiteral(method)}, path: ${toLiteral(resolvedPath)}, handler: async (req: Request, ctx?: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; const handler = ((mod as any).default ?? (mod as any).${method} ?? (mod as any).handler) as any; return handler(req, ctx) }, metadata: ${metadataLiteral} }`)\n manifestApis.push(`{ moduleId: ${toLiteral(modId)}, kind: ${toLiteral('legacy')}, method: ${toLiteral(method)}, path: ${toLiteral(resolvedPath)}, methods: [${toLiteral(method)}], load: async () => ${buildDynamicImportExpression(importPath)} }`)\n }\n }\n\n return {\n eagerApis,\n runtimeApis,\n manifestApis,\n }\n}\n\nasync function processSubscribers(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<string[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.subscribers)\n const subscribers: string[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('subscribers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n const sid = [modId, ...segs, name].filter(Boolean).join(':')\n const sourceFile = resolved.absolutePath\n const metadata = await loadSubscriberMetadata(sourceFile)\n subscribers.push(\n `{ id: ${toLiteral(metadata?.id ?? sid)}, event: ${toLiteral(metadata?.event ?? '')}, persistent: ${metadata?.persistent === undefined ? 'undefined' : toLiteral(metadata.persistent)}, sync: ${metadata?.sync === undefined ? 'undefined' : toLiteral(metadata.sync)}, priority: ${metadata?.priority === undefined ? 'undefined' : toLiteral(metadata.priority)}, handler: createLazyModuleSubscriber(() => ${buildDynamicImportExpression(importPath)}, ${toLiteral(metadata?.id ?? sid)}) }`\n )\n }\n return subscribers\n}\n\nasync function processWorkers(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<string[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.workers)\n const workers: string[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('workers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n const sourceFile = resolved.absolutePath\n const metadata = await loadWorkerMetadata(sourceFile)\n if (!metadata?.queue) continue\n const wid = [modId, 'workers', ...segs, name].filter(Boolean).join(':')\n workers.push(\n `{ id: ${toLiteral(metadata.id ?? wid)}, queue: ${toLiteral(metadata.queue)}, concurrency: ${toLiteral(metadata.concurrency ?? 1)}, handler: createLazyModuleWorker(() => ${buildDynamicImportExpression(importPath)}, ${toLiteral(metadata.id ?? wid)}) }`\n )\n }\n return workers\n}\n\nfunction processTranslations(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n imports: string[]\n extraImports?: string[]\n}): string[] {\n const { roots, modId, appImportBase, pkgImportBase, imports, extraImports } = options\n const i18nApp = path.join(roots.appBase, 'i18n')\n const pkgI18nBase = resolveStandaloneSourceMirrorBase(roots.pkgBase) ?? roots.pkgBase\n const i18nCore = path.join(pkgI18nBase, 'i18n')\n const locales = new Set<string>()\n if (fs.existsSync(i18nCore))\n for (const e of fs.readdirSync(i18nCore, { withFileTypes: true }))\n if (e.isFile() && e.name.endsWith('.json')) locales.add(e.name.replace(/\\.json$/, ''))\n if (fs.existsSync(i18nApp))\n for (const e of fs.readdirSync(i18nApp, { withFileTypes: true }))\n if (e.isFile() && e.name.endsWith('.json')) locales.add(e.name.replace(/\\.json$/, ''))\n const translations: string[] = []\n for (const locale of locales) {\n const coreHas = fs.existsSync(path.join(i18nCore, `${locale}.json`))\n const appHas = fs.existsSync(path.join(i18nApp, `${locale}.json`))\n if (coreHas && appHas) {\n const cName = `T_${toVar(modId)}_${toVar(locale)}_C`\n const aName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n imports.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n translations.push(\n `'${locale}': { ...( ${cName} as unknown as Record<string,string> ), ...( ${aName} as unknown as Record<string,string> ) }`\n )\n } else if (appHas) {\n const aName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n translations.push(`'${locale}': ${aName} as unknown as Record<string,string>`)\n } else if (coreHas) {\n const cName = `T_${toVar(modId)}_${toVar(locale)}_C`\n imports.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n translations.push(`'${locale}': ${cName} as unknown as Record<string,string>`)\n }\n }\n return translations\n}\n\n/**\n * Resolves a convention file and pushes its import + config entry to standalone arrays.\n * Used for files that produce their own generated output (notifications, AI tools, events, analytics, enrichers, etc.).\n *\n * @returns The generated import name, or null if the file was not found.\n */\nfunction processStandaloneConfig(options: StandaloneConfigOptions): string | null {\n const {\n roots,\n imps,\n modId,\n relativePath,\n prefix,\n importIdRef,\n standaloneImports,\n standaloneEntries,\n writeConfig,\n standaloneConfigs,\n configExpr,\n sharedImports,\n } = options\n const resolved = resolveModuleFile(roots, imps, relativePath)\n if (!resolved) return null\n const importName = `${prefix}_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n if (standaloneEntries && writeConfig) {\n const importSpec = {\n namespaceImport: importName,\n moduleSpecifier: importPath,\n }\n ;(standaloneImports as Array<{ namespaceImport: string; moduleSpecifier: string }>).push(importSpec)\n if (sharedImports) {\n ;(sharedImports as Array<{ namespaceImport: string; moduleSpecifier: string }>).push(importSpec)\n }\n standaloneEntries.push(writeConfig({ importName, moduleId: modId }))\n return importName\n }\n\n if (!standaloneConfigs || !configExpr) {\n throw new Error(`Invalid standalone generator configuration for ${relativePath}`)\n }\n\n const importStmt = buildImportStatement(`* as ${importName}`, importPath)\n ;(standaloneImports as string[]).push(importStmt)\n if (sharedImports) (sharedImports as string[]).push(importStmt)\n standaloneConfigs.push(configExpr(importName, modId))\n return importName\n}\n\nfunction namespaceLookup(importName: string, memberName: string): WriterFunction {\n return elementAccess(\n asExpression(identifier(importName), 'Record<string, unknown>'),\n memberName,\n )\n}\n\nfunction buildModuleCustomFieldSetsValue(options: {\n fieldsImportName?: string | null\n customEntitiesImportName?: string | null\n moduleId: string\n}): WriterFunction {\n const parts: WriterFunction[] = []\n\n if (options.fieldsImportName) {\n parts.push(\n spreadExpression(\n namespaceFallback({\n importName: options.fieldsImportName,\n members: ['default', 'fieldSets'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n ),\n )\n }\n\n if (options.customEntitiesImportName) {\n const entities = namespaceFallback({\n importName: options.customEntitiesImportName,\n members: ['default', 'entities'],\n fallback: emptyArray(),\n castType: 'any[]',\n })\n\n const mappedEntities = methodCall(\n methodCall(entities, 'filter', [\n arrowFunction({\n parameters: ['e'],\n body: logicalAnd([\n callExpression(propertyAccess(identifier('Array'), 'isArray'), [\n propertyAccess(identifier('e'), 'fields'),\n ]),\n propertyAccess(propertyAccess(identifier('e'), 'fields'), 'length'),\n ]),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['e'],\n body: parenthesized(\n objectLiteral([\n { name: 'entity', value: propertyAccess(identifier('e'), 'id') },\n { name: 'fields', value: propertyAccess(identifier('e'), 'fields') },\n { name: 'source', value: options.moduleId },\n ]),\n ),\n }),\n ],\n )\n\n parts.push(spreadExpression(mappedEntities))\n }\n\n return arrayLiteral(parts, writeValue)\n}\n\nfunction buildModuleDashboardWidgetsValue(entries: DashboardWidgetEntry[]): WriterFunction {\n return arrayLiteral(\n entries.map((entry) =>\n objectLiteral([\n { name: 'moduleId', value: entry.moduleId },\n { name: 'key', value: entry.key },\n { name: 'source', value: entry.source },\n {\n name: 'loader',\n value: arrowFunction({\n body: methodCall(importExpression(entry.importPath), 'then', [\n arrowFunction({\n parameters: ['mod'],\n body: nullishCoalesce([\n propertyAccess(identifier('mod'), 'default'),\n identifier('mod'),\n ]),\n }),\n ]),\n }),\n },\n ]),\n ),\n writeValue,\n )\n}\n\nfunction buildModuleIntegrationListValue(\n importName: string,\n pluralMember: string,\n singularMember: string,\n castType: string,\n): WriterFunction {\n const plural = namespaceLookup(importName, pluralMember)\n const singular = namespaceLookup(importName, singularMember)\n\n return nullishCoalesce([\n asExpression(plural, castType),\n asExpression(\n parenthesized(\n conditionalExpression(\n binaryExpression(singular, '!=', null),\n arrayLiteral([singular], writeValue),\n emptyArray(),\n ),\n ),\n castType,\n ),\n ])\n}\n\nfunction buildModulesInfoExpression(): WriterFunction {\n return methodCall(identifier('modules'), 'map', [\n arrowFunction({\n parameters: ['m'],\n body: parenthesized(\n objectLiteral([\n { name: 'id', value: propertyAccess(identifier('m'), 'id') },\n {\n kind: 'spread',\n value: logicalOr([\n propertyAccess(identifier('m'), 'info'),\n emptyObject(),\n ]),\n },\n ]),\n ),\n }),\n ])\n}\n\nfunction renderAstModuleRegistryFile(options: {\n fileName: string\n generator: string\n imports: string[]\n moduleEntries: WriterFunction[]\n includeCreateElementImport?: boolean\n}): string {\n const sourceFile = createGeneratedSourceFile(options.fileName)\n addAutoGeneratedComment(sourceFile, options.generator)\n\n if (options.includeCreateElementImport) {\n addImportSpec(sourceFile, {\n moduleSpecifier: 'react',\n namedImports: [{ name: 'createElement' }],\n })\n }\n addImportSpec(sourceFile, {\n moduleSpecifier: '@open-mercato/shared/modules/registry',\n namedImports: [\n { name: 'createLazyModuleSubscriber' },\n { name: 'createLazyModuleWorker' },\n { name: 'Module', isTypeOnly: true },\n ],\n })\n addImportStatements(sourceFile, options.imports)\n\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'modules',\n type: 'Module[]',\n initializer: arrayLiteral(options.moduleEntries, writeValue),\n },\n ],\n })\n sourceFile.addExportAssignment({\n isExportEquals: false,\n expression: 'modules',\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'modulesInfo',\n initializer: buildModulesInfoExpression(),\n },\n ],\n })\n\n return getSourceText(sourceFile)\n}\n\nfunction renderAstLegacyAliasFile(options: {\n fileName: string\n exportName: string\n exportType: string\n sourceFileName: string\n initializer: WriterFunction\n}): string {\n const sourceFile = createGeneratedSourceFile(options.fileName)\n addAutoGeneratedComment(sourceFile, 'registry')\n\n addImportSpec(sourceFile, {\n moduleSpecifier: '@open-mercato/shared/modules/registry',\n namedImports: [{ name: 'Module', isTypeOnly: true }],\n })\n addImportSpec(sourceFile, {\n moduleSpecifier: `./${options.sourceFileName.replace(/\\.ts$/, '')}`,\n namedImports: [{ name: 'modules' }],\n })\n\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: options.exportName,\n type: options.exportType,\n initializer: options.initializer,\n },\n ],\n })\n\n return getSourceText(sourceFile)\n}\n\nfunction buildRuntimeRouteComponent(importPath: string): WriterFunction {\n return arrowFunction({\n async: true,\n parameters: ['props: any'],\n body: block((writer) => {\n writeStatements(writer, [\n variableStatement({\n name: 'mod',\n initializer: awaitExpression(importExpression(importPath)),\n }),\n variableStatement({\n name: 'Component',\n type: 'any',\n initializer: asExpression(\n nullishCoalesce([\n propertyAccess(identifier('mod'), 'default'),\n identifier('mod'),\n ]),\n 'any',\n ),\n }),\n returnStatement(\n callExpression(identifier('createElement'), [\n identifier('Component'),\n identifier('props'),\n ]),\n ),\n ])\n }),\n })\n}\n\nfunction buildPageRouteEntries(metaExpr: WriterFunction, routePath: string): GeneratedObjectEntry[] {\n const meta = parenthesized(metaExpr)\n return [\n { name: 'pattern', value: routePath || '/' },\n { name: 'requireAuth', value: optionalPropertyAccess(meta, 'requireAuth') },\n { name: 'requireRoles', value: optionalPropertyAccess(meta, 'requireRoles') },\n { name: 'requireFeatures', value: optionalPropertyAccess(meta, 'requireFeatures') },\n { name: 'requireCustomerAuth', value: optionalPropertyAccess(meta, 'requireCustomerAuth') },\n { name: 'requireCustomerFeatures', value: optionalPropertyAccess(meta, 'requireCustomerFeatures') },\n {\n name: 'title',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageTitle'),\n optionalPropertyAccess(meta, 'title'),\n ]),\n },\n {\n name: 'titleKey',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageTitleKey'),\n optionalPropertyAccess(meta, 'titleKey'),\n ]),\n },\n {\n name: 'group',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageGroup'),\n optionalPropertyAccess(meta, 'group'),\n ]),\n },\n {\n name: 'groupKey',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageGroupKey'),\n optionalPropertyAccess(meta, 'groupKey'),\n ]),\n },\n { name: 'icon', value: optionalPropertyAccess(meta, 'icon') },\n {\n name: 'order',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageOrder'),\n optionalPropertyAccess(meta, 'order'),\n ]),\n },\n {\n name: 'priority',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pagePriority'),\n optionalPropertyAccess(meta, 'priority'),\n ]),\n },\n { name: 'navHidden', value: optionalPropertyAccess(meta, 'navHidden') },\n { name: 'visible', value: optionalPropertyAccess(meta, 'visible') },\n { name: 'enabled', value: optionalPropertyAccess(meta, 'enabled') },\n { name: 'breadcrumb', value: optionalPropertyAccess(meta, 'breadcrumb') },\n { name: 'pageContext', value: optionalPropertyAccess(meta, 'pageContext') },\n { name: 'placement', value: optionalPropertyAccess(meta, 'placement') },\n ]\n}\n\nasync function processPageFilesAst(options: {\n files: Array<{ relPath: string; fromApp: boolean }>\n type: 'frontend' | 'backend'\n modId: string\n appDir: string\n pkgDir: string\n appImportBase: string\n pkgImportBase: string\n imports: string[]\n importIdRef: { value: number }\n}): Promise<WriterFunction[]> {\n const {\n files,\n type,\n modId,\n appDir,\n pkgDir,\n appImportBase,\n pkgImportBase,\n imports,\n importIdRef,\n } = options\n const routes: WriterFunction[] = []\n const metaPrefix = type === 'frontend' ? 'MRuntime' : 'BMRuntime'\n\n const addRoute = (params: {\n importPath: string\n routePath: string\n metaExpr: WriterFunction\n }) => {\n routes.push(\n objectLiteral([\n ...buildPageRouteEntries(params.metaExpr, params.routePath),\n {\n name: 'Component',\n value: buildRuntimeRouteComponent(params.importPath),\n },\n ]),\n )\n }\n\n for (const { relPath, fromApp } of files.filter(({ relPath: filePath }) => isModulePageFile(path.basename(filePath)))) {\n const segs = relPath.split('/')\n const pageFile = segs.pop()!\n const pageBaseName = stripModuleCodeExtension(pageFile)\n const sub = segs.length ? `${segs.join('/')}/${pageBaseName}` : pageBaseName\n const importPath = sanitizeGeneratedModuleSpecifier(`${fromApp ? appImportBase : pkgImportBase}/${type}/${sub}`)\n const routePath = type === 'frontend'\n ? '/' + (segs.join('/') || '')\n : '/backend/' + (segs.join('/') || modId)\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, pageFile)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, ['page.meta', 'meta'])\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${toModuleImportSubpath(metaPath, fromApp ? appDir : pkgDir)}`,\n )\n imports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n continue\n }\n\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n imports.push(buildImportStatement(`* as ${metaImportName}`, importPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n }\n\n for (const { relPath, fromApp } of files.filter(({ relPath: filePath }) => !isModulePageFile(path.basename(filePath)))) {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const routeSegs = [...segs, name].filter(Boolean)\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, name].join('/')}`,\n )\n const routePath = type === 'frontend'\n ? '/' + (routeSegs.join('/') || '')\n : '/backend/' + (segs[0] === modId\n ? [...segs, name].filter(Boolean).join('/')\n : [modId, ...segs, name].filter(Boolean).join('/'))\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, file)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, [`${name}.meta`, 'meta'])\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const metaBase = path.basename(metaPath)\n const metaImportSub = stripModuleCodeExtension(metaBase) === 'meta' ? 'meta' : `${name}.meta`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, metaImportSub].join('/')}`,\n )\n imports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n continue\n }\n\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n imports.push(buildImportStatement(`* as ${metaImportName}`, importPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n }\n\n return routes\n}\n\nasync function processSubscribersAst(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<WriterFunction[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.subscribers)\n const subscribers: WriterFunction[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('subscribers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const sid = [modId, ...segs, name].filter(Boolean).join(':')\n const metadata = await loadSubscriberMetadata(resolved.absolutePath)\n const subscriberId = metadata?.id ?? sid\n subscribers.push(\n objectLiteral([\n { name: 'id', value: subscriberId },\n { name: 'event', value: metadata?.event ?? '' },\n { name: 'persistent', value: metadata?.persistent },\n { name: 'sync', value: metadata?.sync },\n { name: 'priority', value: metadata?.priority },\n {\n name: 'handler',\n value: callExpression(identifier('createLazyModuleSubscriber'), [\n arrowFunction({\n body: importExpression(resolved.importPath),\n }),\n subscriberId,\n ]),\n },\n ]),\n )\n }\n return subscribers\n}\n\nasync function processWorkersAst(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<WriterFunction[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.workers)\n const workers: WriterFunction[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('workers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const metadata = await loadWorkerMetadata(resolved.absolutePath)\n if (!metadata?.queue) continue\n const workerId = metadata.id ?? [modId, 'workers', ...segs, name].filter(Boolean).join(':')\n workers.push(\n objectLiteral([\n { name: 'id', value: workerId },\n { name: 'queue', value: metadata.queue },\n { name: 'concurrency', value: metadata.concurrency ?? 1 },\n {\n name: 'handler',\n value: callExpression(identifier('createLazyModuleWorker'), [\n arrowFunction({\n body: importExpression(resolved.importPath),\n }),\n workerId,\n ]),\n },\n ]),\n )\n }\n return workers\n}\n\nfunction processTranslationsAst(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n imports: string[]\n}): GeneratedObjectEntry[] {\n const { roots, modId, appImportBase, pkgImportBase, imports } = options\n const i18nApp = path.join(roots.appBase, 'i18n')\n const pkgI18nBase = resolveStandaloneSourceMirrorBase(roots.pkgBase) ?? roots.pkgBase\n const i18nCore = path.join(pkgI18nBase, 'i18n')\n const locales = new Set<string>()\n\n if (fs.existsSync(i18nCore)) {\n for (const entry of fs.readdirSync(i18nCore, { withFileTypes: true })) {\n if (entry.isFile() && entry.name.endsWith('.json')) {\n locales.add(entry.name.replace(/\\.json$/, ''))\n }\n }\n }\n\n if (fs.existsSync(i18nApp)) {\n for (const entry of fs.readdirSync(i18nApp, { withFileTypes: true })) {\n if (entry.isFile() && entry.name.endsWith('.json')) {\n locales.add(entry.name.replace(/\\.json$/, ''))\n }\n }\n }\n\n const translations: GeneratedObjectEntry[] = []\n\n for (const locale of locales) {\n const coreHas = fs.existsSync(path.join(i18nCore, `${locale}.json`))\n const appHas = fs.existsSync(path.join(i18nApp, `${locale}.json`))\n\n if (coreHas && appHas) {\n const coreName = `T_${toVar(modId)}_${toVar(locale)}_C`\n const appName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(coreName, `${pkgImportBase}/i18n/${locale}.json`))\n imports.push(buildImportStatement(appName, `${appImportBase}/i18n/${locale}.json`))\n translations.push({\n name: JSON.stringify(locale),\n value: objectLiteral([\n { kind: 'spread', value: asExpression(identifier(coreName), 'unknown as Record<string, string>') },\n { kind: 'spread', value: asExpression(identifier(appName), 'unknown as Record<string, string>') },\n ]),\n })\n continue\n }\n\n if (appHas) {\n const appName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(appName, `${appImportBase}/i18n/${locale}.json`))\n translations.push({\n name: JSON.stringify(locale),\n value: asExpression(identifier(appName), 'unknown as Record<string, string>'),\n })\n continue\n }\n\n if (coreHas) {\n const coreName = `T_${toVar(modId)}_${toVar(locale)}_C`\n imports.push(buildImportStatement(coreName, `${pkgImportBase}/i18n/${locale}.json`))\n translations.push({\n name: JSON.stringify(locale),\n value: asExpression(identifier(coreName), 'unknown as Record<string, string>'),\n })\n }\n }\n\n return translations\n}\n\nfunction resolveConventionFile(\n roots: ModuleRoots,\n imps: ModuleImports,\n relativePath: string,\n prefix: string,\n modId: string,\n importIdRef: { value: number },\n imports: string[],\n extraImports?: string[],\n importStyle: 'namespace' | 'default' = 'namespace'\n): { importName: string; importPath: string; fromApp: boolean } | null {\n const resolved = resolveModuleFile(roots, imps, relativePath)\n if (!resolved) return null\n const importName = `${prefix}_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n if (importStyle === 'default') {\n imports.push(buildImportStatement(importName, importPath))\n extraImports?.push(buildImportStatement(importName, importPath))\n } else {\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n extraImports?.push(buildImportStatement(`* as ${importName}`, importPath))\n }\n return { importName, importPath, fromApp: resolved.fromApp }\n}\n\nexport async function generateModuleRegistry(options: ModuleRegistryOptions): Promise<GeneratorResult> {\n const { resolver, quiet = false } = options\n const result = createGeneratorResult()\n\n const outputDir = resolver.getOutputDir()\n const outFile = path.join(outputDir, 'modules.generated.ts')\n const checksumFile = path.join(outputDir, 'modules.generated.checksum')\n const runtimeOutFile = path.join(outputDir, 'modules.runtime.generated.ts')\n const runtimeChecksumFile = path.join(outputDir, 'modules.runtime.generated.checksum')\n const frontendRoutesOutFile = path.join(outputDir, 'frontend-routes.generated.ts')\n const frontendRoutesChecksumFile = path.join(outputDir, 'frontend-routes.generated.checksum')\n const backendRoutesOutFile = path.join(outputDir, 'backend-routes.generated.ts')\n const backendRoutesChecksumFile = path.join(outputDir, 'backend-routes.generated.checksum')\n const apiRoutesOutFile = path.join(outputDir, 'api-routes.generated.ts')\n const apiRoutesChecksumFile = path.join(outputDir, 'api-routes.generated.checksum')\n const bootstrapRegsOutFile = path.join(outputDir, 'bootstrap-registrations.generated.ts')\n const bootstrapRegsChecksumFile = path.join(outputDir, 'bootstrap-registrations.generated.checksum')\n const legacySubscribersOutFile = path.join(outputDir, 'subscribers.generated.ts')\n const legacySubscribersChecksumFile = path.join(outputDir, 'subscribers.generated.checksum')\n\n const enabled = resolver.loadEnabledModules()\n const extensions = loadGeneratorExtensions()\n\n // Pre-pass: collect generator plugins from each enabled module's generators.ts\n const pluginRegistry = new Map<string, import('@open-mercato/shared/modules/generators').GeneratorPlugin>()\n const pluginState = new Map<string, { imports: string[]; configs: string[] }>()\n for (const entry of enabled) {\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n const isAppMod = entry.from === '@app'\n const appImportBase = isAppMod ? `../../src/modules/${entry.id}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n const resolved = resolveModuleFile(roots, imps, 'generators.ts')\n if (!resolved) continue\n try {\n const pluginMod = await import(buildCacheBustedSourceImportUrl(resolved.absolutePath))\n const plugins: import('@open-mercato/shared/modules/generators').GeneratorPlugin[] =\n pluginMod.generatorPlugins ?? pluginMod.default ?? []\n for (const plugin of plugins) {\n if (!pluginRegistry.has(plugin.id)) {\n pluginRegistry.set(plugin.id, plugin)\n pluginState.set(plugin.id, { imports: [], configs: [] })\n }\n }\n } catch {}\n }\n\n const imports: string[] = []\n const runtimeImports: string[] = []\n const frontendRouteManifestImports: string[] = []\n const backendRouteManifestImports: string[] = []\n const moduleDecls: string[] = []\n const runtimeModuleDecls: string[] = []\n const frontendRouteManifestDecls: string[] = []\n const backendRouteManifestDecls: string[] = []\n const apiRouteManifestDecls: string[] = []\n // Mutable ref so extracted helper functions can increment the shared counter\n const importIdRef = { value: 0 }\n const trackedRoots = new Set<string>()\n const requiresByModule = new Map<string, string[]>()\n\n // UMES conflict detection: collect file paths during module processing\n const umesConflictSources: Array<{\n moduleId: string\n componentOverridesPath?: string\n interceptorsPath?: string\n aclPath?: string\n }> = []\n\n for (const entry of enabled) {\n const modId = entry.id\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n trackedRoots.add(roots.appBase)\n trackedRoots.add(roots.pkgBase)\n\n const isAppModule = entry.from === '@app'\n const appImportBase = isAppModule ? `../../src/modules/${modId}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n\n const frontendRoutes: string[] = []\n const backendRoutes: string[] = []\n const apis: string[] = []\n const runtimeFrontendRoutes: string[] = []\n const runtimeBackendRoutes: string[] = []\n const runtimeApis: string[] = []\n let cliImportName: string | null = null\n const translations: string[] = []\n const subscribers: string[] = []\n const workers: string[] = []\n let infoImportName: string | null = null\n let extensionsImportName: string | null = null\n let fieldsImportName: string | null = null\n let featuresImportName: string | null = null\n let customEntitiesImportName: string | null = null\n let customFieldSetsExpr: string = '[]'\n const dashboardWidgets: string[] = []\n let setupImportName: string | null = null\n let integrationImportName: string | null = null\n\n // === Processing order MUST match original import ID sequence ===\n\n // 1. Module metadata: index.ts (overrideable)\n const indexResolved = resolveModuleFile(roots, imps, 'index.ts')\n if (indexResolved) {\n infoImportName = `I${importIdRef.value++}_${toVar(modId)}`\n const importPath = sanitizeGeneratedModuleSpecifier(indexResolved.importPath)\n imports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(indexResolved.absolutePath)\n const reqs: string[] | undefined =\n mod?.metadata && Array.isArray(mod.metadata.requires) ? mod.metadata.requires : undefined\n if (reqs && reqs.length) requiresByModule.set(modId, reqs)\n } catch {}\n }\n\n // 2. Pages: frontend\n {\n const feApp = path.join(roots.appBase, 'frontend')\n const fePkg = path.join(roots.pkgBase, 'frontend')\n const feFiles = scanModuleDir(roots, SCAN_CONFIGS.frontendPages)\n if (feFiles.length) {\n const generatedFrontendRoutes = await processPageFiles({\n files: feFiles,\n type: 'frontend',\n modId,\n appDir: feApp,\n pkgDir: fePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n eagerImports: imports,\n runtimeImports,\n manifestImports: frontendRouteManifestImports,\n importIdRef,\n })\n frontendRoutes.push(...generatedFrontendRoutes.eagerRoutes)\n runtimeFrontendRoutes.push(...generatedFrontendRoutes.runtimeRoutes)\n frontendRouteManifestDecls.push(...generatedFrontendRoutes.manifestRoutes)\n }\n }\n\n // 3. Entity extensions: data/extensions.ts\n {\n const ext = resolveConventionFile(roots, imps, 'data/extensions.ts', 'X', modId, importIdRef, imports, runtimeImports)\n if (ext) extensionsImportName = ext.importName\n }\n\n // 4. RBAC: acl.ts\n {\n const aclResolved = resolveModuleFile(roots, imps, 'acl.ts')\n if (aclResolved) {\n const importName = `ACL_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(aclResolved.importPath)\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${importName}`, importPath))\n featuresImportName = importName\n }\n }\n\n // 5. Custom entities: ce.ts\n {\n const ce = resolveConventionFile(roots, imps, 'ce.ts', 'CE', modId, importIdRef, imports, runtimeImports)\n if (ce) customEntitiesImportName = ce.importName\n }\n\n const extensionContext: ModuleScanContext = {\n moduleId: modId,\n roots,\n imps,\n importIdRef,\n sharedImports: imports,\n resolveModuleFile,\n resolveFirstModuleFile,\n processStandaloneConfig,\n sanitizeGeneratedModuleSpecifier,\n }\n for (const extension of extensions) {\n extension.scanModule(extensionContext)\n }\n\n // Track file paths for UMES conflict detection\n {\n const compOverridesFile = resolveModuleFile(roots, imps, 'widgets/components.ts')\n const interceptorsFile = resolveModuleFile(roots, imps, 'api/interceptors.ts')\n const aclFile = resolveModuleFile(roots, imps, 'acl.ts')\n umesConflictSources.push({\n moduleId: modId,\n componentOverridesPath: compOverridesFile?.absolutePath,\n interceptorsPath: interceptorsFile?.absolutePath,\n aclPath: aclFile?.absolutePath,\n })\n }\n\n // Generator plugins: process each registered plugin's convention file\n for (const plugin of pluginRegistry.values()) {\n processStandaloneConfig({\n roots, imps, modId, importIdRef,\n relativePath: plugin.conventionFile,\n prefix: plugin.importPrefix,\n standaloneImports: pluginState.get(plugin.id)!.imports,\n standaloneConfigs: pluginState.get(plugin.id)!.configs,\n configExpr: plugin.configExpr,\n })\n }\n\n // 11. Setup: setup.ts\n {\n const setup = resolveConventionFile(roots, imps, 'setup.ts', 'SETUP', modId, importIdRef, imports, runtimeImports)\n if (setup) setupImportName = setup.importName\n }\n\n // 11b. Integration manifest: integration.ts\n {\n const resolved = resolveModuleFile(roots, imps, 'integration.ts')\n if (resolved) {\n const importName = `INTEGRATION_${toVar(modId)}_${importIdRef.value++}`\n imports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n runtimeImports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n integrationImportName = importName\n }\n }\n\n // 12. Custom fields: data/fields.ts\n {\n const fields = resolveConventionFile(roots, imps, 'data/fields.ts', 'F', modId, importIdRef, imports, runtimeImports)\n if (fields) fieldsImportName = fields.importName\n }\n\n // 13. Pages: backend\n {\n const beApp = path.join(roots.appBase, 'backend')\n const bePkg = path.join(roots.pkgBase, 'backend')\n const beFiles = scanModuleDir(roots, SCAN_CONFIGS.backendPages)\n if (beFiles.length) {\n const generatedBackendRoutes = await processPageFiles({\n files: beFiles,\n type: 'backend',\n modId,\n appDir: beApp,\n pkgDir: bePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n eagerImports: imports,\n runtimeImports,\n manifestImports: backendRouteManifestImports,\n importIdRef,\n })\n backendRoutes.push(...generatedBackendRoutes.eagerRoutes)\n runtimeBackendRoutes.push(...generatedBackendRoutes.runtimeRoutes)\n backendRouteManifestDecls.push(...generatedBackendRoutes.manifestRoutes)\n }\n }\n\n // 14. API routes\n {\n const generatedApis = await processApiRoutes({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n eagerImports: imports,\n importIdRef,\n })\n apis.push(...generatedApis.eagerApis)\n runtimeApis.push(...generatedApis.runtimeApis)\n apiRouteManifestDecls.push(...generatedApis.manifestApis)\n }\n\n // 15. CLI\n {\n const cliResolved = resolveModuleFile(roots, imps, 'cli.ts')\n if (cliResolved) {\n const importName = `CLI_${toVar(modId)}`\n imports.push(buildImportStatement(importName, sanitizeGeneratedModuleSpecifier(cliResolved.importPath)))\n cliImportName = importName\n }\n }\n\n // 16. Translations\n translations.push(...processTranslations({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n extraImports: runtimeImports,\n }))\n\n // 17. Subscribers\n subscribers.push(...await processSubscribers({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // 18. Workers\n workers.push(...await processWorkers({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // Build combined customFieldSets expression\n {\n const parts: string[] = []\n if (fieldsImportName)\n parts.push(`(( ${fieldsImportName}.default ?? ${fieldsImportName}.fieldSets) as any) || []`)\n if (customEntitiesImportName)\n parts.push(\n `((( ${customEntitiesImportName}.default ?? ${customEntitiesImportName}.entities) as any) || []).filter((e: any) => Array.isArray(e.fields) && e.fields.length).map((e: any) => ({ entity: e.id, fields: e.fields, source: ${toLiteral(modId)} }))`\n )\n customFieldSetsExpr = parts.length ? `[...${parts.join(', ...')}]` : '[]'\n }\n\n // 19. Dashboard widgets\n {\n const entries = scanDashboardWidgetEntries({\n modId,\n roots,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n })\n for (const entry of entries) {\n dashboardWidgets.push(\n `{ moduleId: ${toLiteral(entry.moduleId)}, key: ${toLiteral(entry.key)}, source: ${toLiteral(entry.source)}, loader: () => ${buildDynamicImportExpression(entry.importPath)}.then((mod) => mod.default ?? mod) }`\n )\n }\n }\n\n moduleDecls.push(`{\n id: ${toLiteral(modId)},\n ${infoImportName ? `info: ${infoImportName}.metadata,` : ''}\n ${frontendRoutes.length ? `frontendRoutes: [${frontendRoutes.join(', ')}],` : ''}\n ${backendRoutes.length ? `backendRoutes: [${backendRoutes.join(', ')}],` : ''}\n ${apis.length ? `apis: [${apis.join(', ')}],` : ''}\n ${cliImportName ? `cli: ${cliImportName},` : ''}\n ${translations.length ? `translations: { ${translations.join(', ')} },` : ''}\n ${subscribers.length ? `subscribers: [${subscribers.join(', ')}],` : ''}\n ${workers.length ? `workers: [${workers.join(', ')}],` : ''}\n ${extensionsImportName ? `entityExtensions: ((${extensionsImportName}.default ?? ${extensionsImportName}.extensions) as import('@open-mercato/shared/modules/entities').EntityExtension[]) || [],` : ''}\n customFieldSets: ${customFieldSetsExpr},\n ${featuresImportName ? `features: ((${featuresImportName}.default ?? ${featuresImportName}.features) as any) || [],` : ''}\n ${customEntitiesImportName ? `customEntities: ((${customEntitiesImportName}.default ?? ${customEntitiesImportName}.entities) as any) || [],` : ''}\n ${dashboardWidgets.length ? `dashboardWidgets: [${dashboardWidgets.join(', ')}],` : ''}\n ${setupImportName ? `setup: (${setupImportName}.default ?? ${setupImportName}.setup) || undefined,` : ''}\n ${integrationImportName ? `integrations: (( ${integrationImportName}.integrations ?? (${integrationImportName}.integration ? [${integrationImportName}.integration] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]),` : ''}\n ${integrationImportName ? `bundles: (( ${integrationImportName}.bundles ?? (${integrationImportName}.bundle ? [${integrationImportName}.bundle] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]),` : ''}\n }`)\n runtimeModuleDecls.push(`{\n id: ${toLiteral(modId)},\n ${infoImportName ? `info: ${infoImportName}.metadata,` : ''}\n ${runtimeFrontendRoutes.length ? `frontendRoutes: [${runtimeFrontendRoutes.join(', ')}],` : ''}\n ${runtimeBackendRoutes.length ? `backendRoutes: [${runtimeBackendRoutes.join(', ')}],` : ''}\n ${runtimeApis.length ? `apis: [${runtimeApis.join(', ')}],` : ''}\n ${translations.length ? `translations: { ${translations.join(', ')} },` : ''}\n ${subscribers.length ? `subscribers: [${subscribers.join(', ')}],` : ''}\n ${workers.length ? `workers: [${workers.join(', ')}],` : ''}\n ${extensionsImportName ? `entityExtensions: ((${extensionsImportName}.default ?? ${extensionsImportName}.extensions) as import('@open-mercato/shared/modules/entities').EntityExtension[]) || [],` : ''}\n customFieldSets: ${customFieldSetsExpr},\n ${featuresImportName ? `features: ((${featuresImportName}.default ?? ${featuresImportName}.features) as any) || [],` : ''}\n ${customEntitiesImportName ? `customEntities: ((${customEntitiesImportName}.default ?? ${customEntitiesImportName}.entities) as any) || [],` : ''}\n ${setupImportName ? `setup: (${setupImportName}.default ?? ${setupImportName}.setup) || undefined,` : ''}\n ${integrationImportName ? `integrations: (( ${integrationImportName}.integrations ?? (${integrationImportName}.integration ? [${integrationImportName}.integration] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]),` : ''}\n ${integrationImportName ? `bundles: (( ${integrationImportName}.bundles ?? (${integrationImportName}.bundle ? [${integrationImportName}.bundle] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]),` : ''}\n }`)\n }\n\n // === UMES Conflict Detection ===\n {\n const { detectConflicts } = await import('@open-mercato/shared/lib/umes/conflict-detection')\n const componentOverrideInputs: Array<{ moduleId: string; componentId: string; priority: number }> = []\n const interceptorInputs: Array<{ moduleId: string; id: string; targetRoute: string; methods: string[]; priority: number }> = []\n const declaredFeatures = new Set<string>()\n const gatedExtensions: Array<{ moduleId: string; extensionId: string; features: string[] }> = []\n\n for (const source of umesConflictSources) {\n // Collect declared features from acl.ts\n if (source.aclPath) {\n try {\n const aclMod = await import(buildCacheBustedSourceImportUrl(source.aclPath))\n const features = aclMod.features ?? aclMod.default ?? []\n if (Array.isArray(features)) {\n for (const feat of features) {\n if (typeof feat === 'string') declaredFeatures.add(feat)\n else if (feat?.id) declaredFeatures.add(feat.id)\n }\n }\n } catch {}\n }\n\n // Collect component overrides\n if (source.componentOverridesPath) {\n try {\n const overridesMod = await import(buildCacheBustedSourceImportUrl(source.componentOverridesPath))\n const overrides = overridesMod.componentOverrides ?? overridesMod.default ?? []\n if (Array.isArray(overrides)) {\n for (const override of overrides) {\n const componentId = override?.target?.componentId\n const priority = override?.priority ?? 0\n if (componentId) {\n componentOverrideInputs.push({ moduleId: source.moduleId, componentId, priority })\n }\n const features = override?.features\n if (Array.isArray(features) && features.length > 0) {\n gatedExtensions.push({\n moduleId: source.moduleId,\n extensionId: `component-override:${componentId}`,\n features,\n })\n }\n }\n }\n } catch {}\n }\n\n // Collect interceptors\n if (source.interceptorsPath) {\n try {\n const interceptorsMod = await import(buildCacheBustedSourceImportUrl(source.interceptorsPath))\n const interceptors = interceptorsMod.interceptors ?? interceptorsMod.default ?? []\n if (Array.isArray(interceptors)) {\n for (const interceptor of interceptors) {\n if (interceptor?.id && interceptor?.targetRoute) {\n interceptorInputs.push({\n moduleId: source.moduleId,\n id: interceptor.id,\n targetRoute: interceptor.targetRoute,\n methods: interceptor.methods ?? [],\n priority: interceptor.priority ?? 0,\n })\n }\n const features = interceptor?.features\n if (Array.isArray(features) && features.length > 0) {\n gatedExtensions.push({\n moduleId: source.moduleId,\n extensionId: `interceptor:${interceptor.id}`,\n features,\n })\n }\n }\n }\n } catch {}\n }\n }\n\n const conflictResult = detectConflicts({\n componentOverrides: componentOverrideInputs,\n interceptors: interceptorInputs,\n gatedExtensions,\n declaredFeatures,\n })\n\n for (const warning of conflictResult.warnings) {\n console.warn(`\\x1b[33m[UMES Warning]\\x1b[0m ${warning.message}`)\n }\n for (const error of conflictResult.errors) {\n console.error(`\\x1b[31m[UMES Error]\\x1b[0m ${error.message}`)\n }\n if (conflictResult.errors.length > 0) {\n throw new Error(\n `UMES conflict detection found ${conflictResult.errors.length} error(s). Fix conflicts before proceeding.`\n )\n }\n }\n\n const output = `// AUTO-GENERATED by mercato generate registry\nimport { createLazyModuleSubscriber, createLazyModuleWorker, type Module } from '@open-mercato/shared/modules/registry'\n${imports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const modules: Module[] = [\n ${moduleDecls.join(',\\n ')}\n]\nexport const modulesInfo = modules.map(m => ({ id: m.id, ...(m.info || {}) }))\nexport default modules\n`\n const runtimeOutput = `// AUTO-GENERATED by mercato generate registry\nimport { createElement } from 'react'\nimport { createLazyModuleSubscriber, createLazyModuleWorker, type Module } from '@open-mercato/shared/modules/registry'\n${runtimeImports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const modules: Module[] = [\n ${runtimeModuleDecls.join(',\\n ')}\n]\nexport const modulesInfo = modules.map(m => ({ id: m.id, ...(m.info || {}) }))\nexport default modules\n`\n const frontendRoutesOutput = `// AUTO-GENERATED by mercato generate registry\nimport type { FrontendRouteManifestEntry } from '@open-mercato/shared/modules/registry'\n${frontendRouteManifestImports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const frontendRoutes: FrontendRouteManifestEntry[] = [\n ${frontendRouteManifestDecls.join(',\\n ')}\n]\n\nexport default frontendRoutes\n`\n const backendRoutesOutput = `// AUTO-GENERATED by mercato generate registry\nimport type { BackendRouteManifestEntry } from '@open-mercato/shared/modules/registry'\n${backendRouteManifestImports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const backendRoutes: BackendRouteManifestEntry[] = [\n ${backendRouteManifestDecls.join(',\\n ')}\n]\n\nexport default backendRoutes\n`\n const apiRoutesOutput = `// AUTO-GENERATED by mercato generate registry\nimport type { ApiRouteManifestEntry } from '@open-mercato/shared/modules/registry'\n\nexport const apiRoutes: ApiRouteManifestEntry[] = [\n ${apiRouteManifestDecls.join(',\\n ')}\n]\n\nexport default apiRoutes\n`\n const legacySubscribersOutput = renderAstLegacyAliasFile({\n fileName: 'subscribers.generated.ts',\n exportName: 'moduleSubscribers',\n exportType: \"NonNullable<Module['subscribers']>\",\n sourceFileName: 'modules.runtime.generated.ts',\n initializer: methodCall(identifier('modules'), 'flatMap', [\n arrowFunction({\n parameters: ['module'],\n body: parenthesized(\n nullishCoalesce([\n propertyAccess(identifier('module'), 'subscribers'),\n emptyArray(),\n ]),\n ),\n }),\n ]),\n })\n // Validate module dependencies declared via ModuleInfo.requires\n {\n const enabledIds = new Set(enabled.map((e) => e.id))\n const problems: string[] = []\n for (const [modId, reqs] of requiresByModule.entries()) {\n const missing = reqs.filter((r) => !enabledIds.has(r))\n if (missing.length) {\n problems.push(`- Module \"${modId}\" requires: ${missing.join(', ')}`)\n }\n }\n if (problems.length) {\n console.error('\\nModule dependency check failed:')\n for (const p of problems) console.error(p)\n console.error('\\nFix: Enable required module(s) in src/modules.ts. Example:')\n console.error(\n ' export const enabledModules = [ { id: \\'' +\n Array.from(new Set(requiresByModule.values()).values()).join(\"' }, { id: '\") +\n \"' } ]\"\n )\n process.exit(1)\n }\n }\n\n const structureChecksum = calculateStructureChecksum([\n ...Array.from(trackedRoots),\n ])\n\n writeGeneratedFile({ outFile, checksumFile, content: output, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: runtimeOutFile, checksumFile: runtimeChecksumFile, content: runtimeOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: frontendRoutesOutFile, checksumFile: frontendRoutesChecksumFile, content: frontendRoutesOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: backendRoutesOutFile, checksumFile: backendRoutesChecksumFile, content: backendRoutesOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: apiRoutesOutFile, checksumFile: apiRoutesChecksumFile, content: apiRoutesOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: legacySubscribersOutFile, checksumFile: legacySubscribersChecksumFile, content: legacySubscribersOutput, structureChecksum, result, quiet })\n\n for (const extension of extensions) {\n const outputs = extension.generateOutput()\n for (const [fileName, content] of outputs) {\n writeGeneratedFile({\n outFile: path.join(outputDir, fileName),\n checksumFile: path.join(outputDir, fileName.replace('.ts', '.checksum')),\n content,\n structureChecksum,\n result,\n quiet,\n })\n }\n }\n\n // Generator plugin outputs (registered via modules' generators.ts)\n for (const [pluginId, plugin] of pluginRegistry) {\n const state = pluginState.get(pluginId)!\n const importSection = state.imports.join('\\n')\n const entriesLiteral = state.configs.join(',\\n ')\n const content = plugin.buildOutput({ importSection, entriesLiteral })\n const outFile = path.join(outputDir, plugin.outputFileName)\n const checksumFile = outFile.replace('.ts', '.checksum')\n writeGeneratedFile({ outFile, checksumFile, content, structureChecksum, result, quiet })\n }\n\n // Bootstrap registrations: aggregate all plugin bootstrap-registration hooks into one file.\n // Always written (even when empty) so bootstrap.ts can unconditionally import it.\n {\n const bootstrapPlugins = [...pluginRegistry.values()].filter((p) => p.bootstrapRegistration)\n const allEntryImports: string[] = []\n const allRegImports: string[] = []\n const allCalls: string[] = []\n for (const plugin of bootstrapPlugins) {\n const reg = plugin.bootstrapRegistration!\n const outputBase = plugin.outputFileName.replace('.ts', '')\n allEntryImports.push(buildImportStatement(`{ ${reg.entriesExportName} }`, `./${outputBase}`))\n allRegImports.push(...reg.registrationImports)\n allCalls.push(reg.buildCall(reg.entriesExportName))\n }\n const uniqueImports = [...new Set([...allEntryImports, ...allRegImports])]\n const importSection = uniqueImports.join('\\n')\n const body = allCalls.length ? ` ${allCalls.join('\\n ')}` : ''\n const bootstrapRegsOutput = `// AUTO-GENERATED by mercato generate registry\n${importSection ? `${importSection}\\n` : ''}\nexport function runBootstrapRegistrations(): void {\n${body}\n}\n`\n writeGeneratedFile({ outFile: bootstrapRegsOutFile, checksumFile: bootstrapRegsChecksumFile, content: bootstrapRegsOutput, structureChecksum, result, quiet })\n }\n\n return result\n}\n\nexport async function generateModuleRegistryApp(options: ModuleRegistryOptions): Promise<GeneratorResult> {\n const { resolver, quiet = false } = options\n const result = createGeneratorResult()\n\n const outputDir = resolver.getOutputDir()\n const outFile = path.join(outputDir, 'modules.app.generated.ts')\n const checksumFile = path.join(outputDir, 'modules.app.generated.checksum')\n const legacyOutFile = path.join(outputDir, 'bootstrap-modules.generated.ts')\n const legacyChecksumFile = path.join(outputDir, 'bootstrap-modules.generated.checksum')\n\n const enabled = resolver.loadEnabledModules()\n const imports: string[] = []\n const moduleDecls: WriterFunction[] = []\n const importIdRef = { value: 0 }\n const trackedRoots = new Set<string>()\n const requiresByModule = new Map<string, string[]>()\n let hasRouteComponents = false\n\n for (const entry of enabled) {\n const modId = entry.id\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n trackedRoots.add(roots.appBase)\n trackedRoots.add(roots.pkgBase)\n\n const isAppModule = entry.from === '@app'\n const appImportBase = isAppModule ? `../../src/modules/${modId}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n\n const frontendRoutes: WriterFunction[] = []\n const backendRoutes: WriterFunction[] = []\n const translations: GeneratedObjectEntry[] = []\n const subscribers: WriterFunction[] = []\n const workers: WriterFunction[] = []\n let infoImportName: string | null = null\n let extensionsImportName: string | null = null\n let fieldsImportName: string | null = null\n let featuresImportName: string | null = null\n let customEntitiesImportName: string | null = null\n let dashboardWidgetsValue: WriterFunction = emptyArray()\n let setupImportName: string | null = null\n let integrationImportName: string | null = null\n\n const indexResolved = resolveModuleFile(roots, imps, 'index.ts')\n if (indexResolved) {\n infoImportName = `I${importIdRef.value++}_${toVar(modId)}`\n const importPath = sanitizeGeneratedModuleSpecifier(indexResolved.importPath)\n imports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(indexResolved.absolutePath)\n const reqs: string[] | undefined =\n mod?.metadata && Array.isArray(mod.metadata.requires) ? mod.metadata.requires : undefined\n if (reqs && reqs.length) requiresByModule.set(modId, reqs)\n } catch {}\n }\n\n {\n const setup = resolveConventionFile(roots, imps, 'setup.ts', 'SETUP', modId, importIdRef, imports)\n if (setup) setupImportName = setup.importName\n }\n\n {\n const resolved = resolveModuleFile(roots, imps, 'integration.ts')\n if (resolved) {\n const importName = `INTEGRATION_${toVar(modId)}_${importIdRef.value++}`\n imports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n integrationImportName = importName\n }\n }\n\n {\n const ext = resolveConventionFile(roots, imps, 'data/extensions.ts', 'X', modId, importIdRef, imports)\n if (ext) extensionsImportName = ext.importName\n }\n\n {\n const aclResolved = resolveModuleFile(roots, imps, 'acl.ts')\n if (aclResolved) {\n const importName = `ACL_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(aclResolved.importPath)\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n featuresImportName = importName\n }\n }\n\n {\n const ce = resolveConventionFile(roots, imps, 'ce.ts', 'CE', modId, importIdRef, imports)\n if (ce) customEntitiesImportName = ce.importName\n }\n\n {\n const fields = resolveConventionFile(roots, imps, 'data/fields.ts', 'F', modId, importIdRef, imports)\n if (fields) fieldsImportName = fields.importName\n }\n\n {\n const feApp = path.join(roots.appBase, 'frontend')\n const fePkg = path.join(roots.pkgBase, 'frontend')\n const feFiles = scanModuleDir(roots, SCAN_CONFIGS.frontendPages)\n if (feFiles.length > 0) {\n frontendRoutes.push(...await processPageFilesAst({\n files: feFiles,\n type: 'frontend',\n modId,\n appDir: feApp,\n pkgDir: fePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n importIdRef,\n }))\n hasRouteComponents = true\n }\n }\n\n {\n const beApp = path.join(roots.appBase, 'backend')\n const bePkg = path.join(roots.pkgBase, 'backend')\n const beFiles = scanModuleDir(roots, SCAN_CONFIGS.backendPages)\n if (beFiles.length > 0) {\n backendRoutes.push(...await processPageFilesAst({\n files: beFiles,\n type: 'backend',\n modId,\n appDir: beApp,\n pkgDir: bePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n importIdRef,\n }))\n hasRouteComponents = true\n }\n }\n\n translations.push(...processTranslationsAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n }))\n\n subscribers.push(...await processSubscribersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n workers.push(...await processWorkersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n {\n const entries = scanDashboardWidgetEntries({\n modId,\n roots,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n })\n dashboardWidgetsValue = buildModuleDashboardWidgetsValue(entries)\n }\n\n const moduleEntries: GeneratedObjectEntry[] = [\n { name: 'id', value: modId },\n { name: 'customFieldSets', value: buildModuleCustomFieldSetsValue({ fieldsImportName, customEntitiesImportName, moduleId: modId }) },\n ]\n\n if (infoImportName) {\n moduleEntries.push({ name: 'info', value: propertyAccess(identifier(infoImportName), 'metadata') })\n }\n if (frontendRoutes.length > 0) {\n moduleEntries.push({ name: 'frontendRoutes', value: arrayLiteral(frontendRoutes, writeValue) })\n }\n if (backendRoutes.length > 0) {\n moduleEntries.push({ name: 'backendRoutes', value: arrayLiteral(backendRoutes, writeValue) })\n }\n if (translations.length > 0) {\n moduleEntries.push({ name: 'translations', value: objectLiteral(translations) })\n }\n if (subscribers.length > 0) {\n moduleEntries.push({ name: 'subscribers', value: arrayLiteral(subscribers, writeValue) })\n }\n if (workers.length > 0) {\n moduleEntries.push({ name: 'workers', value: arrayLiteral(workers, writeValue) })\n }\n if (extensionsImportName) {\n moduleEntries.push({\n name: 'entityExtensions',\n value: namespaceFallback({\n importName: extensionsImportName,\n members: ['default', 'extensions'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (featuresImportName) {\n moduleEntries.push({\n name: 'features',\n value: namespaceFallback({\n importName: featuresImportName,\n members: ['default', 'features'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (customEntitiesImportName) {\n moduleEntries.push({\n name: 'customEntities',\n value: namespaceFallback({\n importName: customEntitiesImportName,\n members: ['default', 'entities'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n moduleEntries.push({ name: 'dashboardWidgets', value: dashboardWidgetsValue })\n if (setupImportName) {\n moduleEntries.push({\n name: 'setup',\n value: namespaceFallback({\n importName: setupImportName,\n members: ['default', 'setup'],\n fallback: identifier('undefined'),\n }),\n })\n }\n if (integrationImportName) {\n moduleEntries.push({\n name: 'integrations',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'integrations',\n 'integration',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]\",\n ),\n })\n moduleEntries.push({\n name: 'bundles',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'bundles',\n 'bundle',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]\",\n ),\n })\n }\n\n moduleDecls.push(objectLiteral(moduleEntries))\n }\n\n const output = renderAstModuleRegistryFile({\n fileName: 'modules.app.generated.ts',\n generator: 'registry (app version)',\n imports,\n moduleEntries: moduleDecls,\n includeCreateElementImport: hasRouteComponents,\n })\n const legacyOutput = renderAstLegacyAliasFile({\n fileName: 'bootstrap-modules.generated.ts',\n exportName: 'bootstrapModules',\n exportType: 'Module[]',\n sourceFileName: 'modules.app.generated.ts',\n initializer: identifier('modules'),\n })\n\n {\n const enabledIds = new Set(enabled.map((e) => e.id))\n const problems: string[] = []\n for (const [modId, reqs] of requiresByModule.entries()) {\n const missing = reqs.filter((r) => !enabledIds.has(r))\n if (missing.length) {\n problems.push(`- Module \"${modId}\" requires: ${missing.join(', ')}`)\n }\n }\n if (problems.length) {\n console.error('\\nModule dependency check failed:')\n for (const p of problems) console.error(p)\n console.error('\\nFix: Enable required module(s) in src/modules.ts. Example:')\n console.error(\n ' export const enabledModules = [ { id: \\'' +\n Array.from(new Set(requiresByModule.values()).values()).join(\"' }, { id: '\") +\n \"' } ]\"\n )\n process.exit(1)\n }\n }\n\n const structureChecksum = calculateStructureChecksum(Array.from(trackedRoots))\n writeGeneratedFile({ outFile, checksumFile, content: output, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: legacyOutFile, checksumFile: legacyChecksumFile, content: legacyOutput, structureChecksum, result, quiet })\n\n return result\n}\n\n/**\n * Generate a CLI-specific module registry that excludes Next.js dependent code.\n * This produces modules.cli.generated.ts which can be loaded without Next.js runtime.\n *\n * Includes: module metadata, CLI commands, translations, subscribers, workers, entity extensions,\n * features/ACL, custom entities, vector config, custom fields, dashboard widgets\n * Excludes: frontend routes, backend routes, API handlers, injection widgets\n */\nexport async function generateModuleRegistryCli(options: ModuleRegistryOptions): Promise<GeneratorResult> {\n const { resolver, quiet = false } = options\n const result = createGeneratorResult()\n\n const outputDir = resolver.getOutputDir()\n const outFile = path.join(outputDir, 'modules.cli.generated.ts')\n const checksumFile = path.join(outputDir, 'modules.cli.generated.checksum')\n const legacyOutFile = path.join(outputDir, 'cli-modules.generated.ts')\n const legacyChecksumFile = path.join(outputDir, 'cli-modules.generated.checksum')\n\n const enabled = resolver.loadEnabledModules()\n const imports: string[] = []\n const moduleDecls: WriterFunction[] = []\n // Mutable ref so extracted helper functions can increment the shared counter\n const importIdRef = { value: 0 }\n const trackedRoots = new Set<string>()\n const requiresByModule = new Map<string, string[]>()\n\n for (const entry of enabled) {\n const modId = entry.id\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n trackedRoots.add(roots.appBase)\n trackedRoots.add(roots.pkgBase)\n\n const isAppModule = entry.from === '@app'\n const appImportBase = isAppModule ? `../../src/modules/${modId}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n\n let cliImportName: string | null = null\n const translations: GeneratedObjectEntry[] = []\n const subscribers: WriterFunction[] = []\n const workers: WriterFunction[] = []\n let infoImportName: string | null = null\n let extensionsImportName: string | null = null\n let fieldsImportName: string | null = null\n let featuresImportName: string | null = null\n let customEntitiesImportName: string | null = null\n let vectorImportName: string | null = null\n let dashboardWidgetsValue: WriterFunction = emptyArray()\n let setupImportName: string | null = null\n let integrationImportName: string | null = null\n\n // Module metadata: index.ts (overrideable)\n const indexResolved = resolveModuleFile(roots, imps, 'index.ts')\n if (indexResolved) {\n infoImportName = `I${importIdRef.value++}_${toVar(modId)}`\n const importPath = sanitizeGeneratedModuleSpecifier(indexResolved.importPath)\n imports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(indexResolved.absolutePath)\n const reqs: string[] | undefined =\n mod?.metadata && Array.isArray(mod.metadata.requires) ? mod.metadata.requires : undefined\n if (reqs && reqs.length) requiresByModule.set(modId, reqs)\n } catch {}\n }\n\n // Module setup configuration: setup.ts\n {\n const setup = resolveConventionFile(roots, imps, 'setup.ts', 'SETUP', modId, importIdRef, imports)\n if (setup) setupImportName = setup.importName\n }\n\n // Integration manifest: integration.ts\n {\n const resolved = resolveModuleFile(roots, imps, 'integration.ts')\n if (resolved) {\n const importName = `INTEGRATION_${toVar(modId)}_${importIdRef.value++}`\n imports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n integrationImportName = importName\n }\n }\n\n // Entity extensions: data/extensions.ts\n {\n const ext = resolveConventionFile(roots, imps, 'data/extensions.ts', 'X', modId, importIdRef, imports)\n if (ext) extensionsImportName = ext.importName\n }\n\n // RBAC: acl.ts\n {\n const aclResolved = resolveModuleFile(roots, imps, 'acl.ts')\n if (aclResolved) {\n const importName = `ACL_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(aclResolved.importPath)\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n featuresImportName = importName\n }\n }\n\n // Custom entities: ce.ts\n {\n const ce = resolveConventionFile(roots, imps, 'ce.ts', 'CE', modId, importIdRef, imports)\n if (ce) customEntitiesImportName = ce.importName\n }\n\n // Vector search configuration: vector.ts\n {\n const vec = resolveConventionFile(roots, imps, 'vector.ts', 'VECTOR', modId, importIdRef, imports)\n if (vec) vectorImportName = vec.importName\n }\n\n // Custom fields: data/fields.ts\n {\n const fields = resolveConventionFile(roots, imps, 'data/fields.ts', 'F', modId, importIdRef, imports)\n if (fields) fieldsImportName = fields.importName\n }\n\n // CLI\n {\n const cliResolved = resolveModuleFile(roots, imps, 'cli.ts')\n if (cliResolved) {\n const importName = `CLI_${toVar(modId)}`\n imports.push(buildImportStatement(importName, sanitizeGeneratedModuleSpecifier(cliResolved.importPath)))\n cliImportName = importName\n }\n }\n\n // Translations\n translations.push(...processTranslationsAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n }))\n\n // Subscribers\n subscribers.push(...await processSubscribersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // Workers\n workers.push(...await processWorkersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // Dashboard widgets\n {\n const entries = scanDashboardWidgetEntries({\n modId,\n roots,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n })\n dashboardWidgetsValue = buildModuleDashboardWidgetsValue(entries)\n }\n\n const moduleEntries: GeneratedObjectEntry[] = [\n { name: 'id', value: modId },\n { name: 'customFieldSets', value: buildModuleCustomFieldSetsValue({ fieldsImportName, customEntitiesImportName, moduleId: modId }) },\n ]\n\n if (infoImportName) {\n moduleEntries.push({ name: 'info', value: propertyAccess(identifier(infoImportName), 'metadata') })\n }\n if (cliImportName) {\n moduleEntries.push({ name: 'cli', value: identifier(cliImportName) })\n }\n if (translations.length > 0) {\n moduleEntries.push({ name: 'translations', value: objectLiteral(translations) })\n }\n if (subscribers.length > 0) {\n moduleEntries.push({ name: 'subscribers', value: arrayLiteral(subscribers, writeValue) })\n }\n if (workers.length > 0) {\n moduleEntries.push({ name: 'workers', value: arrayLiteral(workers, writeValue) })\n }\n if (extensionsImportName) {\n moduleEntries.push({\n name: 'entityExtensions',\n value: namespaceFallback({\n importName: extensionsImportName,\n members: ['default', 'extensions'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (featuresImportName) {\n moduleEntries.push({\n name: 'features',\n value: namespaceFallback({\n importName: featuresImportName,\n members: ['default', 'features'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (customEntitiesImportName) {\n moduleEntries.push({\n name: 'customEntities',\n value: namespaceFallback({\n importName: customEntitiesImportName,\n members: ['default', 'entities'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n moduleEntries.push({ name: 'dashboardWidgets', value: dashboardWidgetsValue })\n if (vectorImportName) {\n moduleEntries.push({\n name: 'vector',\n value: namespaceFallback({\n importName: vectorImportName,\n members: ['default', 'vectorConfig', 'config'],\n fallback: identifier('undefined'),\n castType: \"Module['vector']\",\n }),\n })\n }\n if (setupImportName) {\n moduleEntries.push({\n name: 'setup',\n value: namespaceFallback({\n importName: setupImportName,\n members: ['default', 'setup'],\n fallback: identifier('undefined'),\n }),\n })\n }\n if (integrationImportName) {\n moduleEntries.push({\n name: 'integrations',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'integrations',\n 'integration',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]\",\n ),\n })\n moduleEntries.push({\n name: 'bundles',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'bundles',\n 'bundle',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]\",\n ),\n })\n }\n\n moduleDecls.push(objectLiteral(moduleEntries))\n }\n\n const output = renderAstModuleRegistryFile({\n fileName: 'modules.cli.generated.ts',\n generator: 'registry (CLI version)',\n imports,\n moduleEntries: moduleDecls,\n })\n const legacyOutput = renderAstLegacyAliasFile({\n fileName: 'cli-modules.generated.ts',\n exportName: 'cliModules',\n exportType: \"Pick<Module, 'id' | 'cli'>[]\",\n sourceFileName: 'modules.cli.generated.ts',\n initializer: methodCall(identifier('modules'), 'map', [\n arrowFunction({\n parameters: ['{ id, cli }'],\n body: parenthesized(objectLiteral([\n { name: 'id', value: identifier('id') },\n { name: 'cli', value: identifier('cli') },\n ])),\n }),\n ]),\n })\n\n // Validate module dependencies declared via ModuleInfo.requires\n {\n const enabledIds = new Set(enabled.map((e) => e.id))\n const problems: string[] = []\n for (const [modId, reqs] of requiresByModule.entries()) {\n const missing = reqs.filter((r) => !enabledIds.has(r))\n if (missing.length) {\n problems.push(`- Module \"${modId}\" requires: ${missing.join(', ')}`)\n }\n }\n if (problems.length) {\n console.error('\\nModule dependency check failed:')\n for (const p of problems) console.error(p)\n console.error('\\nFix: Enable required module(s) in src/modules.ts. Example:')\n console.error(\n ' export const enabledModules = [ { id: \\'' +\n Array.from(new Set(requiresByModule.values()).values()).join(\"' }, { id: '\") +\n \"' } ]\"\n )\n process.exit(1)\n }\n }\n\n const structureChecksum = calculateStructureChecksum(Array.from(trackedRoots))\n writeGeneratedFile({ outFile, checksumFile, content: output, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: legacyOutFile, checksumFile: legacyChecksumFile, content: legacyOutput, structureChecksum, result, quiet })\n\n return result\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import fs from 'node:fs'\nimport path from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { VariableDeclarationKind, type WriterFunction } from 'ts-morph'\nimport ts from 'typescript'\nimport type { PackageResolver } from '../resolver'\nimport {\n calculateStructureChecksum,\n toVar,\n moduleHasExport,\n type GeneratorResult,\n createGeneratorResult,\n writeGeneratedFile,\n} from '../utils'\nimport {\n addAutoGeneratedComment,\n addImportSpec,\n addImportStatements,\n arrayLiteral,\n awaitExpression,\n block,\n asExpression,\n arrowFunction,\n binaryExpression,\n callExpression,\n conditionalExpression,\n createGeneratedSourceFile,\n elementAccess,\n returnStatement,\n getSourceText,\n identifier,\n importExpression,\n logicalAnd,\n logicalOr,\n methodCall,\n nullishCoalesce,\n objectLiteral,\n optionalPropertyAccess,\n parenthesized,\n propertyAccess,\n spreadExpression,\n type GeneratedObjectEntry,\n variableStatement,\n writeValue,\n writeStatements,\n} from './ast'\nimport {\n emptyArray,\n emptyObject,\n namespaceFallback,\n namespaceImportSpec,\n} from './extensions/shared'\nimport {\n scanModuleDir,\n resolveModuleFile,\n resolveFirstModuleFile,\n SCAN_CONFIGS,\n MODULE_CODE_EXTENSIONS,\n type ModuleRoots,\n type ModuleImports,\n stripModuleCodeExtension,\n isModulePageFile,\n resolveStandaloneSourceMirrorBase,\n} from './scanner'\nimport { loadGeneratorExtensions } from './extensions'\nimport type { ModuleScanContext, StandaloneConfigOptions } from './extension'\n\ntype HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nexport interface ModuleRegistryOptions {\n resolver: PackageResolver\n quiet?: boolean\n}\n\ntype DashboardWidgetEntry = {\n moduleId: string\n key: string\n source: 'app' | 'package'\n importPath: string\n}\n\ntype RuntimeApiMethodMetadata = {\n requireAuth?: boolean\n requireRoles?: string[]\n requireFeatures?: string[]\n rateLimit?: {\n points: number\n duration: number\n blockDuration?: number\n keyPrefix?: string\n }\n}\n\ntype PageRouteGenerationResult = {\n eagerRoutes: string[]\n runtimeRoutes: string[]\n manifestRoutes: string[]\n}\n\ntype ApiRouteGenerationResult = {\n eagerApis: string[]\n runtimeApis: string[]\n manifestApis: string[]\n}\n\ntype SerializablePageMetadata = {\n requireAuth?: boolean\n requireRoles?: string[]\n requireFeatures?: string[]\n requireCustomerAuth?: boolean\n requireCustomerFeatures?: string[]\n title?: string\n titleKey?: string\n pageTitle?: string\n pageTitleKey?: string\n group?: string\n groupKey?: string\n pageGroup?: string\n pageGroupKey?: string\n order?: number\n pageOrder?: number\n priority?: number\n pagePriority?: number\n navHidden?: boolean\n breadcrumb?: Array<{ label: string; labelKey?: string; href?: string }>\n pageContext?: 'main' | 'admin' | 'settings' | 'profile'\n placement?: {\n section: string\n sectionLabel?: string\n sectionLabelKey?: string\n order?: number\n }\n icon?: string\n}\n\ntype SerializableSubscriberMetadata = {\n id?: string\n event?: string\n persistent?: boolean\n sync?: boolean\n priority?: number\n}\n\ntype SerializableWorkerMetadata = {\n id?: string\n queue?: string\n concurrency?: number\n}\n\ntype PageMetadataManifestLoadResult = {\n manifestExpr: string\n requiresRuntimeImport: boolean\n}\n\nfunction scanDashboardWidgetEntries(options: {\n modId: string\n roots: ModuleRoots\n appImportBase: string\n pkgImportBase: string\n}): DashboardWidgetEntry[] {\n const { modId, roots, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.dashboardWidgets)\n return files.map(({ relPath, fromApp }) => {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const base = file.replace(/\\.(t|j)sx?$/, '')\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/widgets/dashboard/${[...segs, base].join('/')}`\n )\n const key = [modId, ...segs, base].filter(Boolean).join(':')\n const source = fromApp ? 'app' : 'package'\n return { moduleId: modId, key, source, importPath }\n })\n}\n\nasync function loadModuleExportsFromSource<T = Record<string, unknown>>(sourceFile: string): Promise<T | null> {\n try {\n return await import(buildCacheBustedSourceImportUrl(sourceFile)) as T\n } catch {\n return null\n }\n}\n\nfunction buildCacheBustedSourceImportUrl(sourceFile: string): string {\n const url = pathToFileURL(sourceFile)\n try {\n const stat = fs.statSync(sourceFile)\n url.searchParams.set('v', `${stat.mtimeMs}-${stat.size}`)\n } catch {}\n return url.href\n}\n\nfunction unwrapObjectLiteralExpression(\n expression: ts.Expression | undefined,\n): ts.ObjectLiteralExpression | undefined {\n if (!expression) return undefined\n if (ts.isObjectLiteralExpression(expression)) return expression\n if (ts.isAsExpression(expression) || ts.isTypeAssertionExpression(expression)) {\n return unwrapObjectLiteralExpression(expression.expression)\n }\n if (ts.isParenthesizedExpression(expression)) {\n return unwrapObjectLiteralExpression(expression.expression)\n }\n return undefined\n}\n\nfunction extractNamedObjectLiteralSource(sourceFile: string, exportName: string): string | null {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return null\n }\n\n const parsed = ts.createSourceFile(\n sourceFile,\n source,\n ts.ScriptTarget.Latest,\n true,\n inferScriptKind(sourceFile),\n )\n\n const exportedNames = new Set<string>()\n for (const statement of parsed.statements) {\n if (\n ts.isExportDeclaration(statement)\n && statement.exportClause\n && ts.isNamedExports(statement.exportClause)\n && !statement.moduleSpecifier\n ) {\n for (const element of statement.exportClause.elements) {\n exportedNames.add(element.name.text)\n }\n }\n }\n\n for (const statement of parsed.statements) {\n if (!ts.isVariableStatement(statement)) continue\n\n const statementExportsNameDirectly = (ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined)\n ?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword)\n\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name) || declaration.name.text !== exportName) continue\n if (!statementExportsNameDirectly && !exportedNames.has(exportName)) continue\n\n const objectLiteral = unwrapObjectLiteralExpression(declaration.initializer)\n if (!objectLiteral) return null\n return source.slice(objectLiteral.getStart(parsed), objectLiteral.end)\n }\n }\n\n return null\n}\n\nfunction resolveLocalStringConstants(parsed: ts.SourceFile): Map<string, string> {\n const constants = new Map<string, string>()\n for (const statement of parsed.statements) {\n if (!ts.isVariableStatement(statement)) continue\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name)) continue\n if (!declaration.initializer) continue\n if (ts.isStringLiteral(declaration.initializer) || ts.isNoSubstitutionTemplateLiteral(declaration.initializer)) {\n constants.set(declaration.name.text, declaration.initializer.text)\n }\n }\n }\n return constants\n}\n\nfunction extractObjectPropertiesFromAst(sourceFile: string, exportName: string): Record<string, unknown> | null {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return null\n }\n\n const parsed = ts.createSourceFile(\n sourceFile,\n source,\n ts.ScriptTarget.Latest,\n true,\n inferScriptKind(sourceFile),\n )\n\n const exportedNames = new Set<string>()\n for (const statement of parsed.statements) {\n if (\n ts.isExportDeclaration(statement)\n && statement.exportClause\n && ts.isNamedExports(statement.exportClause)\n && !statement.moduleSpecifier\n ) {\n for (const element of statement.exportClause.elements) {\n exportedNames.add(element.name.text)\n }\n }\n }\n\n let objectLiteral: ts.ObjectLiteralExpression | undefined\n for (const statement of parsed.statements) {\n if (!ts.isVariableStatement(statement)) continue\n const statementExportsNameDirectly = (ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined)\n ?.some((modifier: ts.Modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword)\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name) || declaration.name.text !== exportName) continue\n if (!statementExportsNameDirectly && !exportedNames.has(exportName)) continue\n objectLiteral = unwrapObjectLiteralExpression(declaration.initializer)\n break\n }\n if (objectLiteral) break\n }\n\n if (!objectLiteral) return null\n\n const localConstants = resolveLocalStringConstants(parsed)\n const result: Record<string, unknown> = {}\n\n for (const property of objectLiteral.properties) {\n if (!ts.isPropertyAssignment(property)) continue\n const key = ts.isIdentifier(property.name) ? property.name.text\n : ts.isStringLiteral(property.name) ? property.name.text\n : null\n if (!key) continue\n\n const initializer = property.initializer\n if (ts.isStringLiteral(initializer) || ts.isNoSubstitutionTemplateLiteral(initializer)) {\n result[key] = initializer.text\n } else if (ts.isNumericLiteral(initializer)) {\n result[key] = Number(initializer.text)\n } else if (initializer.kind === ts.SyntaxKind.TrueKeyword) {\n result[key] = true\n } else if (initializer.kind === ts.SyntaxKind.FalseKeyword) {\n result[key] = false\n } else if (ts.isIdentifier(initializer) && localConstants.has(initializer.text)) {\n result[key] = localConstants.get(initializer.text)\n }\n }\n\n return Object.keys(result).length > 0 ? result : null\n}\n\nfunction extractNamedObjectLiteralExport(sourceFile: string, exportName: string): Record<string, unknown> | null {\n const literal = extractNamedObjectLiteralSource(sourceFile, exportName)\n if (!literal) return null\n try {\n const extracted = Function(`\"use strict\"; return (${literal});`)()\n return extracted && typeof extracted === 'object' ? extracted as Record<string, unknown> : null\n } catch {\n return extractObjectPropertiesFromAst(sourceFile, exportName)\n }\n}\n\nfunction inferScriptKind(filePath: string): ts.ScriptKind {\n if (filePath.endsWith('.tsx')) return ts.ScriptKind.TSX\n if (filePath.endsWith('.jsx')) return ts.ScriptKind.JSX\n if (filePath.endsWith('.js')) return ts.ScriptKind.JS\n return ts.ScriptKind.TS\n}\n\nfunction hasDefaultExport(sourceFile: string): boolean {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return false\n }\n\n const parsed = ts.createSourceFile(\n sourceFile,\n source,\n ts.ScriptTarget.Latest,\n true,\n inferScriptKind(sourceFile),\n )\n\n for (const statement of parsed.statements) {\n if (ts.isExportAssignment(statement) && !statement.isExportEquals) {\n return true\n }\n\n if (\n ts.isExportDeclaration(statement)\n && statement.exportClause\n && ts.isNamedExports(statement.exportClause)\n && statement.exportClause.elements.some(\n (element) => element.name.text === 'default' || element.propertyName?.text === 'default',\n )\n ) {\n return true\n }\n\n const modifiers = ts.canHaveModifiers(statement) ? ts.getModifiers(statement) : undefined\n if (modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.DefaultKeyword)) {\n return true\n }\n }\n\n return false\n}\n\nfunction requiresRuntimePageMetadataFromSourceFile(sourceFile: string): boolean {\n const literal = extractNamedObjectLiteralSource(sourceFile, 'metadata')\n if (!literal) return false\n\n if (/\\b(?:visible|enabled)\\s*(?::|[,}])/.test(literal)) {\n return true\n }\n\n if (!/\\bicon\\s*(?::|[,}])/.test(literal)) {\n return false\n }\n\n const iconMatch = /\\bicon\\s*:\\s*([^,\\n}]+)/m.exec(literal)\n if (!iconMatch) return true\n\n return !/^['\"`]/.test(iconMatch[1].trim())\n}\n\nfunction toLiteral(value: unknown): string {\n return JSON.stringify(value)\n}\n\nconst GENERATED_MODULE_SPECIFIER_PREFIXES = ['@/', '@open-mercato/', '../../src/modules/', './'] as const\nconst GENERATED_MODULE_SPECIFIER_SEGMENT = /^[A-Za-z0-9_.\\-[\\]()']+$/\n\nfunction sanitizeGeneratedModuleSpecifierSegment(segment: string, importPath: string): string {\n const match = GENERATED_MODULE_SPECIFIER_SEGMENT.exec(segment)\n if (!match || segment === '.' || segment === '..') {\n throw new Error(`Unsafe generated module specifier: ${importPath}`)\n }\n return match[0]\n}\n\nfunction sanitizeGeneratedModuleSpecifier(importPath: string): string {\n const prefix = GENERATED_MODULE_SPECIFIER_PREFIXES.find((candidate) => importPath.startsWith(candidate))\n if (!prefix) {\n throw new Error(`Unsafe generated module specifier prefix: ${importPath}`)\n }\n\n const suffix = importPath.slice(prefix.length)\n if (!suffix) {\n throw new Error(`Unsafe generated module specifier: ${importPath}`)\n }\n\n const segments = suffix\n .split('/')\n .map((segment) => sanitizeGeneratedModuleSpecifierSegment(segment, importPath))\n\n return `${prefix}${segments.join('/')}`\n}\n\nfunction buildImportStatement(importClause: string, importPath: string): string {\n return `import ${importClause} from ${toLiteral(sanitizeGeneratedModuleSpecifier(importPath))}`\n}\n\nfunction buildBareImportStatement(importPath: string): string {\n return `import ${toLiteral(sanitizeGeneratedModuleSpecifier(importPath))}`\n}\n\nfunction buildDynamicImportExpression(importPath: string): string {\n return `import(${toLiteral(sanitizeGeneratedModuleSpecifier(importPath))})`\n}\n\nfunction serializeGeneratedImport(\n statement: string | {\n moduleSpecifier?: string\n defaultImport?: string\n namespaceImport?: string\n namedImports?: Array<string | { name: string; alias?: string; isTypeOnly?: boolean }>\n isTypeOnly?: boolean\n },\n): string {\n if (typeof statement === 'string') {\n return statement\n }\n\n const moduleSpecifier = statement.moduleSpecifier ?? ''\n const clauses: string[] = []\n\n if (statement.defaultImport) {\n clauses.push(statement.defaultImport)\n }\n\n if (statement.namespaceImport) {\n clauses.push(`* as ${statement.namespaceImport}`)\n }\n\n if (statement.namedImports && statement.namedImports.length > 0) {\n const namedImports = statement.namedImports.map((namedImport) => {\n if (typeof namedImport === 'string') {\n return namedImport\n }\n const prefix = namedImport.isTypeOnly ? 'type ' : ''\n const alias = namedImport.alias ? ` as ${namedImport.alias}` : ''\n return `${prefix}${namedImport.name}${alias}`\n })\n clauses.push(`{ ${namedImports.join(', ')} }`)\n }\n\n const typePrefix = statement.isTypeOnly ? 'type ' : ''\n if (clauses.length === 0) {\n return `import ${toLiteral(moduleSpecifier)}`\n }\n\n return `import ${typePrefix}${clauses.join(', ')} from ${toLiteral(moduleSpecifier)}`\n}\n\nfunction findExistingModuleFile(baseDir: string, relativePath: string): string | null {\n const directPath = path.join(baseDir, relativePath)\n if (fs.existsSync(directPath)) return directPath\n\n const stripped = stripModuleCodeExtension(relativePath)\n for (const extension of MODULE_CODE_EXTENSIONS) {\n const candidate = path.join(baseDir, `${stripped}${extension}`)\n if (fs.existsSync(candidate)) return candidate\n }\n\n return null\n}\n\nfunction findExistingModuleFileByBaseNames(baseDir: string, relativeBaseNames: string[]): string | null {\n for (const relativeBaseName of relativeBaseNames) {\n const resolved = findExistingModuleFile(baseDir, relativeBaseName)\n if (resolved) return resolved\n }\n return null\n}\n\nfunction toModuleImportSubpath(filePath: string, baseDir: string): string {\n const relativePath = path.relative(baseDir, filePath).replace(/\\\\/g, '/')\n return stripModuleCodeExtension(relativePath)\n}\n\nfunction normalizeApiMethodMetadata(raw: unknown): RuntimeApiMethodMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: RuntimeApiMethodMetadata = {}\n\n if (typeof source.requireAuth === 'boolean') {\n normalized.requireAuth = source.requireAuth\n }\n if (Array.isArray(source.requireRoles)) {\n normalized.requireRoles = source.requireRoles.filter((role): role is string => typeof role === 'string' && role.length > 0)\n }\n if (Array.isArray(source.requireFeatures)) {\n normalized.requireFeatures = source.requireFeatures.filter((feature): feature is string => typeof feature === 'string' && feature.length > 0)\n }\n if (source.rateLimit && typeof source.rateLimit === 'object') {\n const rateLimit = source.rateLimit as Record<string, unknown>\n if (typeof rateLimit.points === 'number' && typeof rateLimit.duration === 'number') {\n normalized.rateLimit = {\n points: rateLimit.points,\n duration: rateLimit.duration,\n blockDuration: typeof rateLimit.blockDuration === 'number' ? rateLimit.blockDuration : undefined,\n keyPrefix: typeof rateLimit.keyPrefix === 'string' ? rateLimit.keyPrefix : undefined,\n }\n }\n }\n\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nfunction buildApiMetadataLiteral(metadata: unknown, method?: HttpMethod): string {\n if (!metadata || typeof metadata !== 'object') return 'undefined'\n const source = metadata as Record<string, unknown>\n const methods: HttpMethod[] = method ? [method] : ['GET', 'POST', 'PUT', 'PATCH', 'DELETE']\n const normalized: Partial<Record<HttpMethod, RuntimeApiMethodMetadata>> = {}\n\n for (const entryMethod of methods) {\n const candidate = method ? source : source[entryMethod]\n const value = normalizeApiMethodMetadata(candidate)\n if (value) {\n normalized[entryMethod] = value\n }\n }\n\n return Object.keys(normalized).length > 0 ? toLiteral(normalized) : 'undefined'\n}\n\nfunction resolveApiPathFromMetadata(metadata: unknown, fallbackPath: string): string {\n if (!metadata || typeof metadata !== 'object') return fallbackPath\n const candidate = (metadata as Record<string, unknown>).path\n return typeof candidate === 'string' && candidate.length > 0 ? candidate : fallbackPath\n}\n\nfunction detectExportedHttpMethods(sourceFile: string): HttpMethod[] {\n let source = ''\n try {\n source = fs.readFileSync(sourceFile, 'utf8')\n } catch {\n return []\n }\n\n const knownMethods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'] as HttpMethod[]\n const exportedMethods = new Set<HttpMethod>()\n const collectKnownMethods = (rawSpecifiers: string[], opts?: { useExportedAlias?: boolean; useDestructuredProperty?: boolean }) => {\n for (const specifier of rawSpecifiers) {\n const trimmed = specifier.trim()\n if (!trimmed) continue\n\n let candidate = trimmed\n if (opts?.useExportedAlias) {\n candidate = trimmed.split(/\\s+as\\s+/i).pop()?.trim() ?? trimmed\n }\n if (opts?.useDestructuredProperty) {\n candidate = trimmed.split(':')[0]?.trim() ?? trimmed\n }\n\n if (knownMethods.includes(candidate as HttpMethod)) {\n exportedMethods.add(candidate as HttpMethod)\n }\n }\n }\n\n for (const method of knownMethods) {\n const pattern = new RegExp(`export\\\\s+(?:async\\\\s+)?function\\\\s+${method}\\\\b|export\\\\s+(?:const|let|var)\\\\s+${method}\\\\b`)\n if (pattern.test(source)) {\n exportedMethods.add(method)\n }\n }\n\n const reExportPattern = /export\\s*{([^}]+)}/g\n for (const match of source.matchAll(reExportPattern)) {\n const exportBlock = match[1] ?? ''\n collectKnownMethods(\n exportBlock\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0),\n { useExportedAlias: true },\n )\n }\n\n const destructuredExportPattern = /export\\s+(?:const|let|var)\\s*{([^}]+)}/g\n for (const match of source.matchAll(destructuredExportPattern)) {\n const exportBlock = match[1] ?? ''\n collectKnownMethods(\n exportBlock\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0),\n { useDestructuredProperty: true },\n )\n }\n\n return knownMethods.filter((method) => exportedMethods.has(method))\n}\n\nfunction buildPageRouteProps(metaExpr: string, routePath: string): string {\n return `pattern: ${toLiteral(routePath || '/')}, requireAuth: (${metaExpr})?.requireAuth, requireRoles: (${metaExpr})?.requireRoles, requireFeatures: (${metaExpr})?.requireFeatures, requireCustomerAuth: (${metaExpr})?.requireCustomerAuth, requireCustomerFeatures: (${metaExpr})?.requireCustomerFeatures, title: (${metaExpr})?.pageTitle ?? (${metaExpr})?.title, titleKey: (${metaExpr})?.pageTitleKey ?? (${metaExpr})?.titleKey, group: (${metaExpr})?.pageGroup ?? (${metaExpr})?.group, groupKey: (${metaExpr})?.pageGroupKey ?? (${metaExpr})?.groupKey, icon: (${metaExpr})?.icon, order: (${metaExpr})?.pageOrder ?? (${metaExpr})?.order, priority: (${metaExpr})?.pagePriority ?? (${metaExpr})?.priority, navHidden: (${metaExpr})?.navHidden, visible: (${metaExpr})?.visible, enabled: (${metaExpr})?.enabled, breadcrumb: (${metaExpr})?.breadcrumb, pageContext: (${metaExpr})?.pageContext, placement: (${metaExpr})?.placement`\n}\n\nfunction normalizeBreadcrumb(raw: unknown): SerializablePageMetadata['breadcrumb'] {\n if (!Array.isArray(raw)) return undefined\n const breadcrumb = raw\n .map((entry) => {\n if (!entry || typeof entry !== 'object') return null\n const source = entry as Record<string, unknown>\n if (typeof source.label !== 'string') return null\n return {\n label: source.label,\n labelKey: typeof source.labelKey === 'string' ? source.labelKey : undefined,\n href: typeof source.href === 'string' ? source.href : undefined,\n }\n })\n .filter((entry): entry is NonNullable<typeof entry> => entry !== null)\n return breadcrumb.length > 0 ? breadcrumb : undefined\n}\n\nfunction normalizePlacement(raw: unknown): SerializablePageMetadata['placement'] {\n if (!raw || typeof raw !== 'object') return undefined\n const source = raw as Record<string, unknown>\n if (typeof source.section !== 'string' || source.section.length === 0) return undefined\n return {\n section: source.section,\n sectionLabel: typeof source.sectionLabel === 'string' ? source.sectionLabel : undefined,\n sectionLabelKey: typeof source.sectionLabelKey === 'string' ? source.sectionLabelKey : undefined,\n order: typeof source.order === 'number' ? source.order : undefined,\n }\n}\n\nfunction normalizePageMetadata(raw: unknown): SerializablePageMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: SerializablePageMetadata = {}\n\n if (typeof source.requireAuth === 'boolean') normalized.requireAuth = source.requireAuth\n if (Array.isArray(source.requireRoles)) normalized.requireRoles = source.requireRoles.filter((role): role is string => typeof role === 'string' && role.length > 0)\n if (Array.isArray(source.requireFeatures)) normalized.requireFeatures = source.requireFeatures.filter((feature): feature is string => typeof feature === 'string' && feature.length > 0)\n if (typeof source.requireCustomerAuth === 'boolean') normalized.requireCustomerAuth = source.requireCustomerAuth\n if (Array.isArray(source.requireCustomerFeatures)) normalized.requireCustomerFeatures = source.requireCustomerFeatures.filter((feature): feature is string => typeof feature === 'string' && feature.length > 0)\n if (typeof source.title === 'string') normalized.title = source.title\n if (typeof source.titleKey === 'string') normalized.titleKey = source.titleKey\n if (typeof source.pageTitle === 'string') normalized.pageTitle = source.pageTitle\n if (typeof source.pageTitleKey === 'string') normalized.pageTitleKey = source.pageTitleKey\n if (typeof source.group === 'string') normalized.group = source.group\n if (typeof source.groupKey === 'string') normalized.groupKey = source.groupKey\n if (typeof source.pageGroup === 'string') normalized.pageGroup = source.pageGroup\n if (typeof source.pageGroupKey === 'string') normalized.pageGroupKey = source.pageGroupKey\n if (typeof source.order === 'number') normalized.order = source.order\n if (typeof source.pageOrder === 'number') normalized.pageOrder = source.pageOrder\n if (typeof source.priority === 'number') normalized.priority = source.priority\n if (typeof source.pagePriority === 'number') normalized.pagePriority = source.pagePriority\n if (typeof source.navHidden === 'boolean') normalized.navHidden = source.navHidden\n if (typeof source.pageContext === 'string' && ['main', 'admin', 'settings', 'profile'].includes(source.pageContext)) {\n normalized.pageContext = source.pageContext as SerializablePageMetadata['pageContext']\n }\n const breadcrumb = normalizeBreadcrumb(source.breadcrumb)\n if (breadcrumb) normalized.breadcrumb = breadcrumb\n const placement = normalizePlacement(source.placement)\n if (placement) normalized.placement = placement\n if (typeof source.icon === 'string') normalized.icon = source.icon\n\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nfunction requiresRuntimePageMetadata(raw: unknown): boolean {\n if (!raw || typeof raw !== 'object') return false\n const source = raw as Record<string, unknown>\n if (typeof source.visible === 'function' || typeof source.enabled === 'function') {\n return true\n }\n return source.icon != null && typeof source.icon !== 'string'\n}\n\nfunction normalizeSubscriberMetadata(raw: unknown): SerializableSubscriberMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: SerializableSubscriberMetadata = {}\n if (typeof source.id === 'string' && source.id.length > 0) normalized.id = source.id\n if (typeof source.event === 'string' && source.event.length > 0) normalized.event = source.event\n if (typeof source.persistent === 'boolean') normalized.persistent = source.persistent\n if (typeof source.sync === 'boolean') normalized.sync = source.sync\n if (typeof source.priority === 'number') normalized.priority = source.priority\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nfunction normalizeWorkerMetadata(raw: unknown): SerializableWorkerMetadata | null {\n if (!raw || typeof raw !== 'object') return null\n const source = raw as Record<string, unknown>\n const normalized: SerializableWorkerMetadata = {}\n if (typeof source.id === 'string' && source.id.length > 0) normalized.id = source.id\n if (typeof source.queue === 'string' && source.queue.length > 0) normalized.queue = source.queue\n if (typeof source.concurrency === 'number') normalized.concurrency = source.concurrency\n return Object.keys(normalized).length > 0 ? normalized : null\n}\n\nasync function loadSubscriberMetadata(sourceFile: string): Promise<SerializableSubscriberMetadata | null> {\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n return normalizeSubscriberMetadata(sourceModule?.metadata)\n ?? normalizeSubscriberMetadata(extractNamedObjectLiteralExport(sourceFile, 'metadata'))\n}\n\nasync function loadWorkerMetadata(sourceFile: string): Promise<SerializableWorkerMetadata | null> {\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n return normalizeWorkerMetadata(sourceModule?.metadata)\n ?? normalizeWorkerMetadata(extractNamedObjectLiteralExport(sourceFile, 'metadata'))\n}\n\nasync function loadPageMetadataForManifest(options: {\n sourceFile: string\n metaPath?: string\n runtimeExpr: string\n allowRuntimeFallback?: boolean\n}): Promise<PageMetadataManifestLoadResult> {\n const metadataModule = options.metaPath ?? options.sourceFile\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(metadataModule)\n const runtimeMetadata = sourceModule?.metadata\n\n if (\n options.allowRuntimeFallback\n && (requiresRuntimePageMetadata(runtimeMetadata) || requiresRuntimePageMetadataFromSourceFile(metadataModule))\n ) {\n return {\n manifestExpr: options.runtimeExpr,\n requiresRuntimeImport: true,\n }\n }\n\n const normalized = normalizePageMetadata(runtimeMetadata)\n ?? normalizePageMetadata(extractNamedObjectLiteralExport(metadataModule, 'metadata'))\n\n return {\n manifestExpr: normalized ? `(${toLiteral(normalized)} as any)` : '(undefined as any)',\n requiresRuntimeImport: false,\n }\n}\n\nasync function processPageFiles(options: {\n files: Array<{ relPath: string; fromApp: boolean }>\n type: 'frontend' | 'backend'\n modId: string\n appDir: string\n pkgDir: string\n appImportBase: string\n pkgImportBase: string\n eagerImports: string[]\n runtimeImports: string[]\n manifestImports?: string[]\n importIdRef: { value: number }\n}): Promise<PageRouteGenerationResult> {\n const { files, type, modId, appDir, pkgDir, appImportBase, pkgImportBase, eagerImports, runtimeImports, manifestImports, importIdRef } = options\n const prefix = type === 'frontend' ? 'C' : 'B'\n const modPrefix = type === 'frontend' ? 'CM' : 'BM'\n const metaPrefix = type === 'frontend' ? 'M' : 'BM'\n const eagerRoutes: string[] = []\n const runtimeRoutes: string[] = []\n const manifestRoutes: string[] = []\n\n // Next-style page.* files\n for (const { relPath, fromApp } of files.filter(({ relPath: f }) => isModulePageFile(path.basename(f)))) {\n const segs = relPath.split('/')\n const pageFile = segs.pop()!\n const pageBaseName = stripModuleCodeExtension(pageFile)\n const importName = `${prefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const pageModName = `${modPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const runtimeMetaName = `${metaPrefix}Runtime${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const sub = segs.length ? `${segs.join('/')}/${pageBaseName}` : pageBaseName\n const importPath = sanitizeGeneratedModuleSpecifier(`${fromApp ? appImportBase : pkgImportBase}/${type}/${sub}`)\n const routePath = type === 'frontend'\n ? '/' + (segs.join('/') || '')\n : '/backend/' + (segs.join('/') || modId)\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, pageFile)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, ['page.meta', 'meta'])\n let metaExpr = 'undefined'\n let runtimeMetaExpr = 'undefined'\n let manifestMetaExpr = 'undefined'\n let manifestImportStatement: string | null = null\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${toModuleImportSubpath(metaPath, fromApp ? appDir : pkgDir)}`\n )\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n eagerImports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, metaImportPath))\n metaExpr = `(${metaImportName}.metadata as any)`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile: metaPath,\n metaPath,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, metaImportPath)\n }\n eagerImports.push(buildImportStatement(importName, importPath))\n } else {\n metaExpr = `(${pageModName} as any).metadata`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, importPath)\n }\n eagerImports.push(buildImportStatement(`${importName}, * as ${pageModName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, importPath))\n }\n if (manifestImportStatement) {\n manifestImports?.push(manifestImportStatement)\n }\n const baseProps = buildPageRouteProps(metaExpr, routePath)\n const runtimeBaseProps = buildPageRouteProps(runtimeMetaExpr, routePath)\n const manifestBaseProps = buildPageRouteProps(manifestMetaExpr, routePath)\n eagerRoutes.push(`{ ${baseProps}, Component: ${importName} }`)\n runtimeRoutes.push(`{ ${runtimeBaseProps}, Component: async (props: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; const Component = (mod.default ?? mod) as any; return createElement(Component, props) } }`)\n manifestRoutes.push(`{ moduleId: ${toLiteral(modId)}, ${manifestBaseProps}, load: async () => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod.default ?? mod) as any } }`)\n }\n\n // Back-compat direct files (old-style pages like login.tsx instead of login/page.tsx)\n for (const { relPath, fromApp } of files.filter(({ relPath: f }) => !isModulePageFile(path.basename(f)))) {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const routeSegs = [...segs, name].filter(Boolean)\n const importName = `${prefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const pageModName = `${modPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const runtimeMetaName = `${metaPrefix}Runtime${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, name].join('/')}`\n )\n const routePath = type === 'frontend'\n ? '/' + (routeSegs.join('/') || '')\n : '/backend/' + (segs[0] === modId\n ? [...segs, name].filter(Boolean).join('/')\n : [modId, ...segs, name].filter(Boolean).join('/'))\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, file)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, [`${name}.meta`, 'meta'])\n let metaExpr = 'undefined'\n let runtimeMetaExpr = 'undefined'\n let manifestMetaExpr = 'undefined'\n let manifestImportStatement: string | null = null\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const metaBase = path.basename(metaPath)\n const metaImportSub = stripModuleCodeExtension(metaBase) === 'meta' ? 'meta' : `${name}.meta`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, metaImportSub].join('/')}`\n )\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n eagerImports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, metaImportPath))\n metaExpr = type === 'frontend' ? `(${metaImportName}.metadata as any)` : `${metaImportName}.metadata`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile: metaPath,\n metaPath,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, metaImportPath)\n }\n eagerImports.push(buildImportStatement(importName, importPath))\n } else {\n metaExpr = `(${pageModName} as any).metadata`\n runtimeMetaExpr = `(((${runtimeMetaName} as any).metadata) as any)`\n const manifestMetaImportName = `${metaPrefix}Manifest${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const manifestMetadata = await loadPageMetadataForManifest({\n sourceFile,\n runtimeExpr: `(((${manifestMetaImportName} as any).metadata) as any)`,\n allowRuntimeFallback: type === 'backend',\n })\n manifestMetaExpr = manifestMetadata.manifestExpr\n if (manifestMetadata.requiresRuntimeImport) {\n manifestImportStatement = buildImportStatement(`* as ${manifestMetaImportName}`, importPath)\n }\n eagerImports.push(buildImportStatement(`${importName}, * as ${pageModName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${runtimeMetaName}`, importPath))\n }\n if (manifestImportStatement) {\n manifestImports?.push(manifestImportStatement)\n }\n const baseProps = buildPageRouteProps(metaExpr, routePath)\n const runtimeBaseProps = buildPageRouteProps(runtimeMetaExpr, routePath)\n const manifestBaseProps = buildPageRouteProps(manifestMetaExpr, routePath)\n eagerRoutes.push(`{ ${baseProps}, Component: ${importName} }`)\n runtimeRoutes.push(`{ ${runtimeBaseProps}, Component: async (props: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; const Component = (mod.default ?? mod) as any; return createElement(Component, props) } }`)\n manifestRoutes.push(`{ moduleId: ${toLiteral(modId)}, ${manifestBaseProps}, load: async () => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod.default ?? mod) as any } }`)\n }\n\n return {\n eagerRoutes,\n runtimeRoutes,\n manifestRoutes,\n }\n}\n\nasync function processApiRoutes(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n eagerImports: string[]\n importIdRef: { value: number }\n}): Promise<ApiRouteGenerationResult> {\n const { roots, modId, appImportBase, pkgImportBase, eagerImports, importIdRef } = options\n const apiApp = path.join(roots.appBase, 'api')\n const apiPkg = path.join(roots.pkgBase, 'api')\n if (!fs.existsSync(apiApp) && !fs.existsSync(apiPkg)) {\n return { eagerApis: [], runtimeApis: [], manifestApis: [] }\n }\n\n const eagerApis: string[] = []\n const runtimeApis: string[] = []\n const manifestApis: string[] = []\n\n // route.* aggregations\n const routeFiles = scanModuleDir(roots, SCAN_CONFIGS.apiRoutes)\n for (const { relPath, fromApp } of routeFiles) {\n const segs = relPath.split('/')\n const routeFile = segs.pop()!\n const reqSegs = [modId, ...segs]\n const importName = `R${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const sourceDir = fromApp ? apiApp : apiPkg\n const sourceFile = findExistingModuleFile(path.join(sourceDir, ...segs), routeFile)\n if (!sourceFile) continue\n const apiSegPath = segs.join('/')\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/api${apiSegPath ? `/${apiSegPath}` : ''}/${stripModuleCodeExtension(routeFile)}`\n )\n const routePath = '/' + reqSegs.filter(Boolean).join('/')\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n const metadata = sourceModule?.metadata ?? extractNamedObjectLiteralExport(sourceFile, 'metadata')\n const resolvedPath = resolveApiPathFromMetadata(metadata, routePath)\n const exportedMethods = detectExportedHttpMethods(sourceFile)\n if (exportedMethods.length === 0) continue\n const metadataLiteral = buildApiMetadataLiteral(metadata)\n const hasOpenApi = await moduleHasExport(sourceFile, 'openApi')\n const docsPart = hasOpenApi ? `, docs: ((${importName} as any).openApi as any)` : ''\n eagerImports.push(buildImportStatement(`* as ${importName}`, importPath))\n eagerApis.push(`{ path: ((${importName} as any).metadata?.path ?? ${toLiteral(routePath)}), metadata: (${importName} as any).metadata, handlers: ${importName} as any${docsPart} }`)\n runtimeApis.push(`{ path: ${toLiteral(resolvedPath)}, metadata: ${metadataLiteral}, handlers: { ${exportedMethods.map((method) => `${method}: async (req: Request, ctx?: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod as any).${method}(req, ctx) }`).join(', ')} } }`)\n manifestApis.push(`{ moduleId: ${toLiteral(modId)}, kind: ${toLiteral('route-file')}, path: ${toLiteral(resolvedPath)}, methods: [${exportedMethods.map((method) => toLiteral(method)).join(', ')}], load: async () => ${buildDynamicImportExpression(importPath)} }`)\n }\n\n // Single files (plain scripts, not route.*, not tests, skip method dirs)\n const plainFiles = scanModuleDir(roots, SCAN_CONFIGS.apiPlainFiles)\n for (const { relPath, fromApp } of plainFiles) {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const pathWithoutExt = stripModuleCodeExtension(file)\n const fullSegs = [...segs, pathWithoutExt]\n const routePath = '/' + [modId, ...fullSegs].filter(Boolean).join('/')\n const importName = `R${importIdRef.value++}_${toVar(modId)}_${toVar(fullSegs.join('_') || 'index')}`\n const plainSegPath = fullSegs.join('/')\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/api${plainSegPath ? `/${plainSegPath}` : ''}`\n )\n const sourceFile = findExistingModuleFile(fromApp ? apiApp : apiPkg, relPath)\n if (!sourceFile) continue\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n const metadata = sourceModule?.metadata ?? extractNamedObjectLiteralExport(sourceFile, 'metadata')\n const resolvedPath = resolveApiPathFromMetadata(metadata, routePath)\n const exportedMethods = detectExportedHttpMethods(sourceFile)\n if (exportedMethods.length === 0) continue\n const metadataLiteral = buildApiMetadataLiteral(metadata)\n const hasOpenApi = await moduleHasExport(sourceFile, 'openApi')\n const docsPart = hasOpenApi ? `, docs: ((${importName} as any).openApi as any)` : ''\n eagerImports.push(buildImportStatement(`* as ${importName}`, importPath))\n eagerApis.push(`{ path: ((${importName} as any).metadata?.path ?? ${toLiteral(routePath)}), metadata: (${importName} as any).metadata, handlers: ${importName} as any${docsPart} }`)\n runtimeApis.push(`{ path: ${toLiteral(resolvedPath)}, metadata: ${metadataLiteral}, handlers: { ${exportedMethods.map((entryMethod) => `${entryMethod}: async (req: Request, ctx?: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; return (mod as any).${entryMethod}(req, ctx) }`).join(', ')} } }`)\n manifestApis.push(`{ moduleId: ${toLiteral(modId)}, kind: ${toLiteral('route-file')}, path: ${toLiteral(resolvedPath)}, methods: [${exportedMethods.map((entryMethod) => toLiteral(entryMethod)).join(', ')}], load: async () => ${buildDynamicImportExpression(importPath)} }`)\n }\n\n // Legacy per-method\n const methods: HttpMethod[] = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE']\n for (const method of methods) {\n const methodDirSegment = path.posix.join('api', method.toLowerCase())\n const methodRoots: ModuleRoots = {\n appBase: path.join(roots.appBase, 'api', method.toLowerCase()),\n pkgBase: path.join(roots.pkgBase, 'api', method.toLowerCase()),\n }\n const methodConfig = {\n folder: '',\n include: (name: string) => ['.ts', '.js'].some((extension) => name.endsWith(extension)) && !/\\.(test|spec)\\.[jt]s$/.test(name),\n }\n const apiFiles = scanModuleDir(methodRoots, methodConfig)\n for (const { relPath } of apiFiles) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join(methodDirSegment, relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n\n const segs = relPath.split('/')\n const file = segs.pop()!\n const pathWithoutExt = stripModuleCodeExtension(file)\n const fullSegs = [...segs, pathWithoutExt]\n const routePath = '/' + [modId, ...fullSegs].filter(Boolean).join('/')\n const importName = `H${importIdRef.value++}_${toVar(modId)}_${toVar(method)}_${toVar(fullSegs.join('_'))}`\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n const metaName = `RM${importIdRef.value++}_${toVar(modId)}_${toVar(method)}_${toVar(fullSegs.join('_'))}`\n const sourceFile = resolved.absolutePath\n const sourceModule = await loadModuleExportsFromSource<Record<string, unknown>>(sourceFile)\n const metadata = sourceModule?.metadata ?? extractNamedObjectLiteralExport(sourceFile, 'metadata')\n const resolvedPath = resolveApiPathFromMetadata(metadata, routePath)\n const metadataLiteral = buildApiMetadataLiteral(metadata, method)\n const hasOpenApi = await moduleHasExport(sourceFile, 'openApi')\n const docsPart = hasOpenApi ? `, docs: ((${metaName} as any).openApi as any)` : ''\n eagerImports.push(buildImportStatement(`${importName}, * as ${metaName}`, importPath))\n eagerApis.push(`{ method: ${toLiteral(method)}, path: (${metaName}.metadata?.path ?? ${toLiteral(routePath)}), handler: ${importName}, metadata: ${metaName}.metadata${docsPart} }`)\n runtimeApis.push(`{ method: ${toLiteral(method)}, path: ${toLiteral(resolvedPath)}, handler: async (req: Request, ctx?: any) => { const mod = await ${buildDynamicImportExpression(importPath)}; const handler = ((mod as any).default ?? (mod as any).${method} ?? (mod as any).handler) as any; return handler(req, ctx) }, metadata: ${metadataLiteral} }`)\n manifestApis.push(`{ moduleId: ${toLiteral(modId)}, kind: ${toLiteral('legacy')}, method: ${toLiteral(method)}, path: ${toLiteral(resolvedPath)}, methods: [${toLiteral(method)}], load: async () => ${buildDynamicImportExpression(importPath)} }`)\n }\n }\n\n return {\n eagerApis,\n runtimeApis,\n manifestApis,\n }\n}\n\nasync function processSubscribers(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<string[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.subscribers)\n const subscribers: string[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('subscribers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n const sid = [modId, ...segs, name].filter(Boolean).join(':')\n const sourceFile = resolved.absolutePath\n const metadata = await loadSubscriberMetadata(sourceFile)\n subscribers.push(\n `{ id: ${toLiteral(metadata?.id ?? sid)}, event: ${toLiteral(metadata?.event ?? '')}, persistent: ${metadata?.persistent === undefined ? 'undefined' : toLiteral(metadata.persistent)}, sync: ${metadata?.sync === undefined ? 'undefined' : toLiteral(metadata.sync)}, priority: ${metadata?.priority === undefined ? 'undefined' : toLiteral(metadata.priority)}, handler: createLazyModuleSubscriber(() => ${buildDynamicImportExpression(importPath)}, ${toLiteral(metadata?.id ?? sid)}) }`\n )\n }\n return subscribers\n}\n\nasync function processWorkers(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<string[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.workers)\n const workers: string[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('workers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n const sourceFile = resolved.absolutePath\n const metadata = await loadWorkerMetadata(sourceFile)\n if (!metadata?.queue) continue\n const wid = [modId, 'workers', ...segs, name].filter(Boolean).join(':')\n workers.push(\n `{ id: ${toLiteral(metadata.id ?? wid)}, queue: ${toLiteral(metadata.queue)}, concurrency: ${toLiteral(metadata.concurrency ?? 1)}, handler: createLazyModuleWorker(() => ${buildDynamicImportExpression(importPath)}, ${toLiteral(metadata.id ?? wid)}) }`\n )\n }\n return workers\n}\n\nfunction processTranslations(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n imports: string[]\n extraImports?: string[]\n}): string[] {\n const { roots, modId, appImportBase, pkgImportBase, imports, extraImports } = options\n const i18nApp = path.join(roots.appBase, 'i18n')\n const pkgI18nBase = resolveStandaloneSourceMirrorBase(roots.pkgBase) ?? roots.pkgBase\n const i18nCore = path.join(pkgI18nBase, 'i18n')\n const locales = new Set<string>()\n if (fs.existsSync(i18nCore))\n for (const e of fs.readdirSync(i18nCore, { withFileTypes: true }))\n if (e.isFile() && e.name.endsWith('.json')) locales.add(e.name.replace(/\\.json$/, ''))\n if (fs.existsSync(i18nApp))\n for (const e of fs.readdirSync(i18nApp, { withFileTypes: true }))\n if (e.isFile() && e.name.endsWith('.json')) locales.add(e.name.replace(/\\.json$/, ''))\n const translations: string[] = []\n for (const locale of locales) {\n const coreHas = fs.existsSync(path.join(i18nCore, `${locale}.json`))\n const appHas = fs.existsSync(path.join(i18nApp, `${locale}.json`))\n if (coreHas && appHas) {\n const cName = `T_${toVar(modId)}_${toVar(locale)}_C`\n const aName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n imports.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n translations.push(\n `'${locale}': { ...( ${cName} as unknown as Record<string,string> ), ...( ${aName} as unknown as Record<string,string> ) }`\n )\n } else if (appHas) {\n const aName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(aName, `${appImportBase}/i18n/${locale}.json`))\n translations.push(`'${locale}': ${aName} as unknown as Record<string,string>`)\n } else if (coreHas) {\n const cName = `T_${toVar(modId)}_${toVar(locale)}_C`\n imports.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n extraImports?.push(buildImportStatement(cName, `${pkgImportBase}/i18n/${locale}.json`))\n translations.push(`'${locale}': ${cName} as unknown as Record<string,string>`)\n }\n }\n return translations\n}\n\n/**\n * Resolves a convention file and pushes its import + config entry to standalone arrays.\n * Used for files that produce their own generated output (notifications, AI tools, events, analytics, enrichers, etc.).\n *\n * @returns The generated import name, or null if the file was not found.\n */\nfunction processStandaloneConfig(options: StandaloneConfigOptions): string | null {\n const {\n roots,\n imps,\n modId,\n relativePath,\n prefix,\n importIdRef,\n standaloneImports,\n standaloneEntries,\n writeConfig,\n standaloneConfigs,\n configExpr,\n sharedImports,\n } = options\n const resolved = resolveModuleFile(roots, imps, relativePath)\n if (!resolved) return null\n const importName = `${prefix}_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n if (standaloneEntries && writeConfig) {\n const importSpec = {\n namespaceImport: importName,\n moduleSpecifier: importPath,\n }\n ;(standaloneImports as Array<{ namespaceImport: string; moduleSpecifier: string }>).push(importSpec)\n if (sharedImports) {\n ;(sharedImports as Array<{ namespaceImport: string; moduleSpecifier: string }>).push(importSpec)\n }\n standaloneEntries.push(writeConfig({ importName, moduleId: modId }))\n return importName\n }\n\n if (!standaloneConfigs || !configExpr) {\n throw new Error(`Invalid standalone generator configuration for ${relativePath}`)\n }\n\n const importStmt = buildImportStatement(`* as ${importName}`, importPath)\n ;(standaloneImports as string[]).push(importStmt)\n if (sharedImports) (sharedImports as string[]).push(importStmt)\n standaloneConfigs.push(configExpr(importName, modId))\n return importName\n}\n\nfunction namespaceLookup(importName: string, memberName: string): WriterFunction {\n return elementAccess(\n asExpression(identifier(importName), 'Record<string, unknown>'),\n memberName,\n )\n}\n\nfunction buildModuleCustomFieldSetsValue(options: {\n fieldsImportName?: string | null\n customEntitiesImportName?: string | null\n moduleId: string\n}): WriterFunction {\n const parts: WriterFunction[] = []\n\n if (options.fieldsImportName) {\n parts.push(\n spreadExpression(\n namespaceFallback({\n importName: options.fieldsImportName,\n members: ['default', 'fieldSets'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n ),\n )\n }\n\n if (options.customEntitiesImportName) {\n const entities = namespaceFallback({\n importName: options.customEntitiesImportName,\n members: ['default', 'entities'],\n fallback: emptyArray(),\n castType: 'any[]',\n })\n\n const mappedEntities = methodCall(\n methodCall(entities, 'filter', [\n arrowFunction({\n parameters: ['e'],\n body: logicalAnd([\n callExpression(propertyAccess(identifier('Array'), 'isArray'), [\n propertyAccess(identifier('e'), 'fields'),\n ]),\n propertyAccess(propertyAccess(identifier('e'), 'fields'), 'length'),\n ]),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['e'],\n body: parenthesized(\n objectLiteral([\n { name: 'entity', value: propertyAccess(identifier('e'), 'id') },\n { name: 'fields', value: propertyAccess(identifier('e'), 'fields') },\n { name: 'source', value: options.moduleId },\n ]),\n ),\n }),\n ],\n )\n\n parts.push(spreadExpression(mappedEntities))\n }\n\n return arrayLiteral(parts, writeValue)\n}\n\nfunction buildModuleDashboardWidgetsValue(entries: DashboardWidgetEntry[]): WriterFunction {\n return arrayLiteral(\n entries.map((entry) =>\n objectLiteral([\n { name: 'moduleId', value: entry.moduleId },\n { name: 'key', value: entry.key },\n { name: 'source', value: entry.source },\n {\n name: 'loader',\n value: arrowFunction({\n body: methodCall(importExpression(entry.importPath), 'then', [\n arrowFunction({\n parameters: ['mod'],\n body: nullishCoalesce([\n propertyAccess(identifier('mod'), 'default'),\n identifier('mod'),\n ]),\n }),\n ]),\n }),\n },\n ]),\n ),\n writeValue,\n )\n}\n\nfunction buildModuleIntegrationListValue(\n importName: string,\n pluralMember: string,\n singularMember: string,\n castType: string,\n): WriterFunction {\n const plural = namespaceLookup(importName, pluralMember)\n const singular = namespaceLookup(importName, singularMember)\n\n return nullishCoalesce([\n asExpression(plural, castType),\n asExpression(\n parenthesized(\n conditionalExpression(\n binaryExpression(singular, '!=', null),\n arrayLiteral([singular], writeValue),\n emptyArray(),\n ),\n ),\n castType,\n ),\n ])\n}\n\nfunction buildModulesInfoExpression(): WriterFunction {\n return methodCall(identifier('modules'), 'map', [\n arrowFunction({\n parameters: ['m'],\n body: parenthesized(\n objectLiteral([\n { name: 'id', value: propertyAccess(identifier('m'), 'id') },\n {\n kind: 'spread',\n value: logicalOr([\n propertyAccess(identifier('m'), 'info'),\n emptyObject(),\n ]),\n },\n ]),\n ),\n }),\n ])\n}\n\nfunction renderAstModuleRegistryFile(options: {\n fileName: string\n generator: string\n imports: string[]\n moduleEntries: WriterFunction[]\n includeCreateElementImport?: boolean\n}): string {\n const sourceFile = createGeneratedSourceFile(options.fileName)\n addAutoGeneratedComment(sourceFile, options.generator)\n\n if (options.includeCreateElementImport) {\n addImportSpec(sourceFile, {\n moduleSpecifier: 'react',\n namedImports: [{ name: 'createElement' }],\n })\n }\n addImportSpec(sourceFile, {\n moduleSpecifier: '@open-mercato/shared/modules/registry',\n namedImports: [\n { name: 'createLazyModuleSubscriber' },\n { name: 'createLazyModuleWorker' },\n { name: 'Module', isTypeOnly: true },\n ],\n })\n addImportStatements(sourceFile, options.imports)\n\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'modules',\n type: 'Module[]',\n initializer: arrayLiteral(options.moduleEntries, writeValue),\n },\n ],\n })\n sourceFile.addExportAssignment({\n isExportEquals: false,\n expression: 'modules',\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'modulesInfo',\n initializer: buildModulesInfoExpression(),\n },\n ],\n })\n\n return getSourceText(sourceFile)\n}\n\nfunction renderAstLegacyAliasFile(options: {\n fileName: string\n exportName: string\n exportType: string\n sourceFileName: string\n initializer: WriterFunction\n}): string {\n const sourceFile = createGeneratedSourceFile(options.fileName)\n addAutoGeneratedComment(sourceFile, 'registry')\n\n addImportSpec(sourceFile, {\n moduleSpecifier: '@open-mercato/shared/modules/registry',\n namedImports: [{ name: 'Module', isTypeOnly: true }],\n })\n addImportSpec(sourceFile, {\n moduleSpecifier: `./${options.sourceFileName.replace(/\\.ts$/, '')}`,\n namedImports: [{ name: 'modules' }],\n })\n\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: options.exportName,\n type: options.exportType,\n initializer: options.initializer,\n },\n ],\n })\n\n return getSourceText(sourceFile)\n}\n\nfunction buildRuntimeRouteComponent(importPath: string): WriterFunction {\n return arrowFunction({\n async: true,\n parameters: ['props: any'],\n body: block((writer) => {\n writeStatements(writer, [\n variableStatement({\n name: 'mod',\n initializer: awaitExpression(importExpression(importPath)),\n }),\n variableStatement({\n name: 'Component',\n type: 'any',\n initializer: asExpression(\n nullishCoalesce([\n propertyAccess(identifier('mod'), 'default'),\n identifier('mod'),\n ]),\n 'any',\n ),\n }),\n returnStatement(\n callExpression(identifier('createElement'), [\n identifier('Component'),\n identifier('props'),\n ]),\n ),\n ])\n }),\n })\n}\n\nfunction buildPageRouteEntries(metaExpr: WriterFunction, routePath: string): GeneratedObjectEntry[] {\n const meta = parenthesized(metaExpr)\n return [\n { name: 'pattern', value: routePath || '/' },\n { name: 'requireAuth', value: optionalPropertyAccess(meta, 'requireAuth') },\n { name: 'requireRoles', value: optionalPropertyAccess(meta, 'requireRoles') },\n { name: 'requireFeatures', value: optionalPropertyAccess(meta, 'requireFeatures') },\n { name: 'requireCustomerAuth', value: optionalPropertyAccess(meta, 'requireCustomerAuth') },\n { name: 'requireCustomerFeatures', value: optionalPropertyAccess(meta, 'requireCustomerFeatures') },\n {\n name: 'title',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageTitle'),\n optionalPropertyAccess(meta, 'title'),\n ]),\n },\n {\n name: 'titleKey',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageTitleKey'),\n optionalPropertyAccess(meta, 'titleKey'),\n ]),\n },\n {\n name: 'group',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageGroup'),\n optionalPropertyAccess(meta, 'group'),\n ]),\n },\n {\n name: 'groupKey',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageGroupKey'),\n optionalPropertyAccess(meta, 'groupKey'),\n ]),\n },\n { name: 'icon', value: optionalPropertyAccess(meta, 'icon') },\n {\n name: 'order',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pageOrder'),\n optionalPropertyAccess(meta, 'order'),\n ]),\n },\n {\n name: 'priority',\n value: nullishCoalesce([\n optionalPropertyAccess(meta, 'pagePriority'),\n optionalPropertyAccess(meta, 'priority'),\n ]),\n },\n { name: 'navHidden', value: optionalPropertyAccess(meta, 'navHidden') },\n { name: 'visible', value: optionalPropertyAccess(meta, 'visible') },\n { name: 'enabled', value: optionalPropertyAccess(meta, 'enabled') },\n { name: 'breadcrumb', value: optionalPropertyAccess(meta, 'breadcrumb') },\n { name: 'pageContext', value: optionalPropertyAccess(meta, 'pageContext') },\n { name: 'placement', value: optionalPropertyAccess(meta, 'placement') },\n ]\n}\n\nasync function processPageFilesAst(options: {\n files: Array<{ relPath: string; fromApp: boolean }>\n type: 'frontend' | 'backend'\n modId: string\n appDir: string\n pkgDir: string\n appImportBase: string\n pkgImportBase: string\n imports: string[]\n importIdRef: { value: number }\n}): Promise<WriterFunction[]> {\n const {\n files,\n type,\n modId,\n appDir,\n pkgDir,\n appImportBase,\n pkgImportBase,\n imports,\n importIdRef,\n } = options\n const routes: WriterFunction[] = []\n const metaPrefix = type === 'frontend' ? 'MRuntime' : 'BMRuntime'\n\n const addRoute = (params: {\n importPath: string\n routePath: string\n metaExpr: WriterFunction\n }) => {\n routes.push(\n objectLiteral([\n ...buildPageRouteEntries(params.metaExpr, params.routePath),\n {\n name: 'Component',\n value: buildRuntimeRouteComponent(params.importPath),\n },\n ]),\n )\n }\n\n for (const { relPath, fromApp } of files.filter(({ relPath: filePath }) => isModulePageFile(path.basename(filePath)))) {\n const segs = relPath.split('/')\n const pageFile = segs.pop()!\n const pageBaseName = stripModuleCodeExtension(pageFile)\n const sub = segs.length ? `${segs.join('/')}/${pageBaseName}` : pageBaseName\n const importPath = sanitizeGeneratedModuleSpecifier(`${fromApp ? appImportBase : pkgImportBase}/${type}/${sub}`)\n const routePath = type === 'frontend'\n ? '/' + (segs.join('/') || '')\n : '/backend/' + (segs.join('/') || modId)\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, pageFile)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, ['page.meta', 'meta'])\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${toModuleImportSubpath(metaPath, fromApp ? appDir : pkgDir)}`,\n )\n imports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n continue\n }\n\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(segs.join('_') || 'index')}`\n imports.push(buildImportStatement(`* as ${metaImportName}`, importPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n }\n\n for (const { relPath, fromApp } of files.filter(({ relPath: filePath }) => !isModulePageFile(path.basename(filePath)))) {\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const routeSegs = [...segs, name].filter(Boolean)\n const importPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, name].join('/')}`,\n )\n const routePath = type === 'frontend'\n ? '/' + (routeSegs.join('/') || '')\n : '/backend/' + (segs[0] === modId\n ? [...segs, name].filter(Boolean).join('/')\n : [modId, ...segs, name].filter(Boolean).join('/'))\n const moduleBaseDir = path.join(fromApp ? appDir : pkgDir, ...segs)\n const sourceFile = findExistingModuleFile(moduleBaseDir, file)\n if (!sourceFile || !hasDefaultExport(sourceFile)) continue\n\n const metaPath = findExistingModuleFileByBaseNames(moduleBaseDir, [`${name}.meta`, 'meta'])\n if (metaPath) {\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n const metaBase = path.basename(metaPath)\n const metaImportSub = stripModuleCodeExtension(metaBase) === 'meta' ? 'meta' : `${name}.meta`\n const metaImportPath = sanitizeGeneratedModuleSpecifier(\n `${fromApp ? appImportBase : pkgImportBase}/${type}/${[...segs, metaImportSub].join('/')}`,\n )\n imports.push(buildImportStatement(`* as ${metaImportName}`, metaImportPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n continue\n }\n\n const metaImportName = `${metaPrefix}${importIdRef.value++}_${toVar(modId)}_${toVar(routeSegs.join('_') || 'index')}`\n imports.push(buildImportStatement(`* as ${metaImportName}`, importPath))\n addRoute({\n importPath,\n routePath,\n metaExpr: asExpression(\n propertyAccess(asExpression(identifier(metaImportName), 'any'), 'metadata'),\n 'any',\n ),\n })\n }\n\n return routes\n}\n\nasync function processSubscribersAst(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<WriterFunction[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.subscribers)\n const subscribers: WriterFunction[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('subscribers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const sid = [modId, ...segs, name].filter(Boolean).join(':')\n const metadata = await loadSubscriberMetadata(resolved.absolutePath)\n const subscriberId = metadata?.id ?? sid\n subscribers.push(\n objectLiteral([\n { name: 'id', value: subscriberId },\n { name: 'event', value: metadata?.event ?? '' },\n { name: 'persistent', value: metadata?.persistent },\n { name: 'sync', value: metadata?.sync },\n { name: 'priority', value: metadata?.priority },\n {\n name: 'handler',\n value: callExpression(identifier('createLazyModuleSubscriber'), [\n arrowFunction({\n body: importExpression(resolved.importPath),\n }),\n subscriberId,\n ]),\n },\n ]),\n )\n }\n return subscribers\n}\n\nasync function processWorkersAst(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n}): Promise<WriterFunction[]> {\n const { roots, modId, appImportBase, pkgImportBase } = options\n const files = scanModuleDir(roots, SCAN_CONFIGS.workers)\n const workers: WriterFunction[] = []\n for (const { relPath } of files) {\n const resolved = resolveModuleFile(\n roots,\n { appBase: appImportBase, pkgBase: pkgImportBase },\n path.posix.join('workers', relPath.replace(/\\\\/g, '/')),\n )\n if (!resolved) continue\n const segs = relPath.split('/')\n const file = segs.pop()!\n const name = stripModuleCodeExtension(file)\n const metadata = await loadWorkerMetadata(resolved.absolutePath)\n if (!metadata?.queue) continue\n const workerId = metadata.id ?? [modId, 'workers', ...segs, name].filter(Boolean).join(':')\n workers.push(\n objectLiteral([\n { name: 'id', value: workerId },\n { name: 'queue', value: metadata.queue },\n { name: 'concurrency', value: metadata.concurrency ?? 1 },\n {\n name: 'handler',\n value: callExpression(identifier('createLazyModuleWorker'), [\n arrowFunction({\n body: importExpression(resolved.importPath),\n }),\n workerId,\n ]),\n },\n ]),\n )\n }\n return workers\n}\n\nfunction processTranslationsAst(options: {\n roots: ModuleRoots\n modId: string\n appImportBase: string\n pkgImportBase: string\n imports: string[]\n}): GeneratedObjectEntry[] {\n const { roots, modId, appImportBase, pkgImportBase, imports } = options\n const i18nApp = path.join(roots.appBase, 'i18n')\n const pkgI18nBase = resolveStandaloneSourceMirrorBase(roots.pkgBase) ?? roots.pkgBase\n const i18nCore = path.join(pkgI18nBase, 'i18n')\n const locales = new Set<string>()\n\n if (fs.existsSync(i18nCore)) {\n for (const entry of fs.readdirSync(i18nCore, { withFileTypes: true })) {\n if (entry.isFile() && entry.name.endsWith('.json')) {\n locales.add(entry.name.replace(/\\.json$/, ''))\n }\n }\n }\n\n if (fs.existsSync(i18nApp)) {\n for (const entry of fs.readdirSync(i18nApp, { withFileTypes: true })) {\n if (entry.isFile() && entry.name.endsWith('.json')) {\n locales.add(entry.name.replace(/\\.json$/, ''))\n }\n }\n }\n\n const translations: GeneratedObjectEntry[] = []\n\n for (const locale of locales) {\n const coreHas = fs.existsSync(path.join(i18nCore, `${locale}.json`))\n const appHas = fs.existsSync(path.join(i18nApp, `${locale}.json`))\n\n if (coreHas && appHas) {\n const coreName = `T_${toVar(modId)}_${toVar(locale)}_C`\n const appName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(coreName, `${pkgImportBase}/i18n/${locale}.json`))\n imports.push(buildImportStatement(appName, `${appImportBase}/i18n/${locale}.json`))\n translations.push({\n name: JSON.stringify(locale),\n value: objectLiteral([\n { kind: 'spread', value: asExpression(identifier(coreName), 'unknown as Record<string, string>') },\n { kind: 'spread', value: asExpression(identifier(appName), 'unknown as Record<string, string>') },\n ]),\n })\n continue\n }\n\n if (appHas) {\n const appName = `T_${toVar(modId)}_${toVar(locale)}_A`\n imports.push(buildImportStatement(appName, `${appImportBase}/i18n/${locale}.json`))\n translations.push({\n name: JSON.stringify(locale),\n value: asExpression(identifier(appName), 'unknown as Record<string, string>'),\n })\n continue\n }\n\n if (coreHas) {\n const coreName = `T_${toVar(modId)}_${toVar(locale)}_C`\n imports.push(buildImportStatement(coreName, `${pkgImportBase}/i18n/${locale}.json`))\n translations.push({\n name: JSON.stringify(locale),\n value: asExpression(identifier(coreName), 'unknown as Record<string, string>'),\n })\n }\n }\n\n return translations\n}\n\nfunction resolveConventionFile(\n roots: ModuleRoots,\n imps: ModuleImports,\n relativePath: string,\n prefix: string,\n modId: string,\n importIdRef: { value: number },\n imports: string[],\n extraImports?: string[],\n importStyle: 'namespace' | 'default' = 'namespace'\n): { importName: string; importPath: string; fromApp: boolean } | null {\n const resolved = resolveModuleFile(roots, imps, relativePath)\n if (!resolved) return null\n const importName = `${prefix}_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(resolved.importPath)\n if (importStyle === 'default') {\n imports.push(buildImportStatement(importName, importPath))\n extraImports?.push(buildImportStatement(importName, importPath))\n } else {\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n extraImports?.push(buildImportStatement(`* as ${importName}`, importPath))\n }\n return { importName, importPath, fromApp: resolved.fromApp }\n}\n\nexport async function generateModuleRegistry(options: ModuleRegistryOptions): Promise<GeneratorResult> {\n const { resolver, quiet = false } = options\n const result = createGeneratorResult()\n\n const outputDir = resolver.getOutputDir()\n const outFile = path.join(outputDir, 'modules.generated.ts')\n const checksumFile = path.join(outputDir, 'modules.generated.checksum')\n const runtimeOutFile = path.join(outputDir, 'modules.runtime.generated.ts')\n const runtimeChecksumFile = path.join(outputDir, 'modules.runtime.generated.checksum')\n const frontendRoutesOutFile = path.join(outputDir, 'frontend-routes.generated.ts')\n const frontendRoutesChecksumFile = path.join(outputDir, 'frontend-routes.generated.checksum')\n const backendRoutesOutFile = path.join(outputDir, 'backend-routes.generated.ts')\n const backendRoutesChecksumFile = path.join(outputDir, 'backend-routes.generated.checksum')\n const apiRoutesOutFile = path.join(outputDir, 'api-routes.generated.ts')\n const apiRoutesChecksumFile = path.join(outputDir, 'api-routes.generated.checksum')\n const bootstrapRegsOutFile = path.join(outputDir, 'bootstrap-registrations.generated.ts')\n const bootstrapRegsChecksumFile = path.join(outputDir, 'bootstrap-registrations.generated.checksum')\n const legacySubscribersOutFile = path.join(outputDir, 'subscribers.generated.ts')\n const legacySubscribersChecksumFile = path.join(outputDir, 'subscribers.generated.checksum')\n\n const enabled = resolver.loadEnabledModules()\n const extensions = loadGeneratorExtensions()\n\n // Pre-pass: collect generator plugins from each enabled module's generators.ts\n const pluginRegistry = new Map<string, import('@open-mercato/shared/modules/generators').GeneratorPlugin>()\n const pluginState = new Map<string, { imports: string[]; configs: string[] }>()\n for (const entry of enabled) {\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n const isAppMod = entry.from === '@app'\n const appImportBase = isAppMod ? `../../src/modules/${entry.id}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n const resolved = resolveModuleFile(roots, imps, 'generators.ts')\n if (!resolved) continue\n try {\n const pluginMod = await import(buildCacheBustedSourceImportUrl(resolved.absolutePath))\n const plugins: import('@open-mercato/shared/modules/generators').GeneratorPlugin[] =\n pluginMod.generatorPlugins ?? pluginMod.default ?? []\n for (const plugin of plugins) {\n if (!pluginRegistry.has(plugin.id)) {\n pluginRegistry.set(plugin.id, plugin)\n pluginState.set(plugin.id, { imports: [], configs: [] })\n }\n }\n } catch {}\n }\n\n const imports: string[] = []\n const runtimeImports: string[] = []\n const frontendRouteManifestImports: string[] = []\n const backendRouteManifestImports: string[] = []\n const moduleDecls: string[] = []\n const runtimeModuleDecls: string[] = []\n const frontendRouteManifestDecls: string[] = []\n const backendRouteManifestDecls: string[] = []\n const apiRouteManifestDecls: string[] = []\n // Mutable ref so extracted helper functions can increment the shared counter\n const importIdRef = { value: 0 }\n const trackedRoots = new Set<string>()\n const requiresByModule = new Map<string, string[]>()\n\n // UMES conflict detection: collect file paths during module processing\n const umesConflictSources: Array<{\n moduleId: string\n componentOverridesPath?: string\n interceptorsPath?: string\n aclPath?: string\n }> = []\n\n for (const entry of enabled) {\n const modId = entry.id\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n trackedRoots.add(roots.appBase)\n trackedRoots.add(roots.pkgBase)\n\n const isAppModule = entry.from === '@app'\n const appImportBase = isAppModule ? `../../src/modules/${modId}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n\n const frontendRoutes: string[] = []\n const backendRoutes: string[] = []\n const apis: string[] = []\n const runtimeFrontendRoutes: string[] = []\n const runtimeBackendRoutes: string[] = []\n const runtimeApis: string[] = []\n let cliImportName: string | null = null\n const translations: string[] = []\n const subscribers: string[] = []\n const workers: string[] = []\n let infoImportName: string | null = null\n let extensionsImportName: string | null = null\n let fieldsImportName: string | null = null\n let featuresImportName: string | null = null\n let customEntitiesImportName: string | null = null\n let customFieldSetsExpr: string = '[]'\n const dashboardWidgets: string[] = []\n let setupImportName: string | null = null\n let encryptionImportName: string | null = null\n let integrationImportName: string | null = null\n\n // === Processing order MUST match original import ID sequence ===\n\n // 1. Module metadata: index.ts (overrideable)\n const indexResolved = resolveModuleFile(roots, imps, 'index.ts')\n if (indexResolved) {\n infoImportName = `I${importIdRef.value++}_${toVar(modId)}`\n const importPath = sanitizeGeneratedModuleSpecifier(indexResolved.importPath)\n imports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(indexResolved.absolutePath)\n const reqs: string[] | undefined =\n mod?.metadata && Array.isArray(mod.metadata.requires) ? mod.metadata.requires : undefined\n if (reqs && reqs.length) requiresByModule.set(modId, reqs)\n } catch {}\n }\n\n // 2. Pages: frontend\n {\n const feApp = path.join(roots.appBase, 'frontend')\n const fePkg = path.join(roots.pkgBase, 'frontend')\n const feFiles = scanModuleDir(roots, SCAN_CONFIGS.frontendPages)\n if (feFiles.length) {\n const generatedFrontendRoutes = await processPageFiles({\n files: feFiles,\n type: 'frontend',\n modId,\n appDir: feApp,\n pkgDir: fePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n eagerImports: imports,\n runtimeImports,\n manifestImports: frontendRouteManifestImports,\n importIdRef,\n })\n frontendRoutes.push(...generatedFrontendRoutes.eagerRoutes)\n runtimeFrontendRoutes.push(...generatedFrontendRoutes.runtimeRoutes)\n frontendRouteManifestDecls.push(...generatedFrontendRoutes.manifestRoutes)\n }\n }\n\n // 3. Entity extensions: data/extensions.ts\n {\n const ext = resolveConventionFile(roots, imps, 'data/extensions.ts', 'X', modId, importIdRef, imports, runtimeImports)\n if (ext) extensionsImportName = ext.importName\n }\n\n // 4. RBAC: acl.ts\n {\n const aclResolved = resolveModuleFile(roots, imps, 'acl.ts')\n if (aclResolved) {\n const importName = `ACL_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(aclResolved.importPath)\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n runtimeImports.push(buildImportStatement(`* as ${importName}`, importPath))\n featuresImportName = importName\n }\n }\n\n // 5. Custom entities: ce.ts\n {\n const ce = resolveConventionFile(roots, imps, 'ce.ts', 'CE', modId, importIdRef, imports, runtimeImports)\n if (ce) customEntitiesImportName = ce.importName\n }\n\n const extensionContext: ModuleScanContext = {\n moduleId: modId,\n roots,\n imps,\n importIdRef,\n sharedImports: imports,\n resolveModuleFile,\n resolveFirstModuleFile,\n processStandaloneConfig,\n sanitizeGeneratedModuleSpecifier,\n }\n for (const extension of extensions) {\n extension.scanModule(extensionContext)\n }\n\n // Track file paths for UMES conflict detection\n {\n const compOverridesFile = resolveModuleFile(roots, imps, 'widgets/components.ts')\n const interceptorsFile = resolveModuleFile(roots, imps, 'api/interceptors.ts')\n const aclFile = resolveModuleFile(roots, imps, 'acl.ts')\n umesConflictSources.push({\n moduleId: modId,\n componentOverridesPath: compOverridesFile?.absolutePath,\n interceptorsPath: interceptorsFile?.absolutePath,\n aclPath: aclFile?.absolutePath,\n })\n }\n\n // Generator plugins: process each registered plugin's convention file\n for (const plugin of pluginRegistry.values()) {\n processStandaloneConfig({\n roots, imps, modId, importIdRef,\n relativePath: plugin.conventionFile,\n prefix: plugin.importPrefix,\n standaloneImports: pluginState.get(plugin.id)!.imports,\n standaloneConfigs: pluginState.get(plugin.id)!.configs,\n configExpr: plugin.configExpr,\n })\n }\n\n // 11. Setup: setup.ts\n {\n const setup = resolveConventionFile(roots, imps, 'setup.ts', 'SETUP', modId, importIdRef, imports, runtimeImports)\n if (setup) setupImportName = setup.importName\n }\n\n // 11a. Encryption defaults: encryption.ts\n {\n const encryption = resolveConventionFile(roots, imps, 'encryption.ts', 'ENCRYPTION', modId, importIdRef, imports, runtimeImports)\n if (encryption) encryptionImportName = encryption.importName\n }\n\n // 11b. Integration manifest: integration.ts\n {\n const resolved = resolveModuleFile(roots, imps, 'integration.ts')\n if (resolved) {\n const importName = `INTEGRATION_${toVar(modId)}_${importIdRef.value++}`\n imports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n runtimeImports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n integrationImportName = importName\n }\n }\n\n // 12. Custom fields: data/fields.ts\n {\n const fields = resolveConventionFile(roots, imps, 'data/fields.ts', 'F', modId, importIdRef, imports, runtimeImports)\n if (fields) fieldsImportName = fields.importName\n }\n\n // 13. Pages: backend\n {\n const beApp = path.join(roots.appBase, 'backend')\n const bePkg = path.join(roots.pkgBase, 'backend')\n const beFiles = scanModuleDir(roots, SCAN_CONFIGS.backendPages)\n if (beFiles.length) {\n const generatedBackendRoutes = await processPageFiles({\n files: beFiles,\n type: 'backend',\n modId,\n appDir: beApp,\n pkgDir: bePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n eagerImports: imports,\n runtimeImports,\n manifestImports: backendRouteManifestImports,\n importIdRef,\n })\n backendRoutes.push(...generatedBackendRoutes.eagerRoutes)\n runtimeBackendRoutes.push(...generatedBackendRoutes.runtimeRoutes)\n backendRouteManifestDecls.push(...generatedBackendRoutes.manifestRoutes)\n }\n }\n\n // 14. API routes\n {\n const generatedApis = await processApiRoutes({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n eagerImports: imports,\n importIdRef,\n })\n apis.push(...generatedApis.eagerApis)\n runtimeApis.push(...generatedApis.runtimeApis)\n apiRouteManifestDecls.push(...generatedApis.manifestApis)\n }\n\n // 15. CLI\n {\n const cliResolved = resolveModuleFile(roots, imps, 'cli.ts')\n if (cliResolved) {\n const importName = `CLI_${toVar(modId)}`\n imports.push(buildImportStatement(importName, sanitizeGeneratedModuleSpecifier(cliResolved.importPath)))\n cliImportName = importName\n }\n }\n\n // 16. Translations\n translations.push(...processTranslations({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n extraImports: runtimeImports,\n }))\n\n // 17. Subscribers\n subscribers.push(...await processSubscribers({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // 18. Workers\n workers.push(...await processWorkers({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // Build combined customFieldSets expression\n {\n const parts: string[] = []\n if (fieldsImportName)\n parts.push(`(( ${fieldsImportName}.default ?? ${fieldsImportName}.fieldSets) as any) || []`)\n if (customEntitiesImportName)\n parts.push(\n `((( ${customEntitiesImportName}.default ?? ${customEntitiesImportName}.entities) as any) || []).filter((e: any) => Array.isArray(e.fields) && e.fields.length).map((e: any) => ({ entity: e.id, fields: e.fields, source: ${toLiteral(modId)} }))`\n )\n customFieldSetsExpr = parts.length ? `[...${parts.join(', ...')}]` : '[]'\n }\n\n // 19. Dashboard widgets\n {\n const entries = scanDashboardWidgetEntries({\n modId,\n roots,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n })\n for (const entry of entries) {\n dashboardWidgets.push(\n `{ moduleId: ${toLiteral(entry.moduleId)}, key: ${toLiteral(entry.key)}, source: ${toLiteral(entry.source)}, loader: () => ${buildDynamicImportExpression(entry.importPath)}.then((mod) => mod.default ?? mod) }`\n )\n }\n }\n\n moduleDecls.push(`{\n id: ${toLiteral(modId)},\n ${infoImportName ? `info: ${infoImportName}.metadata,` : ''}\n ${frontendRoutes.length ? `frontendRoutes: [${frontendRoutes.join(', ')}],` : ''}\n ${backendRoutes.length ? `backendRoutes: [${backendRoutes.join(', ')}],` : ''}\n ${apis.length ? `apis: [${apis.join(', ')}],` : ''}\n ${cliImportName ? `cli: ${cliImportName},` : ''}\n ${translations.length ? `translations: { ${translations.join(', ')} },` : ''}\n ${subscribers.length ? `subscribers: [${subscribers.join(', ')}],` : ''}\n ${workers.length ? `workers: [${workers.join(', ')}],` : ''}\n ${extensionsImportName ? `entityExtensions: ((${extensionsImportName}.default ?? ${extensionsImportName}.extensions) as import('@open-mercato/shared/modules/entities').EntityExtension[]) || [],` : ''}\n customFieldSets: ${customFieldSetsExpr},\n ${featuresImportName ? `features: ((${featuresImportName}.default ?? ${featuresImportName}.features) as any) || [],` : ''}\n ${customEntitiesImportName ? `customEntities: ((${customEntitiesImportName}.default ?? ${customEntitiesImportName}.entities) as any) || [],` : ''}\n ${dashboardWidgets.length ? `dashboardWidgets: [${dashboardWidgets.join(', ')}],` : ''}\n ${setupImportName ? `setup: (${setupImportName}.default ?? ${setupImportName}.setup) || undefined,` : ''}\n ${encryptionImportName ? `defaultEncryptionMaps: ((${encryptionImportName}.default ?? ${encryptionImportName}.defaultEncryptionMaps) as import('@open-mercato/shared/modules/encryption').ModuleEncryptionMap[]) || [],` : ''}\n ${integrationImportName ? `integrations: (( ${integrationImportName}.integrations ?? (${integrationImportName}.integration ? [${integrationImportName}.integration] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]),` : ''}\n ${integrationImportName ? `bundles: (( ${integrationImportName}.bundles ?? (${integrationImportName}.bundle ? [${integrationImportName}.bundle] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]),` : ''}\n }`)\n runtimeModuleDecls.push(`{\n id: ${toLiteral(modId)},\n ${infoImportName ? `info: ${infoImportName}.metadata,` : ''}\n ${runtimeFrontendRoutes.length ? `frontendRoutes: [${runtimeFrontendRoutes.join(', ')}],` : ''}\n ${runtimeBackendRoutes.length ? `backendRoutes: [${runtimeBackendRoutes.join(', ')}],` : ''}\n ${runtimeApis.length ? `apis: [${runtimeApis.join(', ')}],` : ''}\n ${translations.length ? `translations: { ${translations.join(', ')} },` : ''}\n ${subscribers.length ? `subscribers: [${subscribers.join(', ')}],` : ''}\n ${workers.length ? `workers: [${workers.join(', ')}],` : ''}\n ${extensionsImportName ? `entityExtensions: ((${extensionsImportName}.default ?? ${extensionsImportName}.extensions) as import('@open-mercato/shared/modules/entities').EntityExtension[]) || [],` : ''}\n customFieldSets: ${customFieldSetsExpr},\n ${featuresImportName ? `features: ((${featuresImportName}.default ?? ${featuresImportName}.features) as any) || [],` : ''}\n ${customEntitiesImportName ? `customEntities: ((${customEntitiesImportName}.default ?? ${customEntitiesImportName}.entities) as any) || [],` : ''}\n ${setupImportName ? `setup: (${setupImportName}.default ?? ${setupImportName}.setup) || undefined,` : ''}\n ${encryptionImportName ? `defaultEncryptionMaps: ((${encryptionImportName}.default ?? ${encryptionImportName}.defaultEncryptionMaps) as import('@open-mercato/shared/modules/encryption').ModuleEncryptionMap[]) || [],` : ''}\n ${integrationImportName ? `integrations: (( ${integrationImportName}.integrations ?? (${integrationImportName}.integration ? [${integrationImportName}.integration] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]),` : ''}\n ${integrationImportName ? `bundles: (( ${integrationImportName}.bundles ?? (${integrationImportName}.bundle ? [${integrationImportName}.bundle] : []) ) as import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]),` : ''}\n }`)\n }\n\n // === UMES Conflict Detection ===\n {\n const { detectConflicts } = await import('@open-mercato/shared/lib/umes/conflict-detection')\n const componentOverrideInputs: Array<{ moduleId: string; componentId: string; priority: number }> = []\n const interceptorInputs: Array<{ moduleId: string; id: string; targetRoute: string; methods: string[]; priority: number }> = []\n const declaredFeatures = new Set<string>()\n const gatedExtensions: Array<{ moduleId: string; extensionId: string; features: string[] }> = []\n\n for (const source of umesConflictSources) {\n // Collect declared features from acl.ts\n if (source.aclPath) {\n try {\n const aclMod = await import(buildCacheBustedSourceImportUrl(source.aclPath))\n const features = aclMod.features ?? aclMod.default ?? []\n if (Array.isArray(features)) {\n for (const feat of features) {\n if (typeof feat === 'string') declaredFeatures.add(feat)\n else if (feat?.id) declaredFeatures.add(feat.id)\n }\n }\n } catch {}\n }\n\n // Collect component overrides\n if (source.componentOverridesPath) {\n try {\n const overridesMod = await import(buildCacheBustedSourceImportUrl(source.componentOverridesPath))\n const overrides = overridesMod.componentOverrides ?? overridesMod.default ?? []\n if (Array.isArray(overrides)) {\n for (const override of overrides) {\n const componentId = override?.target?.componentId\n const priority = override?.priority ?? 0\n if (componentId) {\n componentOverrideInputs.push({ moduleId: source.moduleId, componentId, priority })\n }\n const features = override?.features\n if (Array.isArray(features) && features.length > 0) {\n gatedExtensions.push({\n moduleId: source.moduleId,\n extensionId: `component-override:${componentId}`,\n features,\n })\n }\n }\n }\n } catch {}\n }\n\n // Collect interceptors\n if (source.interceptorsPath) {\n try {\n const interceptorsMod = await import(buildCacheBustedSourceImportUrl(source.interceptorsPath))\n const interceptors = interceptorsMod.interceptors ?? interceptorsMod.default ?? []\n if (Array.isArray(interceptors)) {\n for (const interceptor of interceptors) {\n if (interceptor?.id && interceptor?.targetRoute) {\n interceptorInputs.push({\n moduleId: source.moduleId,\n id: interceptor.id,\n targetRoute: interceptor.targetRoute,\n methods: interceptor.methods ?? [],\n priority: interceptor.priority ?? 0,\n })\n }\n const features = interceptor?.features\n if (Array.isArray(features) && features.length > 0) {\n gatedExtensions.push({\n moduleId: source.moduleId,\n extensionId: `interceptor:${interceptor.id}`,\n features,\n })\n }\n }\n }\n } catch {}\n }\n }\n\n const conflictResult = detectConflicts({\n componentOverrides: componentOverrideInputs,\n interceptors: interceptorInputs,\n gatedExtensions,\n declaredFeatures,\n })\n\n for (const warning of conflictResult.warnings) {\n console.warn(`\\x1b[33m[UMES Warning]\\x1b[0m ${warning.message}`)\n }\n for (const error of conflictResult.errors) {\n console.error(`\\x1b[31m[UMES Error]\\x1b[0m ${error.message}`)\n }\n if (conflictResult.errors.length > 0) {\n throw new Error(\n `UMES conflict detection found ${conflictResult.errors.length} error(s). Fix conflicts before proceeding.`\n )\n }\n }\n\n const output = `// AUTO-GENERATED by mercato generate registry\nimport { createLazyModuleSubscriber, createLazyModuleWorker, type Module } from '@open-mercato/shared/modules/registry'\n${imports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const modules: Module[] = [\n ${moduleDecls.join(',\\n ')}\n]\nexport const modulesInfo = modules.map(m => ({ id: m.id, ...(m.info || {}) }))\nexport default modules\n`\n const runtimeOutput = `// AUTO-GENERATED by mercato generate registry\nimport { createElement } from 'react'\nimport { createLazyModuleSubscriber, createLazyModuleWorker, type Module } from '@open-mercato/shared/modules/registry'\n${runtimeImports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const modules: Module[] = [\n ${runtimeModuleDecls.join(',\\n ')}\n]\nexport const modulesInfo = modules.map(m => ({ id: m.id, ...(m.info || {}) }))\nexport default modules\n`\n const frontendRoutesOutput = `// AUTO-GENERATED by mercato generate registry\nimport type { FrontendRouteManifestEntry } from '@open-mercato/shared/modules/registry'\n${frontendRouteManifestImports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const frontendRoutes: FrontendRouteManifestEntry[] = [\n ${frontendRouteManifestDecls.join(',\\n ')}\n]\n\nexport default frontendRoutes\n`\n const backendRoutesOutput = `// AUTO-GENERATED by mercato generate registry\nimport type { BackendRouteManifestEntry } from '@open-mercato/shared/modules/registry'\n${backendRouteManifestImports.map((entry) => serializeGeneratedImport(entry as any)).join('\\n')}\n\nexport const backendRoutes: BackendRouteManifestEntry[] = [\n ${backendRouteManifestDecls.join(',\\n ')}\n]\n\nexport default backendRoutes\n`\n const apiRoutesOutput = `// AUTO-GENERATED by mercato generate registry\nimport type { ApiRouteManifestEntry } from '@open-mercato/shared/modules/registry'\n\nexport const apiRoutes: ApiRouteManifestEntry[] = [\n ${apiRouteManifestDecls.join(',\\n ')}\n]\n\nexport default apiRoutes\n`\n const legacySubscribersOutput = renderAstLegacyAliasFile({\n fileName: 'subscribers.generated.ts',\n exportName: 'moduleSubscribers',\n exportType: \"NonNullable<Module['subscribers']>\",\n sourceFileName: 'modules.runtime.generated.ts',\n initializer: methodCall(identifier('modules'), 'flatMap', [\n arrowFunction({\n parameters: ['module'],\n body: parenthesized(\n nullishCoalesce([\n propertyAccess(identifier('module'), 'subscribers'),\n emptyArray(),\n ]),\n ),\n }),\n ]),\n })\n // Validate module dependencies declared via ModuleInfo.requires\n {\n const enabledIds = new Set(enabled.map((e) => e.id))\n const problems: string[] = []\n for (const [modId, reqs] of requiresByModule.entries()) {\n const missing = reqs.filter((r) => !enabledIds.has(r))\n if (missing.length) {\n problems.push(`- Module \"${modId}\" requires: ${missing.join(', ')}`)\n }\n }\n if (problems.length) {\n console.error('\\nModule dependency check failed:')\n for (const p of problems) console.error(p)\n console.error('\\nFix: Enable required module(s) in src/modules.ts. Example:')\n console.error(\n ' export const enabledModules = [ { id: \\'' +\n Array.from(new Set(requiresByModule.values()).values()).join(\"' }, { id: '\") +\n \"' } ]\"\n )\n process.exit(1)\n }\n }\n\n const structureChecksum = calculateStructureChecksum([\n ...Array.from(trackedRoots),\n ])\n\n writeGeneratedFile({ outFile, checksumFile, content: output, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: runtimeOutFile, checksumFile: runtimeChecksumFile, content: runtimeOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: frontendRoutesOutFile, checksumFile: frontendRoutesChecksumFile, content: frontendRoutesOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: backendRoutesOutFile, checksumFile: backendRoutesChecksumFile, content: backendRoutesOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: apiRoutesOutFile, checksumFile: apiRoutesChecksumFile, content: apiRoutesOutput, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: legacySubscribersOutFile, checksumFile: legacySubscribersChecksumFile, content: legacySubscribersOutput, structureChecksum, result, quiet })\n\n for (const extension of extensions) {\n const outputs = extension.generateOutput()\n for (const [fileName, content] of outputs) {\n writeGeneratedFile({\n outFile: path.join(outputDir, fileName),\n checksumFile: path.join(outputDir, fileName.replace('.ts', '.checksum')),\n content,\n structureChecksum,\n result,\n quiet,\n })\n }\n }\n\n // Generator plugin outputs (registered via modules' generators.ts)\n for (const [pluginId, plugin] of pluginRegistry) {\n const state = pluginState.get(pluginId)!\n const importSection = state.imports.join('\\n')\n const entriesLiteral = state.configs.join(',\\n ')\n const content = plugin.buildOutput({ importSection, entriesLiteral })\n const outFile = path.join(outputDir, plugin.outputFileName)\n const checksumFile = outFile.replace('.ts', '.checksum')\n writeGeneratedFile({ outFile, checksumFile, content, structureChecksum, result, quiet })\n }\n\n // Bootstrap registrations: aggregate all plugin bootstrap-registration hooks into one file.\n // Always written (even when empty) so bootstrap.ts can unconditionally import it.\n {\n const bootstrapPlugins = [...pluginRegistry.values()].filter((p) => p.bootstrapRegistration)\n const allEntryImports: string[] = []\n const allRegImports: string[] = []\n const allCalls: string[] = []\n for (const plugin of bootstrapPlugins) {\n const reg = plugin.bootstrapRegistration!\n const outputBase = plugin.outputFileName.replace('.ts', '')\n allEntryImports.push(buildImportStatement(`{ ${reg.entriesExportName} }`, `./${outputBase}`))\n allRegImports.push(...reg.registrationImports)\n allCalls.push(reg.buildCall(reg.entriesExportName))\n }\n const uniqueImports = [...new Set([...allEntryImports, ...allRegImports])]\n const importSection = uniqueImports.join('\\n')\n const body = allCalls.length ? ` ${allCalls.join('\\n ')}` : ''\n const bootstrapRegsOutput = `// AUTO-GENERATED by mercato generate registry\n${importSection ? `${importSection}\\n` : ''}\nexport function runBootstrapRegistrations(): void {\n${body}\n}\n`\n writeGeneratedFile({ outFile: bootstrapRegsOutFile, checksumFile: bootstrapRegsChecksumFile, content: bootstrapRegsOutput, structureChecksum, result, quiet })\n }\n\n return result\n}\n\nexport async function generateModuleRegistryApp(options: ModuleRegistryOptions): Promise<GeneratorResult> {\n const { resolver, quiet = false } = options\n const result = createGeneratorResult()\n\n const outputDir = resolver.getOutputDir()\n const outFile = path.join(outputDir, 'modules.app.generated.ts')\n const checksumFile = path.join(outputDir, 'modules.app.generated.checksum')\n const legacyOutFile = path.join(outputDir, 'bootstrap-modules.generated.ts')\n const legacyChecksumFile = path.join(outputDir, 'bootstrap-modules.generated.checksum')\n\n const enabled = resolver.loadEnabledModules()\n const imports: string[] = []\n const moduleDecls: WriterFunction[] = []\n const importIdRef = { value: 0 }\n const trackedRoots = new Set<string>()\n const requiresByModule = new Map<string, string[]>()\n let hasRouteComponents = false\n\n for (const entry of enabled) {\n const modId = entry.id\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n trackedRoots.add(roots.appBase)\n trackedRoots.add(roots.pkgBase)\n\n const isAppModule = entry.from === '@app'\n const appImportBase = isAppModule ? `../../src/modules/${modId}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n\n const frontendRoutes: WriterFunction[] = []\n const backendRoutes: WriterFunction[] = []\n const translations: GeneratedObjectEntry[] = []\n const subscribers: WriterFunction[] = []\n const workers: WriterFunction[] = []\n let infoImportName: string | null = null\n let extensionsImportName: string | null = null\n let fieldsImportName: string | null = null\n let featuresImportName: string | null = null\n let customEntitiesImportName: string | null = null\n let dashboardWidgetsValue: WriterFunction = emptyArray()\n let setupImportName: string | null = null\n let encryptionImportName: string | null = null\n let integrationImportName: string | null = null\n\n const indexResolved = resolveModuleFile(roots, imps, 'index.ts')\n if (indexResolved) {\n infoImportName = `I${importIdRef.value++}_${toVar(modId)}`\n const importPath = sanitizeGeneratedModuleSpecifier(indexResolved.importPath)\n imports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(indexResolved.absolutePath)\n const reqs: string[] | undefined =\n mod?.metadata && Array.isArray(mod.metadata.requires) ? mod.metadata.requires : undefined\n if (reqs && reqs.length) requiresByModule.set(modId, reqs)\n } catch {}\n }\n\n {\n const setup = resolveConventionFile(roots, imps, 'setup.ts', 'SETUP', modId, importIdRef, imports)\n if (setup) setupImportName = setup.importName\n }\n\n {\n const encryption = resolveConventionFile(roots, imps, 'encryption.ts', 'ENCRYPTION', modId, importIdRef, imports)\n if (encryption) encryptionImportName = encryption.importName\n }\n\n {\n const resolved = resolveModuleFile(roots, imps, 'integration.ts')\n if (resolved) {\n const importName = `INTEGRATION_${toVar(modId)}_${importIdRef.value++}`\n imports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n integrationImportName = importName\n }\n }\n\n {\n const ext = resolveConventionFile(roots, imps, 'data/extensions.ts', 'X', modId, importIdRef, imports)\n if (ext) extensionsImportName = ext.importName\n }\n\n {\n const aclResolved = resolveModuleFile(roots, imps, 'acl.ts')\n if (aclResolved) {\n const importName = `ACL_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(aclResolved.importPath)\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n featuresImportName = importName\n }\n }\n\n {\n const ce = resolveConventionFile(roots, imps, 'ce.ts', 'CE', modId, importIdRef, imports)\n if (ce) customEntitiesImportName = ce.importName\n }\n\n {\n const fields = resolveConventionFile(roots, imps, 'data/fields.ts', 'F', modId, importIdRef, imports)\n if (fields) fieldsImportName = fields.importName\n }\n\n {\n const feApp = path.join(roots.appBase, 'frontend')\n const fePkg = path.join(roots.pkgBase, 'frontend')\n const feFiles = scanModuleDir(roots, SCAN_CONFIGS.frontendPages)\n if (feFiles.length > 0) {\n frontendRoutes.push(...await processPageFilesAst({\n files: feFiles,\n type: 'frontend',\n modId,\n appDir: feApp,\n pkgDir: fePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n importIdRef,\n }))\n hasRouteComponents = true\n }\n }\n\n {\n const beApp = path.join(roots.appBase, 'backend')\n const bePkg = path.join(roots.pkgBase, 'backend')\n const beFiles = scanModuleDir(roots, SCAN_CONFIGS.backendPages)\n if (beFiles.length > 0) {\n backendRoutes.push(...await processPageFilesAst({\n files: beFiles,\n type: 'backend',\n modId,\n appDir: beApp,\n pkgDir: bePkg,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n importIdRef,\n }))\n hasRouteComponents = true\n }\n }\n\n translations.push(...processTranslationsAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n }))\n\n subscribers.push(...await processSubscribersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n workers.push(...await processWorkersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n {\n const entries = scanDashboardWidgetEntries({\n modId,\n roots,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n })\n dashboardWidgetsValue = buildModuleDashboardWidgetsValue(entries)\n }\n\n const moduleEntries: GeneratedObjectEntry[] = [\n { name: 'id', value: modId },\n { name: 'customFieldSets', value: buildModuleCustomFieldSetsValue({ fieldsImportName, customEntitiesImportName, moduleId: modId }) },\n ]\n\n if (infoImportName) {\n moduleEntries.push({ name: 'info', value: propertyAccess(identifier(infoImportName), 'metadata') })\n }\n if (frontendRoutes.length > 0) {\n moduleEntries.push({ name: 'frontendRoutes', value: arrayLiteral(frontendRoutes, writeValue) })\n }\n if (backendRoutes.length > 0) {\n moduleEntries.push({ name: 'backendRoutes', value: arrayLiteral(backendRoutes, writeValue) })\n }\n if (translations.length > 0) {\n moduleEntries.push({ name: 'translations', value: objectLiteral(translations) })\n }\n if (subscribers.length > 0) {\n moduleEntries.push({ name: 'subscribers', value: arrayLiteral(subscribers, writeValue) })\n }\n if (workers.length > 0) {\n moduleEntries.push({ name: 'workers', value: arrayLiteral(workers, writeValue) })\n }\n if (extensionsImportName) {\n moduleEntries.push({\n name: 'entityExtensions',\n value: namespaceFallback({\n importName: extensionsImportName,\n members: ['default', 'extensions'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (featuresImportName) {\n moduleEntries.push({\n name: 'features',\n value: namespaceFallback({\n importName: featuresImportName,\n members: ['default', 'features'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (customEntitiesImportName) {\n moduleEntries.push({\n name: 'customEntities',\n value: namespaceFallback({\n importName: customEntitiesImportName,\n members: ['default', 'entities'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n moduleEntries.push({ name: 'dashboardWidgets', value: dashboardWidgetsValue })\n if (setupImportName) {\n moduleEntries.push({\n name: 'setup',\n value: namespaceFallback({\n importName: setupImportName,\n members: ['default', 'setup'],\n fallback: identifier('undefined'),\n }),\n })\n }\n if (encryptionImportName) {\n moduleEntries.push({\n name: 'defaultEncryptionMaps',\n value: namespaceFallback({\n importName: encryptionImportName,\n members: ['default', 'defaultEncryptionMaps'],\n fallback: emptyArray(),\n castType: \"Module['defaultEncryptionMaps']\",\n }),\n })\n }\n if (integrationImportName) {\n moduleEntries.push({\n name: 'integrations',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'integrations',\n 'integration',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]\",\n ),\n })\n moduleEntries.push({\n name: 'bundles',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'bundles',\n 'bundle',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]\",\n ),\n })\n }\n\n moduleDecls.push(objectLiteral(moduleEntries))\n }\n\n const output = renderAstModuleRegistryFile({\n fileName: 'modules.app.generated.ts',\n generator: 'registry (app version)',\n imports,\n moduleEntries: moduleDecls,\n includeCreateElementImport: hasRouteComponents,\n })\n const legacyOutput = renderAstLegacyAliasFile({\n fileName: 'bootstrap-modules.generated.ts',\n exportName: 'bootstrapModules',\n exportType: 'Module[]',\n sourceFileName: 'modules.app.generated.ts',\n initializer: identifier('modules'),\n })\n\n {\n const enabledIds = new Set(enabled.map((e) => e.id))\n const problems: string[] = []\n for (const [modId, reqs] of requiresByModule.entries()) {\n const missing = reqs.filter((r) => !enabledIds.has(r))\n if (missing.length) {\n problems.push(`- Module \"${modId}\" requires: ${missing.join(', ')}`)\n }\n }\n if (problems.length) {\n console.error('\\nModule dependency check failed:')\n for (const p of problems) console.error(p)\n console.error('\\nFix: Enable required module(s) in src/modules.ts. Example:')\n console.error(\n ' export const enabledModules = [ { id: \\'' +\n Array.from(new Set(requiresByModule.values()).values()).join(\"' }, { id: '\") +\n \"' } ]\"\n )\n process.exit(1)\n }\n }\n\n const structureChecksum = calculateStructureChecksum(Array.from(trackedRoots))\n writeGeneratedFile({ outFile, checksumFile, content: output, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: legacyOutFile, checksumFile: legacyChecksumFile, content: legacyOutput, structureChecksum, result, quiet })\n\n return result\n}\n\n/**\n * Generate a CLI-specific module registry that excludes Next.js dependent code.\n * This produces modules.cli.generated.ts which can be loaded without Next.js runtime.\n *\n * Includes: module metadata, CLI commands, translations, subscribers, workers, entity extensions,\n * features/ACL, custom entities, vector config, custom fields, dashboard widgets\n * Excludes: frontend routes, backend routes, API handlers, injection widgets\n */\nexport async function generateModuleRegistryCli(options: ModuleRegistryOptions): Promise<GeneratorResult> {\n const { resolver, quiet = false } = options\n const result = createGeneratorResult()\n\n const outputDir = resolver.getOutputDir()\n const outFile = path.join(outputDir, 'modules.cli.generated.ts')\n const checksumFile = path.join(outputDir, 'modules.cli.generated.checksum')\n const legacyOutFile = path.join(outputDir, 'cli-modules.generated.ts')\n const legacyChecksumFile = path.join(outputDir, 'cli-modules.generated.checksum')\n\n const enabled = resolver.loadEnabledModules()\n const imports: string[] = []\n const moduleDecls: WriterFunction[] = []\n // Mutable ref so extracted helper functions can increment the shared counter\n const importIdRef = { value: 0 }\n const trackedRoots = new Set<string>()\n const requiresByModule = new Map<string, string[]>()\n\n for (const entry of enabled) {\n const modId = entry.id\n const roots = resolver.getModulePaths(entry)\n const rawImps = resolver.getModuleImportBase(entry)\n trackedRoots.add(roots.appBase)\n trackedRoots.add(roots.pkgBase)\n\n const isAppModule = entry.from === '@app'\n const appImportBase = isAppModule ? `../../src/modules/${modId}` : rawImps.appBase\n const imps: ModuleImports = { appBase: appImportBase, pkgBase: rawImps.pkgBase }\n\n let cliImportName: string | null = null\n const translations: GeneratedObjectEntry[] = []\n const subscribers: WriterFunction[] = []\n const workers: WriterFunction[] = []\n let infoImportName: string | null = null\n let extensionsImportName: string | null = null\n let fieldsImportName: string | null = null\n let featuresImportName: string | null = null\n let customEntitiesImportName: string | null = null\n let vectorImportName: string | null = null\n let dashboardWidgetsValue: WriterFunction = emptyArray()\n let setupImportName: string | null = null\n let encryptionImportName: string | null = null\n let integrationImportName: string | null = null\n\n // Module metadata: index.ts (overrideable)\n const indexResolved = resolveModuleFile(roots, imps, 'index.ts')\n if (indexResolved) {\n infoImportName = `I${importIdRef.value++}_${toVar(modId)}`\n const importPath = sanitizeGeneratedModuleSpecifier(indexResolved.importPath)\n imports.push(buildImportStatement(`* as ${infoImportName}`, importPath))\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(indexResolved.absolutePath)\n const reqs: string[] | undefined =\n mod?.metadata && Array.isArray(mod.metadata.requires) ? mod.metadata.requires : undefined\n if (reqs && reqs.length) requiresByModule.set(modId, reqs)\n } catch {}\n }\n\n // Module setup configuration: setup.ts\n {\n const setup = resolveConventionFile(roots, imps, 'setup.ts', 'SETUP', modId, importIdRef, imports)\n if (setup) setupImportName = setup.importName\n }\n\n // Module encryption defaults: encryption.ts\n {\n const encryption = resolveConventionFile(roots, imps, 'encryption.ts', 'ENCRYPTION', modId, importIdRef, imports)\n if (encryption) encryptionImportName = encryption.importName\n }\n\n // Integration manifest: integration.ts\n {\n const resolved = resolveModuleFile(roots, imps, 'integration.ts')\n if (resolved) {\n const importName = `INTEGRATION_${toVar(modId)}_${importIdRef.value++}`\n imports.push(buildImportStatement(`* as ${importName}`, resolved.importPath))\n integrationImportName = importName\n }\n }\n\n // Entity extensions: data/extensions.ts\n {\n const ext = resolveConventionFile(roots, imps, 'data/extensions.ts', 'X', modId, importIdRef, imports)\n if (ext) extensionsImportName = ext.importName\n }\n\n // RBAC: acl.ts\n {\n const aclResolved = resolveModuleFile(roots, imps, 'acl.ts')\n if (aclResolved) {\n const importName = `ACL_${toVar(modId)}_${importIdRef.value++}`\n const importPath = sanitizeGeneratedModuleSpecifier(aclResolved.importPath)\n imports.push(buildImportStatement(`* as ${importName}`, importPath))\n featuresImportName = importName\n }\n }\n\n // Custom entities: ce.ts\n {\n const ce = resolveConventionFile(roots, imps, 'ce.ts', 'CE', modId, importIdRef, imports)\n if (ce) customEntitiesImportName = ce.importName\n }\n\n // Vector search configuration: vector.ts\n {\n const vec = resolveConventionFile(roots, imps, 'vector.ts', 'VECTOR', modId, importIdRef, imports)\n if (vec) vectorImportName = vec.importName\n }\n\n // Custom fields: data/fields.ts\n {\n const fields = resolveConventionFile(roots, imps, 'data/fields.ts', 'F', modId, importIdRef, imports)\n if (fields) fieldsImportName = fields.importName\n }\n\n // CLI\n {\n const cliResolved = resolveModuleFile(roots, imps, 'cli.ts')\n if (cliResolved) {\n const importName = `CLI_${toVar(modId)}`\n imports.push(buildImportStatement(importName, sanitizeGeneratedModuleSpecifier(cliResolved.importPath)))\n cliImportName = importName\n }\n }\n\n // Translations\n translations.push(...processTranslationsAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n imports,\n }))\n\n // Subscribers\n subscribers.push(...await processSubscribersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // Workers\n workers.push(...await processWorkersAst({\n roots,\n modId,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n }))\n\n // Dashboard widgets\n {\n const entries = scanDashboardWidgetEntries({\n modId,\n roots,\n appImportBase,\n pkgImportBase: imps.pkgBase,\n })\n dashboardWidgetsValue = buildModuleDashboardWidgetsValue(entries)\n }\n\n const moduleEntries: GeneratedObjectEntry[] = [\n { name: 'id', value: modId },\n { name: 'customFieldSets', value: buildModuleCustomFieldSetsValue({ fieldsImportName, customEntitiesImportName, moduleId: modId }) },\n ]\n\n if (infoImportName) {\n moduleEntries.push({ name: 'info', value: propertyAccess(identifier(infoImportName), 'metadata') })\n }\n if (cliImportName) {\n moduleEntries.push({ name: 'cli', value: identifier(cliImportName) })\n }\n if (translations.length > 0) {\n moduleEntries.push({ name: 'translations', value: objectLiteral(translations) })\n }\n if (subscribers.length > 0) {\n moduleEntries.push({ name: 'subscribers', value: arrayLiteral(subscribers, writeValue) })\n }\n if (workers.length > 0) {\n moduleEntries.push({ name: 'workers', value: arrayLiteral(workers, writeValue) })\n }\n if (extensionsImportName) {\n moduleEntries.push({\n name: 'entityExtensions',\n value: namespaceFallback({\n importName: extensionsImportName,\n members: ['default', 'extensions'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (featuresImportName) {\n moduleEntries.push({\n name: 'features',\n value: namespaceFallback({\n importName: featuresImportName,\n members: ['default', 'features'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n if (customEntitiesImportName) {\n moduleEntries.push({\n name: 'customEntities',\n value: namespaceFallback({\n importName: customEntitiesImportName,\n members: ['default', 'entities'],\n fallback: emptyArray(),\n castType: 'any[]',\n }),\n })\n }\n moduleEntries.push({ name: 'dashboardWidgets', value: dashboardWidgetsValue })\n if (vectorImportName) {\n moduleEntries.push({\n name: 'vector',\n value: namespaceFallback({\n importName: vectorImportName,\n members: ['default', 'vectorConfig', 'config'],\n fallback: identifier('undefined'),\n castType: \"Module['vector']\",\n }),\n })\n }\n if (setupImportName) {\n moduleEntries.push({\n name: 'setup',\n value: namespaceFallback({\n importName: setupImportName,\n members: ['default', 'setup'],\n fallback: identifier('undefined'),\n }),\n })\n }\n if (encryptionImportName) {\n moduleEntries.push({\n name: 'defaultEncryptionMaps',\n value: namespaceFallback({\n importName: encryptionImportName,\n members: ['default', 'defaultEncryptionMaps'],\n fallback: emptyArray(),\n castType: \"Module['defaultEncryptionMaps']\",\n }),\n })\n }\n if (integrationImportName) {\n moduleEntries.push({\n name: 'integrations',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'integrations',\n 'integration',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationDefinition[]\",\n ),\n })\n moduleEntries.push({\n name: 'bundles',\n value: buildModuleIntegrationListValue(\n integrationImportName,\n 'bundles',\n 'bundle',\n \"import('@open-mercato/shared/modules/integrations/types').IntegrationBundle[]\",\n ),\n })\n }\n\n moduleDecls.push(objectLiteral(moduleEntries))\n }\n\n const output = renderAstModuleRegistryFile({\n fileName: 'modules.cli.generated.ts',\n generator: 'registry (CLI version)',\n imports,\n moduleEntries: moduleDecls,\n })\n const legacyOutput = renderAstLegacyAliasFile({\n fileName: 'cli-modules.generated.ts',\n exportName: 'cliModules',\n exportType: \"Pick<Module, 'id' | 'cli'>[]\",\n sourceFileName: 'modules.cli.generated.ts',\n initializer: methodCall(identifier('modules'), 'map', [\n arrowFunction({\n parameters: ['{ id, cli }'],\n body: parenthesized(objectLiteral([\n { name: 'id', value: identifier('id') },\n { name: 'cli', value: identifier('cli') },\n ])),\n }),\n ]),\n })\n\n // Validate module dependencies declared via ModuleInfo.requires\n {\n const enabledIds = new Set(enabled.map((e) => e.id))\n const problems: string[] = []\n for (const [modId, reqs] of requiresByModule.entries()) {\n const missing = reqs.filter((r) => !enabledIds.has(r))\n if (missing.length) {\n problems.push(`- Module \"${modId}\" requires: ${missing.join(', ')}`)\n }\n }\n if (problems.length) {\n console.error('\\nModule dependency check failed:')\n for (const p of problems) console.error(p)\n console.error('\\nFix: Enable required module(s) in src/modules.ts. Example:')\n console.error(\n ' export const enabledModules = [ { id: \\'' +\n Array.from(new Set(requiresByModule.values()).values()).join(\"' }, { id: '\") +\n \"' } ]\"\n )\n process.exit(1)\n }\n }\n\n const structureChecksum = calculateStructureChecksum(Array.from(trackedRoots))\n writeGeneratedFile({ outFile, checksumFile, content: output, structureChecksum, result, quiet })\n writeGeneratedFile({ outFile: legacyOutFile, checksumFile: legacyChecksumFile, content: legacyOutput, structureChecksum, result, quiet })\n\n return result\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["objectLiteral", "metaImportName", "entry", "outFile", "checksumFile"]
|
|
7
7
|
}
|