@pie-element/cli 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/.compatibility/report.json +2491 -0
  2. package/.turbo/turbo-build.log +1 -0
  3. package/CHANGELOG.md +8 -0
  4. package/README.md +240 -0
  5. package/REFACTORING.md +131 -0
  6. package/bin/dev.js +5 -0
  7. package/bin/run.js +5 -0
  8. package/dist/commands/dev/demo/index.d.ts +33 -0
  9. package/dist/commands/dev/demo/index.d.ts.map +1 -0
  10. package/dist/commands/dev/demo/index.js +274 -0
  11. package/dist/commands/dev/demo/index.js.map +1 -0
  12. package/dist/commands/dev/test-bundler.d.ts +18 -0
  13. package/dist/commands/dev/test-bundler.d.ts.map +1 -0
  14. package/dist/commands/dev/test-bundler.js +284 -0
  15. package/dist/commands/dev/test-bundler.js.map +1 -0
  16. package/dist/commands/mathquill/migrate.d.ts +20 -0
  17. package/dist/commands/mathquill/migrate.d.ts.map +1 -0
  18. package/dist/commands/mathquill/migrate.js +240 -0
  19. package/dist/commands/mathquill/migrate.js.map +1 -0
  20. package/dist/commands/mathquill/status.d.ts +20 -0
  21. package/dist/commands/mathquill/status.d.ts.map +1 -0
  22. package/dist/commands/mathquill/status.js +231 -0
  23. package/dist/commands/mathquill/status.js.map +1 -0
  24. package/dist/commands/packages/create-controllers.d.ts +13 -0
  25. package/dist/commands/packages/create-controllers.d.ts.map +1 -0
  26. package/dist/commands/packages/create-controllers.js +103 -0
  27. package/dist/commands/packages/create-controllers.js.map +1 -0
  28. package/dist/commands/packages/create-lib-react.d.ts +17 -0
  29. package/dist/commands/packages/create-lib-react.d.ts.map +1 -0
  30. package/dist/commands/packages/create-lib-react.js +228 -0
  31. package/dist/commands/packages/create-lib-react.js.map +1 -0
  32. package/dist/commands/packages/create-react-elements.d.ts +16 -0
  33. package/dist/commands/packages/create-react-elements.d.ts.map +1 -0
  34. package/dist/commands/packages/create-react-elements.js +259 -0
  35. package/dist/commands/packages/create-react-elements.js.map +1 -0
  36. package/dist/commands/packages/enable-publishing.d.ts +11 -0
  37. package/dist/commands/packages/enable-publishing.d.ts.map +1 -0
  38. package/dist/commands/packages/enable-publishing.js +117 -0
  39. package/dist/commands/packages/enable-publishing.js.map +1 -0
  40. package/dist/commands/packages/init-synced-elements.d.ts +16 -0
  41. package/dist/commands/packages/init-synced-elements.d.ts.map +1 -0
  42. package/dist/commands/packages/init-synced-elements.js +204 -0
  43. package/dist/commands/packages/init-synced-elements.js.map +1 -0
  44. package/dist/commands/upstream/analyze-esm.d.ts +59 -0
  45. package/dist/commands/upstream/analyze-esm.d.ts.map +1 -0
  46. package/dist/commands/upstream/analyze-esm.js +1481 -0
  47. package/dist/commands/upstream/analyze-esm.js.map +1 -0
  48. package/dist/commands/upstream/check.d.ts +15 -0
  49. package/dist/commands/upstream/check.d.ts.map +1 -0
  50. package/dist/commands/upstream/check.js +165 -0
  51. package/dist/commands/upstream/check.js.map +1 -0
  52. package/dist/commands/upstream/deps.d.ts +15 -0
  53. package/dist/commands/upstream/deps.d.ts.map +1 -0
  54. package/dist/commands/upstream/deps.js +174 -0
  55. package/dist/commands/upstream/deps.js.map +1 -0
  56. package/dist/commands/upstream/sync-mathquill.d.ts +12 -0
  57. package/dist/commands/upstream/sync-mathquill.d.ts.map +1 -0
  58. package/dist/commands/upstream/sync-mathquill.js +97 -0
  59. package/dist/commands/upstream/sync-mathquill.js.map +1 -0
  60. package/dist/commands/upstream/sync.d.ts +25 -0
  61. package/dist/commands/upstream/sync.d.ts.map +1 -0
  62. package/dist/commands/upstream/sync.js +552 -0
  63. package/dist/commands/upstream/sync.js.map +1 -0
  64. package/dist/commands/upstream/track.d.ts +15 -0
  65. package/dist/commands/upstream/track.d.ts.map +1 -0
  66. package/dist/commands/upstream/track.js +115 -0
  67. package/dist/commands/upstream/track.js.map +1 -0
  68. package/dist/commands/upstream/update.d.ts +15 -0
  69. package/dist/commands/upstream/update.d.ts.map +1 -0
  70. package/dist/commands/upstream/update.js +98 -0
  71. package/dist/commands/upstream/update.js.map +1 -0
  72. package/dist/commands/verify/controllers.d.ts +12 -0
  73. package/dist/commands/verify/controllers.d.ts.map +1 -0
  74. package/dist/commands/verify/controllers.js +138 -0
  75. package/dist/commands/verify/controllers.js.map +1 -0
  76. package/dist/commands/verify/react-build.d.ts +13 -0
  77. package/dist/commands/verify/react-build.d.ts.map +1 -0
  78. package/dist/commands/verify/react-build.js +135 -0
  79. package/dist/commands/verify/react-build.js.map +1 -0
  80. package/dist/index.d.ts +2 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +2 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/lib/mathquill/extension-generator.d.ts +9 -0
  85. package/dist/lib/mathquill/extension-generator.d.ts.map +1 -0
  86. package/dist/lib/mathquill/extension-generator.js +107 -0
  87. package/dist/lib/mathquill/extension-generator.js.map +1 -0
  88. package/dist/lib/mathquill/khan-extractor.d.ts +16 -0
  89. package/dist/lib/mathquill/khan-extractor.d.ts.map +1 -0
  90. package/dist/lib/mathquill/khan-extractor.js +148 -0
  91. package/dist/lib/mathquill/khan-extractor.js.map +1 -0
  92. package/dist/lib/mathquill/learnosity-extractor.d.ts +15 -0
  93. package/dist/lib/mathquill/learnosity-extractor.d.ts.map +1 -0
  94. package/dist/lib/mathquill/learnosity-extractor.js +170 -0
  95. package/dist/lib/mathquill/learnosity-extractor.js.map +1 -0
  96. package/dist/lib/mathquill/migration-orchestrator.d.ts +77 -0
  97. package/dist/lib/mathquill/migration-orchestrator.d.ts.map +1 -0
  98. package/dist/lib/mathquill/migration-orchestrator.js +391 -0
  99. package/dist/lib/mathquill/migration-orchestrator.js.map +1 -0
  100. package/dist/lib/mathquill/package-updater.d.ts +9 -0
  101. package/dist/lib/mathquill/package-updater.d.ts.map +1 -0
  102. package/dist/lib/mathquill/package-updater.js +103 -0
  103. package/dist/lib/mathquill/package-updater.js.map +1 -0
  104. package/dist/lib/mathquill/pie-extractor.d.ts +14 -0
  105. package/dist/lib/mathquill/pie-extractor.d.ts.map +1 -0
  106. package/dist/lib/mathquill/pie-extractor.js +167 -0
  107. package/dist/lib/mathquill/pie-extractor.js.map +1 -0
  108. package/dist/lib/upstream/repo-utils.d.ts +9 -0
  109. package/dist/lib/upstream/repo-utils.d.ts.map +1 -0
  110. package/dist/lib/upstream/repo-utils.js +10 -0
  111. package/dist/lib/upstream/repo-utils.js.map +1 -0
  112. package/dist/lib/upstream/sync-compatibility.d.ts +29 -0
  113. package/dist/lib/upstream/sync-compatibility.d.ts.map +1 -0
  114. package/dist/lib/upstream/sync-compatibility.js +70 -0
  115. package/dist/lib/upstream/sync-compatibility.js.map +1 -0
  116. package/dist/lib/upstream/sync-constants.d.ts +50 -0
  117. package/dist/lib/upstream/sync-constants.d.ts.map +1 -0
  118. package/dist/lib/upstream/sync-constants.js +66 -0
  119. package/dist/lib/upstream/sync-constants.js.map +1 -0
  120. package/dist/lib/upstream/sync-controllers-strategy.d.ts +18 -0
  121. package/dist/lib/upstream/sync-controllers-strategy.d.ts.map +1 -0
  122. package/dist/lib/upstream/sync-controllers-strategy.js +243 -0
  123. package/dist/lib/upstream/sync-controllers-strategy.js.map +1 -0
  124. package/dist/lib/upstream/sync-demo-metadata.d.ts +15 -0
  125. package/dist/lib/upstream/sync-demo-metadata.d.ts.map +1 -0
  126. package/dist/lib/upstream/sync-demo-metadata.js +165 -0
  127. package/dist/lib/upstream/sync-demo-metadata.js.map +1 -0
  128. package/dist/lib/upstream/sync-dev-exports.d.ts +13 -0
  129. package/dist/lib/upstream/sync-dev-exports.d.ts.map +1 -0
  130. package/dist/lib/upstream/sync-dev-exports.js +115 -0
  131. package/dist/lib/upstream/sync-dev-exports.js.map +1 -0
  132. package/dist/lib/upstream/sync-externals.d.ts +29 -0
  133. package/dist/lib/upstream/sync-externals.d.ts.map +1 -0
  134. package/dist/lib/upstream/sync-externals.js +164 -0
  135. package/dist/lib/upstream/sync-externals.js.map +1 -0
  136. package/dist/lib/upstream/sync-filesystem.d.ts +21 -0
  137. package/dist/lib/upstream/sync-filesystem.d.ts.map +1 -0
  138. package/dist/lib/upstream/sync-filesystem.js +64 -0
  139. package/dist/lib/upstream/sync-filesystem.js.map +1 -0
  140. package/dist/lib/upstream/sync-imports.d.ts +284 -0
  141. package/dist/lib/upstream/sync-imports.d.ts.map +1 -0
  142. package/dist/lib/upstream/sync-imports.js +816 -0
  143. package/dist/lib/upstream/sync-imports.js.map +1 -0
  144. package/dist/lib/upstream/sync-mathquill.d.ts +19 -0
  145. package/dist/lib/upstream/sync-mathquill.d.ts.map +1 -0
  146. package/dist/lib/upstream/sync-mathquill.js +160 -0
  147. package/dist/lib/upstream/sync-mathquill.js.map +1 -0
  148. package/dist/lib/upstream/sync-package-json.d.ts +28 -0
  149. package/dist/lib/upstream/sync-package-json.d.ts.map +1 -0
  150. package/dist/lib/upstream/sync-package-json.js +66 -0
  151. package/dist/lib/upstream/sync-package-json.js.map +1 -0
  152. package/dist/lib/upstream/sync-package-manager.d.ts +50 -0
  153. package/dist/lib/upstream/sync-package-manager.d.ts.map +1 -0
  154. package/dist/lib/upstream/sync-package-manager.js +570 -0
  155. package/dist/lib/upstream/sync-package-manager.js.map +1 -0
  156. package/dist/lib/upstream/sync-pielib-strategy.d.ts +26 -0
  157. package/dist/lib/upstream/sync-pielib-strategy.d.ts.map +1 -0
  158. package/dist/lib/upstream/sync-pielib-strategy.js +345 -0
  159. package/dist/lib/upstream/sync-pielib-strategy.js.map +1 -0
  160. package/dist/lib/upstream/sync-react-strategy.d.ts +54 -0
  161. package/dist/lib/upstream/sync-react-strategy.d.ts.map +1 -0
  162. package/dist/lib/upstream/sync-react-strategy.js +733 -0
  163. package/dist/lib/upstream/sync-react-strategy.js.map +1 -0
  164. package/dist/lib/upstream/sync-strategy.d.ts +49 -0
  165. package/dist/lib/upstream/sync-strategy.d.ts.map +1 -0
  166. package/dist/lib/upstream/sync-strategy.js +2 -0
  167. package/dist/lib/upstream/sync-strategy.js.map +1 -0
  168. package/dist/lib/upstream/sync-summary.d.ts +20 -0
  169. package/dist/lib/upstream/sync-summary.d.ts.map +1 -0
  170. package/dist/lib/upstream/sync-summary.js +157 -0
  171. package/dist/lib/upstream/sync-summary.js.map +1 -0
  172. package/dist/lib/upstream/sync-transforms.d.ts +60 -0
  173. package/dist/lib/upstream/sync-transforms.d.ts.map +1 -0
  174. package/dist/lib/upstream/sync-transforms.js +97 -0
  175. package/dist/lib/upstream/sync-transforms.js.map +1 -0
  176. package/dist/lib/upstream/sync-vite-config.d.ts +13 -0
  177. package/dist/lib/upstream/sync-vite-config.d.ts.map +1 -0
  178. package/dist/lib/upstream/sync-vite-config.js +231 -0
  179. package/dist/lib/upstream/sync-vite-config.js.map +1 -0
  180. package/dist/utils/compatibility.d.ts +129 -0
  181. package/dist/utils/compatibility.d.ts.map +1 -0
  182. package/dist/utils/compatibility.js +44 -0
  183. package/dist/utils/compatibility.js.map +1 -0
  184. package/dist/utils/conversion.d.ts +25 -0
  185. package/dist/utils/conversion.d.ts.map +1 -0
  186. package/dist/utils/conversion.js +123 -0
  187. package/dist/utils/conversion.js.map +1 -0
  188. package/dist/utils/git.d.ts +7 -0
  189. package/dist/utils/git.d.ts.map +1 -0
  190. package/dist/utils/git.js +63 -0
  191. package/dist/utils/git.js.map +1 -0
  192. package/dist/utils/logger.d.ts +29 -0
  193. package/dist/utils/logger.d.ts.map +1 -0
  194. package/dist/utils/logger.js +63 -0
  195. package/dist/utils/logger.js.map +1 -0
  196. package/dist/utils/package-json.d.ts +12 -0
  197. package/dist/utils/package-json.d.ts.map +1 -0
  198. package/dist/utils/package-json.js +29 -0
  199. package/dist/utils/package-json.js.map +1 -0
  200. package/package.json +59 -0
  201. package/packages/cli/bin/dev.js +5 -0
  202. package/packages/cli/bin/run.js +5 -0
  203. package/src/commands/dev/demo/index.ts +313 -0
  204. package/src/commands/dev/test-bundler.ts +345 -0
  205. package/src/commands/mathquill/migrate.ts +269 -0
  206. package/src/commands/mathquill/status.ts +267 -0
  207. package/src/commands/packages/create-controllers.ts +127 -0
  208. package/src/commands/packages/create-lib-react.ts +279 -0
  209. package/src/commands/packages/create-react-elements.ts +306 -0
  210. package/src/commands/packages/enable-publishing.ts +161 -0
  211. package/src/commands/packages/init-synced-elements.ts +259 -0
  212. package/src/commands/upstream/README.md +444 -0
  213. package/src/commands/upstream/analyze-esm.ts +1973 -0
  214. package/src/commands/upstream/check.ts +228 -0
  215. package/src/commands/upstream/deps.ts +222 -0
  216. package/src/commands/upstream/sync-mathquill.ts +108 -0
  217. package/src/commands/upstream/sync.ts +687 -0
  218. package/src/commands/upstream/track.ts +145 -0
  219. package/src/commands/upstream/update.ts +110 -0
  220. package/src/commands/verify/controllers.ts +166 -0
  221. package/src/commands/verify/react-build.ts +171 -0
  222. package/src/index.ts +1 -0
  223. package/src/lib/mathquill/extension-generator.ts +111 -0
  224. package/src/lib/mathquill/khan-extractor.ts +175 -0
  225. package/src/lib/mathquill/learnosity-extractor.ts +198 -0
  226. package/src/lib/mathquill/migration-orchestrator.ts +513 -0
  227. package/src/lib/mathquill/package-updater.ts +120 -0
  228. package/src/lib/mathquill/pie-extractor.ts +194 -0
  229. package/src/lib/upstream/repo-utils.ts +18 -0
  230. package/src/lib/upstream/sync-compatibility.ts +89 -0
  231. package/src/lib/upstream/sync-constants.ts +77 -0
  232. package/src/lib/upstream/sync-controllers-strategy.ts +291 -0
  233. package/src/lib/upstream/sync-demo-metadata.ts +199 -0
  234. package/src/lib/upstream/sync-dev-exports.ts +151 -0
  235. package/src/lib/upstream/sync-externals.ts +159 -0
  236. package/src/lib/upstream/sync-filesystem.ts +87 -0
  237. package/src/lib/upstream/sync-imports.ts +992 -0
  238. package/src/lib/upstream/sync-mathquill.ts +194 -0
  239. package/src/lib/upstream/sync-package-json.ts +86 -0
  240. package/src/lib/upstream/sync-package-manager.ts +694 -0
  241. package/src/lib/upstream/sync-pielib-strategy.ts +441 -0
  242. package/src/lib/upstream/sync-react-strategy.ts +945 -0
  243. package/src/lib/upstream/sync-strategy.ts +61 -0
  244. package/src/lib/upstream/sync-summary.ts +194 -0
  245. package/src/lib/upstream/sync-transforms.ts +154 -0
  246. package/src/lib/upstream/sync-vite-config.ts +243 -0
  247. package/src/types/es-module-lexer.d.ts +4 -0
  248. package/src/utils/compatibility.ts +182 -0
  249. package/src/utils/conversion.ts +153 -0
  250. package/src/utils/git.ts +63 -0
  251. package/src/utils/logger.ts +69 -0
  252. package/src/utils/package-json.ts +43 -0
  253. package/tests/sync-package-manager.test.ts +112 -0
  254. package/tests/transform-assign-props.test.ts +101 -0
  255. package/tsconfig.json +15 -0
