@pie-element/cli 0.1.2-next.7 → 0.1.2-next.9

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.
@@ -74,6 +74,12 @@ export declare function transformClassnamesToClsx(content: string): string;
74
74
  * `new Combination(seed, size)` enumerates the same pairs in the same order.
75
75
  */
76
76
  export declare function transformJsCombinatoricsToV2(content: string): string;
77
+ /**
78
+ * Rewrite named imports from COMMONJS_DEFAULT_IMPORTS packages to a default import plus a
79
+ * destructure, so `import { camelizeKeys } from 'humps'` becomes
80
+ * `import humps from 'humps'; const { camelizeKeys } = humps;`.
81
+ */
82
+ export declare function transformCommonJsNamedImports(content: string): string;
77
83
  /**
78
84
  * Replace react-input-autosize with the local ESM autosize input component.
79
85
  *
@@ -478,6 +478,56 @@ export function transformJsCombinatoricsToV2(content) {
478
478
  visit(sourceFile);
479
479
  return applySourceEdits(content, edits);
480
480
  }
481
+ /**
482
+ * CommonJS packages whose exports Node's ESM loader cannot detect, mapped to the binding the
483
+ * rewrite imports them as. A named import from one of them fails to link when a host imports
484
+ * the built controller in Node; a default import is `module.exports` in Node and in bundlers.
485
+ */
486
+ const COMMONJS_DEFAULT_IMPORTS = {
487
+ humps: 'humps',
488
+ };
489
+ /**
490
+ * Rewrite named imports from COMMONJS_DEFAULT_IMPORTS packages to a default import plus a
491
+ * destructure, so `import { camelizeKeys } from 'humps'` becomes
492
+ * `import humps from 'humps'; const { camelizeKeys } = humps;`.
493
+ */
494
+ export function transformCommonJsNamedImports(content) {
495
+ if (!Object.keys(COMMONJS_DEFAULT_IMPORTS).some((name) => content.includes(name))) {
496
+ return content;
497
+ }
498
+ const sourceFile = ts.createSourceFile('source.tsx', content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
499
+ const edits = [];
500
+ for (const statement of sourceFile.statements) {
501
+ if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) {
502
+ continue;
503
+ }
504
+ const specifier = statement.moduleSpecifier.text;
505
+ if (!Object.hasOwn(COMMONJS_DEFAULT_IMPORTS, specifier)) {
506
+ continue;
507
+ }
508
+ const clause = statement.importClause;
509
+ const bindings = clause?.namedBindings;
510
+ if (!clause ||
511
+ clause.isTypeOnly ||
512
+ !bindings ||
513
+ !ts.isNamedImports(bindings) ||
514
+ bindings.elements.length === 0 ||
515
+ bindings.elements.some((element) => element.isTypeOnly)) {
516
+ continue;
517
+ }
518
+ const moduleBinding = clause.name?.text ?? COMMONJS_DEFAULT_IMPORTS[specifier];
519
+ const properties = bindings.elements.map((element) => element.propertyName
520
+ ? `${element.propertyName.text}: ${element.name.text}`
521
+ : element.name.text);
522
+ const quoted = quoteLike(specifier, statement.moduleSpecifier.getText(sourceFile));
523
+ edits.push({
524
+ start: statement.getStart(sourceFile),
525
+ end: statement.getEnd(),
526
+ text: `import ${moduleBinding} from ${quoted};\nconst { ${properties.join(', ')} } = ${moduleBinding};`,
527
+ });
528
+ }
529
+ return applySourceEdits(content, edits);
530
+ }
481
531
  /**
482
532
  * Replace react-input-autosize with the local ESM autosize input component.
483
533
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sync-imports.js","sourceRoot":"","sources":["../../../src/lib/upstream/sync-imports.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Import rewriting utilities for sync operations\n *\n * This module contains transforms that rewrite imports during the sync process\n * to handle differences between the upstream CommonJS/Webpack code and the\n * ESM-only target environment.\n *\n * ## Why These Rewrites Are Needed:\n *\n * 1. **Lodash → Lodash-ES**:\n * - Upstream uses CommonJS `lodash` package\n * - ESM requires `lodash-es` for proper tree-shaking\n *\n * 2. **Recharts 2.x → 3.x**:\n * - Upstream uses recharts 2.x which has lodash dependency\n * - Recharts 3.x is fully ESM-compatible with no lodash dependency\n *\n * 3. **@pie-framework Events → Internal Packages**:\n * - Upstream references external @pie-framework packages\n * - Monorepo uses internal @pie-element/shared-* packages\n *\n * 4. **Editable-HTML Constants Inlining**:\n * - `editable-html` package is not ESM-compatible (Slate v0.x dependencies)\n * - We only need constants, so inline them to avoid the dependency\n *\n * 5. **TokenTypes Re-export**:\n * - Upstream code works in CommonJS/Webpack (looser module resolution)\n * - ESM requires explicit re-exports for proper module graph\n *\n * 6. **Configure Defaults Inlining**:\n * - Configure package is not ESM-compatible (Slate v0.x dependencies)\n * - Student-facing UI only needs minimal fallback configuration\n * - Inline empty defaults object to avoid the dependency\n */\nimport { existsSync } from 'node:fs';\nimport { readFile, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport ts from 'typescript';\nimport {\n PRESET_IDS,\n shouldTransformConfigUiMathjsSource,\n shouldTransformReactInputAutosizeSource,\n} from './sync-presets.js';\nimport { applySourceEdits, rewriteModuleSpecifiers, type SourceEdit } from './sync-source-edit.js';\n\nconst SOURCE_PATH_PRESET_RULES = {\n [PRESET_IDS.transformTextSelectTokenTypesReexport]: (sourcePath: string) =>\n sourcePath.includes('text-select') && sourcePath.includes('token-select/index'),\n [PRESET_IDS.transformChartingUtilsTypeFix]: (sourcePath: string) =>\n sourcePath.includes('charting') && sourcePath.includes('utils'),\n [PRESET_IDS.transformTranslatorIndexTypeFix]: (sourcePath: string) =>\n sourcePath.includes('translator') && sourcePath.includes('/src/index'),\n [PRESET_IDS.transformRenderUiInlineMenuExport]: (sourcePath: string) =>\n sourcePath.includes('render-ui/src/index.js'),\n} as const;\n\nfunction sourcePathMatchesPreset(\n sourcePath: string | undefined,\n presetId: keyof typeof SOURCE_PATH_PRESET_RULES\n): boolean {\n return !!sourcePath && SOURCE_PATH_PRESET_RULES[presetId](sourcePath);\n}\n\n/**\n * Fix import statements in a file to handle default export conversions\n *\n * When converting JS files with default exports to TS, we need to update\n * imports in consuming files to use named imports instead.\n */\nexport async function fixImportsInFile(\n filePath: string,\n defaultExportFiles: Set<string>\n): Promise<boolean> {\n let content = await readFile(filePath, 'utf-8');\n let modified = false;\n\n // Match import statements: import Something from './file'\n const importRegex = /import\\s+(\\w+)\\s+from\\s+['\"](\\.[^'\"]+)['\"]/g;\n const matches = Array.from(content.matchAll(importRegex));\n\n for (const match of matches) {\n const [fullMatch, importName, importPath] = match;\n // Normalize the import path (remove extensions, resolve relative paths)\n const normalizedPath = importPath.replace(/\\.(tsx?|jsx?)$/, '');\n\n // Check if this file had a default export\n if (defaultExportFiles.has(normalizedPath)) {\n // Replace default import with named import\n const replacement = `import { ${importName} } from '${importPath}'`;\n content = content.replace(fullMatch, replacement);\n modified = true;\n }\n }\n\n if (modified) {\n await writeFile(filePath, content, 'utf-8');\n }\n\n return modified;\n}\n\n/**\n * Rewrite relative ESM specifiers to explicit `.js` extensions for NodeNext compatibility.\n *\n * This is applied after sync so TypeScript source uses runtime-valid ESM specifiers:\n * - `./foo` -> `./foo.js`\n * - `./bar` (directory with index file) -> `./bar/index.js`\n */\nexport async function rewriteRelativeSpecifiersForNodeEsm(filePath: string): Promise<boolean> {\n let content = await readFile(filePath, 'utf-8');\n let modified = false;\n\n const rewriteSpecifier = (specifier: string): string => {\n if (!specifier.startsWith('./') && !specifier.startsWith('../')) {\n return specifier;\n }\n\n // Keep explicit extensions as-is (css/json/svg/js/etc.).\n if (/\\.[a-z0-9]+$/i.test(specifier)) {\n return specifier;\n }\n\n const basePath = join(dirname(filePath), specifier);\n const moduleFileExtensions = ['.ts', '.tsx', '.mts', '.cts', '.js', '.jsx', '.mjs', '.cjs'];\n const indexFileExtensions = moduleFileExtensions.map((ext) => `/index${ext}`);\n\n const hasModuleFile = moduleFileExtensions.some((ext) => existsSync(`${basePath}${ext}`));\n if (hasModuleFile) {\n return `${specifier}.js`;\n }\n\n const hasIndexFile = indexFileExtensions.some((suffix) => existsSync(`${basePath}${suffix}`));\n if (hasIndexFile) {\n return `${specifier.replace(/\\/$/, '')}/index.js`;\n }\n\n // Do not guess unresolved paths.\n return specifier;\n };\n\n content = content.replace(\n /(from\\s+)(['\"])(\\.\\.?\\/[^'\"]+)\\2/g,\n (match, prefix, quote, specifier) => {\n const rewritten = rewriteSpecifier(specifier);\n if (rewritten !== specifier) {\n modified = true;\n return `${prefix}${quote}${rewritten}${quote}`;\n }\n return match;\n }\n );\n\n content = content.replace(\n /(import\\(\\s*)(['\"])(\\.\\.?\\/[^'\"]+)\\2(\\s*\\))/g,\n (match, start, quote, specifier, end) => {\n const rewritten = rewriteSpecifier(specifier);\n if (rewritten !== specifier) {\n modified = true;\n return `${start}${quote}${rewritten}${quote}${end}`;\n }\n return match;\n }\n );\n\n content = content.replace(/\\bimport\\s+(['\"])(\\.\\.?\\/[^'\"]+)\\1/g, (match, quote, specifier) => {\n const rewritten = rewriteSpecifier(specifier);\n if (rewritten !== specifier) {\n modified = true;\n return `import ${quote}${rewritten}${quote}`;\n }\n return match;\n });\n\n if (modified) {\n await writeFile(filePath, content, 'utf-8');\n }\n\n return modified;\n}\n\n/**\n * Check if code contains JSX syntax\n */\nexport function containsJsx(code: string): boolean {\n return /<[A-Za-z][\\w-]*[\\s/>]/.test(code);\n}\n\n/**\n * Replace editable-html imports with inlined constants\n *\n * editable-html is not ESM-compatible (depends on Slate v0.x), but some packages\n * only import constants from it. We inline these constants to avoid the dependency.\n */\nexport function inlineEditableHtmlConstants(code: string): string {\n // Check if file imports from editable-html\n const editableHtmlImportRegex =\n /import\\s+(\\w+)\\s+from\\s+['\"]\\.\\.\\/\\.\\.\\/\\.\\.\\/editable-html\\/src\\/constants['\"]/;\n const match = code.match(editableHtmlImportRegex);\n\n if (!match) {\n return code; // No editable-html import, return unchanged\n }\n\n const importName = match[1];\n\n // Replace the import with inlined constants\n const inlinedConstants = `// Inlined from editable-html/src/constants (not ESM-compatible)\nconst ${importName} = {\n MAIN_CONTAINER_CLASS: 'main-container',\n PIE_TOOLBAR__CLASS: 'pie-toolbar',\n};`;\n\n return code.replace(editableHtmlImportRegex, inlinedConstants);\n}\n\n/**\n * Fix missing re-export of TokenTypes in text-select token-select/index.jsx\n * The upstream imports TokenTypes from ./token but doesn't re-export it,\n * causing build failures when parent index.js tries to import it.\n */\nexport function reexportTokenTypes(code: string, filePath: string): string {\n // Only apply to text-select token-select/index file\n if (!sourcePathMatchesPreset(filePath, PRESET_IDS.transformTextSelectTokenTypesReexport)) {\n return code;\n }\n\n // Check if file imports TokenTypes from ./token\n if (!code.includes(\"import Token, { TokenTypes } from './token'\")) {\n return code;\n }\n\n // Check if already exports TokenTypes\n if (code.includes('export { TokenTypes }')) {\n return code;\n }\n\n // Add export after the default export\n return code.replace(\n /^export default TokenSelect;$/m,\n 'export default TokenSelect;\\nexport { TokenTypes };'\n );\n}\n\n/**\n * Replace configure/lib/defaults import with an empty defaults object\n * when configure directory is not synced (ESM-incompatible due to Slate v0.x)\n */\nexport function inlineConfigureDefaults(code: string): string {\n // Only apply to files that import from ../configure/lib/defaults\n const configureImportRegex =\n /import\\s+(\\w+)\\s+from\\s+['\"](\\.\\.\\/configure\\/lib\\/defaults|\\.\\.\\/\\.\\.\\/configure\\/lib\\/defaults)['\"]/;\n const match = code.match(configureImportRegex);\n\n if (!match) return code;\n\n const importName = match[1];\n\n // Replace with minimal defaults object\n // The configuration property is what's typically used in student-facing code\n const inlinedDefaults = `// Inlined from configure/lib/defaults (configure/ not synced - ESM-incompatible)\nconst ${importName} = {\n configuration: {\n // Minimal configuration for student-facing UI\n // Full authoring configuration is only needed in the configure package\n } as any\n};`;\n\n return code.replace(configureImportRegex, inlinedDefaults);\n}\n\n/**\n * Determine if a file should have .tsx extension based on content\n */\nexport function shouldUseTsxExtension(content: string, originalPath: string): boolean {\n // If original file was .jsx, use .tsx\n if (originalPath.endsWith('.jsx')) {\n return true;\n }\n\n // If content contains JSX, use .tsx\n if (containsJsx(content)) {\n return true;\n }\n\n // Otherwise use .ts\n return false;\n}\n\n/**\n * Convert CommonJS module.exports to ES module exports\n *\n * Handles patterns like:\n * module.exports = { foo: ..., bar: ... }\n *\n * Converts to:\n * export const foo = ...;\n * export const bar = ...;\n */\nexport function convertModuleExportsToEsm(content: string): string {\n // Match: module.exports = { key: value, key2: value2, ... };\n const moduleExportsPattern = /module\\.exports\\s*=\\s*\\{([\\s\\S]*?)\\};?/;\n const match = content.match(moduleExportsPattern);\n\n if (!match) {\n return content;\n }\n\n const [fullMatch, objectContent] = match;\n\n // Parse the object content into key-value pairs\n // Match patterns like: key: value, (with value possibly spanning multiple lines)\n const exports: string[] = [];\n const lines = objectContent.split('\\n');\n\n let currentKey: string | null = null;\n let currentValue: string[] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === '{' || trimmed === '}') continue;\n\n // Check if this line starts a new key\n const keyMatch = trimmed.match(/^(\\w+):\\s*(.*)/);\n if (keyMatch) {\n // Save previous export if any\n if (currentKey) {\n const value = currentValue.join('\\n').replace(/,\\s*$/, ''); // Remove trailing comma\n exports.push(`export const ${currentKey} =\\n${value};`);\n }\n\n // Start new export\n currentKey = keyMatch[1];\n currentValue = [keyMatch[2]];\n } else {\n // Continuation of current value\n currentValue.push(line);\n }\n }\n\n // Save last export\n if (currentKey) {\n const value = currentValue.join('\\n').replace(/,\\s*$/, '');\n exports.push(`export const ${currentKey} =\\n${value};`);\n }\n\n // Replace the module.exports block with ES module exports\n const esmExports = exports.join('\\n\\n');\n return content.replace(fullMatch, esmExports);\n}\n\nconst VENDORED_LODASH_PACKAGE = '@pie-element/shared-lodash';\n\nfunction lodashMemberFromPath(path: string): string {\n return path.replace(/\\.js$/i, '').split('/').pop() ?? path;\n}\n\n/**\n * Transform lodash and lodash-es imports to the vendored shared lodash package.\n *\n * The vendored package is intentionally a narrow ESM implementation of the\n * lodash helpers used by synced PIE sources, avoiding CDN/runtime lodash\n * resolution while keeping import shapes tree-shakeable.\n */\nexport function transformLodashToVendoredLodash(content: string): string {\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n const dynamicDeepImportMembers = new Set<string>();\n\n const visit = (node: ts.Node): void => {\n if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {\n const path = lodashDeepImportPath(node.moduleSpecifier.text);\n if (path) {\n const member = lodashMemberFromPath(path);\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: lodashImportReplacement(node, sourceFile, member),\n });\n }\n } else if (\n ts.isExportDeclaration(node) &&\n node.moduleSpecifier &&\n ts.isStringLiteral(node.moduleSpecifier)\n ) {\n const path = lodashDeepImportPath(node.moduleSpecifier.text);\n if (path) {\n const member = lodashMemberFromPath(path);\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: lodashExportReplacement(node, sourceFile, member),\n });\n }\n } else if (isDynamicStringImport(node)) {\n const path = lodashDeepImportPath(node.arguments[0].text);\n if (path) {\n const member = lodashMemberFromPath(path);\n dynamicDeepImportMembers.add(member);\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: `Promise.resolve({ default: ${member}, ${member} })`,\n });\n }\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n let transformed = applySourceEdits(content, edits);\n\n // Root imports keep their local import shape.\n transformed = rewriteModuleSpecifiers(transformed, (specifier) =>\n specifier === 'lodash' || specifier === 'lodash-es' ? VENDORED_LODASH_PACKAGE : undefined\n );\n\n if (dynamicDeepImportMembers.size > 0) {\n const imports = [...dynamicDeepImportMembers].sort().join(', ');\n transformed = `import { ${imports} } from '${VENDORED_LODASH_PACKAGE}';\\n${transformed}`;\n }\n\n return transformed;\n}\n\nfunction lodashDeepImportPath(specifier: string): string | null {\n const match = specifier.match(/^(?:lodash|lodash-es)\\/(.+)$/);\n return match?.[1] ?? null;\n}\n\nfunction isDynamicStringImport(node: ts.Node): node is ts.CallExpression & {\n arguments: ts.NodeArray<ts.StringLiteral>;\n} {\n return (\n ts.isCallExpression(node) &&\n node.expression.kind === ts.SyntaxKind.ImportKeyword &&\n node.arguments.length === 1 &&\n ts.isStringLiteral(node.arguments[0])\n );\n}\n\nfunction quoteLike(specifier: string, originalText: string): string {\n const delimiter = originalText.startsWith('\"') ? '\"' : \"'\";\n const escaped = specifier.replace(/\\\\/g, '\\\\\\\\').replaceAll(delimiter, `\\\\${delimiter}`);\n return `${delimiter}${escaped}${delimiter}`;\n}\n\nfunction lodashImportReplacement(\n node: ts.ImportDeclaration,\n sourceFile: ts.SourceFile,\n member: string\n): string {\n const packageSpecifier = quoteLike(\n VENDORED_LODASH_PACKAGE,\n node.moduleSpecifier.getText(sourceFile)\n );\n const importClause = node.importClause;\n if (!importClause) {\n return `import ${packageSpecifier};`;\n }\n\n if (importClause.name) {\n return `import { ${formatLodashBinding(member, importClause.name.text)} } from ${packageSpecifier};`;\n }\n\n const namedBindings = importClause.namedBindings;\n if (namedBindings && ts.isNamespaceImport(namedBindings)) {\n return `import { ${formatLodashBinding(member, namedBindings.name.text)} } from ${packageSpecifier};`;\n }\n\n if (namedBindings && ts.isNamedImports(namedBindings)) {\n const bindings = namedBindings.elements\n .map((specifier) => lodashImportSpecifierBinding(member, specifier))\n .join(', ');\n const typeOnly = importClause.isTypeOnly ? 'type ' : '';\n return `import ${typeOnly}{ ${bindings} } from ${packageSpecifier};`;\n }\n\n return `import ${packageSpecifier};`;\n}\n\nfunction lodashExportReplacement(\n node: ts.ExportDeclaration,\n sourceFile: ts.SourceFile,\n member: string\n): string {\n const packageSpecifier = quoteLike(\n VENDORED_LODASH_PACKAGE,\n node.moduleSpecifier?.getText(sourceFile) ?? `'${VENDORED_LODASH_PACKAGE}'`\n );\n const exportClause = node.exportClause;\n if (!exportClause) {\n return `export { ${member} } from ${packageSpecifier};`;\n }\n\n if (ts.isNamespaceExport(exportClause)) {\n return `export { ${formatLodashBinding(member, exportClause.name.text)} } from ${packageSpecifier};`;\n }\n\n const bindings = exportClause.elements\n .map((specifier) => lodashExportSpecifierBinding(member, specifier))\n .join(', ');\n const typeOnly = node.isTypeOnly ? 'type ' : '';\n return `export ${typeOnly}{ ${bindings} } from ${packageSpecifier};`;\n}\n\nfunction lodashImportSpecifierBinding(member: string, specifier: ts.ImportSpecifier): string {\n const imported = specifier.propertyName?.text ?? specifier.name.text;\n const local = specifier.name.text;\n\n if (imported === 'default') {\n return formatLodashBinding(member, local);\n }\n\n return imported === local ? imported : `${imported} as ${local}`;\n}\n\nfunction lodashExportSpecifierBinding(member: string, specifier: ts.ExportSpecifier): string {\n const exported = specifier.name.text;\n const local = specifier.propertyName?.text ?? exported;\n\n if (local === 'default') {\n return formatLodashBinding(member, exported);\n }\n\n return local === exported ? exported : `${local} as ${exported}`;\n}\n\nfunction formatLodashBinding(imported: string, local: string): string {\n return imported === local ? imported : `${imported} as ${local}`;\n}\n\nexport const transformLodashToLodashEs = transformLodashToVendoredLodash;\n\n/**\n * Transform classnames imports to clsx.\n *\n * clsx preserves the call shape used by classnames while offering a browser ESM\n * entrypoint, so synced source should prefer it over the CommonJS-era package.\n */\nexport function transformClassnamesToClsx(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === 'classnames' ? 'clsx' : undefined\n );\n}\n\n/**\n * Rewrite js-combinatorics 0.5 `combination(seed, size)` calls to the 2.x `Combination` class.\n *\n * Upstream depends on 0.5, a UMD script with no ESM entrypoint; synced packages depend on 2.x,\n * where `combination(n, k)` counts combinations as a BigInt and throws when given an array.\n * `new Combination(seed, size)` enumerates the same pairs in the same order.\n */\nexport function transformJsCombinatoricsToV2(content: string): string {\n if (!content.includes('js-combinatorics')) {\n return content;\n }\n\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n const callees = new Map<string, string>();\n\n for (const statement of sourceFile.statements) {\n if (\n !ts.isImportDeclaration(statement) ||\n !ts.isStringLiteral(statement.moduleSpecifier) ||\n statement.moduleSpecifier.text !== 'js-combinatorics'\n ) {\n continue;\n }\n const bindings = statement.importClause?.namedBindings;\n if (!bindings || !ts.isNamedImports(bindings)) {\n continue;\n }\n for (const element of bindings.elements) {\n if ((element.propertyName ?? element.name).text !== 'combination') {\n continue;\n }\n const local = element.name.text;\n const aliased = local !== 'combination';\n callees.set(local, aliased ? local : 'Combination');\n edits.push({\n start: element.getStart(sourceFile),\n end: element.getEnd(),\n text: aliased ? `Combination as ${local}` : 'Combination',\n });\n }\n }\n\n if (callees.size === 0) {\n return content;\n }\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n callees.has(node.expression.text)\n ) {\n edits.push({\n start: node.expression.getStart(sourceFile),\n end: node.expression.getEnd(),\n text: `new ${callees.get(node.expression.text)}`,\n });\n }\n ts.forEachChild(node, visit);\n };\n visit(sourceFile);\n\n return applySourceEdits(content, edits);\n}\n\n/**\n * Replace react-input-autosize with the local ESM autosize input component.\n *\n * The upstream dependency is CommonJS-era and only used by graph label inputs.\n * Synced packages generate a tiny local component instead of carrying the\n * dependency into browser ESM output.\n */\nexport function transformReactInputAutosizeToLocal(content: string, sourcePath?: string): string {\n if (!shouldTransformReactInputAutosizeSource(sourcePath)) {\n return content;\n }\n\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isImportDeclaration(node) &&\n ts.isStringLiteral(node.moduleSpecifier) &&\n node.moduleSpecifier.text === 'react-input-autosize'\n ) {\n const importName = node.importClause?.name?.text;\n if (importName) {\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text:\n importName === 'AutosizeInput'\n ? \"import { AutosizeInput } from './autosize-input.js';\"\n : `import { AutosizeInput as ${importName} } from './autosize-input.js';`,\n });\n }\n } else if (isAutosizeInputComponentAdapter(node, sourceFile)) {\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: '',\n });\n } else if (isAutosizeInputComponentJsxTag(node)) {\n edits.push({\n start: node.tagName.getStart(sourceFile),\n end: node.tagName.getEnd(),\n text: 'AutosizeInput',\n });\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n return applySourceEdits(content, edits);\n}\n\nfunction isAutosizeInputComponentAdapter(\n node: ts.Node,\n sourceFile: ts.SourceFile\n): node is ts.VariableStatement {\n if (!ts.isVariableStatement(node) || node.declarationList.declarations.length !== 1) {\n return false;\n }\n\n const declaration = node.declarationList.declarations[0];\n if (!ts.isIdentifier(declaration.name) || declaration.name.text !== 'AutosizeInputComponent') {\n return false;\n }\n\n return (\n declaration.initializer?.getText(sourceFile).replace(/\\s+/g, '') ===\n 'AutosizeInput?.default??AutosizeInput'\n );\n}\n\nfunction isAutosizeInputComponentJsxTag(\n node: ts.Node\n): node is ts.JsxOpeningElement | ts.JsxClosingElement | ts.JsxSelfClosingElement {\n return (\n (ts.isJsxOpeningElement(node) ||\n ts.isJsxClosingElement(node) ||\n ts.isJsxSelfClosingElement(node)) &&\n ts.isIdentifier(node.tagName) &&\n node.tagName.text === 'AutosizeInputComponent'\n );\n}\n\n/**\n * Replace config-ui's tiny mathjs usage with a local fraction-to-number helper.\n *\n * number-text-field-custom only uses `math.number(math.fraction(value))` to\n * compare custom fraction values. Keep mathjs for number-line where the surface\n * includes exact rational arithmetic, comparisons, snapping, and expression\n * parsing.\n */\nexport function transformConfigUiMathjsToLocalFraction(\n content: string,\n sourcePath?: string\n): string {\n if (!shouldTransformConfigUiMathjsSource(sourcePath)) {\n return content;\n }\n\n let transformed = content.replace(\n /math\\.number\\(\\s*math\\.fraction\\(([^()]+?)\\)\\s*\\)/g,\n 'fractionToNumber($1)'\n );\n\n if (transformed === content) {\n return content;\n }\n\n if (!/\\bmath\\./.test(transformed)) {\n transformed = transformed.replace(\n /import\\s+\\*\\s+as\\s+math\\s+from\\s+(['\"])mathjs\\1;?/,\n \"import { fractionToNumber } from './fraction-to-number.js';\"\n );\n } else if (!transformed.includes(\"from './fraction-to-number.js'\")) {\n transformed = transformed.replace(\n /import\\s+\\*\\s+as\\s+math\\s+from\\s+(['\"])mathjs\\1;?/,\n (match) => `${match}\\nimport { fractionToNumber } from './fraction-to-number.js';`\n );\n }\n\n return transformed;\n}\n\n/**\n * Compatibility wrapper retained for older callers. Lodash imports now target\n * the vendored shared package rather than lodash-es deep modules.\n */\nexport function transformLodashEsDeepImportsToFullySpecified(content: string): string {\n return transformLodashToVendoredLodash(content);\n}\n\n/**\n * Ensure known strict-ESM deep imports include explicit file extensions.\n *\n * Webpack's fully-specified ESM resolution requires `.js` on deep imports like:\n * - react-konva/lib/ReactKonvaCore -> react-konva/lib/ReactKonvaCore.js\n */\nexport function transformKnownDeepImportsToFullySpecified(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === 'react-konva/lib/ReactKonvaCore' ? 'react-konva/lib/ReactKonvaCore.js' : undefined\n );\n}\n\n/**\n * Transform package.json dependencies from lodash/lodash-es to the vendored package.\n *\n * The browser/runtime dependency is a workspace package that vendors the small\n * lodash helper surface needed by synced sources.\n */\nexport function transformPackageJsonLodash<T extends Record<string, any>>(packageJson: T): T {\n const transformed = { ...packageJson };\n\n if (transformed.dependencies?.lodash || transformed.dependencies?.['lodash-es']) {\n transformed.dependencies[VENDORED_LODASH_PACKAGE] = 'workspace:*';\n delete transformed.dependencies.lodash;\n delete transformed.dependencies['lodash-es'];\n }\n\n if (transformed.devDependencies?.lodash || transformed.devDependencies?.['lodash-es']) {\n transformed.devDependencies[VENDORED_LODASH_PACKAGE] = 'workspace:*';\n delete transformed.devDependencies.lodash;\n delete transformed.devDependencies['lodash-es'];\n }\n\n // Remove @types/lodash if present (lodash-es has built-in types)\n if (transformed.dependencies?.['@types/lodash']) {\n delete transformed.dependencies['@types/lodash'];\n }\n if (transformed.devDependencies?.['@types/lodash']) {\n delete transformed.devDependencies['@types/lodash'];\n }\n\n return transformed;\n}\n\n/**\n * Transform recharts version in package.json\n *\n * Upgrades recharts from 2.x to 3.x for ESM compatibility.\n * Recharts 3.x removes the lodash dependency and is fully ESM-compatible.\n */\nexport function transformPackageJsonRecharts<T extends Record<string, any>>(packageJson: T): T {\n const transformed = { ...packageJson };\n\n // Keep recharts on the current ESM-capable major.\n if (transformed.dependencies?.recharts) {\n transformed.dependencies.recharts = '^3.8.1';\n }\n\n return transformed;\n}\n\n/**\n * Apply browser-ESM dependency replacements and upgrades for synced packages.\n *\n * This is intentionally dependency policy, not build-output patching: upstream\n * sync rewrites package manifests toward packages that can participate in the\n * browser ESM graph directly.\n */\nexport function transformPackageJsonBrowserEsmDependencies<T extends Record<string, any>>(\n packageJson: T,\n options: { removeReactInputAutosize?: boolean; removeMathjs?: boolean } = {}\n): T {\n const transformed = { ...packageJson };\n const deps = transformed.dependencies as Record<string, string> | undefined;\n if (!deps) {\n return transformed;\n }\n\n if (deps.classnames) {\n deps.clsx = '^2.1.1';\n delete deps.classnames;\n }\n\n if (options.removeReactInputAutosize) {\n delete deps['react-input-autosize'];\n }\n\n if (options.removeMathjs) {\n delete deps.mathjs;\n }\n\n // Ranges forced onto synced packages after the copy.\n //\n // Only pin a dependency here when this repo has a reason upstream does not\n // share, and state that reason. A pin silently overrides whatever upstream\n // declares, so a pin that has outlived its reason quietly undoes upstream's\n // decisions on every sync.\n //\n // mathjs is pinned to satisfy two constraints that pull in opposite\n // directions:\n // - This repo needs an `exports` map. mathjs 7.x (upstream's range) has\n // none, so it resolves to its CJS `main` and reintroduces the runtime\n // require leaks that \"fix: stabilize browser ESM packaging\" (481671b0)\n // removed from the browser ESM bundles.\n // - Upstream needs fraction.js 4. mathjs >= 14 depends on fraction.js ^5,\n // which uses BigInt and breaks number-line bundling (PIE-926, PIE-1005).\n // mathjs 13.2.3 is the newest release that has an `exports` map AND still\n // depends on fraction.js ^4.3.7, so it satisfies both. Do not raise this to\n // 14+ without resolving the BigInt problem first.\n //\n // react-draggable is deliberately NOT pinned: upstream moved the synced\n // packages to ^4.7.1 and fixed the v4 drag regressions against that exact\n // version, so a pin here would downgrade away from the code those fixes were\n // written for.\n const versionPins: Record<string, string> = {\n '@types/react': '^18.2.0',\n '@types/react-dom': '^18.2.0',\n clsx: '^2.1.1',\n mathjs: '^13.2.3',\n 'react-is': '^18.3.1',\n 'react-redux': '^9.3.0',\n redux: '^5.0.1',\n };\n\n for (const [name, version] of Object.entries(versionPins)) {\n if (deps[name]) {\n deps[name] = version;\n }\n }\n\n delete deps.react;\n delete deps['react-dom'];\n\n return transformed;\n}\n\n/**\n * Transform @pie-framework event package imports to internal packages\n *\n * Handles:\n * - @pie-framework/pie-player-events → @pie-element/shared-player-events\n * - @pie-framework/pie-configure-events → @pie-element/shared-configure-events\n */\nexport function transformPieFrameworkEventImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) => {\n if (specifier === '@pie-framework/pie-player-events') {\n return '@pie-element/shared-player-events';\n }\n if (specifier === '@pie-framework/pie-configure-events') {\n return '@pie-element/shared-configure-events';\n }\n return undefined;\n });\n}\n\n/**\n * Transform @pie-lib/controller-utils imports to internal @pie-element/shared-controller-utils\n *\n * Handles:\n * - @pie-lib/controller-utils → @pie-element/shared-controller-utils\n *\n * Our internal controller-utils package has the same API but with modernized TypeScript\n * and no lodash/debug dependencies.\n */\nexport function transformControllerUtilsImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === '@pie-lib/controller-utils' ? '@pie-element/shared-controller-utils' : undefined\n );\n}\n\n/**\n * Transform @pie-lib shared package imports to internal @pie-element/shared-* packages\n *\n * Handles:\n * - @pie-lib/math-rendering → @pie-element/shared-math-rendering-mathjax\n *\n * These packages have been moved to shared/ for better version control and consistency.\n */\nexport function transformSharedPackageImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) => {\n if (specifier === '@pie-lib/math-rendering') {\n return '@pie-element/shared-math-rendering-mathjax';\n }\n if (specifier === '@pie-lib/feedback') {\n return '@pie-element/shared-feedback';\n }\n return undefined;\n });\n}\n\n/**\n * Rewrite legacy configure subpath imports to author entrypoints.\n *\n * Upstream sometimes imports configure elements via:\n * - @pie-element/<element-name>/configure/lib\n *\n * In this repo, configure code is synced into `src/author` and packages expose that via\n * the `./author` export. Rewriting to `/author` preserves author-vs-delivery boundaries.\n */\nexport function transformLegacyConfigureLibImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n /^@pie-element\\/[^/]+\\/configure\\/lib$/.test(specifier)\n ? specifier.replace(/\\/configure\\/lib$/, '/author')\n : undefined\n );\n}\n\n/**\n * Transform package.json dependencies for PIE Framework event packages\n *\n * Replaces external @pie-framework event packages with internal workspace packages\n */\nexport function transformPackageJsonPieEvents<T extends Record<string, any>>(packageJson: T): T {\n const transformed = { ...packageJson };\n\n // Replace @pie-framework/pie-player-events with internal package\n if (transformed.dependencies?.['@pie-framework/pie-player-events']) {\n transformed.dependencies['@pie-element/shared-player-events'] = 'workspace:*';\n delete transformed.dependencies['@pie-framework/pie-player-events'];\n }\n if (transformed.devDependencies?.['@pie-framework/pie-player-events']) {\n transformed.devDependencies['@pie-element/shared-player-events'] = 'workspace:*';\n delete transformed.devDependencies['@pie-framework/pie-player-events'];\n }\n\n // Replace @pie-framework/pie-configure-events with internal package\n if (transformed.dependencies?.['@pie-framework/pie-configure-events']) {\n transformed.dependencies['@pie-element/shared-configure-events'] = 'workspace:*';\n delete transformed.dependencies['@pie-framework/pie-configure-events'];\n }\n if (transformed.devDependencies?.['@pie-framework/pie-configure-events']) {\n transformed.devDependencies['@pie-element/shared-configure-events'] = 'workspace:*';\n delete transformed.devDependencies['@pie-framework/pie-configure-events'];\n }\n\n return transformed;\n}\n\n/**\n * Transform package.json dependencies for @pie-lib/controller-utils\n *\n * Replaces @pie-lib/controller-utils with internal @pie-element/shared-controller-utils\n */\nexport function transformPackageJsonControllerUtils<T extends Record<string, any>>(\n packageJson: T\n): T {\n const transformed = { ...packageJson };\n\n // Replace @pie-lib/controller-utils with internal package\n if (transformed.dependencies?.['@pie-lib/controller-utils']) {\n transformed.dependencies['@pie-element/shared-controller-utils'] = 'workspace:*';\n delete transformed.dependencies['@pie-lib/controller-utils'];\n }\n if (transformed.devDependencies?.['@pie-lib/controller-utils']) {\n transformed.devDependencies['@pie-element/shared-controller-utils'] = 'workspace:*';\n delete transformed.devDependencies['@pie-lib/controller-utils'];\n }\n\n return transformed;\n}\n\n/**\n * Transform package.json dependencies for shared packages\n *\n * Replaces @pie-lib shared packages with internal @pie-element/shared-* packages\n */\nexport function transformPackageJsonSharedPackages<T extends Record<string, any>>(\n packageJson: T\n): T {\n const transformed = { ...packageJson };\n\n const sharedPackages = {\n '@pie-lib/math-rendering': '@pie-element/shared-math-rendering-mathjax',\n '@pie-lib/feedback': '@pie-element/shared-feedback',\n };\n\n for (const [oldPkg, newPkg] of Object.entries(sharedPackages)) {\n // Replace in dependencies\n if (transformed.dependencies?.[oldPkg]) {\n transformed.dependencies[newPkg] = 'workspace:*';\n delete transformed.dependencies[oldPkg];\n }\n // Replace in devDependencies\n if (transformed.devDependencies?.[oldPkg]) {\n transformed.devDependencies[newPkg] = 'workspace:*';\n delete transformed.devDependencies[oldPkg];\n }\n }\n\n return transformed;\n}\n\n/**\n * Transform direct property assignment patterns to use assignProps utility\n *\n * Replaces patterns like:\n * Object.entries(props).forEach(([key, value]) => { element[key] = value; });\n * With:\n * assignProps(element, props);\n *\n * And adds the import if not present.\n *\n * NOTE: This transform is available but NOT enabled in the sync pipeline by default.\n * Only enable it if this pattern appears frequently in upstream code and needs\n * to be refactored automatically. For one-off cases, manual refactoring is preferred.\n *\n * To enable: Import and call this in sync-pielib-strategy.ts after other transforms.\n */\nexport function transformToAssignProps(content: string): string {\n let transformed = content;\n let needsImport = false;\n\n // Pattern 1: Object.entries(props).forEach with element[key] = value\n // Matches: Object.entries(props).forEach(([key, value]) => { element[key] = value; });\n const pattern1 =\n /Object\\.entries\\((\\w+)\\)\\.forEach\\(\\(\\[(\\w+),\\s*(\\w+)\\]\\)\\s*=>\\s*\\{\\s*(\\w+)\\[\\2\\]\\s*=\\s*\\3;\\s*\\}\\);?/g;\n const matches1 = Array.from(transformed.matchAll(pattern1));\n\n for (const match of matches1) {\n const [fullMatch, propsVar, _keyVar, _valueVar, elementVar] = match;\n const replacement = `assignProps(${elementVar}, ${propsVar});`;\n transformed = transformed.replace(fullMatch, replacement);\n needsImport = true;\n }\n\n // Pattern 2: for...of loop with Object.entries\n // Matches: for (const [key, value] of Object.entries(props)) { element[key] = value; }\n const pattern2 =\n /for\\s*\\(const\\s*\\[(\\w+),\\s*(\\w+)\\]\\s*of\\s*Object\\.entries\\((\\w+)\\)\\)\\s*\\{\\s*(\\w+)\\[\\1\\]\\s*=\\s*\\2;\\s*\\}/g;\n const matches2 = Array.from(transformed.matchAll(pattern2));\n\n for (const match of matches2) {\n const [fullMatch, _keyVar, _valueVar, propsVar, elementVar] = match;\n const replacement = `assignProps(${elementVar}, ${propsVar});`;\n transformed = transformed.replace(fullMatch, replacement);\n needsImport = true;\n }\n\n // Add import if needed and not already present\n if (needsImport && !transformed.includes(\"from '@pie-element/shared-utils'\")) {\n // Find where to insert the import (after other imports)\n const importMatch = transformed.match(/(import\\s+.*?from\\s+['\"].*?['\"];?\\s*\\n)+/);\n if (importMatch && importMatch.index !== undefined) {\n const lastImportEnd = importMatch.index + importMatch[0].length;\n transformed =\n transformed.slice(0, lastImportEnd) +\n \"import { assignProps } from '@pie-element/shared-utils';\\n\" +\n transformed.slice(lastImportEnd);\n } else {\n // No imports found, add at the beginning (after any leading comments)\n const firstNonCommentLine = transformed.search(/^(?!\\/\\/|\\/\\*|\\*|$)/m);\n if (firstNonCommentLine !== -1) {\n transformed =\n transformed.slice(0, firstNonCommentLine) +\n \"import { assignProps } from '@pie-element/shared-utils';\\n\\n\" +\n transformed.slice(firstNonCommentLine);\n }\n }\n }\n\n return transformed;\n}\n\n/**\n * Transform configure utility imports for flattened directory structure\n *\n * In upstream pie-elements, configure utility files live at configure/utils.js\n * and are imported from configure/src/ files using '../utils'.\n *\n * In the synced structure, both configure/src/ files and configure/utils.js\n * are synced to src/configure/, so the import path needs to change from\n * '../utils' to './utils'.\n *\n * This transform handles:\n * - import { x } from '../utils' → import { x } from './utils'\n * - Only applies to files directly in configure/src/, not subdirectories\n * - Only when the import is '../utils' (not '../utils/something')\n */\nexport function transformConfigureUtilsImports(content: string, relativePath: string): string {\n // Only apply to files directly in configure/src/ (not in subdirectories)\n // Note: In the target, these files end up in author/ directory\n // Match patterns like:\n // - \"configure/src/something.js\" (yes)\n // - \"configure/src/design/something.js\" (no - has subdirectory)\n const configureRootFilePattern = /^configure\\/src\\/[^/]+\\.(jsx?|tsx?)$/;\n if (!configureRootFilePattern.test(relativePath)) {\n return content;\n }\n\n // Transform '../utils' to './utils.js' (only exact match, not '../utils/something')\n // Keep explicit runtime extension for Node ESM consistency.\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === '../utils' ? './utils.js' : undefined\n );\n}\n\n/**\n * Transform legacy SSR-gated `require()` for pie-lib editors into static ESM imports.\n *\n * Older upstream pie-lib used `typeof window` + `require()` so heavy editor code did not\n * run under SSR. That breaks in browser ESM where `require` is undefined. When this pattern\n * is still present in synced sources, rewrite it to a normal default import plus styled()\n * wrapper. If upstream has already moved to ESM imports, this is a no-op.\n */\nexport function transformSsrRequireToEsmImport(content: string): string {\n let transformed = content;\n\n // Pattern 1: SSR check with require() for editable-html-tip-tap with styled wrapper\n // Matches:\n // let EditableHtml;\n // let StyledEditableHTML;\n // if (typeof window !== 'undefined') {\n // EditableHtml = require('@pie-lib/editable-html-tip-tap')['default'];\n // StyledEditableHTML = styled(EditableHtml)(...);\n // }\n //\n // Note: styled() call may span multiple lines\n\n const ssrRequirePattern =\n /(?:\\/\\/import\\s+\\w+\\s+from\\s+['\"]@pie-lib\\/[^'\"]+['\"]\\s*;\\s*\\n)?let\\s+(\\w+);\\s*\\nlet\\s+(\\w+);\\s*\\n(?:\\/\\/\\s*-\\s*mathquill\\s+error\\s+window\\s+not\\s+defined\\s*\\n)?if\\s*\\(\\s*typeof\\s+window\\s*!==\\s*['\"]undefined['\"]\\s*\\)\\s*\\{\\s*\\n\\s*\\1\\s*=\\s*require\\(['\"](@pie-lib\\/[^'\"]+)['\"]\\)\\[['\"]default['\"]\\];\\s*\\n\\s*\\2\\s*=\\s*styled\\(\\1\\)\\(([\\s\\S]*?)\\);\\s*\\n\\s*\\}/;\n\n const match = transformed.match(ssrRequirePattern);\n\n if (match) {\n const [fullMatch, componentVar, styledVar, importPath, styleParams] = match;\n\n const importVarName = `${componentVar}Import`;\n const replacement = `import ${importVarName} from '${importPath}';\n\nconst ${componentVar} = ${importVarName};\nconst ${styledVar} = styled(${componentVar})(${styleParams});`;\n\n transformed = transformed.replace(fullMatch, replacement);\n }\n\n // Pattern 2: Simpler pattern without styled wrapper\n // Matches:\n // //import EditableHTML from '@pie-lib/editable-html-tip-tap';\n // let EditableHtml;\n // if (typeof window !== 'undefined') {\n // EditableHtml = require('@pie-lib/editable-html-tip-tap')['default'];\n // }\n\n const simpleRequirePattern =\n /(?:\\/\\/import\\s+\\w+\\s+from\\s+['\"]@pie-lib\\/[^'\"]+['\"]\\s*;\\s*\\n)?let\\s+(\\w+);\\s*\\nif\\s*\\(\\s*typeof\\s+window\\s*!==\\s*['\"]undefined['\"]\\s*\\)\\s*\\{\\s*\\n\\s*\\1\\s*=\\s*require\\(['\"](@pie-lib\\/[^'\"]+)['\"]\\)\\[['\"]default['\"]\\];\\s*\\n\\s*\\}/;\n\n const simpleMatch = transformed.match(simpleRequirePattern);\n\n if (simpleMatch && !match) {\n // Only apply if we didn't already match the styled pattern\n const [fullMatch, componentVar, importPath] = simpleMatch;\n\n const importVarName = `${componentVar}Import`;\n const replacement = `import ${importVarName} from '${importPath}';\n\nconst ${componentVar} = ${importVarName};`;\n\n transformed = transformed.replace(fullMatch, replacement);\n }\n\n return transformed;\n}\n\n/**\n * Fix TypeScript type inference errors for styled components\n *\n * TypeScript can't infer types for some MUI styled components, causing errors like:\n * \"The inferred type of 'X' cannot be named without a reference to '@emotion/styled'\"\n *\n * This transform adds explicit type annotations to fix these errors.\n */\nexport function fixStyledComponentTypes(content: string): string {\n let transformed = content;\n\n // Pattern 1: Export const styled components (e.g., export const StyledFormControlLabel = styled(...))\n // Add `: any` to fix type inference issues\n // Match any identifier, not just those starting with \"Styled\"\n const exportConstStyledRegex = /export const (\\w+) = styled\\(/g;\n transformed = transformed.replace(exportConstStyledRegex, 'export const $1: any = styled(');\n\n // Pattern 2: Const styled components (e.g., const StyledToken = styled(...), const MiniField = styled(...))\n // Add `: any` to fix type inference issues\n // Match any identifier, not just those starting with \"Styled\"\n const constStyledRegex = /const (\\w+) = styled\\(/g;\n transformed = transformed.replace(constStyledRegex, 'const $1: any = styled(');\n\n // Pattern 3: Class field arrow functions that might return styled components\n // Add `: any` return type to class fields missing type annotations.\n // IMPORTANT: keep this line-scoped so we do not accidentally match multiline JSX\n // assignments such as `foo = (<Component ref={(r) => { ... }} />)`.\n const methodRegex = /^(\\s*)(\\w+)\\s*=\\s*\\([^)\\n]*\\)\\s*=>\\s*\\{/gm;\n transformed = transformed.replace(methodRegex, (match) => {\n // Check if already has type annotation (: type = )\n const hasTypeAnnotation = match.includes(':');\n if (hasTypeAnnotation) {\n return match;\n }\n // Add `: any` type annotation\n return match.replace(/(\\w+)(\\s*=)/, '$1: any$2');\n });\n\n return transformed;\n}\n\n/**\n * Transform self-referential package imports to relative imports\n *\n * In upstream pie-elements, configure files sometimes import from their own package\n * using the package name (e.g., import { X } from '@pie-element/fraction-model').\n * This creates circular dependency issues in the build.\n *\n * This transform converts these self-referential imports to relative paths based on\n * the package structure:\n * - @pie-element/{name} → relative path to delivery component\n *\n * Example:\n * In configure/src/main.jsx:\n * import { FractionModelChart } from '@pie-element/fraction-model'\n * Becomes:\n * import FractionModelChart from '../delivery/fraction-model-chart'\n *\n * @param content - The file content\n * @param packageName - The current package name (e.g., '@pie-element/fraction-model')\n * @param sourceFilePath - The source file path relative to package root\n * @returns Transformed content with relative imports\n */\nexport function transformSelfReferentialImports(\n content: string,\n packageName: string,\n sourceFilePath: string\n): string {\n // Extract element name from package name (@pie-element/fraction-model → fraction-model)\n const elementName = packageName.replace('@pie-element/', '');\n let targetPath: string | null = null;\n\n if (sourceFilePath.startsWith('configure/src/')) {\n // Configure files reference delivery components\n // configure/src/main.jsx → author/main.tsx\n // Relative path from author/ to delivery/\n targetPath = '../delivery';\n } else if (sourceFilePath.startsWith('src/')) {\n // Main src files shouldn't self-reference, but handle it anyway\n targetPath = '.';\n }\n\n if (!targetPath) {\n return content;\n }\n\n // Strategy: Self-referential imports typically come from the package's main\n // index file which re-exports from various locations. Rather than trying to\n // guess individual file locations (which often fails for namespace exports\n // and re-exports), we keep the import pointing to the index.\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === `@pie-element/${elementName}` ? `${targetPath}/index.js` : undefined\n );\n}\n\n/**\n * Fix type inference errors for exported functions with complex return types\n *\n * TypeScript can't infer types for some exported functions that have complex dependencies,\n * causing errors like: \"The inferred type of 'X' cannot be named without a reference to 'Y'\"\n *\n * This transform adds explicit `: any` type annotations to fix these portability errors.\n */\nexport function fixExportedFunctionTypes(content: string, sourcePath?: string): string {\n let transformed = content;\n\n // Only apply to specific files that are known to have issues\n if (sourcePathMatchesPreset(sourcePath, PRESET_IDS.transformChartingUtilsTypeFix)) {\n // Fix: export const dataToXBand = (...) => { ... }\n // Pattern: export const functionName = (params) => {\n transformed = transformed.replace(\n /export const dataToXBand = \\(/g,\n 'export const dataToXBand: any = ('\n );\n }\n\n // Fix translator package default export type inference issue\n // The spread operator `...i18next` causes TypeScript to require a reference to i18next types\n if (sourcePathMatchesPreset(sourcePath, PRESET_IDS.transformTranslatorIndexTypeFix)) {\n // Add type imports\n if (!transformed.includes('type i18n')) {\n transformed = transformed.replace(\n /import i18next from 'i18next';/,\n \"import i18next, { type i18n, type TOptions } from 'i18next';\"\n );\n }\n\n // Add type annotations before the export default\n if (!transformed.includes('interface Translator')) {\n const typeAnnotations = `\ninterface Translator extends i18n {\n t: (key: string, options: TOptions) => string;\n}\n\ninterface TranslatorModule {\n translator: Translator;\n languageOptions: Array<{ value: string; label: string }>;\n}\n\nconst translatorModule: TranslatorModule = `;\n\n transformed = transformed.replace(/export default \\{/, typeAnnotations + '{');\n\n // Replace the export statement\n transformed = transformed.replace(/\\n\\};$/m, '\\n};\\n\\nexport default translatorModule;');\n }\n }\n\n return transformed;\n}\n\n/**\n * Transform MUI Menu imports to use InlineMenu from @pie-lib/render-ui\n *\n * Replaces direct imports of Menu from '@mui/material/Menu' with InlineMenu\n * from '@pie-lib/render-ui', which includes fixes for the backdrop overlay issue.\n *\n * This addresses a common issue where MUI's Menu component covers the entire screen\n * with a white background when used in inline contexts (dropdowns within text).\n *\n * Transformations:\n * - import Menu from '@mui/material/Menu' → import { InlineMenu as Menu } from '@pie-lib/render-ui'\n * - import Menu, { MenuProps } from '@mui/material/Menu' → import { InlineMenu as Menu } from '@pie-lib/render-ui'; import type { MenuProps } from '@mui/material/Menu'\n * - styled(Menu) continues to work as Menu is aliased to InlineMenu\n *\n * @param content - Source code content\n * @returns Transformed content with Menu imports replaced\n */\nexport function transformMenuToInlineMenu(content: string): string {\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isImportDeclaration(node) &&\n ts.isStringLiteral(node.moduleSpecifier) &&\n node.moduleSpecifier.text === '@mui/material/Menu'\n ) {\n const defaultName = node.importClause?.name?.text;\n if (!defaultName) {\n return;\n }\n\n const namedImports = menuNamedImportsText(node, sourceFile);\n const replacement = [\n `import { InlineMenu as ${defaultName} } from '@pie-lib/render-ui';`,\n namedImports ? `import type { ${namedImports} } from '@mui/material/Menu';` : null,\n ]\n .filter((line): line is string => !!line)\n .join('\\n');\n\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: replacement,\n });\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n return applySourceEdits(content, edits);\n}\n\nfunction menuNamedImportsText(\n node: ts.ImportDeclaration,\n sourceFile: ts.SourceFile\n): string | null {\n const namedBindings = node.importClause?.namedBindings;\n if (!namedBindings || !ts.isNamedImports(namedBindings)) {\n return null;\n }\n\n return namedBindings.elements.map((element) => element.getText(sourceFile)).join(', ');\n}\n\n/**\n * Add InlineMenu export to render-ui index file\n *\n * The InlineMenu component is a pie-elements-ng specific component that wraps\n * MUI's Menu to fix the backdrop overlay issue. Since it doesn't exist in the\n * upstream pie-lib, we need to add its export after the sync completes.\n *\n * This transform adds the InlineMenu export to the end of the render-ui index\n * file if it's not already present.\n *\n * @param content - Source code content\n * @param sourcePath - Path to the source file (to identify render-ui index)\n * @returns Transformed content with InlineMenu export added if needed\n */\nexport function addInlineMenuExport(content: string, sourcePath?: string): string {\n // Only apply to render-ui root index file (not subdirectories like collapsible/index.tsx)\n // sourcePath format: pie-lib/packages/render-ui/src/index.js\n if (!sourcePathMatchesPreset(sourcePath, PRESET_IDS.transformRenderUiInlineMenuExport)) {\n return content;\n }\n\n // Check if InlineMenu export already exists\n if (content.includes('InlineMenu')) {\n return content;\n }\n\n // Add InlineMenu export at the end of the file\n const exportStatement =\n \"\\n// Non-synced pie-elements-ng exports\\nexport { InlineMenu } from './inline-menu';\\n\";\n\n return content.trimEnd() + exportStatement;\n}\n\n/**\n * Transform React component imports that may resolve as module objects in IIFE builds.\n *\n * Some libraries export React components as objects (e.g. forwardRef) or wrapped modules,\n * which can trigger React invariant #130 in certain bundled interop paths.\n *\n * This transform rewrites known-risk imports to pass through a small runtime unwrap helper:\n * - `@mdi/react` default import\n * - `react-konva` named imports\n */\nexport function transformReactInteropComponentImports(content: string): string {\n let transformed = content;\n let touched = false;\n\n // Handle default import from @mdi/react:\n // import Icon from '@mdi/react'\n // ->\n // import IconImport from '@mdi/react'\n // const Icon = unwrapReactInteropSymbol(IconImport, 'Icon');\n transformed = transformed.replace(\n /^import\\s+([A-Za-z_$][\\w$]*)\\s+from\\s+['\"]@mdi\\/react['\"];?\\s*$/m,\n (match, localName: string) => {\n if (localName.endsWith('Import')) {\n return match;\n }\n touched = true;\n return `import ${localName}Import from '@mdi/react';`;\n }\n );\n\n const mdiMatch = transformed.match(\n /^import\\s+([A-Za-z_$][\\w$]*)Import\\s+from\\s+['\"]@mdi\\/react['\"];?\\s*$/m\n );\n if (mdiMatch) {\n const localName = mdiMatch[1];\n const declaration = `const ${localName} = unwrapReactInteropSymbol(${localName}Import, '${localName}');`;\n if (!transformed.includes(declaration)) {\n touched = true;\n transformed = transformed.replace(mdiMatch[0], `${mdiMatch[0]}\\n${declaration}`);\n }\n }\n\n // Handle named imports from react-konva:\n // import { Stage, Layer } from 'react-konva'\n // ->\n // import { Stage as StageImport, Layer as LayerImport } from 'react-konva'\n // const Stage = unwrapReactInteropSymbol(StageImport, 'Stage');\n // const Layer = unwrapReactInteropSymbol(LayerImport, 'Layer');\n const konvaImportRegex = /^import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]react-konva['\"];?\\s*$/m;\n const konvaMatch = transformed.match(konvaImportRegex);\n if (konvaMatch) {\n const rawSpec = konvaMatch[1]\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n\n const parsed = rawSpec\n .map((entry) => {\n const aliasMatch = entry.match(/^([A-Za-z_$][\\w$]*)\\s+as\\s+([A-Za-z_$][\\w$]*)$/);\n if (aliasMatch) {\n return { exported: aliasMatch[1], local: aliasMatch[2] };\n }\n const singleMatch = entry.match(/^([A-Za-z_$][\\w$]*)$/);\n if (singleMatch) {\n return { exported: singleMatch[1], local: singleMatch[1] };\n }\n return null;\n })\n .filter((v): v is { exported: string; local: string } => !!v);\n\n if (parsed.length) {\n const rewrittenSpecs = parsed.map(({ exported, local }) => `${exported} as ${local}Import`);\n const declarations = parsed.map(\n ({ exported, local }) =>\n `const ${local} = unwrapReactInteropSymbol(${local}Import, '${exported}');`\n );\n\n transformed = transformed.replace(\n konvaImportRegex,\n `import { ${rewrittenSpecs.join(', ')} } from 'react-konva';`\n );\n\n for (const declaration of declarations) {\n if (!transformed.includes(declaration)) {\n transformed = transformed.replace(\n /^import\\s+\\{[^}]+\\}\\s+from\\s+['\"]react-konva['\"];?\\s*$/m,\n (line) => `${line}\\n${declaration}`\n );\n }\n }\n touched = true;\n }\n }\n\n // Handle mixed named imports from @pie-lib/render-ui where React components\n // may resolve through nested/default interop in IIFE bundles.\n // Example:\n // import { Collapsible, color, PreviewPrompt } from '@pie-lib/render-ui'\n // ->\n // import { Collapsible as CollapsibleImport, color, PreviewPrompt as PreviewPromptImport } from '@pie-lib/render-ui';\n // const Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible');\n // const PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt');\n const renderUiImportRegex = /^import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m;\n const renderUiMatch = transformed.match(renderUiImportRegex);\n if (renderUiMatch) {\n const rawSpec = renderUiMatch[1]\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n\n const parsed = rawSpec\n .map((entry) => {\n const aliasMatch = entry.match(/^([A-Za-z_$][\\w$]*)\\s+as\\s+([A-Za-z_$][\\w$]*)$/);\n if (aliasMatch) {\n return { exported: aliasMatch[1], local: aliasMatch[2] };\n }\n const singleMatch = entry.match(/^([A-Za-z_$][\\w$]*)$/);\n if (singleMatch) {\n return { exported: singleMatch[1], local: singleMatch[1] };\n }\n return null;\n })\n .filter((v): v is { exported: string; local: string } => !!v);\n\n // Heuristic: only wrap React component-like imports (PascalCase symbols).\n const componentLike = parsed.filter(\n ({ exported, local }) =>\n /^[A-Z]/.test(exported) && /^[A-Z]/.test(local) && !local.endsWith('Import')\n );\n\n if (componentLike.length) {\n const rewrittenSpecs = parsed.map(({ exported, local }) => {\n const shouldWrap = componentLike.some(\n (entry) => entry.exported === exported && entry.local === local\n );\n return shouldWrap\n ? `${exported} as ${local}Import`\n : exported === local\n ? local\n : `${exported} as ${local}`;\n });\n\n const declarations = componentLike.map(\n ({ exported, local }) =>\n `const ${local} = unwrapReactInteropSymbol(${local}Import, '${exported}');`\n );\n\n transformed = transformed.replace(\n renderUiImportRegex,\n `import { ${rewrittenSpecs.join(', ')} } from '@pie-lib/render-ui';`\n );\n\n // Add a namespace import so wrapped component imports can fall back to module members\n // when named import interop resolves unexpectedly in IIFE bundles.\n if (\n !/^import\\s+\\*\\s+as\\s+RenderUiNamespace\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m.test(\n transformed\n )\n ) {\n transformed = transformed.replace(\n /^import\\s+\\{[^}]+\\}\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m,\n (line) => `${line}\\nimport * as RenderUiNamespace from '@pie-lib/render-ui';`\n );\n }\n\n const renderUiInteropPrelude = `const renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;`;\n if (!transformed.includes('const renderUiNamespaceAny = RenderUiNamespace as any;')) {\n transformed = transformed.replace(\n /^import\\s+\\*\\s+as\\s+RenderUiNamespace\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m,\n (line) => `${line}\\n${renderUiInteropPrelude}`\n );\n }\n\n for (const declaration of declarations) {\n const withFallback = declaration.replace(\n /unwrapReactInteropSymbol\\((\\w+)Import, '(\\w+)'\\);$/,\n \"unwrapReactInteropSymbol($1Import, '$2') || unwrapReactInteropSymbol(renderUi.$2, '$2');\"\n );\n if (!transformed.includes(declaration) && !transformed.includes(withFallback)) {\n transformed = transformed.replace(\n /^import\\s+\\{[^}]+\\}\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m,\n (line) => `${line}\\n${withFallback}`\n );\n }\n }\n touched = true;\n }\n }\n\n if (!touched) {\n return transformed;\n }\n\n if (!transformed.includes('function isRenderableReactInteropType(')) {\n const helperBlock = `function isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\n`;\n\n // Capture top-of-file import blocks, including multiline imports.\n const importBlockMatch = transformed.match(\n /^(?:(?:\\s*\\/\\/[^\\n]*\\n|\\s*\\/\\*[\\s\\S]*?\\*\\/\\s*\\n|\\s*\\n)*)((?:import[\\s\\S]*?;\\s*\\n)+)/\n );\n if (importBlockMatch) {\n const insertAt = importBlockMatch[0].length;\n transformed =\n transformed.slice(0, insertAt) + '\\n' + helperBlock + transformed.slice(insertAt);\n } else {\n transformed = `${helperBlock}\\n${transformed}`;\n }\n }\n\n return transformed;\n}\n"]}
1
+ {"version":3,"file":"sync-imports.js","sourceRoot":"","sources":["../../../src/lib/upstream/sync-imports.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Import rewriting utilities for sync operations\n *\n * This module contains transforms that rewrite imports during the sync process\n * to handle differences between the upstream CommonJS/Webpack code and the\n * ESM-only target environment.\n *\n * ## Why These Rewrites Are Needed:\n *\n * 1. **Lodash → Lodash-ES**:\n * - Upstream uses CommonJS `lodash` package\n * - ESM requires `lodash-es` for proper tree-shaking\n *\n * 2. **Recharts 2.x → 3.x**:\n * - Upstream uses recharts 2.x which has lodash dependency\n * - Recharts 3.x is fully ESM-compatible with no lodash dependency\n *\n * 3. **@pie-framework Events → Internal Packages**:\n * - Upstream references external @pie-framework packages\n * - Monorepo uses internal @pie-element/shared-* packages\n *\n * 4. **Editable-HTML Constants Inlining**:\n * - `editable-html` package is not ESM-compatible (Slate v0.x dependencies)\n * - We only need constants, so inline them to avoid the dependency\n *\n * 5. **TokenTypes Re-export**:\n * - Upstream code works in CommonJS/Webpack (looser module resolution)\n * - ESM requires explicit re-exports for proper module graph\n *\n * 6. **Configure Defaults Inlining**:\n * - Configure package is not ESM-compatible (Slate v0.x dependencies)\n * - Student-facing UI only needs minimal fallback configuration\n * - Inline empty defaults object to avoid the dependency\n */\nimport { existsSync } from 'node:fs';\nimport { readFile, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport ts from 'typescript';\nimport {\n PRESET_IDS,\n shouldTransformConfigUiMathjsSource,\n shouldTransformReactInputAutosizeSource,\n} from './sync-presets.js';\nimport { applySourceEdits, rewriteModuleSpecifiers, type SourceEdit } from './sync-source-edit.js';\n\nconst SOURCE_PATH_PRESET_RULES = {\n [PRESET_IDS.transformTextSelectTokenTypesReexport]: (sourcePath: string) =>\n sourcePath.includes('text-select') && sourcePath.includes('token-select/index'),\n [PRESET_IDS.transformChartingUtilsTypeFix]: (sourcePath: string) =>\n sourcePath.includes('charting') && sourcePath.includes('utils'),\n [PRESET_IDS.transformTranslatorIndexTypeFix]: (sourcePath: string) =>\n sourcePath.includes('translator') && sourcePath.includes('/src/index'),\n [PRESET_IDS.transformRenderUiInlineMenuExport]: (sourcePath: string) =>\n sourcePath.includes('render-ui/src/index.js'),\n} as const;\n\nfunction sourcePathMatchesPreset(\n sourcePath: string | undefined,\n presetId: keyof typeof SOURCE_PATH_PRESET_RULES\n): boolean {\n return !!sourcePath && SOURCE_PATH_PRESET_RULES[presetId](sourcePath);\n}\n\n/**\n * Fix import statements in a file to handle default export conversions\n *\n * When converting JS files with default exports to TS, we need to update\n * imports in consuming files to use named imports instead.\n */\nexport async function fixImportsInFile(\n filePath: string,\n defaultExportFiles: Set<string>\n): Promise<boolean> {\n let content = await readFile(filePath, 'utf-8');\n let modified = false;\n\n // Match import statements: import Something from './file'\n const importRegex = /import\\s+(\\w+)\\s+from\\s+['\"](\\.[^'\"]+)['\"]/g;\n const matches = Array.from(content.matchAll(importRegex));\n\n for (const match of matches) {\n const [fullMatch, importName, importPath] = match;\n // Normalize the import path (remove extensions, resolve relative paths)\n const normalizedPath = importPath.replace(/\\.(tsx?|jsx?)$/, '');\n\n // Check if this file had a default export\n if (defaultExportFiles.has(normalizedPath)) {\n // Replace default import with named import\n const replacement = `import { ${importName} } from '${importPath}'`;\n content = content.replace(fullMatch, replacement);\n modified = true;\n }\n }\n\n if (modified) {\n await writeFile(filePath, content, 'utf-8');\n }\n\n return modified;\n}\n\n/**\n * Rewrite relative ESM specifiers to explicit `.js` extensions for NodeNext compatibility.\n *\n * This is applied after sync so TypeScript source uses runtime-valid ESM specifiers:\n * - `./foo` -> `./foo.js`\n * - `./bar` (directory with index file) -> `./bar/index.js`\n */\nexport async function rewriteRelativeSpecifiersForNodeEsm(filePath: string): Promise<boolean> {\n let content = await readFile(filePath, 'utf-8');\n let modified = false;\n\n const rewriteSpecifier = (specifier: string): string => {\n if (!specifier.startsWith('./') && !specifier.startsWith('../')) {\n return specifier;\n }\n\n // Keep explicit extensions as-is (css/json/svg/js/etc.).\n if (/\\.[a-z0-9]+$/i.test(specifier)) {\n return specifier;\n }\n\n const basePath = join(dirname(filePath), specifier);\n const moduleFileExtensions = ['.ts', '.tsx', '.mts', '.cts', '.js', '.jsx', '.mjs', '.cjs'];\n const indexFileExtensions = moduleFileExtensions.map((ext) => `/index${ext}`);\n\n const hasModuleFile = moduleFileExtensions.some((ext) => existsSync(`${basePath}${ext}`));\n if (hasModuleFile) {\n return `${specifier}.js`;\n }\n\n const hasIndexFile = indexFileExtensions.some((suffix) => existsSync(`${basePath}${suffix}`));\n if (hasIndexFile) {\n return `${specifier.replace(/\\/$/, '')}/index.js`;\n }\n\n // Do not guess unresolved paths.\n return specifier;\n };\n\n content = content.replace(\n /(from\\s+)(['\"])(\\.\\.?\\/[^'\"]+)\\2/g,\n (match, prefix, quote, specifier) => {\n const rewritten = rewriteSpecifier(specifier);\n if (rewritten !== specifier) {\n modified = true;\n return `${prefix}${quote}${rewritten}${quote}`;\n }\n return match;\n }\n );\n\n content = content.replace(\n /(import\\(\\s*)(['\"])(\\.\\.?\\/[^'\"]+)\\2(\\s*\\))/g,\n (match, start, quote, specifier, end) => {\n const rewritten = rewriteSpecifier(specifier);\n if (rewritten !== specifier) {\n modified = true;\n return `${start}${quote}${rewritten}${quote}${end}`;\n }\n return match;\n }\n );\n\n content = content.replace(/\\bimport\\s+(['\"])(\\.\\.?\\/[^'\"]+)\\1/g, (match, quote, specifier) => {\n const rewritten = rewriteSpecifier(specifier);\n if (rewritten !== specifier) {\n modified = true;\n return `import ${quote}${rewritten}${quote}`;\n }\n return match;\n });\n\n if (modified) {\n await writeFile(filePath, content, 'utf-8');\n }\n\n return modified;\n}\n\n/**\n * Check if code contains JSX syntax\n */\nexport function containsJsx(code: string): boolean {\n return /<[A-Za-z][\\w-]*[\\s/>]/.test(code);\n}\n\n/**\n * Replace editable-html imports with inlined constants\n *\n * editable-html is not ESM-compatible (depends on Slate v0.x), but some packages\n * only import constants from it. We inline these constants to avoid the dependency.\n */\nexport function inlineEditableHtmlConstants(code: string): string {\n // Check if file imports from editable-html\n const editableHtmlImportRegex =\n /import\\s+(\\w+)\\s+from\\s+['\"]\\.\\.\\/\\.\\.\\/\\.\\.\\/editable-html\\/src\\/constants['\"]/;\n const match = code.match(editableHtmlImportRegex);\n\n if (!match) {\n return code; // No editable-html import, return unchanged\n }\n\n const importName = match[1];\n\n // Replace the import with inlined constants\n const inlinedConstants = `// Inlined from editable-html/src/constants (not ESM-compatible)\nconst ${importName} = {\n MAIN_CONTAINER_CLASS: 'main-container',\n PIE_TOOLBAR__CLASS: 'pie-toolbar',\n};`;\n\n return code.replace(editableHtmlImportRegex, inlinedConstants);\n}\n\n/**\n * Fix missing re-export of TokenTypes in text-select token-select/index.jsx\n * The upstream imports TokenTypes from ./token but doesn't re-export it,\n * causing build failures when parent index.js tries to import it.\n */\nexport function reexportTokenTypes(code: string, filePath: string): string {\n // Only apply to text-select token-select/index file\n if (!sourcePathMatchesPreset(filePath, PRESET_IDS.transformTextSelectTokenTypesReexport)) {\n return code;\n }\n\n // Check if file imports TokenTypes from ./token\n if (!code.includes(\"import Token, { TokenTypes } from './token'\")) {\n return code;\n }\n\n // Check if already exports TokenTypes\n if (code.includes('export { TokenTypes }')) {\n return code;\n }\n\n // Add export after the default export\n return code.replace(\n /^export default TokenSelect;$/m,\n 'export default TokenSelect;\\nexport { TokenTypes };'\n );\n}\n\n/**\n * Replace configure/lib/defaults import with an empty defaults object\n * when configure directory is not synced (ESM-incompatible due to Slate v0.x)\n */\nexport function inlineConfigureDefaults(code: string): string {\n // Only apply to files that import from ../configure/lib/defaults\n const configureImportRegex =\n /import\\s+(\\w+)\\s+from\\s+['\"](\\.\\.\\/configure\\/lib\\/defaults|\\.\\.\\/\\.\\.\\/configure\\/lib\\/defaults)['\"]/;\n const match = code.match(configureImportRegex);\n\n if (!match) return code;\n\n const importName = match[1];\n\n // Replace with minimal defaults object\n // The configuration property is what's typically used in student-facing code\n const inlinedDefaults = `// Inlined from configure/lib/defaults (configure/ not synced - ESM-incompatible)\nconst ${importName} = {\n configuration: {\n // Minimal configuration for student-facing UI\n // Full authoring configuration is only needed in the configure package\n } as any\n};`;\n\n return code.replace(configureImportRegex, inlinedDefaults);\n}\n\n/**\n * Determine if a file should have .tsx extension based on content\n */\nexport function shouldUseTsxExtension(content: string, originalPath: string): boolean {\n // If original file was .jsx, use .tsx\n if (originalPath.endsWith('.jsx')) {\n return true;\n }\n\n // If content contains JSX, use .tsx\n if (containsJsx(content)) {\n return true;\n }\n\n // Otherwise use .ts\n return false;\n}\n\n/**\n * Convert CommonJS module.exports to ES module exports\n *\n * Handles patterns like:\n * module.exports = { foo: ..., bar: ... }\n *\n * Converts to:\n * export const foo = ...;\n * export const bar = ...;\n */\nexport function convertModuleExportsToEsm(content: string): string {\n // Match: module.exports = { key: value, key2: value2, ... };\n const moduleExportsPattern = /module\\.exports\\s*=\\s*\\{([\\s\\S]*?)\\};?/;\n const match = content.match(moduleExportsPattern);\n\n if (!match) {\n return content;\n }\n\n const [fullMatch, objectContent] = match;\n\n // Parse the object content into key-value pairs\n // Match patterns like: key: value, (with value possibly spanning multiple lines)\n const exports: string[] = [];\n const lines = objectContent.split('\\n');\n\n let currentKey: string | null = null;\n let currentValue: string[] = [];\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed === '{' || trimmed === '}') continue;\n\n // Check if this line starts a new key\n const keyMatch = trimmed.match(/^(\\w+):\\s*(.*)/);\n if (keyMatch) {\n // Save previous export if any\n if (currentKey) {\n const value = currentValue.join('\\n').replace(/,\\s*$/, ''); // Remove trailing comma\n exports.push(`export const ${currentKey} =\\n${value};`);\n }\n\n // Start new export\n currentKey = keyMatch[1];\n currentValue = [keyMatch[2]];\n } else {\n // Continuation of current value\n currentValue.push(line);\n }\n }\n\n // Save last export\n if (currentKey) {\n const value = currentValue.join('\\n').replace(/,\\s*$/, '');\n exports.push(`export const ${currentKey} =\\n${value};`);\n }\n\n // Replace the module.exports block with ES module exports\n const esmExports = exports.join('\\n\\n');\n return content.replace(fullMatch, esmExports);\n}\n\nconst VENDORED_LODASH_PACKAGE = '@pie-element/shared-lodash';\n\nfunction lodashMemberFromPath(path: string): string {\n return path.replace(/\\.js$/i, '').split('/').pop() ?? path;\n}\n\n/**\n * Transform lodash and lodash-es imports to the vendored shared lodash package.\n *\n * The vendored package is intentionally a narrow ESM implementation of the\n * lodash helpers used by synced PIE sources, avoiding CDN/runtime lodash\n * resolution while keeping import shapes tree-shakeable.\n */\nexport function transformLodashToVendoredLodash(content: string): string {\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n const dynamicDeepImportMembers = new Set<string>();\n\n const visit = (node: ts.Node): void => {\n if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {\n const path = lodashDeepImportPath(node.moduleSpecifier.text);\n if (path) {\n const member = lodashMemberFromPath(path);\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: lodashImportReplacement(node, sourceFile, member),\n });\n }\n } else if (\n ts.isExportDeclaration(node) &&\n node.moduleSpecifier &&\n ts.isStringLiteral(node.moduleSpecifier)\n ) {\n const path = lodashDeepImportPath(node.moduleSpecifier.text);\n if (path) {\n const member = lodashMemberFromPath(path);\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: lodashExportReplacement(node, sourceFile, member),\n });\n }\n } else if (isDynamicStringImport(node)) {\n const path = lodashDeepImportPath(node.arguments[0].text);\n if (path) {\n const member = lodashMemberFromPath(path);\n dynamicDeepImportMembers.add(member);\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: `Promise.resolve({ default: ${member}, ${member} })`,\n });\n }\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n let transformed = applySourceEdits(content, edits);\n\n // Root imports keep their local import shape.\n transformed = rewriteModuleSpecifiers(transformed, (specifier) =>\n specifier === 'lodash' || specifier === 'lodash-es' ? VENDORED_LODASH_PACKAGE : undefined\n );\n\n if (dynamicDeepImportMembers.size > 0) {\n const imports = [...dynamicDeepImportMembers].sort().join(', ');\n transformed = `import { ${imports} } from '${VENDORED_LODASH_PACKAGE}';\\n${transformed}`;\n }\n\n return transformed;\n}\n\nfunction lodashDeepImportPath(specifier: string): string | null {\n const match = specifier.match(/^(?:lodash|lodash-es)\\/(.+)$/);\n return match?.[1] ?? null;\n}\n\nfunction isDynamicStringImport(node: ts.Node): node is ts.CallExpression & {\n arguments: ts.NodeArray<ts.StringLiteral>;\n} {\n return (\n ts.isCallExpression(node) &&\n node.expression.kind === ts.SyntaxKind.ImportKeyword &&\n node.arguments.length === 1 &&\n ts.isStringLiteral(node.arguments[0])\n );\n}\n\nfunction quoteLike(specifier: string, originalText: string): string {\n const delimiter = originalText.startsWith('\"') ? '\"' : \"'\";\n const escaped = specifier.replace(/\\\\/g, '\\\\\\\\').replaceAll(delimiter, `\\\\${delimiter}`);\n return `${delimiter}${escaped}${delimiter}`;\n}\n\nfunction lodashImportReplacement(\n node: ts.ImportDeclaration,\n sourceFile: ts.SourceFile,\n member: string\n): string {\n const packageSpecifier = quoteLike(\n VENDORED_LODASH_PACKAGE,\n node.moduleSpecifier.getText(sourceFile)\n );\n const importClause = node.importClause;\n if (!importClause) {\n return `import ${packageSpecifier};`;\n }\n\n if (importClause.name) {\n return `import { ${formatLodashBinding(member, importClause.name.text)} } from ${packageSpecifier};`;\n }\n\n const namedBindings = importClause.namedBindings;\n if (namedBindings && ts.isNamespaceImport(namedBindings)) {\n return `import { ${formatLodashBinding(member, namedBindings.name.text)} } from ${packageSpecifier};`;\n }\n\n if (namedBindings && ts.isNamedImports(namedBindings)) {\n const bindings = namedBindings.elements\n .map((specifier) => lodashImportSpecifierBinding(member, specifier))\n .join(', ');\n const typeOnly = importClause.isTypeOnly ? 'type ' : '';\n return `import ${typeOnly}{ ${bindings} } from ${packageSpecifier};`;\n }\n\n return `import ${packageSpecifier};`;\n}\n\nfunction lodashExportReplacement(\n node: ts.ExportDeclaration,\n sourceFile: ts.SourceFile,\n member: string\n): string {\n const packageSpecifier = quoteLike(\n VENDORED_LODASH_PACKAGE,\n node.moduleSpecifier?.getText(sourceFile) ?? `'${VENDORED_LODASH_PACKAGE}'`\n );\n const exportClause = node.exportClause;\n if (!exportClause) {\n return `export { ${member} } from ${packageSpecifier};`;\n }\n\n if (ts.isNamespaceExport(exportClause)) {\n return `export { ${formatLodashBinding(member, exportClause.name.text)} } from ${packageSpecifier};`;\n }\n\n const bindings = exportClause.elements\n .map((specifier) => lodashExportSpecifierBinding(member, specifier))\n .join(', ');\n const typeOnly = node.isTypeOnly ? 'type ' : '';\n return `export ${typeOnly}{ ${bindings} } from ${packageSpecifier};`;\n}\n\nfunction lodashImportSpecifierBinding(member: string, specifier: ts.ImportSpecifier): string {\n const imported = specifier.propertyName?.text ?? specifier.name.text;\n const local = specifier.name.text;\n\n if (imported === 'default') {\n return formatLodashBinding(member, local);\n }\n\n return imported === local ? imported : `${imported} as ${local}`;\n}\n\nfunction lodashExportSpecifierBinding(member: string, specifier: ts.ExportSpecifier): string {\n const exported = specifier.name.text;\n const local = specifier.propertyName?.text ?? exported;\n\n if (local === 'default') {\n return formatLodashBinding(member, exported);\n }\n\n return local === exported ? exported : `${local} as ${exported}`;\n}\n\nfunction formatLodashBinding(imported: string, local: string): string {\n return imported === local ? imported : `${imported} as ${local}`;\n}\n\nexport const transformLodashToLodashEs = transformLodashToVendoredLodash;\n\n/**\n * Transform classnames imports to clsx.\n *\n * clsx preserves the call shape used by classnames while offering a browser ESM\n * entrypoint, so synced source should prefer it over the CommonJS-era package.\n */\nexport function transformClassnamesToClsx(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === 'classnames' ? 'clsx' : undefined\n );\n}\n\n/**\n * Rewrite js-combinatorics 0.5 `combination(seed, size)` calls to the 2.x `Combination` class.\n *\n * Upstream depends on 0.5, a UMD script with no ESM entrypoint; synced packages depend on 2.x,\n * where `combination(n, k)` counts combinations as a BigInt and throws when given an array.\n * `new Combination(seed, size)` enumerates the same pairs in the same order.\n */\nexport function transformJsCombinatoricsToV2(content: string): string {\n if (!content.includes('js-combinatorics')) {\n return content;\n }\n\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n const callees = new Map<string, string>();\n\n for (const statement of sourceFile.statements) {\n if (\n !ts.isImportDeclaration(statement) ||\n !ts.isStringLiteral(statement.moduleSpecifier) ||\n statement.moduleSpecifier.text !== 'js-combinatorics'\n ) {\n continue;\n }\n const bindings = statement.importClause?.namedBindings;\n if (!bindings || !ts.isNamedImports(bindings)) {\n continue;\n }\n for (const element of bindings.elements) {\n if ((element.propertyName ?? element.name).text !== 'combination') {\n continue;\n }\n const local = element.name.text;\n const aliased = local !== 'combination';\n callees.set(local, aliased ? local : 'Combination');\n edits.push({\n start: element.getStart(sourceFile),\n end: element.getEnd(),\n text: aliased ? `Combination as ${local}` : 'Combination',\n });\n }\n }\n\n if (callees.size === 0) {\n return content;\n }\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n callees.has(node.expression.text)\n ) {\n edits.push({\n start: node.expression.getStart(sourceFile),\n end: node.expression.getEnd(),\n text: `new ${callees.get(node.expression.text)}`,\n });\n }\n ts.forEachChild(node, visit);\n };\n visit(sourceFile);\n\n return applySourceEdits(content, edits);\n}\n\n/**\n * CommonJS packages whose exports Node's ESM loader cannot detect, mapped to the binding the\n * rewrite imports them as. A named import from one of them fails to link when a host imports\n * the built controller in Node; a default import is `module.exports` in Node and in bundlers.\n */\nconst COMMONJS_DEFAULT_IMPORTS: Record<string, string> = {\n humps: 'humps',\n};\n\n/**\n * Rewrite named imports from COMMONJS_DEFAULT_IMPORTS packages to a default import plus a\n * destructure, so `import { camelizeKeys } from 'humps'` becomes\n * `import humps from 'humps'; const { camelizeKeys } = humps;`.\n */\nexport function transformCommonJsNamedImports(content: string): string {\n if (!Object.keys(COMMONJS_DEFAULT_IMPORTS).some((name) => content.includes(name))) {\n return content;\n }\n\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n\n for (const statement of sourceFile.statements) {\n if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) {\n continue;\n }\n const specifier = statement.moduleSpecifier.text;\n if (!Object.hasOwn(COMMONJS_DEFAULT_IMPORTS, specifier)) {\n continue;\n }\n const clause = statement.importClause;\n const bindings = clause?.namedBindings;\n if (\n !clause ||\n clause.isTypeOnly ||\n !bindings ||\n !ts.isNamedImports(bindings) ||\n bindings.elements.length === 0 ||\n bindings.elements.some((element) => element.isTypeOnly)\n ) {\n continue;\n }\n\n const moduleBinding = clause.name?.text ?? COMMONJS_DEFAULT_IMPORTS[specifier];\n const properties = bindings.elements.map((element) =>\n element.propertyName\n ? `${element.propertyName.text}: ${element.name.text}`\n : element.name.text\n );\n const quoted = quoteLike(specifier, statement.moduleSpecifier.getText(sourceFile));\n edits.push({\n start: statement.getStart(sourceFile),\n end: statement.getEnd(),\n text: `import ${moduleBinding} from ${quoted};\\nconst { ${properties.join(', ')} } = ${moduleBinding};`,\n });\n }\n\n return applySourceEdits(content, edits);\n}\n\n/**\n * Replace react-input-autosize with the local ESM autosize input component.\n *\n * The upstream dependency is CommonJS-era and only used by graph label inputs.\n * Synced packages generate a tiny local component instead of carrying the\n * dependency into browser ESM output.\n */\nexport function transformReactInputAutosizeToLocal(content: string, sourcePath?: string): string {\n if (!shouldTransformReactInputAutosizeSource(sourcePath)) {\n return content;\n }\n\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isImportDeclaration(node) &&\n ts.isStringLiteral(node.moduleSpecifier) &&\n node.moduleSpecifier.text === 'react-input-autosize'\n ) {\n const importName = node.importClause?.name?.text;\n if (importName) {\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text:\n importName === 'AutosizeInput'\n ? \"import { AutosizeInput } from './autosize-input.js';\"\n : `import { AutosizeInput as ${importName} } from './autosize-input.js';`,\n });\n }\n } else if (isAutosizeInputComponentAdapter(node, sourceFile)) {\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: '',\n });\n } else if (isAutosizeInputComponentJsxTag(node)) {\n edits.push({\n start: node.tagName.getStart(sourceFile),\n end: node.tagName.getEnd(),\n text: 'AutosizeInput',\n });\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n return applySourceEdits(content, edits);\n}\n\nfunction isAutosizeInputComponentAdapter(\n node: ts.Node,\n sourceFile: ts.SourceFile\n): node is ts.VariableStatement {\n if (!ts.isVariableStatement(node) || node.declarationList.declarations.length !== 1) {\n return false;\n }\n\n const declaration = node.declarationList.declarations[0];\n if (!ts.isIdentifier(declaration.name) || declaration.name.text !== 'AutosizeInputComponent') {\n return false;\n }\n\n return (\n declaration.initializer?.getText(sourceFile).replace(/\\s+/g, '') ===\n 'AutosizeInput?.default??AutosizeInput'\n );\n}\n\nfunction isAutosizeInputComponentJsxTag(\n node: ts.Node\n): node is ts.JsxOpeningElement | ts.JsxClosingElement | ts.JsxSelfClosingElement {\n return (\n (ts.isJsxOpeningElement(node) ||\n ts.isJsxClosingElement(node) ||\n ts.isJsxSelfClosingElement(node)) &&\n ts.isIdentifier(node.tagName) &&\n node.tagName.text === 'AutosizeInputComponent'\n );\n}\n\n/**\n * Replace config-ui's tiny mathjs usage with a local fraction-to-number helper.\n *\n * number-text-field-custom only uses `math.number(math.fraction(value))` to\n * compare custom fraction values. Keep mathjs for number-line where the surface\n * includes exact rational arithmetic, comparisons, snapping, and expression\n * parsing.\n */\nexport function transformConfigUiMathjsToLocalFraction(\n content: string,\n sourcePath?: string\n): string {\n if (!shouldTransformConfigUiMathjsSource(sourcePath)) {\n return content;\n }\n\n let transformed = content.replace(\n /math\\.number\\(\\s*math\\.fraction\\(([^()]+?)\\)\\s*\\)/g,\n 'fractionToNumber($1)'\n );\n\n if (transformed === content) {\n return content;\n }\n\n if (!/\\bmath\\./.test(transformed)) {\n transformed = transformed.replace(\n /import\\s+\\*\\s+as\\s+math\\s+from\\s+(['\"])mathjs\\1;?/,\n \"import { fractionToNumber } from './fraction-to-number.js';\"\n );\n } else if (!transformed.includes(\"from './fraction-to-number.js'\")) {\n transformed = transformed.replace(\n /import\\s+\\*\\s+as\\s+math\\s+from\\s+(['\"])mathjs\\1;?/,\n (match) => `${match}\\nimport { fractionToNumber } from './fraction-to-number.js';`\n );\n }\n\n return transformed;\n}\n\n/**\n * Compatibility wrapper retained for older callers. Lodash imports now target\n * the vendored shared package rather than lodash-es deep modules.\n */\nexport function transformLodashEsDeepImportsToFullySpecified(content: string): string {\n return transformLodashToVendoredLodash(content);\n}\n\n/**\n * Ensure known strict-ESM deep imports include explicit file extensions.\n *\n * Webpack's fully-specified ESM resolution requires `.js` on deep imports like:\n * - react-konva/lib/ReactKonvaCore -> react-konva/lib/ReactKonvaCore.js\n */\nexport function transformKnownDeepImportsToFullySpecified(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === 'react-konva/lib/ReactKonvaCore' ? 'react-konva/lib/ReactKonvaCore.js' : undefined\n );\n}\n\n/**\n * Transform package.json dependencies from lodash/lodash-es to the vendored package.\n *\n * The browser/runtime dependency is a workspace package that vendors the small\n * lodash helper surface needed by synced sources.\n */\nexport function transformPackageJsonLodash<T extends Record<string, any>>(packageJson: T): T {\n const transformed = { ...packageJson };\n\n if (transformed.dependencies?.lodash || transformed.dependencies?.['lodash-es']) {\n transformed.dependencies[VENDORED_LODASH_PACKAGE] = 'workspace:*';\n delete transformed.dependencies.lodash;\n delete transformed.dependencies['lodash-es'];\n }\n\n if (transformed.devDependencies?.lodash || transformed.devDependencies?.['lodash-es']) {\n transformed.devDependencies[VENDORED_LODASH_PACKAGE] = 'workspace:*';\n delete transformed.devDependencies.lodash;\n delete transformed.devDependencies['lodash-es'];\n }\n\n // Remove @types/lodash if present (lodash-es has built-in types)\n if (transformed.dependencies?.['@types/lodash']) {\n delete transformed.dependencies['@types/lodash'];\n }\n if (transformed.devDependencies?.['@types/lodash']) {\n delete transformed.devDependencies['@types/lodash'];\n }\n\n return transformed;\n}\n\n/**\n * Transform recharts version in package.json\n *\n * Upgrades recharts from 2.x to 3.x for ESM compatibility.\n * Recharts 3.x removes the lodash dependency and is fully ESM-compatible.\n */\nexport function transformPackageJsonRecharts<T extends Record<string, any>>(packageJson: T): T {\n const transformed = { ...packageJson };\n\n // Keep recharts on the current ESM-capable major.\n if (transformed.dependencies?.recharts) {\n transformed.dependencies.recharts = '^3.8.1';\n }\n\n return transformed;\n}\n\n/**\n * Apply browser-ESM dependency replacements and upgrades for synced packages.\n *\n * This is intentionally dependency policy, not build-output patching: upstream\n * sync rewrites package manifests toward packages that can participate in the\n * browser ESM graph directly.\n */\nexport function transformPackageJsonBrowserEsmDependencies<T extends Record<string, any>>(\n packageJson: T,\n options: { removeReactInputAutosize?: boolean; removeMathjs?: boolean } = {}\n): T {\n const transformed = { ...packageJson };\n const deps = transformed.dependencies as Record<string, string> | undefined;\n if (!deps) {\n return transformed;\n }\n\n if (deps.classnames) {\n deps.clsx = '^2.1.1';\n delete deps.classnames;\n }\n\n if (options.removeReactInputAutosize) {\n delete deps['react-input-autosize'];\n }\n\n if (options.removeMathjs) {\n delete deps.mathjs;\n }\n\n // Ranges forced onto synced packages after the copy.\n //\n // Only pin a dependency here when this repo has a reason upstream does not\n // share, and state that reason. A pin silently overrides whatever upstream\n // declares, so a pin that has outlived its reason quietly undoes upstream's\n // decisions on every sync.\n //\n // mathjs is pinned to satisfy two constraints that pull in opposite\n // directions:\n // - This repo needs an `exports` map. mathjs 7.x (upstream's range) has\n // none, so it resolves to its CJS `main` and reintroduces the runtime\n // require leaks that \"fix: stabilize browser ESM packaging\" (481671b0)\n // removed from the browser ESM bundles.\n // - Upstream needs fraction.js 4. mathjs >= 14 depends on fraction.js ^5,\n // which uses BigInt and breaks number-line bundling (PIE-926, PIE-1005).\n // mathjs 13.2.3 is the newest release that has an `exports` map AND still\n // depends on fraction.js ^4.3.7, so it satisfies both. Do not raise this to\n // 14+ without resolving the BigInt problem first.\n //\n // react-draggable is deliberately NOT pinned: upstream moved the synced\n // packages to ^4.7.1 and fixed the v4 drag regressions against that exact\n // version, so a pin here would downgrade away from the code those fixes were\n // written for.\n const versionPins: Record<string, string> = {\n '@types/react': '^18.2.0',\n '@types/react-dom': '^18.2.0',\n clsx: '^2.1.1',\n mathjs: '^13.2.3',\n 'react-is': '^18.3.1',\n 'react-redux': '^9.3.0',\n redux: '^5.0.1',\n };\n\n for (const [name, version] of Object.entries(versionPins)) {\n if (deps[name]) {\n deps[name] = version;\n }\n }\n\n delete deps.react;\n delete deps['react-dom'];\n\n return transformed;\n}\n\n/**\n * Transform @pie-framework event package imports to internal packages\n *\n * Handles:\n * - @pie-framework/pie-player-events → @pie-element/shared-player-events\n * - @pie-framework/pie-configure-events → @pie-element/shared-configure-events\n */\nexport function transformPieFrameworkEventImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) => {\n if (specifier === '@pie-framework/pie-player-events') {\n return '@pie-element/shared-player-events';\n }\n if (specifier === '@pie-framework/pie-configure-events') {\n return '@pie-element/shared-configure-events';\n }\n return undefined;\n });\n}\n\n/**\n * Transform @pie-lib/controller-utils imports to internal @pie-element/shared-controller-utils\n *\n * Handles:\n * - @pie-lib/controller-utils → @pie-element/shared-controller-utils\n *\n * Our internal controller-utils package has the same API but with modernized TypeScript\n * and no lodash/debug dependencies.\n */\nexport function transformControllerUtilsImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === '@pie-lib/controller-utils' ? '@pie-element/shared-controller-utils' : undefined\n );\n}\n\n/**\n * Transform @pie-lib shared package imports to internal @pie-element/shared-* packages\n *\n * Handles:\n * - @pie-lib/math-rendering → @pie-element/shared-math-rendering-mathjax\n *\n * These packages have been moved to shared/ for better version control and consistency.\n */\nexport function transformSharedPackageImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) => {\n if (specifier === '@pie-lib/math-rendering') {\n return '@pie-element/shared-math-rendering-mathjax';\n }\n if (specifier === '@pie-lib/feedback') {\n return '@pie-element/shared-feedback';\n }\n return undefined;\n });\n}\n\n/**\n * Rewrite legacy configure subpath imports to author entrypoints.\n *\n * Upstream sometimes imports configure elements via:\n * - @pie-element/<element-name>/configure/lib\n *\n * In this repo, configure code is synced into `src/author` and packages expose that via\n * the `./author` export. Rewriting to `/author` preserves author-vs-delivery boundaries.\n */\nexport function transformLegacyConfigureLibImports(content: string): string {\n return rewriteModuleSpecifiers(content, (specifier) =>\n /^@pie-element\\/[^/]+\\/configure\\/lib$/.test(specifier)\n ? specifier.replace(/\\/configure\\/lib$/, '/author')\n : undefined\n );\n}\n\n/**\n * Transform package.json dependencies for PIE Framework event packages\n *\n * Replaces external @pie-framework event packages with internal workspace packages\n */\nexport function transformPackageJsonPieEvents<T extends Record<string, any>>(packageJson: T): T {\n const transformed = { ...packageJson };\n\n // Replace @pie-framework/pie-player-events with internal package\n if (transformed.dependencies?.['@pie-framework/pie-player-events']) {\n transformed.dependencies['@pie-element/shared-player-events'] = 'workspace:*';\n delete transformed.dependencies['@pie-framework/pie-player-events'];\n }\n if (transformed.devDependencies?.['@pie-framework/pie-player-events']) {\n transformed.devDependencies['@pie-element/shared-player-events'] = 'workspace:*';\n delete transformed.devDependencies['@pie-framework/pie-player-events'];\n }\n\n // Replace @pie-framework/pie-configure-events with internal package\n if (transformed.dependencies?.['@pie-framework/pie-configure-events']) {\n transformed.dependencies['@pie-element/shared-configure-events'] = 'workspace:*';\n delete transformed.dependencies['@pie-framework/pie-configure-events'];\n }\n if (transformed.devDependencies?.['@pie-framework/pie-configure-events']) {\n transformed.devDependencies['@pie-element/shared-configure-events'] = 'workspace:*';\n delete transformed.devDependencies['@pie-framework/pie-configure-events'];\n }\n\n return transformed;\n}\n\n/**\n * Transform package.json dependencies for @pie-lib/controller-utils\n *\n * Replaces @pie-lib/controller-utils with internal @pie-element/shared-controller-utils\n */\nexport function transformPackageJsonControllerUtils<T extends Record<string, any>>(\n packageJson: T\n): T {\n const transformed = { ...packageJson };\n\n // Replace @pie-lib/controller-utils with internal package\n if (transformed.dependencies?.['@pie-lib/controller-utils']) {\n transformed.dependencies['@pie-element/shared-controller-utils'] = 'workspace:*';\n delete transformed.dependencies['@pie-lib/controller-utils'];\n }\n if (transformed.devDependencies?.['@pie-lib/controller-utils']) {\n transformed.devDependencies['@pie-element/shared-controller-utils'] = 'workspace:*';\n delete transformed.devDependencies['@pie-lib/controller-utils'];\n }\n\n return transformed;\n}\n\n/**\n * Transform package.json dependencies for shared packages\n *\n * Replaces @pie-lib shared packages with internal @pie-element/shared-* packages\n */\nexport function transformPackageJsonSharedPackages<T extends Record<string, any>>(\n packageJson: T\n): T {\n const transformed = { ...packageJson };\n\n const sharedPackages = {\n '@pie-lib/math-rendering': '@pie-element/shared-math-rendering-mathjax',\n '@pie-lib/feedback': '@pie-element/shared-feedback',\n };\n\n for (const [oldPkg, newPkg] of Object.entries(sharedPackages)) {\n // Replace in dependencies\n if (transformed.dependencies?.[oldPkg]) {\n transformed.dependencies[newPkg] = 'workspace:*';\n delete transformed.dependencies[oldPkg];\n }\n // Replace in devDependencies\n if (transformed.devDependencies?.[oldPkg]) {\n transformed.devDependencies[newPkg] = 'workspace:*';\n delete transformed.devDependencies[oldPkg];\n }\n }\n\n return transformed;\n}\n\n/**\n * Transform direct property assignment patterns to use assignProps utility\n *\n * Replaces patterns like:\n * Object.entries(props).forEach(([key, value]) => { element[key] = value; });\n * With:\n * assignProps(element, props);\n *\n * And adds the import if not present.\n *\n * NOTE: This transform is available but NOT enabled in the sync pipeline by default.\n * Only enable it if this pattern appears frequently in upstream code and needs\n * to be refactored automatically. For one-off cases, manual refactoring is preferred.\n *\n * To enable: Import and call this in sync-pielib-strategy.ts after other transforms.\n */\nexport function transformToAssignProps(content: string): string {\n let transformed = content;\n let needsImport = false;\n\n // Pattern 1: Object.entries(props).forEach with element[key] = value\n // Matches: Object.entries(props).forEach(([key, value]) => { element[key] = value; });\n const pattern1 =\n /Object\\.entries\\((\\w+)\\)\\.forEach\\(\\(\\[(\\w+),\\s*(\\w+)\\]\\)\\s*=>\\s*\\{\\s*(\\w+)\\[\\2\\]\\s*=\\s*\\3;\\s*\\}\\);?/g;\n const matches1 = Array.from(transformed.matchAll(pattern1));\n\n for (const match of matches1) {\n const [fullMatch, propsVar, _keyVar, _valueVar, elementVar] = match;\n const replacement = `assignProps(${elementVar}, ${propsVar});`;\n transformed = transformed.replace(fullMatch, replacement);\n needsImport = true;\n }\n\n // Pattern 2: for...of loop with Object.entries\n // Matches: for (const [key, value] of Object.entries(props)) { element[key] = value; }\n const pattern2 =\n /for\\s*\\(const\\s*\\[(\\w+),\\s*(\\w+)\\]\\s*of\\s*Object\\.entries\\((\\w+)\\)\\)\\s*\\{\\s*(\\w+)\\[\\1\\]\\s*=\\s*\\2;\\s*\\}/g;\n const matches2 = Array.from(transformed.matchAll(pattern2));\n\n for (const match of matches2) {\n const [fullMatch, _keyVar, _valueVar, propsVar, elementVar] = match;\n const replacement = `assignProps(${elementVar}, ${propsVar});`;\n transformed = transformed.replace(fullMatch, replacement);\n needsImport = true;\n }\n\n // Add import if needed and not already present\n if (needsImport && !transformed.includes(\"from '@pie-element/shared-utils'\")) {\n // Find where to insert the import (after other imports)\n const importMatch = transformed.match(/(import\\s+.*?from\\s+['\"].*?['\"];?\\s*\\n)+/);\n if (importMatch && importMatch.index !== undefined) {\n const lastImportEnd = importMatch.index + importMatch[0].length;\n transformed =\n transformed.slice(0, lastImportEnd) +\n \"import { assignProps } from '@pie-element/shared-utils';\\n\" +\n transformed.slice(lastImportEnd);\n } else {\n // No imports found, add at the beginning (after any leading comments)\n const firstNonCommentLine = transformed.search(/^(?!\\/\\/|\\/\\*|\\*|$)/m);\n if (firstNonCommentLine !== -1) {\n transformed =\n transformed.slice(0, firstNonCommentLine) +\n \"import { assignProps } from '@pie-element/shared-utils';\\n\\n\" +\n transformed.slice(firstNonCommentLine);\n }\n }\n }\n\n return transformed;\n}\n\n/**\n * Transform configure utility imports for flattened directory structure\n *\n * In upstream pie-elements, configure utility files live at configure/utils.js\n * and are imported from configure/src/ files using '../utils'.\n *\n * In the synced structure, both configure/src/ files and configure/utils.js\n * are synced to src/configure/, so the import path needs to change from\n * '../utils' to './utils'.\n *\n * This transform handles:\n * - import { x } from '../utils' → import { x } from './utils'\n * - Only applies to files directly in configure/src/, not subdirectories\n * - Only when the import is '../utils' (not '../utils/something')\n */\nexport function transformConfigureUtilsImports(content: string, relativePath: string): string {\n // Only apply to files directly in configure/src/ (not in subdirectories)\n // Note: In the target, these files end up in author/ directory\n // Match patterns like:\n // - \"configure/src/something.js\" (yes)\n // - \"configure/src/design/something.js\" (no - has subdirectory)\n const configureRootFilePattern = /^configure\\/src\\/[^/]+\\.(jsx?|tsx?)$/;\n if (!configureRootFilePattern.test(relativePath)) {\n return content;\n }\n\n // Transform '../utils' to './utils.js' (only exact match, not '../utils/something')\n // Keep explicit runtime extension for Node ESM consistency.\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === '../utils' ? './utils.js' : undefined\n );\n}\n\n/**\n * Transform legacy SSR-gated `require()` for pie-lib editors into static ESM imports.\n *\n * Older upstream pie-lib used `typeof window` + `require()` so heavy editor code did not\n * run under SSR. That breaks in browser ESM where `require` is undefined. When this pattern\n * is still present in synced sources, rewrite it to a normal default import plus styled()\n * wrapper. If upstream has already moved to ESM imports, this is a no-op.\n */\nexport function transformSsrRequireToEsmImport(content: string): string {\n let transformed = content;\n\n // Pattern 1: SSR check with require() for editable-html-tip-tap with styled wrapper\n // Matches:\n // let EditableHtml;\n // let StyledEditableHTML;\n // if (typeof window !== 'undefined') {\n // EditableHtml = require('@pie-lib/editable-html-tip-tap')['default'];\n // StyledEditableHTML = styled(EditableHtml)(...);\n // }\n //\n // Note: styled() call may span multiple lines\n\n const ssrRequirePattern =\n /(?:\\/\\/import\\s+\\w+\\s+from\\s+['\"]@pie-lib\\/[^'\"]+['\"]\\s*;\\s*\\n)?let\\s+(\\w+);\\s*\\nlet\\s+(\\w+);\\s*\\n(?:\\/\\/\\s*-\\s*mathquill\\s+error\\s+window\\s+not\\s+defined\\s*\\n)?if\\s*\\(\\s*typeof\\s+window\\s*!==\\s*['\"]undefined['\"]\\s*\\)\\s*\\{\\s*\\n\\s*\\1\\s*=\\s*require\\(['\"](@pie-lib\\/[^'\"]+)['\"]\\)\\[['\"]default['\"]\\];\\s*\\n\\s*\\2\\s*=\\s*styled\\(\\1\\)\\(([\\s\\S]*?)\\);\\s*\\n\\s*\\}/;\n\n const match = transformed.match(ssrRequirePattern);\n\n if (match) {\n const [fullMatch, componentVar, styledVar, importPath, styleParams] = match;\n\n const importVarName = `${componentVar}Import`;\n const replacement = `import ${importVarName} from '${importPath}';\n\nconst ${componentVar} = ${importVarName};\nconst ${styledVar} = styled(${componentVar})(${styleParams});`;\n\n transformed = transformed.replace(fullMatch, replacement);\n }\n\n // Pattern 2: Simpler pattern without styled wrapper\n // Matches:\n // //import EditableHTML from '@pie-lib/editable-html-tip-tap';\n // let EditableHtml;\n // if (typeof window !== 'undefined') {\n // EditableHtml = require('@pie-lib/editable-html-tip-tap')['default'];\n // }\n\n const simpleRequirePattern =\n /(?:\\/\\/import\\s+\\w+\\s+from\\s+['\"]@pie-lib\\/[^'\"]+['\"]\\s*;\\s*\\n)?let\\s+(\\w+);\\s*\\nif\\s*\\(\\s*typeof\\s+window\\s*!==\\s*['\"]undefined['\"]\\s*\\)\\s*\\{\\s*\\n\\s*\\1\\s*=\\s*require\\(['\"](@pie-lib\\/[^'\"]+)['\"]\\)\\[['\"]default['\"]\\];\\s*\\n\\s*\\}/;\n\n const simpleMatch = transformed.match(simpleRequirePattern);\n\n if (simpleMatch && !match) {\n // Only apply if we didn't already match the styled pattern\n const [fullMatch, componentVar, importPath] = simpleMatch;\n\n const importVarName = `${componentVar}Import`;\n const replacement = `import ${importVarName} from '${importPath}';\n\nconst ${componentVar} = ${importVarName};`;\n\n transformed = transformed.replace(fullMatch, replacement);\n }\n\n return transformed;\n}\n\n/**\n * Fix TypeScript type inference errors for styled components\n *\n * TypeScript can't infer types for some MUI styled components, causing errors like:\n * \"The inferred type of 'X' cannot be named without a reference to '@emotion/styled'\"\n *\n * This transform adds explicit type annotations to fix these errors.\n */\nexport function fixStyledComponentTypes(content: string): string {\n let transformed = content;\n\n // Pattern 1: Export const styled components (e.g., export const StyledFormControlLabel = styled(...))\n // Add `: any` to fix type inference issues\n // Match any identifier, not just those starting with \"Styled\"\n const exportConstStyledRegex = /export const (\\w+) = styled\\(/g;\n transformed = transformed.replace(exportConstStyledRegex, 'export const $1: any = styled(');\n\n // Pattern 2: Const styled components (e.g., const StyledToken = styled(...), const MiniField = styled(...))\n // Add `: any` to fix type inference issues\n // Match any identifier, not just those starting with \"Styled\"\n const constStyledRegex = /const (\\w+) = styled\\(/g;\n transformed = transformed.replace(constStyledRegex, 'const $1: any = styled(');\n\n // Pattern 3: Class field arrow functions that might return styled components\n // Add `: any` return type to class fields missing type annotations.\n // IMPORTANT: keep this line-scoped so we do not accidentally match multiline JSX\n // assignments such as `foo = (<Component ref={(r) => { ... }} />)`.\n const methodRegex = /^(\\s*)(\\w+)\\s*=\\s*\\([^)\\n]*\\)\\s*=>\\s*\\{/gm;\n transformed = transformed.replace(methodRegex, (match) => {\n // Check if already has type annotation (: type = )\n const hasTypeAnnotation = match.includes(':');\n if (hasTypeAnnotation) {\n return match;\n }\n // Add `: any` type annotation\n return match.replace(/(\\w+)(\\s*=)/, '$1: any$2');\n });\n\n return transformed;\n}\n\n/**\n * Transform self-referential package imports to relative imports\n *\n * In upstream pie-elements, configure files sometimes import from their own package\n * using the package name (e.g., import { X } from '@pie-element/fraction-model').\n * This creates circular dependency issues in the build.\n *\n * This transform converts these self-referential imports to relative paths based on\n * the package structure:\n * - @pie-element/{name} → relative path to delivery component\n *\n * Example:\n * In configure/src/main.jsx:\n * import { FractionModelChart } from '@pie-element/fraction-model'\n * Becomes:\n * import FractionModelChart from '../delivery/fraction-model-chart'\n *\n * @param content - The file content\n * @param packageName - The current package name (e.g., '@pie-element/fraction-model')\n * @param sourceFilePath - The source file path relative to package root\n * @returns Transformed content with relative imports\n */\nexport function transformSelfReferentialImports(\n content: string,\n packageName: string,\n sourceFilePath: string\n): string {\n // Extract element name from package name (@pie-element/fraction-model → fraction-model)\n const elementName = packageName.replace('@pie-element/', '');\n let targetPath: string | null = null;\n\n if (sourceFilePath.startsWith('configure/src/')) {\n // Configure files reference delivery components\n // configure/src/main.jsx → author/main.tsx\n // Relative path from author/ to delivery/\n targetPath = '../delivery';\n } else if (sourceFilePath.startsWith('src/')) {\n // Main src files shouldn't self-reference, but handle it anyway\n targetPath = '.';\n }\n\n if (!targetPath) {\n return content;\n }\n\n // Strategy: Self-referential imports typically come from the package's main\n // index file which re-exports from various locations. Rather than trying to\n // guess individual file locations (which often fails for namespace exports\n // and re-exports), we keep the import pointing to the index.\n return rewriteModuleSpecifiers(content, (specifier) =>\n specifier === `@pie-element/${elementName}` ? `${targetPath}/index.js` : undefined\n );\n}\n\n/**\n * Fix type inference errors for exported functions with complex return types\n *\n * TypeScript can't infer types for some exported functions that have complex dependencies,\n * causing errors like: \"The inferred type of 'X' cannot be named without a reference to 'Y'\"\n *\n * This transform adds explicit `: any` type annotations to fix these portability errors.\n */\nexport function fixExportedFunctionTypes(content: string, sourcePath?: string): string {\n let transformed = content;\n\n // Only apply to specific files that are known to have issues\n if (sourcePathMatchesPreset(sourcePath, PRESET_IDS.transformChartingUtilsTypeFix)) {\n // Fix: export const dataToXBand = (...) => { ... }\n // Pattern: export const functionName = (params) => {\n transformed = transformed.replace(\n /export const dataToXBand = \\(/g,\n 'export const dataToXBand: any = ('\n );\n }\n\n // Fix translator package default export type inference issue\n // The spread operator `...i18next` causes TypeScript to require a reference to i18next types\n if (sourcePathMatchesPreset(sourcePath, PRESET_IDS.transformTranslatorIndexTypeFix)) {\n // Add type imports\n if (!transformed.includes('type i18n')) {\n transformed = transformed.replace(\n /import i18next from 'i18next';/,\n \"import i18next, { type i18n, type TOptions } from 'i18next';\"\n );\n }\n\n // Add type annotations before the export default\n if (!transformed.includes('interface Translator')) {\n const typeAnnotations = `\ninterface Translator extends i18n {\n t: (key: string, options: TOptions) => string;\n}\n\ninterface TranslatorModule {\n translator: Translator;\n languageOptions: Array<{ value: string; label: string }>;\n}\n\nconst translatorModule: TranslatorModule = `;\n\n transformed = transformed.replace(/export default \\{/, typeAnnotations + '{');\n\n // Replace the export statement\n transformed = transformed.replace(/\\n\\};$/m, '\\n};\\n\\nexport default translatorModule;');\n }\n }\n\n return transformed;\n}\n\n/**\n * Transform MUI Menu imports to use InlineMenu from @pie-lib/render-ui\n *\n * Replaces direct imports of Menu from '@mui/material/Menu' with InlineMenu\n * from '@pie-lib/render-ui', which includes fixes for the backdrop overlay issue.\n *\n * This addresses a common issue where MUI's Menu component covers the entire screen\n * with a white background when used in inline contexts (dropdowns within text).\n *\n * Transformations:\n * - import Menu from '@mui/material/Menu' → import { InlineMenu as Menu } from '@pie-lib/render-ui'\n * - import Menu, { MenuProps } from '@mui/material/Menu' → import { InlineMenu as Menu } from '@pie-lib/render-ui'; import type { MenuProps } from '@mui/material/Menu'\n * - styled(Menu) continues to work as Menu is aliased to InlineMenu\n *\n * @param content - Source code content\n * @returns Transformed content with Menu imports replaced\n */\nexport function transformMenuToInlineMenu(content: string): string {\n const sourceFile = ts.createSourceFile(\n 'source.tsx',\n content,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TSX\n );\n const edits: SourceEdit[] = [];\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isImportDeclaration(node) &&\n ts.isStringLiteral(node.moduleSpecifier) &&\n node.moduleSpecifier.text === '@mui/material/Menu'\n ) {\n const defaultName = node.importClause?.name?.text;\n if (!defaultName) {\n return;\n }\n\n const namedImports = menuNamedImportsText(node, sourceFile);\n const replacement = [\n `import { InlineMenu as ${defaultName} } from '@pie-lib/render-ui';`,\n namedImports ? `import type { ${namedImports} } from '@mui/material/Menu';` : null,\n ]\n .filter((line): line is string => !!line)\n .join('\\n');\n\n edits.push({\n start: node.getStart(sourceFile),\n end: node.getEnd(),\n text: replacement,\n });\n }\n\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n return applySourceEdits(content, edits);\n}\n\nfunction menuNamedImportsText(\n node: ts.ImportDeclaration,\n sourceFile: ts.SourceFile\n): string | null {\n const namedBindings = node.importClause?.namedBindings;\n if (!namedBindings || !ts.isNamedImports(namedBindings)) {\n return null;\n }\n\n return namedBindings.elements.map((element) => element.getText(sourceFile)).join(', ');\n}\n\n/**\n * Add InlineMenu export to render-ui index file\n *\n * The InlineMenu component is a pie-elements-ng specific component that wraps\n * MUI's Menu to fix the backdrop overlay issue. Since it doesn't exist in the\n * upstream pie-lib, we need to add its export after the sync completes.\n *\n * This transform adds the InlineMenu export to the end of the render-ui index\n * file if it's not already present.\n *\n * @param content - Source code content\n * @param sourcePath - Path to the source file (to identify render-ui index)\n * @returns Transformed content with InlineMenu export added if needed\n */\nexport function addInlineMenuExport(content: string, sourcePath?: string): string {\n // Only apply to render-ui root index file (not subdirectories like collapsible/index.tsx)\n // sourcePath format: pie-lib/packages/render-ui/src/index.js\n if (!sourcePathMatchesPreset(sourcePath, PRESET_IDS.transformRenderUiInlineMenuExport)) {\n return content;\n }\n\n // Check if InlineMenu export already exists\n if (content.includes('InlineMenu')) {\n return content;\n }\n\n // Add InlineMenu export at the end of the file\n const exportStatement =\n \"\\n// Non-synced pie-elements-ng exports\\nexport { InlineMenu } from './inline-menu';\\n\";\n\n return content.trimEnd() + exportStatement;\n}\n\n/**\n * Transform React component imports that may resolve as module objects in IIFE builds.\n *\n * Some libraries export React components as objects (e.g. forwardRef) or wrapped modules,\n * which can trigger React invariant #130 in certain bundled interop paths.\n *\n * This transform rewrites known-risk imports to pass through a small runtime unwrap helper:\n * - `@mdi/react` default import\n * - `react-konva` named imports\n */\nexport function transformReactInteropComponentImports(content: string): string {\n let transformed = content;\n let touched = false;\n\n // Handle default import from @mdi/react:\n // import Icon from '@mdi/react'\n // ->\n // import IconImport from '@mdi/react'\n // const Icon = unwrapReactInteropSymbol(IconImport, 'Icon');\n transformed = transformed.replace(\n /^import\\s+([A-Za-z_$][\\w$]*)\\s+from\\s+['\"]@mdi\\/react['\"];?\\s*$/m,\n (match, localName: string) => {\n if (localName.endsWith('Import')) {\n return match;\n }\n touched = true;\n return `import ${localName}Import from '@mdi/react';`;\n }\n );\n\n const mdiMatch = transformed.match(\n /^import\\s+([A-Za-z_$][\\w$]*)Import\\s+from\\s+['\"]@mdi\\/react['\"];?\\s*$/m\n );\n if (mdiMatch) {\n const localName = mdiMatch[1];\n const declaration = `const ${localName} = unwrapReactInteropSymbol(${localName}Import, '${localName}');`;\n if (!transformed.includes(declaration)) {\n touched = true;\n transformed = transformed.replace(mdiMatch[0], `${mdiMatch[0]}\\n${declaration}`);\n }\n }\n\n // Handle named imports from react-konva:\n // import { Stage, Layer } from 'react-konva'\n // ->\n // import { Stage as StageImport, Layer as LayerImport } from 'react-konva'\n // const Stage = unwrapReactInteropSymbol(StageImport, 'Stage');\n // const Layer = unwrapReactInteropSymbol(LayerImport, 'Layer');\n const konvaImportRegex = /^import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]react-konva['\"];?\\s*$/m;\n const konvaMatch = transformed.match(konvaImportRegex);\n if (konvaMatch) {\n const rawSpec = konvaMatch[1]\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n\n const parsed = rawSpec\n .map((entry) => {\n const aliasMatch = entry.match(/^([A-Za-z_$][\\w$]*)\\s+as\\s+([A-Za-z_$][\\w$]*)$/);\n if (aliasMatch) {\n return { exported: aliasMatch[1], local: aliasMatch[2] };\n }\n const singleMatch = entry.match(/^([A-Za-z_$][\\w$]*)$/);\n if (singleMatch) {\n return { exported: singleMatch[1], local: singleMatch[1] };\n }\n return null;\n })\n .filter((v): v is { exported: string; local: string } => !!v);\n\n if (parsed.length) {\n const rewrittenSpecs = parsed.map(({ exported, local }) => `${exported} as ${local}Import`);\n const declarations = parsed.map(\n ({ exported, local }) =>\n `const ${local} = unwrapReactInteropSymbol(${local}Import, '${exported}');`\n );\n\n transformed = transformed.replace(\n konvaImportRegex,\n `import { ${rewrittenSpecs.join(', ')} } from 'react-konva';`\n );\n\n for (const declaration of declarations) {\n if (!transformed.includes(declaration)) {\n transformed = transformed.replace(\n /^import\\s+\\{[^}]+\\}\\s+from\\s+['\"]react-konva['\"];?\\s*$/m,\n (line) => `${line}\\n${declaration}`\n );\n }\n }\n touched = true;\n }\n }\n\n // Handle mixed named imports from @pie-lib/render-ui where React components\n // may resolve through nested/default interop in IIFE bundles.\n // Example:\n // import { Collapsible, color, PreviewPrompt } from '@pie-lib/render-ui'\n // ->\n // import { Collapsible as CollapsibleImport, color, PreviewPrompt as PreviewPromptImport } from '@pie-lib/render-ui';\n // const Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible');\n // const PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt');\n const renderUiImportRegex = /^import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m;\n const renderUiMatch = transformed.match(renderUiImportRegex);\n if (renderUiMatch) {\n const rawSpec = renderUiMatch[1]\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n\n const parsed = rawSpec\n .map((entry) => {\n const aliasMatch = entry.match(/^([A-Za-z_$][\\w$]*)\\s+as\\s+([A-Za-z_$][\\w$]*)$/);\n if (aliasMatch) {\n return { exported: aliasMatch[1], local: aliasMatch[2] };\n }\n const singleMatch = entry.match(/^([A-Za-z_$][\\w$]*)$/);\n if (singleMatch) {\n return { exported: singleMatch[1], local: singleMatch[1] };\n }\n return null;\n })\n .filter((v): v is { exported: string; local: string } => !!v);\n\n // Heuristic: only wrap React component-like imports (PascalCase symbols).\n const componentLike = parsed.filter(\n ({ exported, local }) =>\n /^[A-Z]/.test(exported) && /^[A-Z]/.test(local) && !local.endsWith('Import')\n );\n\n if (componentLike.length) {\n const rewrittenSpecs = parsed.map(({ exported, local }) => {\n const shouldWrap = componentLike.some(\n (entry) => entry.exported === exported && entry.local === local\n );\n return shouldWrap\n ? `${exported} as ${local}Import`\n : exported === local\n ? local\n : `${exported} as ${local}`;\n });\n\n const declarations = componentLike.map(\n ({ exported, local }) =>\n `const ${local} = unwrapReactInteropSymbol(${local}Import, '${exported}');`\n );\n\n transformed = transformed.replace(\n renderUiImportRegex,\n `import { ${rewrittenSpecs.join(', ')} } from '@pie-lib/render-ui';`\n );\n\n // Add a namespace import so wrapped component imports can fall back to module members\n // when named import interop resolves unexpectedly in IIFE bundles.\n if (\n !/^import\\s+\\*\\s+as\\s+RenderUiNamespace\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m.test(\n transformed\n )\n ) {\n transformed = transformed.replace(\n /^import\\s+\\{[^}]+\\}\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m,\n (line) => `${line}\\nimport * as RenderUiNamespace from '@pie-lib/render-ui';`\n );\n }\n\n const renderUiInteropPrelude = `const renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;`;\n if (!transformed.includes('const renderUiNamespaceAny = RenderUiNamespace as any;')) {\n transformed = transformed.replace(\n /^import\\s+\\*\\s+as\\s+RenderUiNamespace\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m,\n (line) => `${line}\\n${renderUiInteropPrelude}`\n );\n }\n\n for (const declaration of declarations) {\n const withFallback = declaration.replace(\n /unwrapReactInteropSymbol\\((\\w+)Import, '(\\w+)'\\);$/,\n \"unwrapReactInteropSymbol($1Import, '$2') || unwrapReactInteropSymbol(renderUi.$2, '$2');\"\n );\n if (!transformed.includes(declaration) && !transformed.includes(withFallback)) {\n transformed = transformed.replace(\n /^import\\s+\\{[^}]+\\}\\s+from\\s+['\"]@pie-lib\\/render-ui['\"];?\\s*$/m,\n (line) => `${line}\\n${withFallback}`\n );\n }\n }\n touched = true;\n }\n }\n\n if (!touched) {\n return transformed;\n }\n\n if (!transformed.includes('function isRenderableReactInteropType(')) {\n const helperBlock = `function isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\n`;\n\n // Capture top-of-file import blocks, including multiline imports.\n const importBlockMatch = transformed.match(\n /^(?:(?:\\s*\\/\\/[^\\n]*\\n|\\s*\\/\\*[\\s\\S]*?\\*\\/\\s*\\n|\\s*\\n)*)((?:import[\\s\\S]*?;\\s*\\n)+)/\n );\n if (importBlockMatch) {\n const insertAt = importBlockMatch[0].length;\n transformed =\n transformed.slice(0, insertAt) + '\\n' + helperBlock + transformed.slice(insertAt);\n } else {\n transformed = `${helperBlock}\\n${transformed}`;\n }\n }\n\n return transformed;\n}\n"]}
@@ -113,6 +113,7 @@ export function generateExportsObject(entryPoints, options = {}) {
113
113
  };
114
114
  if (includeBrowserExports) {
115
115
  exports['./browser/delivery'] = {
116
+ types: './dist/delivery/index.d.ts',
116
117
  default: './dist/browser/delivery/index.js',
117
118
  };
118
119
  }
@@ -124,6 +125,7 @@ export function generateExportsObject(entryPoints, options = {}) {
124
125
  };
125
126
  if (includeBrowserExports) {
126
127
  exports['./browser/author'] = {
128
+ types: './dist/author/index.d.ts',
127
129
  default: './dist/browser/author/index.js',
128
130
  };
129
131
  }
@@ -143,6 +145,7 @@ export function generateExportsObject(entryPoints, options = {}) {
143
145
  };
144
146
  if (includeBrowserExports) {
145
147
  exports['./browser/controller'] = {
148
+ types: './dist/controller/index.d.ts',
146
149
  default: './dist/browser/controller/index.js',
147
150
  };
148
151
  }
@@ -158,6 +161,7 @@ export function generateExportsObject(entryPoints, options = {}) {
158
161
  };
159
162
  if (includeBrowserExports) {
160
163
  exports['./browser/print'] = {
164
+ types: './dist/print/index.d.ts',
161
165
  default: './dist/browser/print/index.js',
162
166
  };
163
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync-package-manager.js","sourceRoot":"","sources":["../../../src/lib/upstream/sync-package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized package.json management for upstream sync operations\n *\n * This module consolidates all package.json generation and management logic\n * to eliminate the massive duplication between controllers-strategy and react-strategy.\n */\n\nimport { existsSync, readFileSync } from 'node:fs';\nimport { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';\nimport { dirname, join, resolve } from 'node:path';\nimport { loadPackageJson, type PackageJson } from '../../utils/package-json.js';\nimport type { SyncConfig } from './sync-strategy.js';\nimport { browserEditorRuntimeDeclaration, reachesEditorEngine } from './editor-runtime.js';\nimport { existsAny } from './sync-filesystem.js';\nimport { applyPackageJsonTransforms } from './sync-transforms.js';\nimport {\n BUILD_TOOLS,\n PACKAGE_DEFAULTS,\n REACT,\n SCRIPTS,\n WORKSPACE,\n composeElementBuildScript,\n} from './sync-constants.js';\nimport {\n applyPieLibDependencyVersionPins,\n getPieLibDependencyAugmentations,\n getPieLibDependencyOverride,\n shouldGenerateConfigUiFractionHelper,\n shouldGenerateAutosizeInputComponent,\n} from './sync-presets.js';\n\ninterface EntryPointMap {\n hasIndex: boolean;\n hasDelivery: boolean;\n hasAuthor: boolean;\n hasController: boolean;\n hasConfigure: boolean;\n hasPrint: boolean;\n hasRuntimeSupport: boolean;\n hasTypes: boolean;\n}\n\ninterface BrowserEsmPolicy {\n sharedDependencyVersions?: Record<string, string>;\n}\n\ntype LegacyConfigureEntry = 'author' | 'configure';\n\nfunction getLegacyConfigureEntry(entryPoints: EntryPointMap): LegacyConfigureEntry | null {\n if (entryPoints.hasConfigure) {\n return 'configure';\n }\n if (entryPoints.hasAuthor) {\n return 'author';\n }\n return null;\n}\n\nfunction distEntryExport(entry: LegacyConfigureEntry): Record<string, string> {\n return {\n types: `./dist/${entry}/index.d.ts`,\n default: `./dist/${entry}/index.js`,\n };\n}\n\nfunction readBrowserEsmPolicy(rootDir: string): BrowserEsmPolicy {\n const policyPath = join(rootDir, 'tools/vite/browser-esm-policy.json');\n if (!existsSync(policyPath)) {\n return {};\n }\n try {\n return JSON.parse(readFileSync(policyPath, 'utf-8')) as BrowserEsmPolicy;\n } catch {\n return {};\n }\n}\n\n/**\n * Detect available entry points in an element package\n */\nexport function detectEntryPoints(elementDir: string): EntryPointMap {\n return {\n hasIndex: existsAny([\n join(elementDir, 'src/index.ts'),\n join(elementDir, 'src/index.tsx'),\n join(elementDir, 'src/index.js'),\n join(elementDir, 'src/index.jsx'),\n ]),\n hasDelivery: existsAny([\n join(elementDir, 'src/delivery/index.ts'),\n join(elementDir, 'src/delivery/index.tsx'),\n join(elementDir, 'src/delivery/index.js'),\n join(elementDir, 'src/delivery/index.jsx'),\n ]),\n hasAuthor: existsAny([\n join(elementDir, 'src/author/index.ts'),\n join(elementDir, 'src/author/index.tsx'),\n join(elementDir, 'src/author/index.js'),\n join(elementDir, 'src/author/index.jsx'),\n ]),\n hasController: existsAny([\n join(elementDir, 'src/controller/index.ts'),\n join(elementDir, 'src/controller/index.tsx'),\n join(elementDir, 'src/controller/index.js'),\n join(elementDir, 'src/controller/index.jsx'),\n ]),\n hasConfigure: existsAny([\n join(elementDir, 'src/configure/index.ts'),\n join(elementDir, 'src/configure/index.tsx'),\n join(elementDir, 'src/configure/index.js'),\n join(elementDir, 'src/configure/index.jsx'),\n ]),\n hasPrint: existsAny([\n join(elementDir, 'src/print/index.ts'),\n join(elementDir, 'src/print/index.tsx'),\n join(elementDir, 'src/print/index.js'),\n join(elementDir, 'src/print/index.jsx'),\n ]),\n hasRuntimeSupport: existsAny([\n join(elementDir, 'src/runtime-support.ts'),\n join(elementDir, 'src/runtime-support.tsx'),\n join(elementDir, 'src/runtime-support.js'),\n join(elementDir, 'src/runtime-support.jsx'),\n ]),\n hasTypes: existsAny([\n join(elementDir, 'src/types/index.ts'),\n join(elementDir, 'src/types/index.tsx'),\n join(elementDir, 'src/types/index.js'),\n join(elementDir, 'src/types/index.jsx'),\n ]),\n };\n}\n\n/**\n * Generate exports object based on available entry points\n */\nexport function generateExportsObject(\n entryPoints: EntryPointMap,\n options: { includeBrowserExports?: boolean } = {}\n): Record<string, unknown> {\n const includeBrowserExports = options.includeBrowserExports ?? false;\n const exports: Record<string, unknown> = {\n '.': {\n types: './dist/index.d.ts',\n default: './dist/index.js',\n },\n };\n\n if (entryPoints.hasDelivery) {\n exports['./delivery'] = {\n types: './dist/delivery/index.d.ts',\n default: './dist/delivery/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/delivery'] = {\n default: './dist/browser/delivery/index.js',\n };\n }\n }\n\n if (entryPoints.hasAuthor) {\n exports['./author'] = {\n types: './dist/author/index.d.ts',\n default: './dist/author/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/author'] = {\n default: './dist/browser/author/index.js',\n };\n }\n }\n\n const legacyConfigureEntry = getLegacyConfigureEntry(entryPoints);\n if (legacyConfigureEntry) {\n exports['./configure'] = distEntryExport(legacyConfigureEntry);\n }\n\n if (entryPoints.hasController) {\n exports['./controller'] = {\n types: './dist/controller/index.d.ts',\n default: './dist/controller/index.js',\n };\n exports['./controller.js'] = {\n types: './dist/controller/index.d.ts',\n default: './dist/controller/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/controller'] = {\n default: './dist/browser/controller/index.js',\n };\n }\n }\n\n if (entryPoints.hasPrint) {\n exports['./print'] = {\n types: './dist/print/index.d.ts',\n default: './dist/print/index.js',\n };\n exports['./print.js'] = {\n types: './dist/print/index.d.ts',\n default: './dist/print/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/print'] = {\n default: './dist/browser/print/index.js',\n };\n }\n }\n\n if (entryPoints.hasTypes) {\n exports['./types'] = {\n types: './dist/types/index.d.ts',\n default: './dist/types/index.js',\n };\n }\n\n if (entryPoints.hasRuntimeSupport) {\n exports['./runtime-support'] = {\n types: './dist/runtime-support.d.ts',\n default: './dist/runtime-support.js',\n };\n }\n\n exports['./package.json'] = './package.json';\n\n return exports;\n}\n\nfunction generateRuntimeSupportSource(elementName: string, entryPoints: EntryPointMap): string {\n const packageName = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`;\n return `export const runtimeSupport = {\n schemaVersion: 1,\n packageName: '${packageName}',\n supports: {\n esm: {\n delivery: ${entryPoints.hasDelivery},\n author: ${entryPoints.hasAuthor},\n print: ${entryPoints.hasPrint},\n },\n },\n};\n\nexport default runtimeSupport;\n`;\n}\n\nasync function ensureBrowserRuntimeSupportSource(\n elementName: string,\n elementDir: string,\n entryPoints: EntryPointMap\n): Promise<boolean> {\n const runtimeSupportPath = join(elementDir, 'src', 'runtime-support.ts');\n const nextContent = generateRuntimeSupportSource(elementName, entryPoints);\n const currentContent = existsSync(runtimeSupportPath)\n ? await readFile(runtimeSupportPath, 'utf-8').catch(() => null)\n : null;\n\n if (currentContent === nextContent) {\n return false;\n }\n\n await mkdir(dirname(runtimeSupportPath), { recursive: true });\n await writeFile(runtimeSupportPath, nextContent, 'utf-8');\n return true;\n}\n\n/**\n * Extract imports from source files to determine runtime dependencies\n */\nexport async function extractImportsFromSources(elementDir: string): Promise<Set<string>> {\n const imports = new Set<string>();\n const srcDir = join(elementDir, 'src');\n\n if (!existsSync(srcDir)) {\n return imports;\n }\n\n // Recursively find all .ts, .tsx, .js, .jsx files\n const { readdir: readdirRecursive } = await import('node:fs/promises');\n\n async function scanDirectory(dir: string): Promise<void> {\n try {\n const entries = await readdirRecursive(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n if (entry.isDirectory()) {\n await scanDirectory(fullPath);\n } else if (entry.isFile() && /\\.(ts|tsx|js|jsx)$/.test(entry.name)) {\n try {\n const content = await readFile(fullPath, 'utf-8');\n // Match import statements: import ... from 'package' or import('package')\n const importRegex = /import\\s+(?:[\\w{},\\s*]+\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n const dynamicImportRegex = /import\\s*\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n\n let match: RegExpExecArray | null;\n\n match = importRegex.exec(content);\n while (match !== null) {\n const importPath = match[1];\n // Only track package imports (not relative imports)\n if (!importPath.startsWith('.') && !importPath.startsWith('/')) {\n const normalized = normalizePackageImport(importPath);\n if (normalized) imports.add(normalized);\n }\n match = importRegex.exec(content);\n }\n\n match = dynamicImportRegex.exec(content);\n while (match !== null) {\n const importPath = match[1];\n if (!importPath.startsWith('.') && !importPath.startsWith('/')) {\n const normalized = normalizePackageImport(importPath);\n if (normalized) imports.add(normalized);\n }\n match = dynamicImportRegex.exec(content);\n }\n } catch (err) {\n // Skip files that can't be read\n }\n }\n }\n } catch (err) {\n // Skip directories that can't be read\n }\n }\n\n await scanDirectory(srcDir);\n return imports;\n}\n\nfunction normalizePackageImport(specifier: string): string | null {\n if (!specifier || specifier.startsWith('.') || specifier.startsWith('/')) {\n return null;\n }\n if (specifier.startsWith('@')) {\n const parts = specifier.split('/');\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : null;\n }\n return specifier.split('/')[0] || null;\n}\n\n// Upstream manifests declare these as runtime dependencies, and no synced module imports them:\n// @emotion/style is a deprecated 0.8 package, and @pie-lib/test-utils is a test helper whose\n// testing-library dependencies would install into every host.\nconst UPSTREAM_DEPENDENCIES_TO_DROP = new Set(['@emotion/style', '@pie-lib/test-utils']);\n\nasync function findInstalledPackageJson(\n packageName: string,\n fromDir: string\n): Promise<PackageJson | null> {\n try {\n const { createRequire } = await import('node:module');\n const req = createRequire(resolve(fromDir, 'package.json'));\n const resolvedEntry = req.resolve(packageName);\n\n let currentDir = dirname(resolvedEntry);\n while (true) {\n const candidate = join(currentDir, 'package.json');\n if (existsSync(candidate)) {\n const pkg = await loadPackageJson(candidate).catch(() => null);\n if (pkg && pkg.name === packageName) {\n return pkg;\n }\n }\n\n const parent = dirname(currentDir);\n if (parent === currentDir) {\n break;\n }\n currentDir = parent;\n }\n } catch {\n // Package not resolvable from this location.\n }\n return null;\n}\n\nasync function addTransitivePeerDependencies(\n deps: Record<string, string>,\n fromDir: string,\n declaredPeerDeps: Set<string> = new Set()\n): Promise<void> {\n const depNames = Object.keys(deps);\n\n for (const depName of depNames) {\n if (\n depName.startsWith(WORKSPACE.PIE_LIB_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)\n ) {\n continue;\n }\n\n const installedPkg = await findInstalledPackageJson(depName, fromDir);\n const peerDeps = (installedPkg?.peerDependencies as Record<string, string> | undefined) ?? {};\n const optionalPeers = new Set(\n Object.entries(\n (installedPkg?.peerDependenciesMeta as Record<string, { optional?: boolean }>) ?? {}\n )\n .filter(([, meta]) => meta?.optional)\n .map(([peerName]) => peerName)\n );\n\n for (const [peerName, peerVersion] of Object.entries(peerDeps)) {\n if (deps[peerName] || declaredPeerDeps.has(peerName) || optionalPeers.has(peerName)) {\n continue;\n }\n\n if (\n peerName.startsWith(WORKSPACE.PIE_LIB_PREFIX) ||\n peerName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX) ||\n peerName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)\n ) {\n deps[peerName] = WORKSPACE.VERSION;\n } else {\n deps[peerName] = peerVersion;\n }\n }\n }\n}\n\nasync function inferPeerVersionFromDeclaredDeps(\n targetDep: string,\n deps: Record<string, string>,\n fromDir: string\n): Promise<string | null> {\n for (const depName of Object.keys(deps)) {\n if (\n depName.startsWith(WORKSPACE.PIE_LIB_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)\n ) {\n continue;\n }\n\n const installedPkg = await findInstalledPackageJson(depName, fromDir);\n const peerDeps = (installedPkg?.peerDependencies as Record<string, string> | undefined) ?? {};\n if (peerDeps[targetDep]) {\n return peerDeps[targetDep];\n }\n }\n\n return null;\n}\n\nfunction addKnownPeerFallbacks(deps: Record<string, string>): void {\n // Some widely used packages rely on peers that upstream metadata can omit\n // or that may not be inferable from local resolution during sync.\n if ((deps.recharts || deps['styled-components']) && !deps['react-is']) {\n deps['react-is'] = '^18.3.1';\n }\n\n if (deps['@tiptap/extension-character-count'] && !deps['@tiptap/extensions']) {\n deps['@tiptap/extensions'] = '^3.20.0';\n }\n\n if (deps['@tiptap/extension-list-item'] && !deps['@tiptap/extension-list']) {\n const tiptapVersion = deps['@tiptap/extension-list-item'];\n deps['@tiptap/extension-list'] = tiptapVersion;\n }\n\n if (deps['@testing-library/user-event'] && !deps['@testing-library/dom']) {\n deps['@testing-library/dom'] = '^10.4.1';\n }\n\n if (deps['@visx/curve'] && !deps['d3-shape']) {\n deps['d3-shape'] = '^3.2.0';\n }\n}\n\n/**\n * Extract and normalize dependencies from upstream package.json\n */\nexport function extractUpstreamDependencies(\n upstreamPkg: PackageJson | null\n): Record<string, string> {\n if (!upstreamPkg) return {};\n\n const upstreamDeps = (upstreamPkg.dependencies as Record<string, string> | undefined) ?? {};\n let expectedDeps: Record<string, string> = {};\n\n for (const [name, version] of Object.entries(upstreamDeps)) {\n if (UPSTREAM_DEPENDENCIES_TO_DROP.has(name)) {\n continue;\n }\n if (name.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[name] = WORKSPACE.VERSION;\n } else if (name !== 'react' && name !== 'react-dom') {\n expectedDeps[name] = version;\n }\n }\n\n return expectedDeps;\n}\n\nfunction resolveSyncedVersion(\n upstreamPkg: PackageJson | null,\n existingPkg: PackageJson | null\n): string {\n const existingVersion = typeof existingPkg?.version === 'string' ? existingPkg.version : null;\n if (existingVersion) {\n return existingVersion;\n }\n const upstreamVersion = typeof upstreamPkg?.version === 'string' ? upstreamPkg.version : null;\n return upstreamVersion || '0.1.0';\n}\n\n/**\n * Ensure devDependencies include all required build tools.\n *\n * The pinned versions in BUILD_TOOLS / REACT are the source of truth for the\n * monorepo's toolchain, so we overwrite any existing entries instead of only\n * filling in missing ones. This prevents an upstream package.json from\n * silently downgrading vite / @vitejs/plugin-react / typescript across the\n * pie-lib packages during `upstream:update`.\n */\nexport function ensureBuildToolDependencies(pkg: PackageJson): void {\n if (!pkg.devDependencies || typeof pkg.devDependencies !== 'object') {\n pkg.devDependencies = {};\n }\n\n const devDeps = pkg.devDependencies as Record<string, string>;\n\n devDeps.vite = BUILD_TOOLS.VITE;\n devDeps.typescript = BUILD_TOOLS.TYPESCRIPT;\n devDeps['@vitejs/plugin-react'] = BUILD_TOOLS.VITE_REACT_PLUGIN;\n devDeps['@types/react'] = REACT.TYPES_VERSION;\n devDeps['@types/react-dom'] = REACT.TYPES_VERSION;\n}\n\n/**\n * Check if a @pie-framework or @pie-element/shared- package exists in the workspace\n *\n * Supports both legacy @pie-framework naming and new @pie-element/shared- naming.\n */\nfunction isPieFrameworkWorkspacePackage(packageName: string, config: SyncConfig): boolean {\n let pkgName: string;\n\n if (packageName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)) {\n // Legacy @pie-framework/* packages\n pkgName = packageName.replace(WORKSPACE.PIE_FRAMEWORK_PREFIX, '');\n } else if (packageName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX + 'shared-')) {\n // New @pie-element/shared-* packages\n pkgName = packageName.replace(WORKSPACE.PIE_ELEMENT_PREFIX + 'shared-', '');\n } else {\n return false;\n }\n\n const sharedPackagePath = join(config.pieElementsNg, 'packages/shared', pkgName, 'package.json');\n return existsSync(sharedPackagePath);\n}\n\n/**\n * Generate or update element package.json\n *\n * This function consolidates the ~400 lines of duplicated package.json management\n * logic from controllers-strategy and react-strategy into a single, maintainable function.\n */\nexport async function ensureElementPackageJson(\n elementName: string,\n elementDir: string,\n config: SyncConfig,\n options: { includeBrowserExports?: boolean } = {}\n): Promise<boolean> {\n if (!existsSync(elementDir)) {\n return false;\n }\n\n const pkgPath = join(elementDir, 'package.json');\n const upstreamPkgPath = join(config.pieElements, 'packages', elementName, 'package.json');\n const includeBrowserExports = options.includeBrowserExports ?? false;\n\n // Load existing package.json\n let pkg: PackageJson | null = null;\n if (existsSync(pkgPath)) {\n pkg = await loadPackageJson(pkgPath).catch(() => null);\n }\n\n // Load upstream package.json for dependency info\n const upstreamPkg = existsSync(upstreamPkgPath)\n ? await loadPackageJson(upstreamPkgPath).catch(() => null)\n : null;\n\n // Extract and normalize upstream dependencies\n const expectedDeps = extractUpstreamDependencies(upstreamPkg);\n const declaredPeerDeps = new Set([\n ...Object.keys((pkg?.peerDependencies as Record<string, string> | undefined) ?? {}),\n 'react',\n 'react-dom',\n ]);\n\n // Scan source files for actual imports to catch dependencies from skipped directories\n const importedPackages = await extractImportsFromSources(elementDir);\n\n // Add workspace dependencies found in imports\n const currentPackageName = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`;\n for (const imported of importedPackages) {\n // Skip self-dependencies (package importing from itself)\n if (imported === currentPackageName) {\n continue;\n }\n if (imported === 'react' || imported === 'react-dom') {\n continue;\n }\n\n if (imported.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[imported] = WORKSPACE.VERSION;\n } else if (imported.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX)) {\n expectedDeps[imported] = WORKSPACE.VERSION;\n } else if (imported.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)) {\n // Only add as workspace dependency if it actually exists in packages/shared/\n if (isPieFrameworkWorkspacePackage(imported, config)) {\n expectedDeps[imported] = WORKSPACE.VERSION;\n } else {\n // External @pie-framework package - add with latest version if not already in deps\n if (!expectedDeps[imported]) {\n expectedDeps[imported] = '^1.0.0'; // Use latest 1.x version as default\n }\n }\n } else if (!expectedDeps[imported]) {\n // Keep element package.json aligned with actual runtime imports from src/.\n // Upstream package.json can miss third-party deps after source transforms.\n const installedPkg = await findInstalledPackageJson(imported, elementDir);\n if (installedPkg?.version) {\n expectedDeps[imported] = `^${installedPkg.version}`;\n } else {\n const inferredPeerVersion = await inferPeerVersionFromDeclaredDeps(\n imported,\n expectedDeps,\n elementDir\n );\n if (inferredPeerVersion) {\n expectedDeps[imported] = inferredPeerVersion;\n }\n }\n }\n }\n await addTransitivePeerDependencies(expectedDeps, elementDir, declaredPeerDeps);\n addKnownPeerFallbacks(expectedDeps);\n\n // Create minimal package.json if missing\n if (!pkg) {\n pkg = {\n name: `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`,\n private: true,\n version: resolveSyncedVersion(upstreamPkg, null),\n description:\n (upstreamPkg?.description as string | undefined) ??\n `React implementation of ${elementName} element synced from pie-elements`,\n dependencies: expectedDeps,\n peerDependencies: {\n react: REACT.ELEMENT_PEER_RANGE,\n 'react-dom': REACT.ELEMENT_PEER_RANGE,\n },\n };\n }\n\n // Update dependencies to match upstream\n if (Object.keys(expectedDeps).length > 0) {\n pkg.dependencies = expectedDeps;\n }\n pkg.peerDependencies = {\n ...((pkg.peerDependencies as Record<string, string> | undefined) ?? {}),\n react: REACT.ELEMENT_PEER_RANGE,\n 'react-dom': REACT.ELEMENT_PEER_RANGE,\n };\n\n // Preserve pie metadata (if present upstream or locally)\n const pieMetadata = ((upstreamPkg as PackageJson | null | undefined)?.pie ??\n (pkg as PackageJson | null | undefined)?.pie ??\n undefined) as\n | {\n capabilities?: string[];\n controller?: string;\n configure?: string;\n browserSharedDependencies?: Record<string, string>;\n browserEditorRuntime?: unknown;\n }\n | undefined;\n\n // Apply all standard transformations\n pkg = applyPackageJsonTransforms(pkg);\n\n // React must also be a real dependency, not only a peer. Legacy webpack\n // bundlers (builder.pie-api.com) install `dependencies` and never install\n // peers, so peer-only React leaves node_modules/react absent in the build\n // snapshot and every @mui / @emotion / @dnd-kit peer fails with\n // \"Module not found: Can't resolve 'react'\".\n //\n // This must run AFTER applyPackageJsonTransforms: transformPackageJsonBrowserEsmDependencies\n // unconditionally deletes react/react-dom from dependencies to drop whatever\n // arbitrary range upstream declared. We re-add them here as the final word,\n // pinned to the policy version.\n //\n // Install metadata only. The browser runtime singleton contract stays governed\n // by pie.browserSharedDependencies plus the player import map, and isExternal()\n // in sync-externals.ts keeps React external in every bundle regardless of what\n // is declared here, so bundle output is unaffected.\n //\n // Versions come from tools/vite/browser-esm-policy.json - the same source as\n // pie.browserSharedDependencies below.\n //\n // Declared as a caret range, NOT an exact pin. An exact pin resolves to its own\n // copy alongside the root's `^`-resolved one, and two React instances break\n // hooks at runtime (\"Invalid hook call\", useRef of null). The installed version\n // only has to resolve for the legacy webpack path, so a range is sufficient.\n const sharedRuntimeDeps = readBrowserEsmPolicy(config.pieElementsNg).sharedDependencyVersions;\n if (sharedRuntimeDeps && Object.keys(sharedRuntimeDeps).length > 0) {\n const rangedRuntimeDeps = Object.fromEntries(\n Object.entries(sharedRuntimeDeps).map(([name, version]) => [name, `^${version}`])\n );\n pkg.dependencies = {\n ...((pkg.dependencies as Record<string, string> | undefined) ?? {}),\n ...rangedRuntimeDeps,\n };\n }\n\n // Detect available entry points\n const entryPoints = detectEntryPoints(elementDir);\n const wroteRuntimeSupport =\n includeBrowserExports && !entryPoints.hasRuntimeSupport\n ? await ensureBrowserRuntimeSupportSource(elementName, elementDir, entryPoints)\n : false;\n if (includeBrowserExports) {\n entryPoints.hasRuntimeSupport = true;\n }\n\n // Generate dist-only exports based on entry points. Do not preserve\n // source-backed `development` conditions; PIE-605 makes raw source paths a\n // private implementation detail and keeps public package surfaces dist-only.\n const nextPieMetadata = pieMetadata ? { ...pieMetadata } : {};\n if (entryPoints.hasController) {\n nextPieMetadata.controller = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}/controller`;\n } else {\n delete nextPieMetadata.controller;\n }\n const legacyConfigureEntry = getLegacyConfigureEntry(entryPoints);\n if (legacyConfigureEntry) {\n nextPieMetadata.configure = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}/configure`;\n } else {\n delete nextPieMetadata.configure;\n }\n if (includeBrowserExports) {\n const browserEsmPolicy = readBrowserEsmPolicy(config.pieElementsNg);\n if (browserEsmPolicy.sharedDependencyVersions) {\n nextPieMetadata.browserSharedDependencies = browserEsmPolicy.sharedDependencyVersions;\n }\n } else {\n delete nextPieMetadata.browserSharedDependencies;\n }\n // An element whose browser build bundles the editor engine also builds the editor-runtime\n // variant, which imports the engine from @pie-element/shared-editor-runtime.\n const browserEditorRuntime =\n includeBrowserExports &&\n reachesEditorEngine(\n config.pieElementsNg,\n (pkg.dependencies as Record<string, string> | undefined) ?? {}\n )\n ? browserEditorRuntimeDeclaration(\n config.pieElementsNg,\n new Set(\n [\n entryPoints.hasDelivery && 'delivery',\n entryPoints.hasAuthor && 'author',\n entryPoints.hasPrint && 'print',\n entryPoints.hasController && 'controller',\n ].filter((view): view is string => typeof view === 'string')\n )\n )\n : null;\n if (browserEditorRuntime) {\n nextPieMetadata.browserEditorRuntime = browserEditorRuntime;\n } else {\n delete nextPieMetadata.browserEditorRuntime;\n }\n\n if (Object.keys(nextPieMetadata).length > 0) {\n pkg.pie = nextPieMetadata;\n } else {\n delete pkg.pie;\n }\n\n const hasBrowserBuild = includeBrowserExports;\n pkg.exports = generateExportsObject(entryPoints, { includeBrowserExports: hasBrowserBuild });\n\n // Warn when metadata/structure disagree for core capabilities\n const metadataCapabilities = Array.isArray(pieMetadata?.capabilities)\n ? new Set(pieMetadata.capabilities)\n : null;\n\n if (!entryPoints.hasDelivery || !entryPoints.hasController) {\n console.warn(\n `[upstream:update] ${elementName} missing required entry points:` +\n `${entryPoints.hasDelivery ? '' : ' delivery'}` +\n `${entryPoints.hasController ? '' : ' controller'}`\n );\n }\n\n if (metadataCapabilities) {\n if (metadataCapabilities.has('author') && !entryPoints.hasAuthor) {\n console.warn(\n `[upstream:update] ${elementName} metadata includes author but no src/author entry`\n );\n }\n if (metadataCapabilities.has('print') && !entryPoints.hasPrint) {\n console.warn(\n `[upstream:update] ${elementName} metadata includes print but no src/print entry`\n );\n }\n } else {\n if (entryPoints.hasAuthor) {\n console.warn(\n `[upstream:update] ${elementName} has src/author but no pie.capabilities metadata`\n );\n }\n if (entryPoints.hasPrint) {\n console.warn(\n `[upstream:update] ${elementName} has src/print but no pie.capabilities metadata`\n );\n }\n }\n\n // Set core package.json fields\n pkg.name = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`;\n pkg.version = resolveSyncedVersion(upstreamPkg, pkg);\n pkg.type = PACKAGE_DEFAULTS.TYPE;\n pkg.main = './dist/index.js';\n pkg.types = './dist/index.d.ts';\n\n // Ensure publish surface is dist-only. Source remains available in the repo,\n // but must not be published as a public package API. Controller-bearing\n // elements additionally publish the root shim required by legacy builders.\n const files = Array.isArray(pkg.files) ? (pkg.files as unknown[]) : [];\n const normalizedFiles = new Set<string>(files.filter((v): v is string => typeof v === 'string'));\n normalizedFiles.add('dist');\n normalizedFiles.delete('src');\n if (entryPoints.hasController) {\n normalizedFiles.add('controller.js');\n } else {\n normalizedFiles.delete('controller.js');\n }\n if (legacyConfigureEntry) {\n normalizedFiles.add('configure.js');\n } else {\n normalizedFiles.delete('configure.js');\n }\n if (entryPoints.hasPrint) {\n normalizedFiles.add('print.js');\n } else {\n normalizedFiles.delete('print.js');\n }\n pkg.files = Array.from(normalizedFiles).sort();\n\n // Set sideEffects\n if (typeof pkg.sideEffects === 'undefined') {\n pkg.sideEffects = PACKAGE_DEFAULTS.SIDE_EFFECTS;\n }\n\n // Ensure devDependencies\n ensureBuildToolDependencies(pkg);\n\n // Ensure build scripts\n if (!pkg.scripts || typeof pkg.scripts !== 'object') {\n pkg.scripts = {};\n }\n\n const scripts = pkg.scripts as Record<string, string>;\n const hasIifeEntry =\n existsSync(join(elementDir, 'src/index.iife.ts')) ||\n existsSync(join(elementDir, 'vite.config.iife.ts'));\n\n // A print entry point means this package also needs the legacy print lane, so\n // module/print.js is emitted for the current @pie-framework/pie-print loader.\n scripts.build = composeElementBuildScript({\n browser: hasBrowserBuild,\n editorRuntime: browserEditorRuntime !== null,\n legacyPrint: entryPoints.hasPrint,\n iife: hasIifeEntry,\n });\n scripts.dev = SCRIPTS.DEV;\n scripts.demo = SCRIPTS.DEMO;\n scripts.test = SCRIPTS.TEST;\n\n const controllerShimPath = join(elementDir, 'controller.js');\n const controllerShimContent = \"export * from './dist/controller/index.js';\\n\";\n const hasControllerShim = existsSync(controllerShimPath);\n const currentControllerShim = hasControllerShim\n ? await readFile(controllerShimPath, 'utf-8').catch(() => null)\n : null;\n const shouldWriteControllerShim =\n entryPoints.hasController && currentControllerShim !== controllerShimContent;\n const shouldRemoveControllerShim = !entryPoints.hasController && hasControllerShim;\n const configureShimPath = join(elementDir, 'configure.js');\n const configureShimContent = legacyConfigureEntry\n ? `export { default } from './dist/${legacyConfigureEntry}/index.js';\\nexport * from './dist/${legacyConfigureEntry}/index.js';\\n`\n : null;\n const hasConfigureShim = existsSync(configureShimPath);\n const currentConfigureShim = hasConfigureShim\n ? await readFile(configureShimPath, 'utf-8').catch(() => null)\n : null;\n const shouldWriteConfigureShim =\n configureShimContent !== null && currentConfigureShim !== configureShimContent;\n const shouldRemoveConfigureShim = configureShimContent === null && hasConfigureShim;\n // The IIFE bundlers alias `@pie-element/<element>` to a directory, so a `/print`\n // request resolves as a literal path and never consults `exports`. The root shim is\n // what makes that request land on the built print entry, the same way controller.js\n // and configure.js do for their views.\n const printShimPath = join(elementDir, 'print.js');\n const printShimContent = entryPoints.hasPrint\n ? \"export { default } from './dist/print/index.js';\\nexport * from './dist/print/index.js';\\n\"\n : null;\n const hasPrintShim = existsSync(printShimPath);\n const currentPrintShim = hasPrintShim\n ? await readFile(printShimPath, 'utf-8').catch(() => null)\n : null;\n const shouldWritePrintShim = printShimContent !== null && currentPrintShim !== printShimContent;\n const shouldRemovePrintShim = printShimContent === null && hasPrintShim;\n\n // Check if content changed\n const nextContent = `${JSON.stringify(pkg, null, 2)}\\n`;\n const currentContent = existsSync(pkgPath)\n ? await readFile(pkgPath, 'utf-8').catch(() => null)\n : null;\n\n if (\n currentContent === nextContent &&\n !wroteRuntimeSupport &&\n !shouldWriteControllerShim &&\n !shouldRemoveControllerShim &&\n !shouldWriteConfigureShim &&\n !shouldRemoveConfigureShim &&\n !shouldWritePrintShim &&\n !shouldRemovePrintShim\n ) {\n return false;\n }\n\n // Write updated package.json\n if (currentContent !== nextContent) {\n await writeFile(pkgPath, nextContent, 'utf-8');\n }\n if (shouldWriteControllerShim) {\n await writeFile(controllerShimPath, controllerShimContent, 'utf-8');\n } else if (shouldRemoveControllerShim) {\n await unlink(controllerShimPath).catch(() => {});\n }\n if (shouldWriteConfigureShim && configureShimContent !== null) {\n await writeFile(configureShimPath, configureShimContent, 'utf-8');\n } else if (shouldRemoveConfigureShim) {\n await unlink(configureShimPath).catch(() => {});\n }\n if (shouldWritePrintShim && printShimContent !== null) {\n await writeFile(printShimPath, printShimContent, 'utf-8');\n } else if (shouldRemovePrintShim) {\n await unlink(printShimPath).catch(() => {});\n }\n return true;\n}\n\n/**\n * Generate or update pie-lib package.json\n */\nexport async function ensurePieLibPackageJson(\n pkgName: string,\n pkgDir: string,\n config: SyncConfig\n): Promise<boolean> {\n if (!existsSync(pkgDir)) {\n return false;\n }\n\n const pkgPath = join(pkgDir, 'package.json');\n const upstreamPkgPath = join(config.pieLib, 'packages', pkgName, 'package.json');\n\n let pkg: PackageJson | null = null;\n if (existsSync(pkgPath)) {\n pkg = await loadPackageJson(pkgPath).catch(() => null);\n }\n\n const upstreamPkg = existsSync(upstreamPkgPath)\n ? await loadPackageJson(upstreamPkgPath).catch(() => null)\n : null;\n\n // Extract upstream dependencies\n const upstreamDeps = (upstreamPkg?.dependencies as Record<string, string> | undefined) ?? {};\n let expectedDeps: Record<string, string> = {};\n\n for (const [name, version] of Object.entries(upstreamDeps)) {\n if (UPSTREAM_DEPENDENCIES_TO_DROP.has(name)) {\n continue;\n }\n if (name.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[name] = WORKSPACE.VERSION;\n } else {\n expectedDeps[name] = version;\n }\n }\n\n const importedPackages = await extractImportsFromSources(pkgDir);\n for (const importedPkg of importedPackages) {\n if (importedPkg.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[importedPkg] = WORKSPACE.VERSION;\n continue;\n }\n if (importedPkg.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX)) {\n expectedDeps[importedPkg] = WORKSPACE.VERSION;\n continue;\n }\n\n // Keep pie-lib package.json aligned with actual runtime imports from src/.\n // Upstream package.json can miss some third-party dependencies.\n if (!expectedDeps[importedPkg]) {\n const installedPkg = await findInstalledPackageJson(importedPkg, pkgDir);\n if (installedPkg?.version) {\n expectedDeps[importedPkg] = `^${installedPkg.version}`;\n } else {\n const inferredPeerVersion = await inferPeerVersionFromDeclaredDeps(\n importedPkg,\n expectedDeps,\n pkgDir\n );\n if (inferredPeerVersion) {\n expectedDeps[importedPkg] = inferredPeerVersion;\n }\n }\n }\n }\n\n await addTransitivePeerDependencies(expectedDeps, pkgDir);\n addKnownPeerFallbacks(expectedDeps);\n\n const dependencyAugmentations = getPieLibDependencyAugmentations(pkgName);\n for (const [depName, version] of Object.entries(dependencyAugmentations)) {\n if (!expectedDeps[depName]) {\n expectedDeps[depName] = version;\n }\n }\n\n const declaresReactRuntime =\n typeof expectedDeps.react === 'string' || typeof expectedDeps['react-dom'] === 'string';\n\n expectedDeps =\n (applyPackageJsonTransforms({ dependencies: expectedDeps } as PackageJson, {\n removeReactInputAutosize: shouldGenerateAutosizeInputComponent(pkgName),\n removeMathjs:\n shouldGenerateConfigUiFractionHelper(pkgName) && !importedPackages.has('mathjs'),\n }).dependencies as Record<string, string> | undefined) ?? {};\n\n // Last word on versions, so it beats both the upstream manifest and the installed-version\n // inference above. Without it a sync walks @tiptap/* back to upstream's 3.20.0.\n expectedDeps = applyPieLibDependencyVersionPins(expectedDeps);\n\n // Create minimal package.json if missing\n if (!pkg) {\n pkg = {\n name: `${WORKSPACE.PIE_LIB_PREFIX}${pkgName}`,\n private: true,\n version: resolveSyncedVersion(upstreamPkg, null),\n description:\n (upstreamPkg?.description as string | undefined) ??\n `React implementation of @pie-lib/${pkgName} synced from pie-lib`,\n dependencies: expectedDeps,\n };\n }\n\n // Update dependencies\n if (Object.keys(expectedDeps).length > 0) {\n pkg.dependencies = expectedDeps;\n }\n\n const dependencyOverride = getPieLibDependencyOverride(pkgName);\n if (dependencyOverride) {\n pkg.dependencies = dependencyOverride;\n }\n\n if (declaresReactRuntime) {\n pkg.peerDependencies = {\n ...((pkg.peerDependencies as Record<string, string> | undefined) ?? {}),\n react: REACT.LIBRARY_PEER_RANGE,\n 'react-dom': REACT.LIBRARY_PEER_RANGE,\n };\n }\n\n // Generate dist-only exports. Pie-lib packages expose only their compiled\n // top-level entry; raw source paths are intentionally not public.\n const exportsObj: Record<string, unknown> = {};\n\n exportsObj['.'] = {\n types: './dist/index.d.ts',\n default: './dist/index.js',\n };\n\n pkg.name = `${WORKSPACE.PIE_LIB_PREFIX}${pkgName}`;\n pkg.version = resolveSyncedVersion(upstreamPkg, pkg);\n pkg.type = PACKAGE_DEFAULTS.TYPE;\n pkg.main = './dist/index.js';\n pkg.types = './dist/index.d.ts';\n pkg.exports = exportsObj;\n\n // Ensure publish surface is dist-only. Source remains available in the repo,\n // but must not be published as a public package API.\n pkg.files = ['dist'];\n\n if (typeof pkg.sideEffects === 'undefined') {\n pkg.sideEffects = PACKAGE_DEFAULTS.SIDE_EFFECTS;\n }\n\n // Pie-lib packages use a vite.config.ts that imports @vitejs/plugin-react,\n // so their devDependencies must include the same build toolchain that\n // element packages do. Without this, a fresh `bun install` (no hoisting)\n // fails to resolve the plugin when turbo runs `vite build` per package.\n ensureBuildToolDependencies(pkg);\n\n // Ensure build scripts\n if (!pkg.scripts || typeof pkg.scripts !== 'object') {\n pkg.scripts = {};\n }\n\n const scripts = pkg.scripts as Record<string, string>;\n scripts.build = SCRIPTS.BUILD;\n scripts.dev = SCRIPTS.DEV;\n scripts.test = SCRIPTS.TEST;\n\n const nextContent = `${JSON.stringify(pkg, null, 2)}\\n`;\n const currentContent = existsSync(pkgPath)\n ? await readFile(pkgPath, 'utf-8').catch(() => null)\n : null;\n\n if (currentContent === nextContent) {\n return false;\n }\n\n await writeFile(pkgPath, nextContent, 'utf-8');\n return true;\n}\n"]}
1
+ {"version":3,"file":"sync-package-manager.js","sourceRoot":"","sources":["../../../src/lib/upstream/sync-package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized package.json management for upstream sync operations\n *\n * This module consolidates all package.json generation and management logic\n * to eliminate the massive duplication between controllers-strategy and react-strategy.\n */\n\nimport { existsSync, readFileSync } from 'node:fs';\nimport { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';\nimport { dirname, join, resolve } from 'node:path';\nimport { loadPackageJson, type PackageJson } from '../../utils/package-json.js';\nimport type { SyncConfig } from './sync-strategy.js';\nimport { browserEditorRuntimeDeclaration, reachesEditorEngine } from './editor-runtime.js';\nimport { existsAny } from './sync-filesystem.js';\nimport { applyPackageJsonTransforms } from './sync-transforms.js';\nimport {\n BUILD_TOOLS,\n PACKAGE_DEFAULTS,\n REACT,\n SCRIPTS,\n WORKSPACE,\n composeElementBuildScript,\n} from './sync-constants.js';\nimport {\n applyPieLibDependencyVersionPins,\n getPieLibDependencyAugmentations,\n getPieLibDependencyOverride,\n shouldGenerateConfigUiFractionHelper,\n shouldGenerateAutosizeInputComponent,\n} from './sync-presets.js';\n\ninterface EntryPointMap {\n hasIndex: boolean;\n hasDelivery: boolean;\n hasAuthor: boolean;\n hasController: boolean;\n hasConfigure: boolean;\n hasPrint: boolean;\n hasRuntimeSupport: boolean;\n hasTypes: boolean;\n}\n\ninterface BrowserEsmPolicy {\n sharedDependencyVersions?: Record<string, string>;\n}\n\ntype LegacyConfigureEntry = 'author' | 'configure';\n\nfunction getLegacyConfigureEntry(entryPoints: EntryPointMap): LegacyConfigureEntry | null {\n if (entryPoints.hasConfigure) {\n return 'configure';\n }\n if (entryPoints.hasAuthor) {\n return 'author';\n }\n return null;\n}\n\nfunction distEntryExport(entry: LegacyConfigureEntry): Record<string, string> {\n return {\n types: `./dist/${entry}/index.d.ts`,\n default: `./dist/${entry}/index.js`,\n };\n}\n\nfunction readBrowserEsmPolicy(rootDir: string): BrowserEsmPolicy {\n const policyPath = join(rootDir, 'tools/vite/browser-esm-policy.json');\n if (!existsSync(policyPath)) {\n return {};\n }\n try {\n return JSON.parse(readFileSync(policyPath, 'utf-8')) as BrowserEsmPolicy;\n } catch {\n return {};\n }\n}\n\n/**\n * Detect available entry points in an element package\n */\nexport function detectEntryPoints(elementDir: string): EntryPointMap {\n return {\n hasIndex: existsAny([\n join(elementDir, 'src/index.ts'),\n join(elementDir, 'src/index.tsx'),\n join(elementDir, 'src/index.js'),\n join(elementDir, 'src/index.jsx'),\n ]),\n hasDelivery: existsAny([\n join(elementDir, 'src/delivery/index.ts'),\n join(elementDir, 'src/delivery/index.tsx'),\n join(elementDir, 'src/delivery/index.js'),\n join(elementDir, 'src/delivery/index.jsx'),\n ]),\n hasAuthor: existsAny([\n join(elementDir, 'src/author/index.ts'),\n join(elementDir, 'src/author/index.tsx'),\n join(elementDir, 'src/author/index.js'),\n join(elementDir, 'src/author/index.jsx'),\n ]),\n hasController: existsAny([\n join(elementDir, 'src/controller/index.ts'),\n join(elementDir, 'src/controller/index.tsx'),\n join(elementDir, 'src/controller/index.js'),\n join(elementDir, 'src/controller/index.jsx'),\n ]),\n hasConfigure: existsAny([\n join(elementDir, 'src/configure/index.ts'),\n join(elementDir, 'src/configure/index.tsx'),\n join(elementDir, 'src/configure/index.js'),\n join(elementDir, 'src/configure/index.jsx'),\n ]),\n hasPrint: existsAny([\n join(elementDir, 'src/print/index.ts'),\n join(elementDir, 'src/print/index.tsx'),\n join(elementDir, 'src/print/index.js'),\n join(elementDir, 'src/print/index.jsx'),\n ]),\n hasRuntimeSupport: existsAny([\n join(elementDir, 'src/runtime-support.ts'),\n join(elementDir, 'src/runtime-support.tsx'),\n join(elementDir, 'src/runtime-support.js'),\n join(elementDir, 'src/runtime-support.jsx'),\n ]),\n hasTypes: existsAny([\n join(elementDir, 'src/types/index.ts'),\n join(elementDir, 'src/types/index.tsx'),\n join(elementDir, 'src/types/index.js'),\n join(elementDir, 'src/types/index.jsx'),\n ]),\n };\n}\n\n/**\n * Generate exports object based on available entry points\n */\nexport function generateExportsObject(\n entryPoints: EntryPointMap,\n options: { includeBrowserExports?: boolean } = {}\n): Record<string, unknown> {\n const includeBrowserExports = options.includeBrowserExports ?? false;\n const exports: Record<string, unknown> = {\n '.': {\n types: './dist/index.d.ts',\n default: './dist/index.js',\n },\n };\n\n if (entryPoints.hasDelivery) {\n exports['./delivery'] = {\n types: './dist/delivery/index.d.ts',\n default: './dist/delivery/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/delivery'] = {\n types: './dist/delivery/index.d.ts',\n default: './dist/browser/delivery/index.js',\n };\n }\n }\n\n if (entryPoints.hasAuthor) {\n exports['./author'] = {\n types: './dist/author/index.d.ts',\n default: './dist/author/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/author'] = {\n types: './dist/author/index.d.ts',\n default: './dist/browser/author/index.js',\n };\n }\n }\n\n const legacyConfigureEntry = getLegacyConfigureEntry(entryPoints);\n if (legacyConfigureEntry) {\n exports['./configure'] = distEntryExport(legacyConfigureEntry);\n }\n\n if (entryPoints.hasController) {\n exports['./controller'] = {\n types: './dist/controller/index.d.ts',\n default: './dist/controller/index.js',\n };\n exports['./controller.js'] = {\n types: './dist/controller/index.d.ts',\n default: './dist/controller/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/controller'] = {\n types: './dist/controller/index.d.ts',\n default: './dist/browser/controller/index.js',\n };\n }\n }\n\n if (entryPoints.hasPrint) {\n exports['./print'] = {\n types: './dist/print/index.d.ts',\n default: './dist/print/index.js',\n };\n exports['./print.js'] = {\n types: './dist/print/index.d.ts',\n default: './dist/print/index.js',\n };\n if (includeBrowserExports) {\n exports['./browser/print'] = {\n types: './dist/print/index.d.ts',\n default: './dist/browser/print/index.js',\n };\n }\n }\n\n if (entryPoints.hasTypes) {\n exports['./types'] = {\n types: './dist/types/index.d.ts',\n default: './dist/types/index.js',\n };\n }\n\n if (entryPoints.hasRuntimeSupport) {\n exports['./runtime-support'] = {\n types: './dist/runtime-support.d.ts',\n default: './dist/runtime-support.js',\n };\n }\n\n exports['./package.json'] = './package.json';\n\n return exports;\n}\n\nfunction generateRuntimeSupportSource(elementName: string, entryPoints: EntryPointMap): string {\n const packageName = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`;\n return `export const runtimeSupport = {\n schemaVersion: 1,\n packageName: '${packageName}',\n supports: {\n esm: {\n delivery: ${entryPoints.hasDelivery},\n author: ${entryPoints.hasAuthor},\n print: ${entryPoints.hasPrint},\n },\n },\n};\n\nexport default runtimeSupport;\n`;\n}\n\nasync function ensureBrowserRuntimeSupportSource(\n elementName: string,\n elementDir: string,\n entryPoints: EntryPointMap\n): Promise<boolean> {\n const runtimeSupportPath = join(elementDir, 'src', 'runtime-support.ts');\n const nextContent = generateRuntimeSupportSource(elementName, entryPoints);\n const currentContent = existsSync(runtimeSupportPath)\n ? await readFile(runtimeSupportPath, 'utf-8').catch(() => null)\n : null;\n\n if (currentContent === nextContent) {\n return false;\n }\n\n await mkdir(dirname(runtimeSupportPath), { recursive: true });\n await writeFile(runtimeSupportPath, nextContent, 'utf-8');\n return true;\n}\n\n/**\n * Extract imports from source files to determine runtime dependencies\n */\nexport async function extractImportsFromSources(elementDir: string): Promise<Set<string>> {\n const imports = new Set<string>();\n const srcDir = join(elementDir, 'src');\n\n if (!existsSync(srcDir)) {\n return imports;\n }\n\n // Recursively find all .ts, .tsx, .js, .jsx files\n const { readdir: readdirRecursive } = await import('node:fs/promises');\n\n async function scanDirectory(dir: string): Promise<void> {\n try {\n const entries = await readdirRecursive(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n if (entry.isDirectory()) {\n await scanDirectory(fullPath);\n } else if (entry.isFile() && /\\.(ts|tsx|js|jsx)$/.test(entry.name)) {\n try {\n const content = await readFile(fullPath, 'utf-8');\n // Match import statements: import ... from 'package' or import('package')\n const importRegex = /import\\s+(?:[\\w{},\\s*]+\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n const dynamicImportRegex = /import\\s*\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n\n let match: RegExpExecArray | null;\n\n match = importRegex.exec(content);\n while (match !== null) {\n const importPath = match[1];\n // Only track package imports (not relative imports)\n if (!importPath.startsWith('.') && !importPath.startsWith('/')) {\n const normalized = normalizePackageImport(importPath);\n if (normalized) imports.add(normalized);\n }\n match = importRegex.exec(content);\n }\n\n match = dynamicImportRegex.exec(content);\n while (match !== null) {\n const importPath = match[1];\n if (!importPath.startsWith('.') && !importPath.startsWith('/')) {\n const normalized = normalizePackageImport(importPath);\n if (normalized) imports.add(normalized);\n }\n match = dynamicImportRegex.exec(content);\n }\n } catch (err) {\n // Skip files that can't be read\n }\n }\n }\n } catch (err) {\n // Skip directories that can't be read\n }\n }\n\n await scanDirectory(srcDir);\n return imports;\n}\n\nfunction normalizePackageImport(specifier: string): string | null {\n if (!specifier || specifier.startsWith('.') || specifier.startsWith('/')) {\n return null;\n }\n if (specifier.startsWith('@')) {\n const parts = specifier.split('/');\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : null;\n }\n return specifier.split('/')[0] || null;\n}\n\n// Upstream manifests declare these as runtime dependencies, and no synced module imports them:\n// @emotion/style is a deprecated 0.8 package, and @pie-lib/test-utils is a test helper whose\n// testing-library dependencies would install into every host.\nconst UPSTREAM_DEPENDENCIES_TO_DROP = new Set(['@emotion/style', '@pie-lib/test-utils']);\n\nasync function findInstalledPackageJson(\n packageName: string,\n fromDir: string\n): Promise<PackageJson | null> {\n try {\n const { createRequire } = await import('node:module');\n const req = createRequire(resolve(fromDir, 'package.json'));\n const resolvedEntry = req.resolve(packageName);\n\n let currentDir = dirname(resolvedEntry);\n while (true) {\n const candidate = join(currentDir, 'package.json');\n if (existsSync(candidate)) {\n const pkg = await loadPackageJson(candidate).catch(() => null);\n if (pkg && pkg.name === packageName) {\n return pkg;\n }\n }\n\n const parent = dirname(currentDir);\n if (parent === currentDir) {\n break;\n }\n currentDir = parent;\n }\n } catch {\n // Package not resolvable from this location.\n }\n return null;\n}\n\nasync function addTransitivePeerDependencies(\n deps: Record<string, string>,\n fromDir: string,\n declaredPeerDeps: Set<string> = new Set()\n): Promise<void> {\n const depNames = Object.keys(deps);\n\n for (const depName of depNames) {\n if (\n depName.startsWith(WORKSPACE.PIE_LIB_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)\n ) {\n continue;\n }\n\n const installedPkg = await findInstalledPackageJson(depName, fromDir);\n const peerDeps = (installedPkg?.peerDependencies as Record<string, string> | undefined) ?? {};\n const optionalPeers = new Set(\n Object.entries(\n (installedPkg?.peerDependenciesMeta as Record<string, { optional?: boolean }>) ?? {}\n )\n .filter(([, meta]) => meta?.optional)\n .map(([peerName]) => peerName)\n );\n\n for (const [peerName, peerVersion] of Object.entries(peerDeps)) {\n if (deps[peerName] || declaredPeerDeps.has(peerName) || optionalPeers.has(peerName)) {\n continue;\n }\n\n if (\n peerName.startsWith(WORKSPACE.PIE_LIB_PREFIX) ||\n peerName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX) ||\n peerName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)\n ) {\n deps[peerName] = WORKSPACE.VERSION;\n } else {\n deps[peerName] = peerVersion;\n }\n }\n }\n}\n\nasync function inferPeerVersionFromDeclaredDeps(\n targetDep: string,\n deps: Record<string, string>,\n fromDir: string\n): Promise<string | null> {\n for (const depName of Object.keys(deps)) {\n if (\n depName.startsWith(WORKSPACE.PIE_LIB_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX) ||\n depName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)\n ) {\n continue;\n }\n\n const installedPkg = await findInstalledPackageJson(depName, fromDir);\n const peerDeps = (installedPkg?.peerDependencies as Record<string, string> | undefined) ?? {};\n if (peerDeps[targetDep]) {\n return peerDeps[targetDep];\n }\n }\n\n return null;\n}\n\nfunction addKnownPeerFallbacks(deps: Record<string, string>): void {\n // Some widely used packages rely on peers that upstream metadata can omit\n // or that may not be inferable from local resolution during sync.\n if ((deps.recharts || deps['styled-components']) && !deps['react-is']) {\n deps['react-is'] = '^18.3.1';\n }\n\n if (deps['@tiptap/extension-character-count'] && !deps['@tiptap/extensions']) {\n deps['@tiptap/extensions'] = '^3.20.0';\n }\n\n if (deps['@tiptap/extension-list-item'] && !deps['@tiptap/extension-list']) {\n const tiptapVersion = deps['@tiptap/extension-list-item'];\n deps['@tiptap/extension-list'] = tiptapVersion;\n }\n\n if (deps['@testing-library/user-event'] && !deps['@testing-library/dom']) {\n deps['@testing-library/dom'] = '^10.4.1';\n }\n\n if (deps['@visx/curve'] && !deps['d3-shape']) {\n deps['d3-shape'] = '^3.2.0';\n }\n}\n\n/**\n * Extract and normalize dependencies from upstream package.json\n */\nexport function extractUpstreamDependencies(\n upstreamPkg: PackageJson | null\n): Record<string, string> {\n if (!upstreamPkg) return {};\n\n const upstreamDeps = (upstreamPkg.dependencies as Record<string, string> | undefined) ?? {};\n let expectedDeps: Record<string, string> = {};\n\n for (const [name, version] of Object.entries(upstreamDeps)) {\n if (UPSTREAM_DEPENDENCIES_TO_DROP.has(name)) {\n continue;\n }\n if (name.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[name] = WORKSPACE.VERSION;\n } else if (name !== 'react' && name !== 'react-dom') {\n expectedDeps[name] = version;\n }\n }\n\n return expectedDeps;\n}\n\nfunction resolveSyncedVersion(\n upstreamPkg: PackageJson | null,\n existingPkg: PackageJson | null\n): string {\n const existingVersion = typeof existingPkg?.version === 'string' ? existingPkg.version : null;\n if (existingVersion) {\n return existingVersion;\n }\n const upstreamVersion = typeof upstreamPkg?.version === 'string' ? upstreamPkg.version : null;\n return upstreamVersion || '0.1.0';\n}\n\n/**\n * Ensure devDependencies include all required build tools.\n *\n * The pinned versions in BUILD_TOOLS / REACT are the source of truth for the\n * monorepo's toolchain, so we overwrite any existing entries instead of only\n * filling in missing ones. This prevents an upstream package.json from\n * silently downgrading vite / @vitejs/plugin-react / typescript across the\n * pie-lib packages during `upstream:update`.\n */\nexport function ensureBuildToolDependencies(pkg: PackageJson): void {\n if (!pkg.devDependencies || typeof pkg.devDependencies !== 'object') {\n pkg.devDependencies = {};\n }\n\n const devDeps = pkg.devDependencies as Record<string, string>;\n\n devDeps.vite = BUILD_TOOLS.VITE;\n devDeps.typescript = BUILD_TOOLS.TYPESCRIPT;\n devDeps['@vitejs/plugin-react'] = BUILD_TOOLS.VITE_REACT_PLUGIN;\n devDeps['@types/react'] = REACT.TYPES_VERSION;\n devDeps['@types/react-dom'] = REACT.TYPES_VERSION;\n}\n\n/**\n * Check if a @pie-framework or @pie-element/shared- package exists in the workspace\n *\n * Supports both legacy @pie-framework naming and new @pie-element/shared- naming.\n */\nfunction isPieFrameworkWorkspacePackage(packageName: string, config: SyncConfig): boolean {\n let pkgName: string;\n\n if (packageName.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)) {\n // Legacy @pie-framework/* packages\n pkgName = packageName.replace(WORKSPACE.PIE_FRAMEWORK_PREFIX, '');\n } else if (packageName.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX + 'shared-')) {\n // New @pie-element/shared-* packages\n pkgName = packageName.replace(WORKSPACE.PIE_ELEMENT_PREFIX + 'shared-', '');\n } else {\n return false;\n }\n\n const sharedPackagePath = join(config.pieElementsNg, 'packages/shared', pkgName, 'package.json');\n return existsSync(sharedPackagePath);\n}\n\n/**\n * Generate or update element package.json\n *\n * This function consolidates the ~400 lines of duplicated package.json management\n * logic from controllers-strategy and react-strategy into a single, maintainable function.\n */\nexport async function ensureElementPackageJson(\n elementName: string,\n elementDir: string,\n config: SyncConfig,\n options: { includeBrowserExports?: boolean } = {}\n): Promise<boolean> {\n if (!existsSync(elementDir)) {\n return false;\n }\n\n const pkgPath = join(elementDir, 'package.json');\n const upstreamPkgPath = join(config.pieElements, 'packages', elementName, 'package.json');\n const includeBrowserExports = options.includeBrowserExports ?? false;\n\n // Load existing package.json\n let pkg: PackageJson | null = null;\n if (existsSync(pkgPath)) {\n pkg = await loadPackageJson(pkgPath).catch(() => null);\n }\n\n // Load upstream package.json for dependency info\n const upstreamPkg = existsSync(upstreamPkgPath)\n ? await loadPackageJson(upstreamPkgPath).catch(() => null)\n : null;\n\n // Extract and normalize upstream dependencies\n const expectedDeps = extractUpstreamDependencies(upstreamPkg);\n const declaredPeerDeps = new Set([\n ...Object.keys((pkg?.peerDependencies as Record<string, string> | undefined) ?? {}),\n 'react',\n 'react-dom',\n ]);\n\n // Scan source files for actual imports to catch dependencies from skipped directories\n const importedPackages = await extractImportsFromSources(elementDir);\n\n // Add workspace dependencies found in imports\n const currentPackageName = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`;\n for (const imported of importedPackages) {\n // Skip self-dependencies (package importing from itself)\n if (imported === currentPackageName) {\n continue;\n }\n if (imported === 'react' || imported === 'react-dom') {\n continue;\n }\n\n if (imported.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[imported] = WORKSPACE.VERSION;\n } else if (imported.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX)) {\n expectedDeps[imported] = WORKSPACE.VERSION;\n } else if (imported.startsWith(WORKSPACE.PIE_FRAMEWORK_PREFIX)) {\n // Only add as workspace dependency if it actually exists in packages/shared/\n if (isPieFrameworkWorkspacePackage(imported, config)) {\n expectedDeps[imported] = WORKSPACE.VERSION;\n } else {\n // External @pie-framework package - add with latest version if not already in deps\n if (!expectedDeps[imported]) {\n expectedDeps[imported] = '^1.0.0'; // Use latest 1.x version as default\n }\n }\n } else if (!expectedDeps[imported]) {\n // Keep element package.json aligned with actual runtime imports from src/.\n // Upstream package.json can miss third-party deps after source transforms.\n const installedPkg = await findInstalledPackageJson(imported, elementDir);\n if (installedPkg?.version) {\n expectedDeps[imported] = `^${installedPkg.version}`;\n } else {\n const inferredPeerVersion = await inferPeerVersionFromDeclaredDeps(\n imported,\n expectedDeps,\n elementDir\n );\n if (inferredPeerVersion) {\n expectedDeps[imported] = inferredPeerVersion;\n }\n }\n }\n }\n await addTransitivePeerDependencies(expectedDeps, elementDir, declaredPeerDeps);\n addKnownPeerFallbacks(expectedDeps);\n\n // Create minimal package.json if missing\n if (!pkg) {\n pkg = {\n name: `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`,\n private: true,\n version: resolveSyncedVersion(upstreamPkg, null),\n description:\n (upstreamPkg?.description as string | undefined) ??\n `React implementation of ${elementName} element synced from pie-elements`,\n dependencies: expectedDeps,\n peerDependencies: {\n react: REACT.ELEMENT_PEER_RANGE,\n 'react-dom': REACT.ELEMENT_PEER_RANGE,\n },\n };\n }\n\n // Update dependencies to match upstream\n if (Object.keys(expectedDeps).length > 0) {\n pkg.dependencies = expectedDeps;\n }\n pkg.peerDependencies = {\n ...((pkg.peerDependencies as Record<string, string> | undefined) ?? {}),\n react: REACT.ELEMENT_PEER_RANGE,\n 'react-dom': REACT.ELEMENT_PEER_RANGE,\n };\n\n // Preserve pie metadata (if present upstream or locally)\n const pieMetadata = ((upstreamPkg as PackageJson | null | undefined)?.pie ??\n (pkg as PackageJson | null | undefined)?.pie ??\n undefined) as\n | {\n capabilities?: string[];\n controller?: string;\n configure?: string;\n browserSharedDependencies?: Record<string, string>;\n browserEditorRuntime?: unknown;\n }\n | undefined;\n\n // Apply all standard transformations\n pkg = applyPackageJsonTransforms(pkg);\n\n // React must also be a real dependency, not only a peer. Legacy webpack\n // bundlers (builder.pie-api.com) install `dependencies` and never install\n // peers, so peer-only React leaves node_modules/react absent in the build\n // snapshot and every @mui / @emotion / @dnd-kit peer fails with\n // \"Module not found: Can't resolve 'react'\".\n //\n // This must run AFTER applyPackageJsonTransforms: transformPackageJsonBrowserEsmDependencies\n // unconditionally deletes react/react-dom from dependencies to drop whatever\n // arbitrary range upstream declared. We re-add them here as the final word,\n // pinned to the policy version.\n //\n // Install metadata only. The browser runtime singleton contract stays governed\n // by pie.browserSharedDependencies plus the player import map, and isExternal()\n // in sync-externals.ts keeps React external in every bundle regardless of what\n // is declared here, so bundle output is unaffected.\n //\n // Versions come from tools/vite/browser-esm-policy.json - the same source as\n // pie.browserSharedDependencies below.\n //\n // Declared as a caret range, NOT an exact pin. An exact pin resolves to its own\n // copy alongside the root's `^`-resolved one, and two React instances break\n // hooks at runtime (\"Invalid hook call\", useRef of null). The installed version\n // only has to resolve for the legacy webpack path, so a range is sufficient.\n const sharedRuntimeDeps = readBrowserEsmPolicy(config.pieElementsNg).sharedDependencyVersions;\n if (sharedRuntimeDeps && Object.keys(sharedRuntimeDeps).length > 0) {\n const rangedRuntimeDeps = Object.fromEntries(\n Object.entries(sharedRuntimeDeps).map(([name, version]) => [name, `^${version}`])\n );\n pkg.dependencies = {\n ...((pkg.dependencies as Record<string, string> | undefined) ?? {}),\n ...rangedRuntimeDeps,\n };\n }\n\n // Detect available entry points\n const entryPoints = detectEntryPoints(elementDir);\n const wroteRuntimeSupport =\n includeBrowserExports && !entryPoints.hasRuntimeSupport\n ? await ensureBrowserRuntimeSupportSource(elementName, elementDir, entryPoints)\n : false;\n if (includeBrowserExports) {\n entryPoints.hasRuntimeSupport = true;\n }\n\n // Generate dist-only exports based on entry points. Do not preserve\n // source-backed `development` conditions; PIE-605 makes raw source paths a\n // private implementation detail and keeps public package surfaces dist-only.\n const nextPieMetadata = pieMetadata ? { ...pieMetadata } : {};\n if (entryPoints.hasController) {\n nextPieMetadata.controller = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}/controller`;\n } else {\n delete nextPieMetadata.controller;\n }\n const legacyConfigureEntry = getLegacyConfigureEntry(entryPoints);\n if (legacyConfigureEntry) {\n nextPieMetadata.configure = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}/configure`;\n } else {\n delete nextPieMetadata.configure;\n }\n if (includeBrowserExports) {\n const browserEsmPolicy = readBrowserEsmPolicy(config.pieElementsNg);\n if (browserEsmPolicy.sharedDependencyVersions) {\n nextPieMetadata.browserSharedDependencies = browserEsmPolicy.sharedDependencyVersions;\n }\n } else {\n delete nextPieMetadata.browserSharedDependencies;\n }\n // An element whose browser build bundles the editor engine also builds the editor-runtime\n // variant, which imports the engine from @pie-element/shared-editor-runtime.\n const browserEditorRuntime =\n includeBrowserExports &&\n reachesEditorEngine(\n config.pieElementsNg,\n (pkg.dependencies as Record<string, string> | undefined) ?? {}\n )\n ? browserEditorRuntimeDeclaration(\n config.pieElementsNg,\n new Set(\n [\n entryPoints.hasDelivery && 'delivery',\n entryPoints.hasAuthor && 'author',\n entryPoints.hasPrint && 'print',\n entryPoints.hasController && 'controller',\n ].filter((view): view is string => typeof view === 'string')\n )\n )\n : null;\n if (browserEditorRuntime) {\n nextPieMetadata.browserEditorRuntime = browserEditorRuntime;\n } else {\n delete nextPieMetadata.browserEditorRuntime;\n }\n\n if (Object.keys(nextPieMetadata).length > 0) {\n pkg.pie = nextPieMetadata;\n } else {\n delete pkg.pie;\n }\n\n const hasBrowserBuild = includeBrowserExports;\n pkg.exports = generateExportsObject(entryPoints, { includeBrowserExports: hasBrowserBuild });\n\n // Warn when metadata/structure disagree for core capabilities\n const metadataCapabilities = Array.isArray(pieMetadata?.capabilities)\n ? new Set(pieMetadata.capabilities)\n : null;\n\n if (!entryPoints.hasDelivery || !entryPoints.hasController) {\n console.warn(\n `[upstream:update] ${elementName} missing required entry points:` +\n `${entryPoints.hasDelivery ? '' : ' delivery'}` +\n `${entryPoints.hasController ? '' : ' controller'}`\n );\n }\n\n if (metadataCapabilities) {\n if (metadataCapabilities.has('author') && !entryPoints.hasAuthor) {\n console.warn(\n `[upstream:update] ${elementName} metadata includes author but no src/author entry`\n );\n }\n if (metadataCapabilities.has('print') && !entryPoints.hasPrint) {\n console.warn(\n `[upstream:update] ${elementName} metadata includes print but no src/print entry`\n );\n }\n } else {\n if (entryPoints.hasAuthor) {\n console.warn(\n `[upstream:update] ${elementName} has src/author but no pie.capabilities metadata`\n );\n }\n if (entryPoints.hasPrint) {\n console.warn(\n `[upstream:update] ${elementName} has src/print but no pie.capabilities metadata`\n );\n }\n }\n\n // Set core package.json fields\n pkg.name = `${WORKSPACE.PIE_ELEMENT_PREFIX}${elementName}`;\n pkg.version = resolveSyncedVersion(upstreamPkg, pkg);\n pkg.type = PACKAGE_DEFAULTS.TYPE;\n pkg.main = './dist/index.js';\n pkg.types = './dist/index.d.ts';\n\n // Ensure publish surface is dist-only. Source remains available in the repo,\n // but must not be published as a public package API. Controller-bearing\n // elements additionally publish the root shim required by legacy builders.\n const files = Array.isArray(pkg.files) ? (pkg.files as unknown[]) : [];\n const normalizedFiles = new Set<string>(files.filter((v): v is string => typeof v === 'string'));\n normalizedFiles.add('dist');\n normalizedFiles.delete('src');\n if (entryPoints.hasController) {\n normalizedFiles.add('controller.js');\n } else {\n normalizedFiles.delete('controller.js');\n }\n if (legacyConfigureEntry) {\n normalizedFiles.add('configure.js');\n } else {\n normalizedFiles.delete('configure.js');\n }\n if (entryPoints.hasPrint) {\n normalizedFiles.add('print.js');\n } else {\n normalizedFiles.delete('print.js');\n }\n pkg.files = Array.from(normalizedFiles).sort();\n\n // Set sideEffects\n if (typeof pkg.sideEffects === 'undefined') {\n pkg.sideEffects = PACKAGE_DEFAULTS.SIDE_EFFECTS;\n }\n\n // Ensure devDependencies\n ensureBuildToolDependencies(pkg);\n\n // Ensure build scripts\n if (!pkg.scripts || typeof pkg.scripts !== 'object') {\n pkg.scripts = {};\n }\n\n const scripts = pkg.scripts as Record<string, string>;\n const hasIifeEntry =\n existsSync(join(elementDir, 'src/index.iife.ts')) ||\n existsSync(join(elementDir, 'vite.config.iife.ts'));\n\n // A print entry point means this package also needs the legacy print lane, so\n // module/print.js is emitted for the current @pie-framework/pie-print loader.\n scripts.build = composeElementBuildScript({\n browser: hasBrowserBuild,\n editorRuntime: browserEditorRuntime !== null,\n legacyPrint: entryPoints.hasPrint,\n iife: hasIifeEntry,\n });\n scripts.dev = SCRIPTS.DEV;\n scripts.demo = SCRIPTS.DEMO;\n scripts.test = SCRIPTS.TEST;\n\n const controllerShimPath = join(elementDir, 'controller.js');\n const controllerShimContent = \"export * from './dist/controller/index.js';\\n\";\n const hasControllerShim = existsSync(controllerShimPath);\n const currentControllerShim = hasControllerShim\n ? await readFile(controllerShimPath, 'utf-8').catch(() => null)\n : null;\n const shouldWriteControllerShim =\n entryPoints.hasController && currentControllerShim !== controllerShimContent;\n const shouldRemoveControllerShim = !entryPoints.hasController && hasControllerShim;\n const configureShimPath = join(elementDir, 'configure.js');\n const configureShimContent = legacyConfigureEntry\n ? `export { default } from './dist/${legacyConfigureEntry}/index.js';\\nexport * from './dist/${legacyConfigureEntry}/index.js';\\n`\n : null;\n const hasConfigureShim = existsSync(configureShimPath);\n const currentConfigureShim = hasConfigureShim\n ? await readFile(configureShimPath, 'utf-8').catch(() => null)\n : null;\n const shouldWriteConfigureShim =\n configureShimContent !== null && currentConfigureShim !== configureShimContent;\n const shouldRemoveConfigureShim = configureShimContent === null && hasConfigureShim;\n // The IIFE bundlers alias `@pie-element/<element>` to a directory, so a `/print`\n // request resolves as a literal path and never consults `exports`. The root shim is\n // what makes that request land on the built print entry, the same way controller.js\n // and configure.js do for their views.\n const printShimPath = join(elementDir, 'print.js');\n const printShimContent = entryPoints.hasPrint\n ? \"export { default } from './dist/print/index.js';\\nexport * from './dist/print/index.js';\\n\"\n : null;\n const hasPrintShim = existsSync(printShimPath);\n const currentPrintShim = hasPrintShim\n ? await readFile(printShimPath, 'utf-8').catch(() => null)\n : null;\n const shouldWritePrintShim = printShimContent !== null && currentPrintShim !== printShimContent;\n const shouldRemovePrintShim = printShimContent === null && hasPrintShim;\n\n // Check if content changed\n const nextContent = `${JSON.stringify(pkg, null, 2)}\\n`;\n const currentContent = existsSync(pkgPath)\n ? await readFile(pkgPath, 'utf-8').catch(() => null)\n : null;\n\n if (\n currentContent === nextContent &&\n !wroteRuntimeSupport &&\n !shouldWriteControllerShim &&\n !shouldRemoveControllerShim &&\n !shouldWriteConfigureShim &&\n !shouldRemoveConfigureShim &&\n !shouldWritePrintShim &&\n !shouldRemovePrintShim\n ) {\n return false;\n }\n\n // Write updated package.json\n if (currentContent !== nextContent) {\n await writeFile(pkgPath, nextContent, 'utf-8');\n }\n if (shouldWriteControllerShim) {\n await writeFile(controllerShimPath, controllerShimContent, 'utf-8');\n } else if (shouldRemoveControllerShim) {\n await unlink(controllerShimPath).catch(() => {});\n }\n if (shouldWriteConfigureShim && configureShimContent !== null) {\n await writeFile(configureShimPath, configureShimContent, 'utf-8');\n } else if (shouldRemoveConfigureShim) {\n await unlink(configureShimPath).catch(() => {});\n }\n if (shouldWritePrintShim && printShimContent !== null) {\n await writeFile(printShimPath, printShimContent, 'utf-8');\n } else if (shouldRemovePrintShim) {\n await unlink(printShimPath).catch(() => {});\n }\n return true;\n}\n\n/**\n * Generate or update pie-lib package.json\n */\nexport async function ensurePieLibPackageJson(\n pkgName: string,\n pkgDir: string,\n config: SyncConfig\n): Promise<boolean> {\n if (!existsSync(pkgDir)) {\n return false;\n }\n\n const pkgPath = join(pkgDir, 'package.json');\n const upstreamPkgPath = join(config.pieLib, 'packages', pkgName, 'package.json');\n\n let pkg: PackageJson | null = null;\n if (existsSync(pkgPath)) {\n pkg = await loadPackageJson(pkgPath).catch(() => null);\n }\n\n const upstreamPkg = existsSync(upstreamPkgPath)\n ? await loadPackageJson(upstreamPkgPath).catch(() => null)\n : null;\n\n // Extract upstream dependencies\n const upstreamDeps = (upstreamPkg?.dependencies as Record<string, string> | undefined) ?? {};\n let expectedDeps: Record<string, string> = {};\n\n for (const [name, version] of Object.entries(upstreamDeps)) {\n if (UPSTREAM_DEPENDENCIES_TO_DROP.has(name)) {\n continue;\n }\n if (name.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[name] = WORKSPACE.VERSION;\n } else {\n expectedDeps[name] = version;\n }\n }\n\n const importedPackages = await extractImportsFromSources(pkgDir);\n for (const importedPkg of importedPackages) {\n if (importedPkg.startsWith(WORKSPACE.PIE_LIB_PREFIX)) {\n expectedDeps[importedPkg] = WORKSPACE.VERSION;\n continue;\n }\n if (importedPkg.startsWith(WORKSPACE.PIE_ELEMENT_PREFIX)) {\n expectedDeps[importedPkg] = WORKSPACE.VERSION;\n continue;\n }\n\n // Keep pie-lib package.json aligned with actual runtime imports from src/.\n // Upstream package.json can miss some third-party dependencies.\n if (!expectedDeps[importedPkg]) {\n const installedPkg = await findInstalledPackageJson(importedPkg, pkgDir);\n if (installedPkg?.version) {\n expectedDeps[importedPkg] = `^${installedPkg.version}`;\n } else {\n const inferredPeerVersion = await inferPeerVersionFromDeclaredDeps(\n importedPkg,\n expectedDeps,\n pkgDir\n );\n if (inferredPeerVersion) {\n expectedDeps[importedPkg] = inferredPeerVersion;\n }\n }\n }\n }\n\n await addTransitivePeerDependencies(expectedDeps, pkgDir);\n addKnownPeerFallbacks(expectedDeps);\n\n const dependencyAugmentations = getPieLibDependencyAugmentations(pkgName);\n for (const [depName, version] of Object.entries(dependencyAugmentations)) {\n if (!expectedDeps[depName]) {\n expectedDeps[depName] = version;\n }\n }\n\n const declaresReactRuntime =\n typeof expectedDeps.react === 'string' || typeof expectedDeps['react-dom'] === 'string';\n\n expectedDeps =\n (applyPackageJsonTransforms({ dependencies: expectedDeps } as PackageJson, {\n removeReactInputAutosize: shouldGenerateAutosizeInputComponent(pkgName),\n removeMathjs:\n shouldGenerateConfigUiFractionHelper(pkgName) && !importedPackages.has('mathjs'),\n }).dependencies as Record<string, string> | undefined) ?? {};\n\n // Last word on versions, so it beats both the upstream manifest and the installed-version\n // inference above. Without it a sync walks @tiptap/* back to upstream's 3.20.0.\n expectedDeps = applyPieLibDependencyVersionPins(expectedDeps);\n\n // Create minimal package.json if missing\n if (!pkg) {\n pkg = {\n name: `${WORKSPACE.PIE_LIB_PREFIX}${pkgName}`,\n private: true,\n version: resolveSyncedVersion(upstreamPkg, null),\n description:\n (upstreamPkg?.description as string | undefined) ??\n `React implementation of @pie-lib/${pkgName} synced from pie-lib`,\n dependencies: expectedDeps,\n };\n }\n\n // Update dependencies\n if (Object.keys(expectedDeps).length > 0) {\n pkg.dependencies = expectedDeps;\n }\n\n const dependencyOverride = getPieLibDependencyOverride(pkgName);\n if (dependencyOverride) {\n pkg.dependencies = dependencyOverride;\n }\n\n if (declaresReactRuntime) {\n pkg.peerDependencies = {\n ...((pkg.peerDependencies as Record<string, string> | undefined) ?? {}),\n react: REACT.LIBRARY_PEER_RANGE,\n 'react-dom': REACT.LIBRARY_PEER_RANGE,\n };\n }\n\n // Generate dist-only exports. Pie-lib packages expose only their compiled\n // top-level entry; raw source paths are intentionally not public.\n const exportsObj: Record<string, unknown> = {};\n\n exportsObj['.'] = {\n types: './dist/index.d.ts',\n default: './dist/index.js',\n };\n\n pkg.name = `${WORKSPACE.PIE_LIB_PREFIX}${pkgName}`;\n pkg.version = resolveSyncedVersion(upstreamPkg, pkg);\n pkg.type = PACKAGE_DEFAULTS.TYPE;\n pkg.main = './dist/index.js';\n pkg.types = './dist/index.d.ts';\n pkg.exports = exportsObj;\n\n // Ensure publish surface is dist-only. Source remains available in the repo,\n // but must not be published as a public package API.\n pkg.files = ['dist'];\n\n if (typeof pkg.sideEffects === 'undefined') {\n pkg.sideEffects = PACKAGE_DEFAULTS.SIDE_EFFECTS;\n }\n\n // Pie-lib packages use a vite.config.ts that imports @vitejs/plugin-react,\n // so their devDependencies must include the same build toolchain that\n // element packages do. Without this, a fresh `bun install` (no hoisting)\n // fails to resolve the plugin when turbo runs `vite build` per package.\n ensureBuildToolDependencies(pkg);\n\n // Ensure build scripts\n if (!pkg.scripts || typeof pkg.scripts !== 'object') {\n pkg.scripts = {};\n }\n\n const scripts = pkg.scripts as Record<string, string>;\n scripts.build = SCRIPTS.BUILD;\n scripts.dev = SCRIPTS.DEV;\n scripts.test = SCRIPTS.TEST;\n\n const nextContent = `${JSON.stringify(pkg, null, 2)}\\n`;\n const currentContent = existsSync(pkgPath)\n ? await readFile(pkgPath, 'utf-8').catch(() => null)\n : null;\n\n if (currentContent === nextContent) {\n return false;\n }\n\n await writeFile(pkgPath, nextContent, 'utf-8');\n return true;\n}\n"]}
@@ -28,7 +28,7 @@ export interface TransformOptions {
28
28
  * This ensures consistent transformation across all sync strategies:
29
29
  * 1. lodash/lodash-es → @pie-element/shared-lodash (vendored ESM helpers)
30
30
  * 2. @pie-framework event packages → internal packages
31
- * 3. @pie-lib/controller-utils → @pie-framework/controller-utils
31
+ * 3. @pie-lib/controller-utils → @pie-element/shared-controller-utils
32
32
  * 4. @pie-lib shared packages → @pie-element/shared-*
33
33
  * 5. @mui/material/Menu → InlineMenu from @pie-lib/render-ui
34
34
  * 6. Self-referential imports → relative imports
@@ -43,7 +43,7 @@ export declare function applySourceTransforms(content: string, options?: Transfo
43
43
  * Ensures consistent dependency transformations across all packages:
44
44
  * 1. lodash/lodash-es → @pie-element/shared-lodash
45
45
  * 2. @pie-framework event packages → internal packages
46
- * 3. @pie-lib/controller-utils → @pie-framework/controller-utils
46
+ * 3. @pie-lib/controller-utils → @pie-element/shared-controller-utils
47
47
  * 4. @pie-lib shared packages → @pie-element/shared-*
48
48
  * 5. Preserve upstream @pie-framework/mathquill dependency versions from synced package.json
49
49
  */
@@ -5,14 +5,14 @@
5
5
  * composable pipeline to reduce duplication and ensure consistent transformations
6
6
  * across all sync strategies.
7
7
  */
8
- import { transformLodashToVendoredLodash, transformKnownDeepImportsToFullySpecified, transformPieFrameworkEventImports, transformControllerUtilsImports, transformSharedPackageImports, transformLegacyConfigureLibImports, inlineEditableHtmlConstants, reexportTokenTypes, transformSsrRequireToEsmImport, inlineConfigureDefaults, transformConfigureUtilsImports, transformSelfReferentialImports, transformPackageJsonLodash, transformPackageJsonRecharts, transformPackageJsonPieEvents, transformPackageJsonControllerUtils, transformPackageJsonSharedPackages, fixStyledComponentTypes, fixExportedFunctionTypes, transformMenuToInlineMenu, addInlineMenuExport, transformReactInteropComponentImports, transformClassnamesToClsx, transformJsCombinatoricsToV2, transformConfigUiMathjsToLocalFraction, transformReactInputAutosizeToLocal, transformPackageJsonBrowserEsmDependencies, } from './sync-imports.js';
8
+ import { transformLodashToVendoredLodash, transformKnownDeepImportsToFullySpecified, transformPieFrameworkEventImports, transformControllerUtilsImports, transformSharedPackageImports, transformLegacyConfigureLibImports, inlineEditableHtmlConstants, reexportTokenTypes, transformSsrRequireToEsmImport, inlineConfigureDefaults, transformConfigureUtilsImports, transformSelfReferentialImports, transformPackageJsonLodash, transformPackageJsonRecharts, transformPackageJsonPieEvents, transformPackageJsonControllerUtils, transformPackageJsonSharedPackages, fixStyledComponentTypes, fixExportedFunctionTypes, transformMenuToInlineMenu, addInlineMenuExport, transformReactInteropComponentImports, transformClassnamesToClsx, transformJsCombinatoricsToV2, transformCommonJsNamedImports, transformConfigUiMathjsToLocalFraction, transformReactInputAutosizeToLocal, transformPackageJsonBrowserEsmDependencies, } from './sync-imports.js';
9
9
  /**
10
10
  * Apply all standard source code transformations in the correct order
11
11
  *
12
12
  * This ensures consistent transformation across all sync strategies:
13
13
  * 1. lodash/lodash-es → @pie-element/shared-lodash (vendored ESM helpers)
14
14
  * 2. @pie-framework event packages → internal packages
15
- * 3. @pie-lib/controller-utils → @pie-framework/controller-utils
15
+ * 3. @pie-lib/controller-utils → @pie-element/shared-controller-utils
16
16
  * 4. @pie-lib shared packages → @pie-element/shared-*
17
17
  * 5. @mui/material/Menu → InlineMenu from @pie-lib/render-ui
18
18
  * 6. Self-referential imports → relative imports
@@ -26,6 +26,7 @@ export function applySourceTransforms(content, options = {}) {
26
26
  transformed = transformLodashToVendoredLodash(transformed);
27
27
  transformed = transformClassnamesToClsx(transformed);
28
28
  transformed = transformJsCombinatoricsToV2(transformed);
29
+ transformed = transformCommonJsNamedImports(transformed);
29
30
  transformed = transformKnownDeepImportsToFullySpecified(transformed);
30
31
  transformed = transformPieFrameworkEventImports(transformed);
31
32
  transformed = transformControllerUtilsImports(transformed);
@@ -66,7 +67,7 @@ export function applySourceTransforms(content, options = {}) {
66
67
  * Ensures consistent dependency transformations across all packages:
67
68
  * 1. lodash/lodash-es → @pie-element/shared-lodash
68
69
  * 2. @pie-framework event packages → internal packages
69
- * 3. @pie-lib/controller-utils → @pie-framework/controller-utils
70
+ * 3. @pie-lib/controller-utils → @pie-element/shared-controller-utils
70
71
  * 4. @pie-lib shared packages → @pie-element/shared-*
71
72
  * 5. Preserve upstream @pie-framework/mathquill dependency versions from synced package.json
72
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sync-transforms.js","sourceRoot":"","sources":["../../../src/lib/upstream/sync-transforms.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized transformation pipeline for upstream sync operations\n *\n * This module consolidates all source code transformations into a single,\n * composable pipeline to reduce duplication and ensure consistent transformations\n * across all sync strategies.\n */\n\nimport {\n transformLodashToVendoredLodash,\n transformKnownDeepImportsToFullySpecified,\n transformPieFrameworkEventImports,\n transformControllerUtilsImports,\n transformSharedPackageImports,\n transformLegacyConfigureLibImports,\n inlineEditableHtmlConstants,\n reexportTokenTypes,\n transformSsrRequireToEsmImport,\n inlineConfigureDefaults,\n transformConfigureUtilsImports,\n transformSelfReferentialImports,\n transformPackageJsonLodash,\n transformPackageJsonRecharts,\n transformPackageJsonPieEvents,\n transformPackageJsonControllerUtils,\n transformPackageJsonSharedPackages,\n fixStyledComponentTypes,\n fixExportedFunctionTypes,\n transformMenuToInlineMenu,\n addInlineMenuExport,\n transformReactInteropComponentImports,\n transformClassnamesToClsx,\n transformJsCombinatoricsToV2,\n transformConfigUiMathjsToLocalFraction,\n transformReactInputAutosizeToLocal,\n transformPackageJsonBrowserEsmDependencies,\n} from './sync-imports.js';\nimport type { PackageJson } from '../../utils/package-json.js';\n\nexport interface TransformOptions {\n /** Path relative to package root (e.g., \"configure/src/utils.js\") */\n relativePath?: string;\n /** Source file path for context (e.g., \"/path/to/file.js\") */\n sourcePath?: string;\n /** Package name (e.g., \"@pie-element/fraction-model\") */\n packageName?: string;\n /** Whether to include configure-specific transforms */\n includeConfigure?: boolean;\n /** Whether to include pie-lib-specific transforms */\n includePieLib?: boolean;\n /** Whether to remove react-input-autosize from package metadata */\n removeReactInputAutosize?: boolean;\n /** Whether to remove mathjs from package metadata */\n removeMathjs?: boolean;\n}\n\n/**\n * Apply all standard source code transformations in the correct order\n *\n * This ensures consistent transformation across all sync strategies:\n * 1. lodash/lodash-es → @pie-element/shared-lodash (vendored ESM helpers)\n * 2. @pie-framework event packages → internal packages\n * 3. @pie-lib/controller-utils → @pie-framework/controller-utils\n * 4. @pie-lib shared packages → @pie-element/shared-*\n * 5. @mui/material/Menu → InlineMenu from @pie-lib/render-ui\n * 6. Self-referential imports → relative imports\n * 7. Configure-specific transforms (if enabled)\n * 8. Pie-lib-specific transforms (if enabled)\n * 9. Fix styled component TypeScript type inference errors\n */\nexport function applySourceTransforms(content: string, options: TransformOptions = {}): string {\n let transformed = content;\n\n // Core transforms (always applied)\n transformed = transformLodashToVendoredLodash(transformed);\n transformed = transformClassnamesToClsx(transformed);\n transformed = transformJsCombinatoricsToV2(transformed);\n transformed = transformKnownDeepImportsToFullySpecified(transformed);\n transformed = transformPieFrameworkEventImports(transformed);\n transformed = transformControllerUtilsImports(transformed);\n transformed = transformSharedPackageImports(transformed);\n transformed = transformLegacyConfigureLibImports(transformed);\n transformed = transformMenuToInlineMenu(transformed);\n transformed = transformReactInteropComponentImports(transformed);\n\n // Transform self-referential imports to relative paths\n if (options.packageName && options.relativePath) {\n transformed = transformSelfReferentialImports(\n transformed,\n options.packageName,\n options.relativePath\n );\n }\n\n // Configure-specific transforms\n if (options.includeConfigure) {\n transformed = inlineConfigureDefaults(transformed);\n if (options.relativePath) {\n transformed = transformConfigureUtilsImports(transformed, options.relativePath);\n }\n }\n\n // Pie-lib-specific transforms (run only when syncing upstream pie-lib sources)\n if (options.includePieLib) {\n transformed = transformReactInputAutosizeToLocal(transformed, options.sourcePath);\n transformed = transformConfigUiMathjsToLocalFraction(transformed, options.sourcePath);\n transformed = inlineEditableHtmlConstants(transformed);\n if (options.sourcePath) {\n transformed = reexportTokenTypes(transformed, options.sourcePath);\n transformed = addInlineMenuExport(transformed, options.sourcePath);\n }\n transformed = transformSsrRequireToEsmImport(transformed);\n }\n\n // TypeScript fixes (always applied)\n transformed = fixStyledComponentTypes(transformed);\n transformed = fixExportedFunctionTypes(transformed, options.sourcePath);\n\n return transformed;\n}\n\n/**\n * Apply all standard package.json transformations\n *\n * Ensures consistent dependency transformations across all packages:\n * 1. lodash/lodash-es → @pie-element/shared-lodash\n * 2. @pie-framework event packages → internal packages\n * 3. @pie-lib/controller-utils → @pie-framework/controller-utils\n * 4. @pie-lib shared packages → @pie-element/shared-*\n * 5. Preserve upstream @pie-framework/mathquill dependency versions from synced package.json\n */\nexport function applyPackageJsonTransforms<T extends PackageJson>(\n pkg: T,\n options: TransformOptions = {}\n): T {\n let transformed = pkg;\n\n transformed = transformPackageJsonLodash(transformed);\n transformed = transformPackageJsonRecharts(transformed);\n transformed = transformPackageJsonBrowserEsmDependencies(transformed, {\n removeReactInputAutosize: options.removeReactInputAutosize,\n removeMathjs: options.removeMathjs,\n });\n transformed = transformPackageJsonPieEvents(transformed);\n transformed = transformPackageJsonControllerUtils(transformed);\n transformed = transformPackageJsonSharedPackages(transformed);\n\n return transformed;\n}\n\n/**\n * Create a transform pipeline for controller files\n */\nexport function createControllerTransformPipeline(packageName?: string) {\n return (content: string, relativePath?: string) =>\n applySourceTransforms(content, { relativePath, packageName, includeConfigure: false });\n}\n\n/**\n * Create a transform pipeline for React component files\n */\nexport function createReactComponentTransformPipeline(packageName?: string) {\n return (content: string, relativePath?: string) =>\n applySourceTransforms(content, { relativePath, packageName, includeConfigure: true });\n}\n\n/**\n * Create a transform pipeline for pie-lib files\n */\nexport function createPieLibTransformPipeline() {\n return (content: string, sourcePath?: string) =>\n applySourceTransforms(content, { sourcePath, includePieLib: true });\n}\n"]}
1
+ {"version":3,"file":"sync-transforms.js","sourceRoot":"","sources":["../../../src/lib/upstream/sync-transforms.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized transformation pipeline for upstream sync operations\n *\n * This module consolidates all source code transformations into a single,\n * composable pipeline to reduce duplication and ensure consistent transformations\n * across all sync strategies.\n */\n\nimport {\n transformLodashToVendoredLodash,\n transformKnownDeepImportsToFullySpecified,\n transformPieFrameworkEventImports,\n transformControllerUtilsImports,\n transformSharedPackageImports,\n transformLegacyConfigureLibImports,\n inlineEditableHtmlConstants,\n reexportTokenTypes,\n transformSsrRequireToEsmImport,\n inlineConfigureDefaults,\n transformConfigureUtilsImports,\n transformSelfReferentialImports,\n transformPackageJsonLodash,\n transformPackageJsonRecharts,\n transformPackageJsonPieEvents,\n transformPackageJsonControllerUtils,\n transformPackageJsonSharedPackages,\n fixStyledComponentTypes,\n fixExportedFunctionTypes,\n transformMenuToInlineMenu,\n addInlineMenuExport,\n transformReactInteropComponentImports,\n transformClassnamesToClsx,\n transformJsCombinatoricsToV2,\n transformCommonJsNamedImports,\n transformConfigUiMathjsToLocalFraction,\n transformReactInputAutosizeToLocal,\n transformPackageJsonBrowserEsmDependencies,\n} from './sync-imports.js';\nimport type { PackageJson } from '../../utils/package-json.js';\n\nexport interface TransformOptions {\n /** Path relative to package root (e.g., \"configure/src/utils.js\") */\n relativePath?: string;\n /** Source file path for context (e.g., \"/path/to/file.js\") */\n sourcePath?: string;\n /** Package name (e.g., \"@pie-element/fraction-model\") */\n packageName?: string;\n /** Whether to include configure-specific transforms */\n includeConfigure?: boolean;\n /** Whether to include pie-lib-specific transforms */\n includePieLib?: boolean;\n /** Whether to remove react-input-autosize from package metadata */\n removeReactInputAutosize?: boolean;\n /** Whether to remove mathjs from package metadata */\n removeMathjs?: boolean;\n}\n\n/**\n * Apply all standard source code transformations in the correct order\n *\n * This ensures consistent transformation across all sync strategies:\n * 1. lodash/lodash-es → @pie-element/shared-lodash (vendored ESM helpers)\n * 2. @pie-framework event packages → internal packages\n * 3. @pie-lib/controller-utils → @pie-element/shared-controller-utils\n * 4. @pie-lib shared packages → @pie-element/shared-*\n * 5. @mui/material/Menu → InlineMenu from @pie-lib/render-ui\n * 6. Self-referential imports → relative imports\n * 7. Configure-specific transforms (if enabled)\n * 8. Pie-lib-specific transforms (if enabled)\n * 9. Fix styled component TypeScript type inference errors\n */\nexport function applySourceTransforms(content: string, options: TransformOptions = {}): string {\n let transformed = content;\n\n // Core transforms (always applied)\n transformed = transformLodashToVendoredLodash(transformed);\n transformed = transformClassnamesToClsx(transformed);\n transformed = transformJsCombinatoricsToV2(transformed);\n transformed = transformCommonJsNamedImports(transformed);\n transformed = transformKnownDeepImportsToFullySpecified(transformed);\n transformed = transformPieFrameworkEventImports(transformed);\n transformed = transformControllerUtilsImports(transformed);\n transformed = transformSharedPackageImports(transformed);\n transformed = transformLegacyConfigureLibImports(transformed);\n transformed = transformMenuToInlineMenu(transformed);\n transformed = transformReactInteropComponentImports(transformed);\n\n // Transform self-referential imports to relative paths\n if (options.packageName && options.relativePath) {\n transformed = transformSelfReferentialImports(\n transformed,\n options.packageName,\n options.relativePath\n );\n }\n\n // Configure-specific transforms\n if (options.includeConfigure) {\n transformed = inlineConfigureDefaults(transformed);\n if (options.relativePath) {\n transformed = transformConfigureUtilsImports(transformed, options.relativePath);\n }\n }\n\n // Pie-lib-specific transforms (run only when syncing upstream pie-lib sources)\n if (options.includePieLib) {\n transformed = transformReactInputAutosizeToLocal(transformed, options.sourcePath);\n transformed = transformConfigUiMathjsToLocalFraction(transformed, options.sourcePath);\n transformed = inlineEditableHtmlConstants(transformed);\n if (options.sourcePath) {\n transformed = reexportTokenTypes(transformed, options.sourcePath);\n transformed = addInlineMenuExport(transformed, options.sourcePath);\n }\n transformed = transformSsrRequireToEsmImport(transformed);\n }\n\n // TypeScript fixes (always applied)\n transformed = fixStyledComponentTypes(transformed);\n transformed = fixExportedFunctionTypes(transformed, options.sourcePath);\n\n return transformed;\n}\n\n/**\n * Apply all standard package.json transformations\n *\n * Ensures consistent dependency transformations across all packages:\n * 1. lodash/lodash-es → @pie-element/shared-lodash\n * 2. @pie-framework event packages → internal packages\n * 3. @pie-lib/controller-utils → @pie-element/shared-controller-utils\n * 4. @pie-lib shared packages → @pie-element/shared-*\n * 5. Preserve upstream @pie-framework/mathquill dependency versions from synced package.json\n */\nexport function applyPackageJsonTransforms<T extends PackageJson>(\n pkg: T,\n options: TransformOptions = {}\n): T {\n let transformed = pkg;\n\n transformed = transformPackageJsonLodash(transformed);\n transformed = transformPackageJsonRecharts(transformed);\n transformed = transformPackageJsonBrowserEsmDependencies(transformed, {\n removeReactInputAutosize: options.removeReactInputAutosize,\n removeMathjs: options.removeMathjs,\n });\n transformed = transformPackageJsonPieEvents(transformed);\n transformed = transformPackageJsonControllerUtils(transformed);\n transformed = transformPackageJsonSharedPackages(transformed);\n\n return transformed;\n}\n\n/**\n * Create a transform pipeline for controller files\n */\nexport function createControllerTransformPipeline(packageName?: string) {\n return (content: string, relativePath?: string) =>\n applySourceTransforms(content, { relativePath, packageName, includeConfigure: false });\n}\n\n/**\n * Create a transform pipeline for React component files\n */\nexport function createReactComponentTransformPipeline(packageName?: string) {\n return (content: string, relativePath?: string) =>\n applySourceTransforms(content, { relativePath, packageName, includeConfigure: true });\n}\n\n/**\n * Create a transform pipeline for pie-lib files\n */\nexport function createPieLibTransformPipeline() {\n return (content: string, sourcePath?: string) =>\n applySourceTransforms(content, { sourcePath, includePieLib: true });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/cli",
3
- "version": "0.1.2-next.7",
3
+ "version": "0.1.2-next.9",
4
4
  "description": "CLI tools for managing PIE Elements NG",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "@oclif/core": "^4.0.0",
25
25
  "@oclif/plugin-help": "^6.2.0",
26
- "@pie-element/element-bundler": "0.1.2-next.3",
26
+ "@pie-element/element-bundler": "0.1.2-next.4",
27
27
  "es-module-lexer": "^1.7.0",
28
28
  "glob": "^13.0.0",
29
29
  "open": "^10.0.3",