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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +408 -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 +53 -0
  105. package/dist/lib/upstream/sync-presets.js +203 -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 +24 -12
  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,161 +0,0 @@
1
- import { Command, Flags } from '@oclif/core';
2
- import { Logger } from '../../utils/logger.js';
3
- import { loadPackageJson, writePackageJson } from '../../utils/package-json.js';
4
- import { glob } from 'glob';
5
- import { readFile } from 'node:fs/promises';
6
-
7
- interface ChangesetConfig {
8
- $schema?: string;
9
- changelog: string;
10
- commit: boolean;
11
- fixed: string[];
12
- linked: string[];
13
- access: string;
14
- baseBranch: string;
15
- updateInternalDependencies: string;
16
- ignore: string[];
17
- }
18
-
19
- const REACT_PACKAGE_PATTERNS = [
20
- 'packages/elements-react/*/package.json',
21
- 'packages/lib-react/*/package.json',
22
- ];
23
-
24
- const CHANGESET_CONFIG_PATH = '.changeset/config.json';
25
-
26
- export default class EnablePublishing extends Command {
27
- static override description = 'Enable React package publishing by removing private flags';
28
-
29
- static override examples = [
30
- '<%= config.bin %> <%= command.id %> --dry-run',
31
- '<%= config.bin %> <%= command.id %>',
32
- ];
33
-
34
- static override flags = {
35
- 'dry-run': Flags.boolean({
36
- description: 'Show what would be changed without making any changes',
37
- default: false,
38
- }),
39
- };
40
-
41
- private logger = new Logger();
42
-
43
- public async run(): Promise<void> {
44
- const { flags } = await this.parse(EnablePublishing);
45
-
46
- this.logger.section('🔄 React Package Publishing Migration');
47
-
48
- if (flags['dry-run']) {
49
- this.logger.info('🔍 DRY RUN MODE - No changes will be made\n');
50
- }
51
-
52
- const changes: string[] = [];
53
- let totalPackages = 0;
54
-
55
- // Step 1: Find all React packages
56
- this.logger.info('📦 Finding React packages...');
57
- const packagePaths: string[] = [];
58
- for (const pattern of REACT_PACKAGE_PATTERNS) {
59
- const matches = await glob(pattern);
60
- packagePaths.push(...matches);
61
- }
62
-
63
- this.logger.info(` Found ${packagePaths.length} React packages\n`);
64
-
65
- // Step 2: Remove "private": true from package.json files
66
- this.logger.info('🔓 Removing private flag from React packages...');
67
- const packageNames: string[] = [];
68
-
69
- for (const pkgPath of packagePaths) {
70
- const pkg = await loadPackageJson(pkgPath);
71
-
72
- packageNames.push(pkg.name);
73
-
74
- if (pkg.private === true) {
75
- totalPackages++;
76
- this.logger.info(` ✓ ${pkg.name}`);
77
- changes.push(`Remove private flag from ${pkg.name}`);
78
-
79
- if (!flags['dry-run']) {
80
- // Remove the private field
81
- delete pkg.private;
82
-
83
- // Write back with proper formatting
84
- await writePackageJson(pkgPath, pkg);
85
- }
86
- }
87
- }
88
-
89
- this.logger.info(` Modified ${totalPackages} package.json files\n`);
90
-
91
- // Step 3: Update .changeset/config.json
92
- this.logger.info('⚙️ Updating changeset configuration...');
93
- const changesetContent = await readFile(CHANGESET_CONFIG_PATH, 'utf-8');
94
- const changesetConfig = JSON.parse(changesetContent) as ChangesetConfig;
95
-
96
- // Filter out React packages from ignore list
97
- const reactPackageSet = new Set(packageNames);
98
- const originalIgnoreCount = changesetConfig.ignore.length;
99
- const newIgnore = changesetConfig.ignore.filter((name) => !reactPackageSet.has(name));
100
-
101
- const removedCount = originalIgnoreCount - newIgnore.length;
102
- this.logger.info(` Removing ${removedCount} packages from ignore list`);
103
- changes.push(`Remove ${removedCount} React packages from changeset ignore list`);
104
-
105
- if (!flags['dry-run']) {
106
- changesetConfig.ignore = newIgnore;
107
- await writePackageJson(CHANGESET_CONFIG_PATH, changesetConfig as any);
108
- }
109
-
110
- this.logger.info(` Updated ${CHANGESET_CONFIG_PATH}\n`);
111
-
112
- // Summary
113
- this.logger.section('📋 Summary of Changes');
114
-
115
- for (const change of changes) {
116
- this.logger.info(` • ${change}`);
117
- }
118
-
119
- this.logger.info(`\n Total packages enabled for publishing: ${totalPackages}`);
120
-
121
- if (flags['dry-run']) {
122
- this.logger.warn('\n⚠️ This was a dry run. No files were modified.');
123
- this.logger.info(
124
- ' Run without --dry-run to apply these changes:\n bun run cli packages:enable-publishing\n'
125
- );
126
- } else {
127
- this.logger.success('\n✅ Migration complete!');
128
- this.logger.info('\nNext steps:');
129
- this.logger.info('1. Review the changes with: git diff');
130
- this.logger.info('2. Create changesets for the React packages you want to publish:');
131
- this.logger.info(' bun run changeset');
132
- this.logger.info('3. Commit and push the changes:');
133
- this.logger.info(' git add .');
134
- this.logger.info(' git commit -m "chore: enable React package publishing"');
135
- this.logger.info(' git push');
136
- this.logger.info('4. Wait for the automated Version Packages PR and merge it to publish\n');
137
- }
138
-
139
- // Provide package list
140
- this.logger.section('\n📦 Packages that will now be published');
141
-
142
- const elementPackages = packageNames.filter((name) => name.startsWith('@pie-element/'));
143
- const libPackages = packageNames.filter((name) => name.startsWith('@pie-lib/'));
144
-
145
- if (elementPackages.length > 0) {
146
- this.logger.info('React Elements:');
147
- for (const name of elementPackages.sort()) {
148
- this.logger.info(` • ${name}`);
149
- }
150
- this.log();
151
- }
152
-
153
- if (libPackages.length > 0) {
154
- this.logger.info('React Libraries:');
155
- for (const name of libPackages.sort()) {
156
- this.logger.info(` • ${name}`);
157
- }
158
- this.log();
159
- }
160
- }
161
- }
@@ -1,259 +0,0 @@
1
- import { Command, Flags } from '@oclif/core';
2
- import { Logger } from '../../utils/logger.js';
3
- import { existsSync } from 'node:fs';
4
- import { readdir, readFile, writeFile, stat as fsStat } from 'node:fs/promises';
5
- import { join } from 'node:path';
6
-
7
- const ELEMENTS_REACT_DIR = 'packages/elements-react';
8
- const PIE_ELEMENTS_DIR = '../pie-elements/packages';
9
-
10
- interface PackageTemplate {
11
- name: string;
12
- private: boolean;
13
- version: string;
14
- description: string;
15
- type: string;
16
- main: string;
17
- types: string;
18
- exports: Record<string, unknown>;
19
- files: string[];
20
- scripts: Record<string, string>;
21
- dependencies: Record<string, string>;
22
- peerDependencies: Record<string, string>;
23
- devDependencies: Record<string, string>;
24
- keywords: string[];
25
- license: string;
26
- repository: {
27
- type: string;
28
- url: string;
29
- directory: string;
30
- };
31
- }
32
-
33
- export default class InitSyncedElements extends Command {
34
- static override description =
35
- 'Initialize package.json and vite.config.ts files for synced React elements';
36
-
37
- static override examples = [
38
- '<%= config.bin %> <%= command.id %>',
39
- '<%= config.bin %> <%= command.id %> --element=categorize',
40
- '<%= config.bin %> <%= command.id %> --dry-run',
41
- ];
42
-
43
- static override flags = {
44
- element: Flags.string({
45
- description: 'Initialize only specified element',
46
- }),
47
- 'dry-run': Flags.boolean({
48
- description: 'Show what would be created without making changes',
49
- default: false,
50
- }),
51
- verbose: Flags.boolean({
52
- char: 'v',
53
- description: 'Show detailed output',
54
- default: false,
55
- }),
56
- };
57
-
58
- private logger = new Logger();
59
-
60
- public async run(): Promise<void> {
61
- const { flags } = await this.parse(InitSyncedElements);
62
-
63
- this.logger = new Logger(flags.verbose);
64
-
65
- this.logger.section('🔧 Initializing synced React elements');
66
-
67
- if (flags['dry-run']) {
68
- this.logger.info(' Mode: DRY RUN\n');
69
- }
70
-
71
- const elements = await readdir(ELEMENTS_REACT_DIR);
72
- let created = 0;
73
- let skipped = 0;
74
-
75
- for (const element of elements) {
76
- // Skip if filtering by element and this isn't it
77
- if (flags.element && element !== flags.element) {
78
- continue;
79
- }
80
-
81
- const elementDir = join(ELEMENTS_REACT_DIR, element);
82
-
83
- // Skip if not a directory
84
- const statResult = await fsStat(elementDir).catch(() => null);
85
- if (!statResult?.isDirectory()) {
86
- continue;
87
- }
88
-
89
- // Skip if src directory doesn't exist
90
- if (!existsSync(join(elementDir, 'src'))) {
91
- continue;
92
- }
93
-
94
- const packageJsonPath = join(elementDir, 'package.json');
95
-
96
- // Skip if package.json already exists
97
- if (existsSync(packageJsonPath)) {
98
- if (flags.verbose) {
99
- this.logger.info(` ⏭️ ${element}: package.json already exists`);
100
- }
101
- skipped++;
102
- continue;
103
- }
104
-
105
- // Read upstream package.json
106
- const upstreamPkg = await this.readUpstreamPackageJson(element);
107
- if (!upstreamPkg) {
108
- this.logger.warn(` ⚠️ ${element}: Could not read upstream package.json`);
109
- continue;
110
- }
111
-
112
- // Generate package.json
113
- const pkg = this.generatePackageJson(element, upstreamPkg);
114
-
115
- if (!flags['dry-run']) {
116
- await writeFile(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\n`, 'utf-8');
117
- this.logger.success(` ✨ ${element}: Created package.json`);
118
- } else {
119
- this.logger.info(` 🔍 ${element}: Would create package.json`);
120
- }
121
-
122
- // Generate vite.config.ts
123
- const viteConfigPath = join(elementDir, 'vite.config.ts');
124
- if (!existsSync(viteConfigPath)) {
125
- if (!flags['dry-run']) {
126
- await writeFile(viteConfigPath, this.generateViteConfig(), 'utf-8');
127
- this.logger.success(` ✨ ${element}: Created vite.config.ts`);
128
- } else {
129
- this.logger.info(` 🔍 ${element}: Would create vite.config.ts`);
130
- }
131
- }
132
-
133
- created++;
134
- }
135
-
136
- this.logger.section(
137
- `\n📊 Summary: ${created} ${flags['dry-run'] ? 'would be created' : 'created'}, ${skipped} skipped`
138
- );
139
- }
140
-
141
- private async readUpstreamPackageJson(
142
- elementName: string
143
- ): Promise<Record<string, unknown> | null> {
144
- const upstreamPath = join(PIE_ELEMENTS_DIR, elementName, 'package.json');
145
-
146
- if (!existsSync(upstreamPath)) {
147
- return null;
148
- }
149
-
150
- try {
151
- const content = await readFile(upstreamPath, 'utf-8');
152
- return JSON.parse(content);
153
- } catch {
154
- return null;
155
- }
156
- }
157
-
158
- private generatePackageJson(
159
- elementName: string,
160
- upstreamPkg: Record<string, unknown>
161
- ): PackageTemplate {
162
- const deps: Record<string, string> = {};
163
-
164
- // Map upstream dependencies to workspace:* for @pie-lib packages
165
- const upstreamDeps = upstreamPkg.dependencies as Record<string, string> | undefined;
166
- if (upstreamDeps) {
167
- for (const [name] of Object.entries(upstreamDeps)) {
168
- if (name.startsWith('@pie-lib/')) {
169
- deps[name] = 'workspace:*';
170
- } else if (!name.startsWith('react') && name !== 'react-dom') {
171
- deps[name] = '*';
172
- }
173
- }
174
- }
175
-
176
- return {
177
- name: `@pie-element/${elementName}`,
178
- private: true,
179
- version: '0.1.0',
180
- description: `React implementation of ${elementName} element synced from pie-elements`,
181
- type: 'module',
182
- main: './dist/index.js',
183
- types: './dist/index.d.ts',
184
- exports: {
185
- '.': {
186
- types: './dist/index.d.ts',
187
- default: './dist/index.js',
188
- },
189
- },
190
- files: ['dist', 'src'],
191
- scripts: {
192
- dev: 'vite',
193
- build: 'vite build && tsc --emitDeclarationOnly',
194
- test: 'vitest run',
195
- lint: 'biome check .',
196
- 'lint:fix': 'biome check --write .',
197
- },
198
- dependencies: deps,
199
- peerDependencies: {
200
- react: '^18.0.0',
201
- 'react-dom': '^18.0.0',
202
- },
203
- devDependencies: {
204
- '@types/react': '^18.2.0',
205
- '@types/react-dom': '^18.2.0',
206
- '@vitejs/plugin-react': '^4.2.0',
207
- typescript: '^5.9.3',
208
- vite: '^6.0.0',
209
- vitest: '^2.1.0',
210
- },
211
- keywords: ['pie', 'pie-element', 'react', 'assessment', elementName],
212
- license: 'ISC',
213
- repository: {
214
- type: 'git',
215
- url: 'https://github.com/pie-framework/pie-elements-ng.git',
216
- directory: `packages/elements-react/${elementName}`,
217
- },
218
- };
219
- }
220
-
221
- private generateViteConfig(): string {
222
- return `import { resolve } from 'node:path';
223
- import react from '@vitejs/plugin-react';
224
- import { defineConfig } from 'vite';
225
-
226
- export default defineConfig({
227
- plugins: [react()],
228
- build: {
229
- lib: {
230
- entry: {
231
- index: resolve(__dirname, 'src/index.ts'),
232
- },
233
- formats: ['es'],
234
- },
235
- rollupOptions: {
236
- external: (id) => {
237
- return (
238
- /^react($|\\/)/.test(id) ||
239
- /^react-dom($|\\/)/.test(id) ||
240
- /^@pie-lib\\//.test(id) ||
241
- /^@pie-element\\//.test(id) ||
242
- /^@pie-framework\\//.test(id) ||
243
- /^@mui\\//.test(id) ||
244
- /^d3-/.test(id) ||
245
- id === 'lodash' ||
246
- /^lodash\\//.test(id) ||
247
- ['prop-types', 'classnames', 'debug'].includes(id)
248
- );
249
- },
250
- output: {
251
- preserveModules: true,
252
- preserveModulesRoot: 'src',
253
- },
254
- },
255
- },
256
- });
257
- `;
258
- }
259
- }