@@ -0,0 +1,17 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class CreateLibReact extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
9
+ private logger;
10
+ run(): Promise<void>;
11
+ private getUpstreamPackageJson;
12
+ private convertDependencies;
13
+ private createPackageJson;
14
+ private createViteConfig;
15
+ private createTsConfig;
16
+ }
17
+ //# sourceMappingURL=create-lib-react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-lib-react.d.ts","sourceRoot":"","sources":["../../../src/commands/packages/create-lib-react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AA6B7C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,OAAgB,WAAW,SAA4D;IAEvF,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;;MAUnB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAwDnB,sBAAsB;IAQpC,OAAO,CAAC,mBAAmB;YAgBb,iBAAiB;YAqEjB,gBAAgB;YAmDhB,cAAc;CA2B7B"}
@@ -0,0 +1,228 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { Logger } from '../../utils/logger.js';
3
+ import { loadPackageJson } from '../../utils/package-json.js';
4
+ import { existsSync } from 'node:fs';
5
+ import { mkdir, readdir, writeFile, stat as fsStat } from 'node:fs/promises';
6
+ import { join } from 'node:path';
7
+ export default class CreateLibReact extends Command {
8
+ static description = 'Create package.json files for synced @pie-lib packages';
9
+ static examples = [
10
+ '<%= config.bin %> <%= command.id %>',
11
+ '<%= config.bin %> <%= command.id %> --dry-run',
12
+ ];
13
+ static flags = {
14
+ 'dry-run': Flags.boolean({
15
+ description: 'Show what would be created without making changes',
16
+ default: false,
17
+ }),
18
+ verbose: Flags.boolean({
19
+ char: 'v',
20
+ description: 'Show detailed output',
21
+ default: false,
22
+ }),
23
+ };
24
+ logger = new Logger();
25
+ async run() {
26
+ const { flags } = await this.parse(CreateLibReact);
27
+ this.logger = new Logger(flags.verbose);
28
+ this.logger.section('📦 Creating package.json files for @pie-lib packages');
29
+ this.logger.info(` Mode: ${flags['dry-run'] ? 'DRY RUN' : 'LIVE'}\n`);
30
+ const libReactDir = 'packages/lib-react';
31
+ const packages = await readdir(libReactDir);
32
+ let created = 0;
33
+ let skipped = 0;
34
+ for (const pkg of packages) {
35
+ const pkgPath = join(libReactDir, pkg);
36
+ const statResult = await fsStat(pkgPath);
37
+ if (!statResult.isDirectory() || pkg === 'node_modules') {
38
+ continue;
39
+ }
40
+ // Check if src directory exists
41
+ const srcPath = join(pkgPath, 'src');
42
+ if (!existsSync(srcPath)) {
43
+ continue;
44
+ }
45
+ try {
46
+ const packageJsonPath = join(pkgPath, 'package.json');
47
+ if (existsSync(packageJsonPath)) {
48
+ skipped++;
49
+ this.logger.info(` ⏭️ ${pkg}: Already configured`);
50
+ continue;
51
+ }
52
+ await this.createPackageJson(pkg, flags['dry-run']);
53
+ await this.createViteConfig(pkg, flags['dry-run']);
54
+ await this.createTsConfig(pkg, flags['dry-run']);
55
+ created++;
56
+ }
57
+ catch (error) {
58
+ this.logger.error(` ❌ ${pkg}: Error - ${error}`);
59
+ }
60
+ }
61
+ this.logger.success(`\n✅ Created ${created} package configurations`);
62
+ this.logger.info(`⏭️ Skipped ${skipped} existing packages`);
63
+ if (!flags['dry-run'] && created > 0) {
64
+ this.logger.section('\n💡 Next steps');
65
+ this.logger.info(' 1. Run: bun install (to link workspace packages)');
66
+ this.logger.info(' 2. Run: bun run build --filter="@pie-lib/*" (to build all lib packages)');
67
+ this.logger.info(' 3. Update React elements to use the new workspace dependencies\n');
68
+ }
69
+ }
70
+ async getUpstreamPackageJson(pkgName) {
71
+ const upstreamPath = join('../pie-lib/packages', pkgName, 'package.json');
72
+ if (existsSync(upstreamPath)) {
73
+ return (await loadPackageJson(upstreamPath));
74
+ }
75
+ return null;
76
+ }
77
+ convertDependencies(deps) {
78
+ if (!deps)
79
+ return {};
80
+ const converted = {};
81
+ for (const [name, version] of Object.entries(deps)) {
82
+ if (name.startsWith('@pie-lib/')) {
83
+ // Convert to workspace dependency
84
+ converted[name] = 'workspace:*';
85
+ }
86
+ else {
87
+ // Keep external dependencies as-is
88
+ converted[name] = version;
89
+ }
90
+ }
91
+ return converted;
92
+ }
93
+ async createPackageJson(pkgName, dryRun = false) {
94
+ const targetDir = join('packages/lib-react', pkgName);
95
+ const targetPath = join(targetDir, 'package.json');
96
+ // Skip if package.json already exists
97
+ if (existsSync(targetPath)) {
98
+ this.logger.info(` ⏭️ ${pkgName}: package.json already exists`);
99
+ return;
100
+ }
101
+ // Get upstream package.json for dependencies
102
+ const upstream = await this.getUpstreamPackageJson(pkgName);
103
+ const packageJson = {
104
+ name: `@pie-lib/${pkgName}`,
105
+ version: '0.1.0',
106
+ description: upstream?.description || `React implementation of @pie-lib/${pkgName} synced from pie-lib`,
107
+ type: 'module',
108
+ main: './dist/index.js',
109
+ types: './dist/index.d.ts',
110
+ exports: {
111
+ '.': {
112
+ types: './dist/index.d.ts',
113
+ default: './dist/index.js',
114
+ },
115
+ },
116
+ files: ['dist', 'src'],
117
+ scripts: {
118
+ build: 'vite build && tsc --emitDeclarationOnly',
119
+ lint: 'biome check .',
120
+ 'lint:fix': 'biome check --write .',
121
+ },
122
+ keywords: ['pie', 'pie-lib', 'react', pkgName],
123
+ license: 'ISC',
124
+ repository: {
125
+ type: 'git',
126
+ url: 'https://github.com/pie-framework/pie-elements-ng.git',
127
+ directory: `packages/lib-react/${pkgName}`,
128
+ },
129
+ };
130
+ // Convert dependencies
131
+ if (upstream?.dependencies) {
132
+ packageJson.dependencies = this.convertDependencies(upstream.dependencies);
133
+ }
134
+ if (upstream?.peerDependencies) {
135
+ packageJson.peerDependencies = this.convertDependencies(upstream.peerDependencies);
136
+ }
137
+ // Add common devDependencies
138
+ packageJson.devDependencies = {
139
+ '@types/react': '^18.2.0',
140
+ '@types/react-dom': '^18.2.0',
141
+ '@vitejs/plugin-react': '^4.2.0',
142
+ typescript: '^5.9.3',
143
+ vite: '^6.0.0',
144
+ };
145
+ if (dryRun) {
146
+ this.logger.info(` 🔍 ${pkgName}: Would create package.json`);
147
+ }
148
+ else {
149
+ await mkdir(targetDir, { recursive: true });
150
+ await writeFile(targetPath, `${JSON.stringify(packageJson, null, 2)}\n`, 'utf-8');
151
+ this.logger.success(` ✨ ${pkgName}: Created package.json`);
152
+ }
153
+ }
154
+ async createViteConfig(pkgName, dryRun = false) {
155
+ const targetDir = join('packages/lib-react', pkgName);
156
+ const targetPath = join(targetDir, 'vite.config.ts');
157
+ // Skip if vite.config.ts already exists
158
+ if (existsSync(targetPath)) {
159
+ return;
160
+ }
161
+ const viteConfig = `import react from '@vitejs/plugin-react';
162
+ import { defineConfig } from 'vite';
163
+
164
+ export default defineConfig({
165
+ plugins: [react()],
166
+ build: {
167
+ lib: {
168
+ entry: './src/index.ts',
169
+ formats: ['es'],
170
+ fileName: () => 'index.js',
171
+ },
172
+ rollupOptions: {
173
+ external: [
174
+ 'react',
175
+ 'react-dom',
176
+ 'react/jsx-runtime',
177
+ 'prop-types',
178
+ 'lodash',
179
+ 'debug',
180
+ 'classnames',
181
+ /^@pie-lib\\//,
182
+ /^@pie-framework\\//,
183
+ /^@pie-element\\//,
184
+ /^@mui\\//,
185
+ /^@emotion\\//,
186
+ /^@dnd-kit\\//,
187
+ /^react-transition-group/,
188
+ ],
189
+ },
190
+ outDir: 'dist',
191
+ emptyOutDir: true,
192
+ },
193
+ });
194
+ `;
195
+ if (dryRun) {
196
+ this.logger.info(` 🔍 ${pkgName}: Would create vite.config.ts`);
197
+ }
198
+ else {
199
+ await writeFile(targetPath, viteConfig, 'utf-8');
200
+ }
201
+ }
202
+ async createTsConfig(pkgName, dryRun = false) {
203
+ const targetDir = join('packages/lib-react', pkgName);
204
+ const targetPath = join(targetDir, 'tsconfig.json');
205
+ // Skip if tsconfig.json already exists
206
+ if (existsSync(targetPath)) {
207
+ return;
208
+ }
209
+ const tsConfig = {
210
+ extends: '../../../tsconfig.base.json',
211
+ compilerOptions: {
212
+ outDir: './dist',
213
+ rootDir: './src',
214
+ declaration: true,
215
+ emitDeclarationOnly: false,
216
+ },
217
+ include: ['src/**/*'],
218
+ exclude: ['node_modules', 'dist', '**/*.spec.ts', '**/*.spec.tsx'],
219
+ };
220
+ if (dryRun) {
221
+ this.logger.info(` 🔍 ${pkgName}: Would create tsconfig.json`);
222
+ }
223
+ else {
224
+ await writeFile(targetPath, `${JSON.stringify(tsConfig, null, 2)}\n`, 'utf-8');
225
+ }
226
+ }
227
+ }
228
+ //# sourceMappingURL=create-lib-react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-lib-react.js","sourceRoot":"","sources":["../../../src/commands/packages/create-lib-react.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class CreateReactElements extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ private logger;
9
+ run(): Promise<void>;
10
+ private scanElement;
11
+ private extractDeps;
12
+ private generatePackageJson;
13
+ private generateViteConfig;
14
+ private generateTsConfig;
15
+ }
16
+ //# sourceMappingURL=create-react-elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-react-elements.d.ts","sourceRoot":"","sources":["../../../src/commands/packages/create-react-elements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAa7C,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,OAAO;IACtD,OAAgB,WAAW,SAAyD;IAEpF,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;MAMnB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAkEnB,WAAW;IAiCzB,OAAO,CAAC,WAAW;IAmDnB,OAAO,CAAC,mBAAmB;IA6E3B,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,gBAAgB;CAezB"}
@@ -0,0 +1,259 @@
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
+ const ELEMENTS_REACT_DIR = 'packages/elements-react';
7
+ export default class CreateReactElements extends Command {
8
+ static description = 'Create package.json files for synced React elements';
9
+ static examples = ['<%= config.bin %> <%= command.id %>'];
10
+ static flags = {
11
+ verbose: Flags.boolean({
12
+ char: 'v',
13
+ description: 'Show detailed output',
14
+ default: false,
15
+ }),
16
+ };
17
+ logger = new Logger();
18
+ async run() {
19
+ const { flags } = await this.parse(CreateReactElements);
20
+ this.logger = new Logger(flags.verbose);
21
+ this.logger.section('📦 Creating package.json files for React elements');
22
+ const elements = await readdir(ELEMENTS_REACT_DIR);
23
+ let created = 0;
24
+ let skipped = 0;
25
+ for (const element of elements) {
26
+ const elementDir = join(ELEMENTS_REACT_DIR, element);
27
+ const packageJsonPath = join(elementDir, 'package.json');
28
+ // Skip if not a directory
29
+ const statResult = await fsStat(elementDir).catch(() => null);
30
+ if (!statResult?.isDirectory()) {
31
+ continue;
32
+ }
33
+ // Skip if package.json already exists
34
+ if (existsSync(packageJsonPath)) {
35
+ this.logger.info(` ⏭️ ${element}: package.json already exists`);
36
+ skipped++;
37
+ continue;
38
+ }
39
+ // Scan for dependencies
40
+ const { deps, peerDeps } = await this.scanElement(elementDir);
41
+ // Add controller package as a dependency
42
+ const controllerPkg = `@pie-element/${element}-controller`;
43
+ deps.add(controllerPkg);
44
+ // Generate package.json
45
+ const packageContent = this.generatePackageJson(element, Array.from(deps), Array.from(peerDeps));
46
+ // Write package.json
47
+ await writeFile(packageJsonPath, packageContent, 'utf-8');
48
+ // Generate vite.config.ts
49
+ const viteConfigPath = join(elementDir, 'vite.config.ts');
50
+ if (!existsSync(viteConfigPath)) {
51
+ await writeFile(viteConfigPath, this.generateViteConfig(), 'utf-8');
52
+ }
53
+ // Generate tsconfig.json
54
+ const tsconfigPath = join(elementDir, 'tsconfig.json');
55
+ if (!existsSync(tsconfigPath)) {
56
+ await writeFile(tsconfigPath, this.generateTsConfig(), 'utf-8');
57
+ }
58
+ this.logger.success(` ✅ ${element}: Created package.json (${deps.size} deps, ${peerDeps.size} peer deps)`);
59
+ created++;
60
+ }
61
+ this.logger.section(`\n📊 Summary: ${created} created, ${skipped} skipped`);
62
+ }
63
+ async scanElement(elementDir) {
64
+ const srcDir = join(elementDir, 'src');
65
+ const deps = new Set();
66
+ const peerDeps = new Set();
67
+ if (!existsSync(srcDir)) {
68
+ return { deps, peerDeps };
69
+ }
70
+ // Recursively scan all .ts and .tsx files
71
+ const scanDir = async (dir) => {
72
+ const items = await readdir(dir, { withFileTypes: true });
73
+ for (const item of items) {
74
+ const itemPath = join(dir, item.name);
75
+ if (item.isDirectory()) {
76
+ await scanDir(itemPath);
77
+ }
78
+ else if (item.name.endsWith('.ts') || item.name.endsWith('.tsx')) {
79
+ const content = await readFile(itemPath, 'utf-8');
80
+ const fileDeps = this.extractDeps(content);
81
+ for (const dep of fileDeps.deps)
82
+ deps.add(dep);
83
+ for (const dep of fileDeps.peerDeps)
84
+ peerDeps.add(dep);
85
+ }
86
+ }
87
+ };
88
+ await scanDir(srcDir);
89
+ return { deps, peerDeps };
90
+ }
91
+ extractDeps(content) {
92
+ const deps = new Set();
93
+ const peerDeps = new Set();
94
+ // Match import statements
95
+ const importRegex = /^import .* from ['"]([^'"]+)['"]/gm;
96
+ const matches = content.matchAll(importRegex);
97
+ for (const match of matches) {
98
+ const dep = match[1];
99
+ // Skip relative imports
100
+ if (dep.startsWith('.'))
101
+ continue;
102
+ // React is a peer dependency
103
+ if (dep === 'react' || dep.startsWith('react/')) {
104
+ peerDeps.add('react');
105
+ continue;
106
+ }
107
+ if (dep === 'react-dom' || dep.startsWith('react-dom/')) {
108
+ peerDeps.add('react-dom');
109
+ continue;
110
+ }
111
+ // Add @pie-lib packages
112
+ if (dep.startsWith('@pie-lib/')) {
113
+ deps.add(dep.split('/').slice(0, 2).join('/'));
114
+ }
115
+ // Add @pie-element packages (controller packages)
116
+ else if (dep.startsWith('@pie-element/')) {
117
+ deps.add(dep.split('/').slice(0, 2).join('/'));
118
+ }
119
+ // Add other scoped packages
120
+ else if (dep.startsWith('@')) {
121
+ deps.add(dep.split('/').slice(0, 2).join('/'));
122
+ }
123
+ // Add non-scoped packages
124
+ else if (!dep.includes('/')) {
125
+ deps.add(dep);
126
+ }
127
+ else {
128
+ // Package with sub-path (e.g., lodash/get)
129
+ deps.add(dep.split('/')[0]);
130
+ }
131
+ }
132
+ return {
133
+ deps: Array.from(deps).sort(),
134
+ peerDeps: Array.from(peerDeps).sort(),
135
+ };
136
+ }
137
+ generatePackageJson(name, deps, peerDeps) {
138
+ const dependencies = {};
139
+ const peerDependencies = {};
140
+ // Add dependencies (use * for external deps, they're in root package.json)
141
+ for (const dep of deps) {
142
+ // Use workspace protocol for internal packages
143
+ if (dep.startsWith('@pie-element/')) {
144
+ dependencies[dep] = 'workspace:*';
145
+ }
146
+ else {
147
+ dependencies[dep] = '*';
148
+ }
149
+ }
150
+ // Add peer dependencies
151
+ for (const dep of peerDeps) {
152
+ peerDependencies[dep] = '^18.0.0';
153
+ }
154
+ const pkg = {
155
+ name: `@pie-element/${name}`,
156
+ version: '0.1.0',
157
+ description: `React implementation of ${name} element synced from pie-elements`,
158
+ type: 'module',
159
+ main: './dist/index.js',
160
+ types: './dist/index.d.ts',
161
+ exports: {
162
+ '.': {
163
+ types: './dist/index.d.ts',
164
+ default: './dist/index.js',
165
+ },
166
+ './delivery': {
167
+ types: './dist/delivery/index.d.ts',
168
+ default: './dist/delivery/index.js',
169
+ },
170
+ './configure': {
171
+ types: './dist/configure/index.d.ts',
172
+ default: './dist/configure/index.js',
173
+ },
174
+ './controller': {
175
+ types: './dist/controller/index.d.ts',
176
+ default: './dist/controller/index.js',
177
+ },
178
+ },
179
+ files: ['dist', 'src'],
180
+ scripts: {
181
+ dev: 'vite',
182
+ build: 'vite build && tsc --emitDeclarationOnly',
183
+ test: 'vitest run',
184
+ lint: 'biome check .',
185
+ 'lint:fix': 'biome check --write .',
186
+ },
187
+ dependencies: Object.keys(dependencies).length > 0 ? dependencies : undefined,
188
+ peerDependencies: Object.keys(peerDependencies).length > 0 ? peerDependencies : undefined,
189
+ devDependencies: {
190
+ '@types/react': '^18.2.0',
191
+ '@types/react-dom': '^18.2.0',
192
+ '@vitejs/plugin-react': '^4.2.0',
193
+ typescript: '^5.9.3',
194
+ vite: '^6.0.0',
195
+ vitest: '^2.1.0',
196
+ },
197
+ keywords: ['pie', 'pie-element', 'react', name, 'assessment'],
198
+ license: 'ISC',
199
+ repository: {
200
+ type: 'git',
201
+ url: 'https://github.com/pie-framework/pie-elements-ng.git',
202
+ directory: `packages/elements-react/${name}`,
203
+ },
204
+ };
205
+ // Remove undefined fields
206
+ const cleaned = JSON.parse(JSON.stringify(pkg));
207
+ return `${JSON.stringify(cleaned, null, 2)}\n`;
208
+ }
209
+ generateViteConfig() {
210
+ return `import react from '@vitejs/plugin-react';
211
+ import { defineConfig } from 'vite';
212
+ import { resolve } from 'node:path';
213
+
214
+ export default defineConfig({
215
+ plugins: [react()],
216
+ build: {
217
+ lib: {
218
+ entry: {
219
+ index: resolve(__dirname, 'src/index.ts'),
220
+ 'delivery/index': resolve(__dirname, 'src/index.ts'),
221
+ 'configure/index': resolve(__dirname, 'src/configure/index.ts'),
222
+ },
223
+ formats: ['es'],
224
+ },
225
+ rollupOptions: {
226
+ external: [
227
+ /^react($|\\/)/,
228
+ /^react-dom($|\\/)/,
229
+ /^@pie-lib/,
230
+ /^@pie-element/,
231
+ /^@pie-framework/,
232
+ /^@mui/,
233
+ ],
234
+ output: {
235
+ preserveModules: true,
236
+ preserveModulesRoot: 'src',
237
+ },
238
+ },
239
+ },
240
+ });
241
+ `;
242
+ }
243
+ generateTsConfig() {
244
+ return `{
245
+ "extends": "../../../tsconfig.json",
246
+ "compilerOptions": {
247
+ "outDir": "./dist",
248
+ "rootDir": "./src",
249
+ "jsx": "react-jsx",
250
+ "declaration": true,
251
+ "emitDeclarationOnly": false
252
+ },
253
+ "include": ["src/**/*"],
254
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.test.tsx"]
255
+ }
256
+ `;
257
+ }
258
+ }
259
+ //# sourceMappingURL=create-react-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-react-elements.js","sourceRoot":"","sources":["../../../src/commands/packages/create-react-elements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class EnablePublishing extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ private logger;
9
+ run(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=enable-publishing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable-publishing.d.ts","sourceRoot":"","sources":["../../../src/commands/packages/enable-publishing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAyB7C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,OAAgB,WAAW,SAA+D;IAE1F,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;MAKnB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsHlC"}