@pie-element/cli 0.1.1 → 0.1.2-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +48 -10
  2. package/dist/commands/dev/demo/index.d.ts +1 -1
  3. package/dist/commands/dev/demo/index.js +21 -0
  4. package/dist/commands/dev/demo/index.js.map +1 -1
  5. package/dist/commands/dev/test-bundler.d.ts +0 -1
  6. package/dist/commands/dev/test-bundler.js +2 -10
  7. package/dist/commands/dev/test-bundler.js.map +1 -1
  8. package/dist/commands/docs/generate.d.ts +16 -0
  9. package/dist/commands/docs/generate.js +150 -0
  10. package/dist/commands/docs/generate.js.map +1 -0
  11. package/dist/commands/docs/verify.d.ts +12 -0
  12. package/dist/commands/docs/verify.js +40 -0
  13. package/dist/commands/docs/verify.js.map +1 -0
  14. package/dist/commands/packages/create-controllers.d.ts +0 -1
  15. package/dist/commands/packages/create-controllers.js.map +1 -1
  16. package/dist/commands/packages/create-lib-react.d.ts +0 -1
  17. package/dist/commands/packages/create-lib-react.js +1 -3
  18. package/dist/commands/packages/create-lib-react.js.map +1 -1
  19. package/dist/commands/packages/create-react-elements.d.ts +0 -1
  20. package/dist/commands/packages/create-react-elements.js +2 -3
  21. package/dist/commands/packages/create-react-elements.js.map +1 -1
  22. package/dist/commands/packages/enable-publishing.d.ts +0 -1
  23. package/dist/commands/packages/enable-publishing.js +26 -23
  24. package/dist/commands/packages/enable-publishing.js.map +1 -1
  25. package/dist/commands/packages/init-synced-elements.d.ts +0 -1
  26. package/dist/commands/packages/init-synced-elements.js +1 -1
  27. package/dist/commands/packages/init-synced-elements.js.map +1 -1
  28. package/dist/commands/upstream/analyze-esm.d.ts +0 -1
  29. package/dist/commands/upstream/analyze-esm.js +5 -1
  30. package/dist/commands/upstream/analyze-esm.js.map +1 -1
  31. package/dist/commands/upstream/check.d.ts +0 -1
  32. package/dist/commands/upstream/check.js.map +1 -1
  33. package/dist/commands/upstream/deps.d.ts +0 -1
  34. package/dist/commands/upstream/deps.js.map +1 -1
  35. package/dist/commands/upstream/sync.d.ts +11 -2
  36. package/dist/commands/upstream/sync.js +364 -25
  37. package/dist/commands/upstream/sync.js.map +1 -1
  38. package/dist/commands/upstream/track.d.ts +0 -1
  39. package/dist/commands/upstream/track.js.map +1 -1
  40. package/dist/commands/upstream/update.d.ts +0 -1
  41. package/dist/commands/upstream/update.js +37 -7
  42. package/dist/commands/upstream/update.js.map +1 -1
  43. package/dist/commands/verify/controllers.d.ts +0 -1
  44. package/dist/commands/verify/controllers.js +213 -59
  45. package/dist/commands/verify/controllers.js.map +1 -1
  46. package/dist/commands/verify/dependency-integrity.d.ts +18 -0
  47. package/dist/commands/verify/dependency-integrity.js +147 -0
  48. package/dist/commands/verify/dependency-integrity.js.map +1 -0
  49. package/dist/commands/verify/react-build.d.ts +0 -1
  50. package/dist/commands/verify/react-build.js.map +1 -1
  51. package/dist/index.d.ts +0 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/lib/docs/contract-validator.d.ts +12 -0
  54. package/dist/lib/docs/contract-validator.js +38 -0
  55. package/dist/lib/docs/contract-validator.js.map +1 -0
  56. package/dist/lib/docs/contracts.d.ts +11 -0
  57. package/dist/lib/docs/contracts.js +241 -0
  58. package/dist/lib/docs/contracts.js.map +1 -0
  59. package/dist/lib/docs/discovery.d.ts +10 -0
  60. package/dist/lib/docs/discovery.js +91 -0
  61. package/dist/lib/docs/discovery.js.map +1 -0
  62. package/dist/lib/docs/generator.d.ts +14 -0
  63. package/dist/lib/docs/generator.js +450 -0
  64. package/dist/lib/docs/generator.js.map +1 -0
  65. package/dist/lib/docs/source-extractor.d.ts +2 -0
  66. package/dist/lib/docs/source-extractor.js +209 -0
  67. package/dist/lib/docs/source-extractor.js.map +1 -0
  68. package/dist/lib/docs/types.d.ts +77 -0
  69. package/dist/lib/docs/types.js +2 -0
  70. package/dist/lib/docs/types.js.map +1 -0
  71. package/dist/lib/upstream/repo-utils.d.ts +0 -1
  72. package/dist/lib/upstream/repo-utils.js.map +1 -1
  73. package/dist/lib/upstream/sync-compatibility.d.ts +0 -1
  74. package/dist/lib/upstream/sync-compatibility.js.map +1 -1
  75. package/dist/lib/upstream/sync-constants.d.ts +35 -7
  76. package/dist/lib/upstream/sync-constants.js +40 -11
  77. package/dist/lib/upstream/sync-constants.js.map +1 -1
  78. package/dist/lib/upstream/sync-controllers-strategy.d.ts +0 -1
  79. package/dist/lib/upstream/sync-controllers-strategy.js +14 -4
  80. package/dist/lib/upstream/sync-controllers-strategy.js.map +1 -1
  81. package/dist/lib/upstream/sync-demo-metadata.d.ts +0 -1
  82. package/dist/lib/upstream/sync-demo-metadata.js +1 -1
  83. package/dist/lib/upstream/sync-demo-metadata.js.map +1 -1
  84. package/dist/lib/upstream/sync-entry-discovery.d.ts +3 -0
  85. package/dist/lib/upstream/sync-entry-discovery.js +23 -0
  86. package/dist/lib/upstream/sync-entry-discovery.js.map +1 -0
  87. package/dist/lib/upstream/sync-externals.d.ts +7 -7
  88. package/dist/lib/upstream/sync-externals.js +51 -35
  89. package/dist/lib/upstream/sync-externals.js.map +1 -1
  90. package/dist/lib/upstream/sync-filesystem.d.ts +0 -1
  91. package/dist/lib/upstream/sync-filesystem.js.map +1 -1
  92. package/dist/lib/upstream/sync-imports.d.ts +82 -62
  93. package/dist/lib/upstream/sync-imports.js +658 -185
  94. package/dist/lib/upstream/sync-imports.js.map +1 -1
  95. package/dist/lib/upstream/sync-package-json.d.ts +0 -1
  96. package/dist/lib/upstream/sync-package-json.js +7 -0
  97. package/dist/lib/upstream/sync-package-json.js.map +1 -1
  98. package/dist/lib/upstream/sync-package-manager.d.ts +14 -4
  99. package/dist/lib/upstream/sync-package-manager.js +405 -72
  100. package/dist/lib/upstream/sync-package-manager.js.map +1 -1
  101. package/dist/lib/upstream/sync-pielib-strategy.d.ts +2 -1
  102. package/dist/lib/upstream/sync-pielib-strategy.js +228 -110
  103. package/dist/lib/upstream/sync-pielib-strategy.js.map +1 -1
  104. package/dist/lib/upstream/sync-presets.d.ts +52 -0
  105. package/dist/lib/upstream/sync-presets.js +175 -0
  106. package/dist/lib/upstream/sync-presets.js.map +1 -0
  107. package/dist/lib/upstream/sync-react-strategy.d.ts +6 -1
  108. package/dist/lib/upstream/sync-react-strategy.js +342 -134
  109. package/dist/lib/upstream/sync-react-strategy.js.map +1 -1
  110. package/dist/lib/upstream/sync-source-edit.d.ts +14 -0
  111. package/dist/lib/upstream/sync-source-edit.js +89 -0
  112. package/dist/lib/upstream/sync-source-edit.js.map +1 -0
  113. package/dist/lib/upstream/sync-source-tree.d.ts +22 -0
  114. package/dist/lib/upstream/sync-source-tree.js +99 -0
  115. package/dist/lib/upstream/sync-source-tree.js.map +1 -0
  116. package/dist/lib/upstream/sync-strategy.d.ts +1 -1
  117. package/dist/lib/upstream/sync-strategy.js.map +1 -1
  118. package/dist/lib/upstream/sync-summary.d.ts +0 -1
  119. package/dist/lib/upstream/sync-summary.js.map +1 -1
  120. package/dist/lib/upstream/sync-transforms.d.ts +13 -11
  121. package/dist/lib/upstream/sync-transforms.js +23 -17
  122. package/dist/lib/upstream/sync-transforms.js.map +1 -1
  123. package/dist/lib/upstream/sync-vite-config.d.ts +13 -1
  124. package/dist/lib/upstream/sync-vite-config.js +65 -46
  125. package/dist/lib/upstream/sync-vite-config.js.map +1 -1
  126. package/dist/utils/compatibility.d.ts +13 -1
  127. package/dist/utils/compatibility.js +143 -2
  128. package/dist/utils/compatibility.js.map +1 -1
  129. package/dist/utils/conversion.d.ts +0 -1
  130. package/dist/utils/conversion.js.map +1 -1
  131. package/dist/utils/dependency-integrity.d.ts +37 -0
  132. package/dist/utils/dependency-integrity.js +557 -0
  133. package/dist/utils/dependency-integrity.js.map +1 -0
  134. package/dist/utils/git.d.ts +0 -1
  135. package/dist/utils/git.js.map +1 -1
  136. package/dist/utils/logger.d.ts +0 -1
  137. package/dist/utils/logger.js.map +1 -1
  138. package/dist/utils/package-json.d.ts +0 -1
  139. package/dist/utils/package-json.js.map +1 -1
  140. package/package.json +25 -8
  141. package/.compatibility/report.json +0 -2491
  142. package/.turbo/turbo-build.log +0 -1
  143. package/CHANGELOG.md +0 -8
  144. package/REFACTORING.md +0 -131
  145. package/bin/dev.js +0 -5
  146. package/dist/commands/dev/demo/index.d.ts.map +0 -1
  147. package/dist/commands/dev/test-bundler.d.ts.map +0 -1
  148. package/dist/commands/mathquill/migrate.d.ts +0 -20
  149. package/dist/commands/mathquill/migrate.d.ts.map +0 -1
  150. package/dist/commands/mathquill/migrate.js +0 -240
  151. package/dist/commands/mathquill/migrate.js.map +0 -1
  152. package/dist/commands/mathquill/status.d.ts +0 -20
  153. package/dist/commands/mathquill/status.d.ts.map +0 -1
  154. package/dist/commands/mathquill/status.js +0 -231
  155. package/dist/commands/mathquill/status.js.map +0 -1
  156. package/dist/commands/packages/create-controllers.d.ts.map +0 -1
  157. package/dist/commands/packages/create-lib-react.d.ts.map +0 -1
  158. package/dist/commands/packages/create-react-elements.d.ts.map +0 -1
  159. package/dist/commands/packages/enable-publishing.d.ts.map +0 -1
  160. package/dist/commands/packages/init-synced-elements.d.ts.map +0 -1
  161. package/dist/commands/upstream/analyze-esm.d.ts.map +0 -1
  162. package/dist/commands/upstream/check.d.ts.map +0 -1
  163. package/dist/commands/upstream/deps.d.ts.map +0 -1
  164. package/dist/commands/upstream/sync-mathquill.d.ts +0 -12
  165. package/dist/commands/upstream/sync-mathquill.d.ts.map +0 -1
  166. package/dist/commands/upstream/sync-mathquill.js +0 -97
  167. package/dist/commands/upstream/sync-mathquill.js.map +0 -1
  168. package/dist/commands/upstream/sync.d.ts.map +0 -1
  169. package/dist/commands/upstream/track.d.ts.map +0 -1
  170. package/dist/commands/upstream/update.d.ts.map +0 -1
  171. package/dist/commands/verify/controllers.d.ts.map +0 -1
  172. package/dist/commands/verify/react-build.d.ts.map +0 -1
  173. package/dist/index.d.ts.map +0 -1
  174. package/dist/lib/mathquill/extension-generator.d.ts +0 -9
  175. package/dist/lib/mathquill/extension-generator.d.ts.map +0 -1
  176. package/dist/lib/mathquill/extension-generator.js +0 -107
  177. package/dist/lib/mathquill/extension-generator.js.map +0 -1
  178. package/dist/lib/mathquill/khan-extractor.d.ts +0 -16
  179. package/dist/lib/mathquill/khan-extractor.d.ts.map +0 -1
  180. package/dist/lib/mathquill/khan-extractor.js +0 -148
  181. package/dist/lib/mathquill/khan-extractor.js.map +0 -1
  182. package/dist/lib/mathquill/learnosity-extractor.d.ts +0 -15
  183. package/dist/lib/mathquill/learnosity-extractor.d.ts.map +0 -1
  184. package/dist/lib/mathquill/learnosity-extractor.js +0 -170
  185. package/dist/lib/mathquill/learnosity-extractor.js.map +0 -1
  186. package/dist/lib/mathquill/migration-orchestrator.d.ts +0 -77
  187. package/dist/lib/mathquill/migration-orchestrator.d.ts.map +0 -1
  188. package/dist/lib/mathquill/migration-orchestrator.js +0 -391
  189. package/dist/lib/mathquill/migration-orchestrator.js.map +0 -1
  190. package/dist/lib/mathquill/package-updater.d.ts +0 -9
  191. package/dist/lib/mathquill/package-updater.d.ts.map +0 -1
  192. package/dist/lib/mathquill/package-updater.js +0 -103
  193. package/dist/lib/mathquill/package-updater.js.map +0 -1
  194. package/dist/lib/mathquill/pie-extractor.d.ts +0 -14
  195. package/dist/lib/mathquill/pie-extractor.d.ts.map +0 -1
  196. package/dist/lib/mathquill/pie-extractor.js +0 -167
  197. package/dist/lib/mathquill/pie-extractor.js.map +0 -1
  198. package/dist/lib/upstream/repo-utils.d.ts.map +0 -1
  199. package/dist/lib/upstream/sync-compatibility.d.ts.map +0 -1
  200. package/dist/lib/upstream/sync-constants.d.ts.map +0 -1
  201. package/dist/lib/upstream/sync-controllers-strategy.d.ts.map +0 -1
  202. package/dist/lib/upstream/sync-demo-metadata.d.ts.map +0 -1
  203. package/dist/lib/upstream/sync-dev-exports.d.ts +0 -13
  204. package/dist/lib/upstream/sync-dev-exports.d.ts.map +0 -1
  205. package/dist/lib/upstream/sync-dev-exports.js +0 -115
  206. package/dist/lib/upstream/sync-dev-exports.js.map +0 -1
  207. package/dist/lib/upstream/sync-externals.d.ts.map +0 -1
  208. package/dist/lib/upstream/sync-filesystem.d.ts.map +0 -1
  209. package/dist/lib/upstream/sync-imports.d.ts.map +0 -1
  210. package/dist/lib/upstream/sync-mathquill.d.ts +0 -19
  211. package/dist/lib/upstream/sync-mathquill.d.ts.map +0 -1
  212. package/dist/lib/upstream/sync-mathquill.js +0 -160
  213. package/dist/lib/upstream/sync-mathquill.js.map +0 -1
  214. package/dist/lib/upstream/sync-package-json.d.ts.map +0 -1
  215. package/dist/lib/upstream/sync-package-manager.d.ts.map +0 -1
  216. package/dist/lib/upstream/sync-pielib-strategy.d.ts.map +0 -1
  217. package/dist/lib/upstream/sync-react-strategy.d.ts.map +0 -1
  218. package/dist/lib/upstream/sync-strategy.d.ts.map +0 -1
  219. package/dist/lib/upstream/sync-summary.d.ts.map +0 -1
  220. package/dist/lib/upstream/sync-transforms.d.ts.map +0 -1
  221. package/dist/lib/upstream/sync-vite-config.d.ts.map +0 -1
  222. package/dist/utils/compatibility.d.ts.map +0 -1
  223. package/dist/utils/conversion.d.ts.map +0 -1
  224. package/dist/utils/git.d.ts.map +0 -1
  225. package/dist/utils/logger.d.ts.map +0 -1
  226. package/dist/utils/package-json.d.ts.map +0 -1
  227. package/packages/cli/bin/dev.js +0 -5
  228. package/packages/cli/bin/run.js +0 -5
  229. package/src/commands/dev/demo/index.ts +0 -313
  230. package/src/commands/dev/test-bundler.ts +0 -345
  231. package/src/commands/mathquill/migrate.ts +0 -269
  232. package/src/commands/mathquill/status.ts +0 -267
  233. package/src/commands/packages/create-controllers.ts +0 -127
  234. package/src/commands/packages/create-lib-react.ts +0 -279
  235. package/src/commands/packages/create-react-elements.ts +0 -306
  236. package/src/commands/packages/enable-publishing.ts +0 -161
  237. package/src/commands/packages/init-synced-elements.ts +0 -259
  238. package/src/commands/upstream/README.md +0 -444
  239. package/src/commands/upstream/analyze-esm.ts +0 -1973
  240. package/src/commands/upstream/check.ts +0 -228
  241. package/src/commands/upstream/deps.ts +0 -222
  242. package/src/commands/upstream/sync-mathquill.ts +0 -108
  243. package/src/commands/upstream/sync.ts +0 -687
  244. package/src/commands/upstream/track.ts +0 -145
  245. package/src/commands/upstream/update.ts +0 -110
  246. package/src/commands/verify/controllers.ts +0 -166
  247. package/src/commands/verify/react-build.ts +0 -171
  248. package/src/index.ts +0 -1
  249. package/src/lib/mathquill/extension-generator.ts +0 -111
  250. package/src/lib/mathquill/khan-extractor.ts +0 -175
  251. package/src/lib/mathquill/learnosity-extractor.ts +0 -198
  252. package/src/lib/mathquill/migration-orchestrator.ts +0 -513
  253. package/src/lib/mathquill/package-updater.ts +0 -120
  254. package/src/lib/mathquill/pie-extractor.ts +0 -194
  255. package/src/lib/upstream/repo-utils.ts +0 -18
  256. package/src/lib/upstream/sync-compatibility.ts +0 -89
  257. package/src/lib/upstream/sync-constants.ts +0 -77
  258. package/src/lib/upstream/sync-controllers-strategy.ts +0 -291
  259. package/src/lib/upstream/sync-demo-metadata.ts +0 -199
  260. package/src/lib/upstream/sync-dev-exports.ts +0 -151
  261. package/src/lib/upstream/sync-externals.ts +0 -159
  262. package/src/lib/upstream/sync-filesystem.ts +0 -87
  263. package/src/lib/upstream/sync-imports.ts +0 -992
  264. package/src/lib/upstream/sync-mathquill.ts +0 -194
  265. package/src/lib/upstream/sync-package-json.ts +0 -86
  266. package/src/lib/upstream/sync-package-manager.ts +0 -694
  267. package/src/lib/upstream/sync-pielib-strategy.ts +0 -441
  268. package/src/lib/upstream/sync-react-strategy.ts +0 -945
  269. package/src/lib/upstream/sync-strategy.ts +0 -61
  270. package/src/lib/upstream/sync-summary.ts +0 -194
  271. package/src/lib/upstream/sync-transforms.ts +0 -154
  272. package/src/lib/upstream/sync-vite-config.ts +0 -243
  273. package/src/types/es-module-lexer.d.ts +0 -4
  274. package/src/utils/compatibility.ts +0 -182
  275. package/src/utils/conversion.ts +0 -153
  276. package/src/utils/git.ts +0 -63
  277. package/src/utils/logger.ts +0 -69
  278. package/src/utils/package-json.ts +0 -43
  279. package/tests/sync-package-manager.test.ts +0 -112
  280. package/tests/transform-assign-props.test.ts +0 -101
  281. package/tsconfig.json +0 -15
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/utils/conversion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../src/utils/conversion.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * JavaScript to TypeScript conversion utilities\n */\n\nexport interface ConversionMetadata {\n sourcePath: string;\n commit: string;\n}\n\nexport interface ConversionResult {\n code: string;\n hasDefaultObjectExport: boolean;\n}\n\n/**\n * Convert JavaScript to TypeScript\n */\nexport function convertJsToTs(jsCode: string, metadata: ConversionMetadata): ConversionResult {\n // We intentionally do NOT transform the JavaScript syntax.\n // Goal: keep upstream source as-is, while letting the monorepo's TS/Vite pipeline build it.\n // TypeScript diagnostics are suppressed for synced files.\n let tsCode = jsCode;\n const hasDefaultObjectExport = false;\n\n // Convert CommonJS module.exports to ES modules\n tsCode = convertModuleExportsToEsm(tsCode);\n\n // Must be at the very top of the file to reliably suppress TypeScript diagnostics.\n // We keep synced files buildable even when upstream JS has type issues.\n const tsNoCheck = `// @ts-nocheck\\n`;\n\n // Add sync metadata header\n const header = `/**\n * @synced-from ${metadata.sourcePath}\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\n`;\n return { code: tsNoCheck + header + tsCode, hasDefaultObjectExport };\n}\n\n/**\n * Convert CommonJS module.exports to ES module exports\n */\nfunction 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 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\n/**\n * Convert JSX to TSX\n */\nexport function convertJsxToTsx(jsxCode: string, metadata: ConversionMetadata): ConversionResult {\n // We intentionally do NOT transform the JavaScript/JSX syntax.\n // Goal: keep upstream source as-is, while letting the monorepo's TS/Vite pipeline build it.\n // TypeScript diagnostics are suppressed for synced files.\n const tsxCode = jsxCode;\n const hasDefaultObjectExport = false;\n\n // Must be at the very top of the file to reliably suppress TypeScript diagnostics.\n // We keep synced files buildable even when upstream JSX has type issues.\n const tsNoCheck = `// @ts-nocheck\\n`;\n\n // Add sync metadata header\n const header = `/**\n * @synced-from ${metadata.sourcePath}\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\n`;\n return { code: tsNoCheck + header + tsxCode, hasDefaultObjectExport };\n}\n\n/**\n * Fix imports from default export files\n * Some files export default objects but are imported with named imports\n */\nexport function fixImports(content: string, hasDefaultObjectExport: boolean): string {\n if (!hasDefaultObjectExport) {\n return content;\n }\n\n // Convert: import { something } from './file'\n // To: import * as file from './file'\n // This is needed when the imported file has export default {}\n return content.replace(\n /import\\s+{\\s*([^}]+)\\s*}\\s+from\\s+(['\"]\\.\\/[^'\"]+['\"])/g,\n (_match, _imports, path) => {\n // Extract filename from path\n const filename =\n path\n .replace(/['\"]/g, '')\n .split('/')\n .pop()\n ?.replace(/\\.\\w+$/, '') || 'module';\n return `import * as ${filename} from ${path}`;\n }\n );\n}\n"]}
@@ -0,0 +1,37 @@
1
+ export type ImportIntegrityStatus = 'direct' | 'transitive' | 'hoist' | 'broken' | 'peer';
2
+ export interface ImportIntegrityIssue {
3
+ dependency: string;
4
+ status: ImportIntegrityStatus;
5
+ declaredDirect: boolean;
6
+ resolvedPath?: string;
7
+ requiredBy?: string;
8
+ }
9
+ export interface PackageIntegrityResult {
10
+ packageName: string;
11
+ packagePath: string;
12
+ issues: ImportIntegrityIssue[];
13
+ }
14
+ interface CollectWorkspaceOptions {
15
+ includeNonPackageWorkspaces?: boolean;
16
+ }
17
+ interface AnalyzeIntegrityOptions {
18
+ includePeerGaps?: boolean;
19
+ }
20
+ export interface AutoFixDependencyOptions extends CollectWorkspaceOptions {
21
+ packageName?: string;
22
+ includeTransitive?: boolean;
23
+ includePeerGaps?: boolean;
24
+ }
25
+ export interface AutoFixDependencyResult {
26
+ packagesScanned: number;
27
+ packagesUpdated: number;
28
+ dependenciesAdded: number;
29
+ unresolved: Array<{
30
+ packageName: string;
31
+ dependency: string;
32
+ }>;
33
+ }
34
+ export declare function analyzePackageDependencyIntegrity(packagePath: string, options?: AnalyzeIntegrityOptions): Promise<PackageIntegrityResult | null>;
35
+ export declare function collectWorkspacePackageDirs(root: string, options?: CollectWorkspaceOptions): Promise<string[]>;
36
+ export declare function autoFixWorkspaceDependencyDeclarations(root: string, options?: AutoFixDependencyOptions): Promise<AutoFixDependencyResult>;
37
+ export {};
@@ -0,0 +1,557 @@
1
+ import { createRequire, builtinModules } from 'node:module';
2
+ import { existsSync } from 'node:fs';
3
+ import { readFile, readdir, writeFile } from 'node:fs/promises';
4
+ import { dirname, join, resolve } from 'node:path';
5
+ import { init, parse } from 'es-module-lexer';
6
+ import { loadPackageJson } from './package-json.js';
7
+ const BUILTIN_SET = new Set([...builtinModules, ...builtinModules.map((m) => `node:${m}`)]);
8
+ const VALID_BARE_SPECIFIER = /^(@[a-z0-9._-]+\/[a-z0-9._-]+|[a-z0-9._-]+)(\/[a-z0-9._-]+)*$/i;
9
+ const WORKSPACE_SCAN_PREFIXES = ['packages/', 'apps/', 'tools/'];
10
+ const PLACEHOLDER_IMPORT_SPECIFIERS = new Set(['package', 'x']);
11
+ const IGNORED_PEER_DEPENDENCIES = new Set([
12
+ 'react',
13
+ 'react-dom',
14
+ '@emotion/react',
15
+ '@emotion/styled',
16
+ '@emotion/core',
17
+ ]);
18
+ const FALLBACK_DEPENDENCY_VERSIONS = {
19
+ 'js-combinatorics': '^2.1.2',
20
+ 'nested-property': '^4.0.0',
21
+ 'prosemirror-state': '^1.4.4',
22
+ '@testing-library/react': '^16.3.2',
23
+ '@testing-library/dom': '^10.4.1',
24
+ '@tiptap/extensions': '^3.20.0',
25
+ '@tiptap/extension-list': '^3.20.0',
26
+ '@tiptap/extension-code-block': '^3.20.0',
27
+ 'react-is': '^19.2.0',
28
+ pluralize: '^8.0.0',
29
+ };
30
+ export async function analyzePackageDependencyIntegrity(packagePath, options = {}) {
31
+ const absPackagePath = resolve(packagePath);
32
+ const pkgJsonPath = join(absPackagePath, 'package.json');
33
+ if (!existsSync(pkgJsonPath)) {
34
+ return null;
35
+ }
36
+ const pkgJson = (await loadPackageJson(pkgJsonPath));
37
+ if (!pkgJson?.name) {
38
+ return null;
39
+ }
40
+ const sourceDir = join(absPackagePath, 'src');
41
+ if (!existsSync(sourceDir)) {
42
+ return {
43
+ packageName: pkgJson.name,
44
+ packagePath: absPackagePath,
45
+ issues: [],
46
+ };
47
+ }
48
+ const importedPackages = await collectImportedPackages(sourceDir);
49
+ const declaredDirect = new Set([
50
+ ...Object.keys(pkgJson.dependencies || {}),
51
+ ...Object.keys(pkgJson.devDependencies || {}),
52
+ ...Object.keys(pkgJson.peerDependencies || {}),
53
+ ...Object.keys(pkgJson.optionalDependencies || {}),
54
+ ]);
55
+ const resolveFromPackage = createRequire(pkgJsonPath);
56
+ const transitiveNames = await collectTransitiveDependencyNames(resolveFromPackage, declaredDirect);
57
+ const issues = [];
58
+ for (const dep of Array.from(importedPackages.keys()).sort()) {
59
+ if (dep === pkgJson.name) {
60
+ continue;
61
+ }
62
+ const direct = declaredDirect.has(dep);
63
+ const specifiers = importedPackages.get(dep) || new Set([dep]);
64
+ const resolvedPath = resolveDependencyFromPackage(resolveFromPackage, dep, specifiers);
65
+ if (!resolvedPath) {
66
+ if (direct) {
67
+ const declaredManifest = resolveDeclaredPackageManifest(resolveFromPackage, dep);
68
+ if (declaredManifest) {
69
+ continue;
70
+ }
71
+ }
72
+ issues.push({
73
+ dependency: dep,
74
+ status: 'broken',
75
+ declaredDirect: direct,
76
+ });
77
+ continue;
78
+ }
79
+ if (direct) {
80
+ continue;
81
+ }
82
+ if (transitiveNames.has(dep)) {
83
+ issues.push({
84
+ dependency: dep,
85
+ status: 'transitive',
86
+ declaredDirect: false,
87
+ resolvedPath,
88
+ });
89
+ }
90
+ else {
91
+ issues.push({
92
+ dependency: dep,
93
+ status: 'hoist',
94
+ declaredDirect: false,
95
+ resolvedPath,
96
+ });
97
+ }
98
+ }
99
+ if (options.includePeerGaps) {
100
+ const peerIssues = await collectMissingPeerDependencyIssues(pkgJson, declaredDirect, resolveFromPackage);
101
+ for (const peerIssue of peerIssues) {
102
+ const alreadyReported = issues.some((issue) => issue.dependency === peerIssue.dependency);
103
+ if (!alreadyReported) {
104
+ issues.push(peerIssue);
105
+ }
106
+ }
107
+ }
108
+ return {
109
+ packageName: pkgJson.name,
110
+ packagePath: absPackagePath,
111
+ issues,
112
+ };
113
+ }
114
+ export async function collectWorkspacePackageDirs(root, options = {}) {
115
+ const absRoot = resolve(root);
116
+ const out = new Set();
117
+ const rootPkgPath = join(absRoot, 'package.json');
118
+ const rootPkg = (await loadPackageJson(rootPkgPath));
119
+ const workspaces = rootPkg?.workspaces || [];
120
+ for (const pattern of workspaces) {
121
+ if (!WORKSPACE_SCAN_PREFIXES.some((prefix) => pattern.startsWith(prefix))) {
122
+ continue;
123
+ }
124
+ const isPackagesWorkspace = pattern.startsWith('packages/');
125
+ if (!isPackagesWorkspace && !options.includeNonPackageWorkspaces) {
126
+ continue;
127
+ }
128
+ const matches = await expandWorkspacePattern(absRoot, pattern);
129
+ for (const match of matches) {
130
+ if (existsSync(join(match, 'package.json'))) {
131
+ out.add(match);
132
+ }
133
+ }
134
+ }
135
+ return Array.from(out).sort();
136
+ }
137
+ async function expandWorkspacePattern(root, pattern) {
138
+ const normalized = pattern.replace(/\\/g, '/').replace(/\/$/, '');
139
+ if (!normalized.includes('*')) {
140
+ return [join(root, normalized)];
141
+ }
142
+ const [prefix, suffix = ''] = normalized.split('*');
143
+ const prefixPath = join(root, prefix);
144
+ if (!existsSync(prefixPath)) {
145
+ return [];
146
+ }
147
+ const dirEntries = await readdir(prefixPath, { withFileTypes: true });
148
+ const matches = [];
149
+ for (const entry of dirEntries) {
150
+ if (!entry.isDirectory()) {
151
+ continue;
152
+ }
153
+ const candidate = join(prefixPath, entry.name, suffix);
154
+ if (existsSync(candidate)) {
155
+ matches.push(candidate);
156
+ }
157
+ }
158
+ return matches;
159
+ }
160
+ function resolveDependencyFromPackage(resolveFromPackage, dep, specifiers) {
161
+ const candidates = new Set([...specifiers, dep]);
162
+ for (const candidate of candidates) {
163
+ try {
164
+ return resolveFromPackage.resolve(candidate);
165
+ }
166
+ catch {
167
+ // try next candidate
168
+ }
169
+ }
170
+ return null;
171
+ }
172
+ function resolveDeclaredPackageManifest(resolveFromPackage, dep) {
173
+ const searchPaths = resolveFromPackage.resolve.paths(dep) || [];
174
+ for (const basePath of searchPaths) {
175
+ const manifestPath = join(basePath, dep, 'package.json');
176
+ if (existsSync(manifestPath)) {
177
+ return manifestPath;
178
+ }
179
+ }
180
+ return null;
181
+ }
182
+ async function collectMissingPeerDependencyIssues(pkgJson, declaredDirect, resolveFromPackage) {
183
+ const issues = [];
184
+ const checkedPeers = new Set();
185
+ for (const directDep of Array.from(declaredDirect)) {
186
+ if (!directDep || directDep === pkgJson.name)
187
+ continue;
188
+ const depRoot = await resolvePackageRoot(resolveFromPackage, directDep);
189
+ const depPkgPath = depRoot && existsSync(join(depRoot, 'package.json'))
190
+ ? join(depRoot, 'package.json')
191
+ : resolveDeclaredPackageManifest(resolveFromPackage, directDep);
192
+ if (!depPkgPath || !existsSync(depPkgPath)) {
193
+ continue;
194
+ }
195
+ const depPkg = (await loadPackageJson(depPkgPath).catch(() => null));
196
+ if (!depPkg?.peerDependencies || typeof depPkg.peerDependencies !== 'object') {
197
+ continue;
198
+ }
199
+ const optionalPeers = new Set(Object.entries(depPkg.peerDependenciesMeta || {})
200
+ .filter(([, meta]) => meta?.optional)
201
+ .map(([name]) => name));
202
+ for (const peerDep of Object.keys(depPkg.peerDependencies)) {
203
+ if (!peerDep || peerDep === pkgJson.name || optionalPeers.has(peerDep))
204
+ continue;
205
+ if (IGNORED_PEER_DEPENDENCIES.has(peerDep))
206
+ continue;
207
+ if (declaredDirect.has(peerDep) || checkedPeers.has(peerDep))
208
+ continue;
209
+ checkedPeers.add(peerDep);
210
+ const resolvedPath = resolveDependencyFromPackage(resolveFromPackage, peerDep, new Set([peerDep]));
211
+ issues.push({
212
+ dependency: peerDep,
213
+ status: 'peer',
214
+ declaredDirect: false,
215
+ resolvedPath: resolvedPath || undefined,
216
+ requiredBy: directDep,
217
+ });
218
+ }
219
+ }
220
+ return issues;
221
+ }
222
+ async function collectImportedPackages(sourceDir) {
223
+ const files = await listSourceFiles(sourceDir);
224
+ const imported = new Map();
225
+ for (const file of files) {
226
+ const content = await readFile(file, 'utf-8');
227
+ if (file.includes('/src/lib/element-imports.') ||
228
+ content.includes('AUTO-GENERATED') ||
229
+ content.includes('DO NOT EDIT MANUALLY')) {
230
+ continue;
231
+ }
232
+ for (const importedSpec of await extractBareImports(content)) {
233
+ if (!imported.has(importedSpec.packageName)) {
234
+ imported.set(importedSpec.packageName, new Set());
235
+ }
236
+ imported.get(importedSpec.packageName)?.add(importedSpec.rawSpecifier);
237
+ }
238
+ }
239
+ return imported;
240
+ }
241
+ async function listSourceFiles(dir) {
242
+ const entries = await readdir(dir, { withFileTypes: true });
243
+ const files = [];
244
+ for (const entry of entries) {
245
+ const fullPath = join(dir, entry.name);
246
+ if (entry.isDirectory()) {
247
+ files.push(...(await listSourceFiles(fullPath)));
248
+ continue;
249
+ }
250
+ if (/\.(ts|tsx|js|jsx|mjs|cjs)$/.test(entry.name)) {
251
+ files.push(fullPath);
252
+ }
253
+ }
254
+ return files;
255
+ }
256
+ async function extractBareImports(content) {
257
+ const imports = new Map();
258
+ try {
259
+ await init;
260
+ const [parsedImports] = parse(content);
261
+ for (const parsed of parsedImports) {
262
+ const rawSpecifier = parsed.n;
263
+ if (!rawSpecifier)
264
+ continue;
265
+ const dep = normalizeBarePackageSpecifier(rawSpecifier);
266
+ if (!dep)
267
+ continue;
268
+ if (!imports.has(dep)) {
269
+ imports.set(dep, new Set());
270
+ }
271
+ imports.get(dep)?.add(rawSpecifier);
272
+ }
273
+ }
274
+ catch {
275
+ const staticPatterns = [
276
+ /^\s*import\s+[^'"]*?\s+from\s+['"]([^'"]+)['"]/gm,
277
+ /^\s*import\s*['"]([^'"]+)['"]/gm,
278
+ /^\s*export\s+[^'"]*?\s+from\s+['"]([^'"]+)['"]/gm,
279
+ /(?:^|[^\w$"'`])import\(\s*['"]([^'"]+)['"]\s*\)/gm,
280
+ ];
281
+ for (const pattern of staticPatterns) {
282
+ let match = pattern.exec(content);
283
+ while (match !== null) {
284
+ const rawSpecifier = match[1];
285
+ const dep = normalizeBarePackageSpecifier(rawSpecifier);
286
+ if (dep) {
287
+ if (!imports.has(dep)) {
288
+ imports.set(dep, new Set());
289
+ }
290
+ imports.get(dep)?.add(rawSpecifier);
291
+ }
292
+ match = pattern.exec(content);
293
+ }
294
+ }
295
+ }
296
+ const requireContent = stripComments(content);
297
+ const requirePattern = /^\s*(?:const|let|var)?[\w${}\s,*=:.[\]-]*\brequire\(\s*['"]([^'"]+)['"]\s*\)/gm;
298
+ let requireMatch = requirePattern.exec(requireContent);
299
+ while (requireMatch !== null) {
300
+ const rawSpecifier = requireMatch[1];
301
+ const dep = normalizeBarePackageSpecifier(rawSpecifier);
302
+ if (dep) {
303
+ if (!imports.has(dep)) {
304
+ imports.set(dep, new Set());
305
+ }
306
+ imports.get(dep)?.add(rawSpecifier);
307
+ }
308
+ requireMatch = requirePattern.exec(requireContent);
309
+ }
310
+ const out = [];
311
+ for (const [packageName, specifiers] of imports) {
312
+ for (const rawSpecifier of specifiers) {
313
+ out.push({ packageName, rawSpecifier });
314
+ }
315
+ }
316
+ return out;
317
+ }
318
+ function stripComments(content) {
319
+ return content.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^\\:])\/\/.*$/gm, '$1');
320
+ }
321
+ function normalizeBarePackageSpecifier(specifier) {
322
+ if (!specifier ||
323
+ specifier.startsWith('.') ||
324
+ specifier.startsWith('/') ||
325
+ specifier.startsWith('node:') ||
326
+ specifier.startsWith('$')) {
327
+ return null;
328
+ }
329
+ if (BUILTIN_SET.has(specifier)) {
330
+ return null;
331
+ }
332
+ // Ignore virtual modules and URL/protocol specifiers.
333
+ if (specifier.includes(':')) {
334
+ return null;
335
+ }
336
+ if (!VALID_BARE_SPECIFIER.test(specifier)) {
337
+ return null;
338
+ }
339
+ if (PLACEHOLDER_IMPORT_SPECIFIERS.has(specifier)) {
340
+ return null;
341
+ }
342
+ if (specifier.startsWith('@')) {
343
+ const parts = specifier.split('/');
344
+ return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : null;
345
+ }
346
+ return specifier.split('/')[0] || null;
347
+ }
348
+ async function collectTransitiveDependencyNames(resolveFromPackage, roots) {
349
+ const seen = new Set();
350
+ const queue = Array.from(roots);
351
+ const transitive = new Set();
352
+ while (queue.length > 0) {
353
+ const dep = queue.shift();
354
+ if (!dep || seen.has(dep))
355
+ continue;
356
+ seen.add(dep);
357
+ transitive.add(dep);
358
+ const root = await resolvePackageRoot(resolveFromPackage, dep);
359
+ if (!root)
360
+ continue;
361
+ const pkgJsonPath = join(root, 'package.json');
362
+ if (!existsSync(pkgJsonPath))
363
+ continue;
364
+ let pkg = null;
365
+ try {
366
+ pkg = (await loadPackageJson(pkgJsonPath));
367
+ }
368
+ catch {
369
+ pkg = null;
370
+ }
371
+ if (!pkg)
372
+ continue;
373
+ const childDeps = Object.keys(pkg.dependencies || {});
374
+ for (const child of childDeps) {
375
+ if (!seen.has(child))
376
+ queue.push(child);
377
+ }
378
+ }
379
+ return transitive;
380
+ }
381
+ export async function autoFixWorkspaceDependencyDeclarations(root, options = {}) {
382
+ const absRoot = resolve(root);
383
+ const packageDirs = await collectWorkspacePackageDirs(absRoot, {
384
+ includeNonPackageWorkspaces: options.includeNonPackageWorkspaces,
385
+ });
386
+ const catalog = await buildDependencyVersionCatalog(absRoot, packageDirs);
387
+ const workspacePackages = await buildWorkspacePackageNameMap(packageDirs);
388
+ let packagesScanned = 0;
389
+ let packagesUpdated = 0;
390
+ let dependenciesAdded = 0;
391
+ const unresolved = [];
392
+ for (const packageDir of packageDirs) {
393
+ const analysis = await analyzePackageDependencyIntegrity(packageDir, {
394
+ includePeerGaps: options.includePeerGaps,
395
+ });
396
+ if (!analysis)
397
+ continue;
398
+ if (options.packageName && analysis.packageName !== options.packageName) {
399
+ continue;
400
+ }
401
+ packagesScanned++;
402
+ const pkgJsonPath = join(packageDir, 'package.json');
403
+ const pkgJson = (await loadPackageJson(pkgJsonPath));
404
+ if (!pkgJson)
405
+ continue;
406
+ const needs = analysis.issues.filter((issue) => {
407
+ if (issue.declaredDirect) {
408
+ return false;
409
+ }
410
+ if (issue.status === 'hoist' || issue.status === 'broken' || issue.status === 'peer') {
411
+ return true;
412
+ }
413
+ return options.includeTransitive === true && issue.status === 'transitive';
414
+ });
415
+ if (needs.length === 0) {
416
+ continue;
417
+ }
418
+ if (!pkgJson.dependencies || typeof pkgJson.dependencies !== 'object') {
419
+ pkgJson.dependencies = {};
420
+ }
421
+ const deps = pkgJson.dependencies;
422
+ let modified = false;
423
+ for (const issue of needs) {
424
+ if (deps[issue.dependency]) {
425
+ continue;
426
+ }
427
+ const version = await resolveDependencyVersionForPackage(issue.dependency, pkgJsonPath, absRoot, catalog, workspacePackages);
428
+ if (!version) {
429
+ unresolved.push({ packageName: analysis.packageName, dependency: issue.dependency });
430
+ continue;
431
+ }
432
+ deps[issue.dependency] = version;
433
+ modified = true;
434
+ dependenciesAdded++;
435
+ }
436
+ if (modified) {
437
+ await writeFile(pkgJsonPath, `${JSON.stringify(pkgJson, null, 2)}\n`, 'utf-8');
438
+ packagesUpdated++;
439
+ }
440
+ }
441
+ return {
442
+ packagesScanned,
443
+ packagesUpdated,
444
+ dependenciesAdded,
445
+ unresolved,
446
+ };
447
+ }
448
+ async function buildWorkspacePackageNameMap(packageDirs) {
449
+ const map = new Map();
450
+ for (const packageDir of packageDirs) {
451
+ const pkgPath = join(packageDir, 'package.json');
452
+ if (!existsSync(pkgPath))
453
+ continue;
454
+ const pkg = (await loadPackageJson(pkgPath));
455
+ if (pkg?.name) {
456
+ map.set(pkg.name, packageDir);
457
+ }
458
+ }
459
+ return map;
460
+ }
461
+ async function buildDependencyVersionCatalog(rootDir, packageDirs) {
462
+ const catalog = new Map();
463
+ const addVersions = (record) => {
464
+ if (!record)
465
+ return;
466
+ for (const [name, version] of Object.entries(record)) {
467
+ if (!catalog.has(name)) {
468
+ catalog.set(name, version);
469
+ }
470
+ }
471
+ };
472
+ const rootPkgPath = join(rootDir, 'package.json');
473
+ if (existsSync(rootPkgPath)) {
474
+ const rootPkg = (await loadPackageJson(rootPkgPath));
475
+ if (rootPkg) {
476
+ addVersions(rootPkg.dependencies);
477
+ addVersions(rootPkg.devDependencies);
478
+ addVersions(rootPkg.peerDependencies);
479
+ addVersions(rootPkg.optionalDependencies);
480
+ }
481
+ }
482
+ for (const packageDir of packageDirs) {
483
+ const pkgPath = join(packageDir, 'package.json');
484
+ if (!existsSync(pkgPath))
485
+ continue;
486
+ const pkg = (await loadPackageJson(pkgPath));
487
+ if (!pkg)
488
+ continue;
489
+ addVersions(pkg.dependencies);
490
+ addVersions(pkg.devDependencies);
491
+ addVersions(pkg.peerDependencies);
492
+ addVersions(pkg.optionalDependencies);
493
+ }
494
+ return catalog;
495
+ }
496
+ async function resolveDependencyVersionForPackage(dep, pkgJsonPath, rootDir, catalog, workspacePackages) {
497
+ if (workspacePackages.has(dep)) {
498
+ return 'workspace:*';
499
+ }
500
+ const catalogVersion = catalog.get(dep);
501
+ if (catalogVersion) {
502
+ return catalogVersion;
503
+ }
504
+ if (FALLBACK_DEPENDENCY_VERSIONS[dep]) {
505
+ return FALLBACK_DEPENDENCY_VERSIONS[dep];
506
+ }
507
+ const requireFromPackage = createRequire(pkgJsonPath);
508
+ const packageRoot = await resolvePackageRoot(requireFromPackage, dep);
509
+ if (!packageRoot) {
510
+ return null;
511
+ }
512
+ const depPkgPath = join(packageRoot, 'package.json');
513
+ if (!existsSync(depPkgPath)) {
514
+ return null;
515
+ }
516
+ const depPkg = (await loadPackageJson(depPkgPath));
517
+ if (!depPkg?.version) {
518
+ return null;
519
+ }
520
+ // Keep workspace references if dependency resolves to local workspace package path.
521
+ if (packageRoot.startsWith(join(rootDir, 'packages')) ||
522
+ packageRoot.startsWith(join(rootDir, 'apps'))) {
523
+ return 'workspace:*';
524
+ }
525
+ return `^${depPkg.version}`;
526
+ }
527
+ async function resolvePackageRoot(resolveFromPackage, dep) {
528
+ let resolvedFile;
529
+ try {
530
+ resolvedFile = resolveFromPackage.resolve(dep);
531
+ }
532
+ catch {
533
+ return null;
534
+ }
535
+ let current = dirname(resolvedFile);
536
+ const floor = dirname(current);
537
+ while (current !== floor) {
538
+ const pkgJsonPath = join(current, 'package.json');
539
+ if (existsSync(pkgJsonPath)) {
540
+ try {
541
+ const pkg = (await loadPackageJson(pkgJsonPath));
542
+ if (pkg.name === dep) {
543
+ return current;
544
+ }
545
+ }
546
+ catch {
547
+ // ignore parse/load errors and keep walking
548
+ }
549
+ }
550
+ const parent = dirname(current);
551
+ if (parent === current)
552
+ break;
553
+ current = parent;
554
+ }
555
+ return null;
556
+ }
557
+ //# sourceMappingURL=dependency-integrity.js.map