@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,240 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { Logger } from '../../utils/logger.js';
3
+ import { MigrationOrchestrator } from '../../lib/mathquill/migration-orchestrator.js';
4
+ import { existsSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ export default class MathQuillMigrate extends Command {
7
+ static description = `Migrate MathQuill from PIE fork to Desmos fork with patches
8
+
9
+ Automates the migration from PIE's 2015 MathQuill fork to the modern Desmos fork
10
+ with Khan Academy patches, Learnosity features, and PIE extensions.
11
+
12
+ This command:
13
+ 1. Clones Desmos, Khan, and Learnosity forks to temp directory
14
+ 2. Extracts features from each fork:
15
+ - Khan: Mobile keyboard fixes, i18n ARIA strings
16
+ - Learnosity: Recurring decimals, nless/ngtr symbols, empty() method
17
+ - PIE: Matrices (pmatrix, bmatrix, vmatrix), lrnexponent
18
+ 3. Generates TypeScript extension modules with source attribution
19
+ 4. Creates unified extension loader
20
+ 5. Updates package.json to use Desmos fork
21
+ 6. Runs automated tests
22
+
23
+ The migration is repeatable - you can re-run it when forks update.
24
+
25
+ After migration, review changes and test thoroughly before committing.
26
+ `;
27
+ static examples = [
28
+ {
29
+ description: 'Show what would be migrated (dry run)',
30
+ command: '<%= config.bin %> <%= command.id %> --dry-run',
31
+ },
32
+ {
33
+ description: 'Run full migration',
34
+ command: '<%= config.bin %> <%= command.id %>',
35
+ },
36
+ {
37
+ description: 'Verbose output with detailed progress',
38
+ command: '<%= config.bin %> <%= command.id %> --verbose',
39
+ },
40
+ {
41
+ description: 'Force migration (skip confirmations)',
42
+ command: '<%= config.bin %> <%= command.id %> --force',
43
+ },
44
+ {
45
+ description: 'Skip tests',
46
+ command: '<%= config.bin %> <%= command.id %> --skip-tests',
47
+ },
48
+ ];
49
+ static flags = {
50
+ 'dry-run': Flags.boolean({
51
+ description: 'Show what would be done without making changes',
52
+ default: false,
53
+ }),
54
+ force: Flags.boolean({
55
+ description: 'Skip confirmation prompts and continue on non-fatal errors',
56
+ default: false,
57
+ }),
58
+ verbose: Flags.boolean({
59
+ char: 'v',
60
+ description: 'Show detailed progress output',
61
+ default: false,
62
+ }),
63
+ 'skip-tests': Flags.boolean({
64
+ description: 'Skip running tests after migration',
65
+ default: false,
66
+ }),
67
+ 'temp-dir': Flags.string({
68
+ description: 'Temporary directory for cloning forks',
69
+ default: '/tmp/mathquill-migration',
70
+ }),
71
+ clean: Flags.boolean({
72
+ description: 'Clean temporary directory before starting',
73
+ default: false,
74
+ }),
75
+ };
76
+ async run() {
77
+ const { flags } = await this.parse(MathQuillMigrate);
78
+ const logger = new Logger(flags.verbose);
79
+ // Validate workspace
80
+ const workspaceRoot = process.cwd();
81
+ const mathquillPath = join(workspaceRoot, 'packages/shared/mathquill');
82
+ if (!existsSync(mathquillPath)) {
83
+ logger.error('MathQuill package not found at: packages/shared/mathquill');
84
+ logger.info('This command must be run from the workspace root');
85
+ this.exit(1);
86
+ }
87
+ // Show banner
88
+ logger.section('šŸš€ MathQuill Migration');
89
+ logger.info(' Migrating from PIE fork to Desmos fork + patches\n');
90
+ if (flags['dry-run']) {
91
+ logger.warn('šŸƒ DRY RUN MODE - No changes will be made\n');
92
+ }
93
+ // Create orchestrator
94
+ const orchestrator = new MigrationOrchestrator({
95
+ workspaceRoot,
96
+ mathquillPath,
97
+ tempDir: flags['temp-dir'],
98
+ dryRun: flags['dry-run'],
99
+ force: flags.force,
100
+ skipTests: flags['skip-tests'],
101
+ clean: flags.clean,
102
+ logger,
103
+ });
104
+ // Show configuration
105
+ if (flags.verbose) {
106
+ logger.section('Configuration');
107
+ logger.info(` Workspace: ${workspaceRoot}`);
108
+ logger.info(` MathQuill: ${mathquillPath}`);
109
+ logger.info(` Temp Dir: ${flags['temp-dir']}`);
110
+ logger.info(` Dry Run: ${flags['dry-run']}`);
111
+ logger.info(` Force: ${flags.force}`);
112
+ logger.info(` Skip Tests: ${flags['skip-tests']}\n`);
113
+ }
114
+ // Confirm if not in dry-run or force mode
115
+ if (!flags['dry-run'] && !flags.force) {
116
+ logger.warn('āš ļø This will modify packages/shared/mathquill');
117
+ logger.info(' A git commit is recommended before proceeding.\n');
118
+ // In a real implementation, you'd use inquirer or similar
119
+ // For now, we'll just proceed
120
+ logger.info(' Proceeding with migration...\n');
121
+ }
122
+ try {
123
+ // Run migration
124
+ const result = await orchestrator.migrate();
125
+ if (flags['dry-run']) {
126
+ this.showDryRunSummary(result, logger);
127
+ }
128
+ else {
129
+ this.showSuccessSummary(result, logger);
130
+ }
131
+ if (!result.success) {
132
+ this.exit(1);
133
+ }
134
+ }
135
+ catch (error) {
136
+ logger.error('\nāŒ Migration failed');
137
+ if (error instanceof Error) {
138
+ logger.error(` ${error.message}`);
139
+ if (flags.verbose && error.stack) {
140
+ logger.debug(`\n${error.stack}`);
141
+ }
142
+ }
143
+ logger.info('\nšŸ’” Troubleshooting:');
144
+ logger.info(' 1. Check internet connectivity for git clones');
145
+ logger.info(' 2. Ensure temp directory is writable');
146
+ logger.info(' 3. Run with --verbose for detailed output');
147
+ logger.info(' 4. Try --clean to remove cached forks');
148
+ logger.info(' 5. Check docs/MATHQUILL_MIGRATION_CLI_PLAN.md');
149
+ this.exit(1);
150
+ }
151
+ }
152
+ showDryRunSummary(result, logger) {
153
+ logger.section('šŸ“‹ Dry Run Summary');
154
+ logger.info('Would perform the following actions:\n');
155
+ logger.info('šŸ“‚ Prepare environment:');
156
+ logger.info(` • Create temp directory: ${result.tempDir}`);
157
+ logger.info(' • Create extension directories\n');
158
+ logger.info('šŸ”„ Clone forks:');
159
+ logger.info(' • Desmos fork (desmosinc/mathquill)');
160
+ logger.info(' • Khan fork (Khan/mathquill v1.0.3)');
161
+ logger.info(' • Learnosity fork (Learnosity/mathquill)\n');
162
+ logger.info('šŸ“¦ Extract features:');
163
+ logger.info(' Khan Academy:');
164
+ logger.info(' • mobile-keyboard.ts (Android keyboard fixes)');
165
+ logger.info(' • i18n-aria.ts (Internationalized ARIA strings)');
166
+ logger.info(' Learnosity:');
167
+ logger.info(' • recurring-decimal.ts (Recurring decimal dot)');
168
+ logger.info(' • not-symbols.ts (nless, ngtr symbols)');
169
+ logger.info(' • empty-method.ts (Check if field is empty)');
170
+ logger.info(' PIE:');
171
+ logger.info(' • matrices.ts (pmatrix, bmatrix, vmatrix)');
172
+ logger.info(' • lrn-exponent.ts (LRN exponent notation)\n');
173
+ logger.info('šŸ”Ø Generate:');
174
+ logger.info(' • Extension loader (src/extensions/index.ts)\n');
175
+ logger.info('šŸ“ Update:');
176
+ logger.info(' • Install: mathquill@github:desmosinc/mathquill');
177
+ logger.info(' • Update: package.json with migration metadata\n');
178
+ logger.info('🧪 Test:');
179
+ logger.info(' • Run unit tests');
180
+ logger.info(' • Run integration tests\n');
181
+ logger.success('Dry run complete!');
182
+ logger.info('\nRun without --dry-run to execute migration.');
183
+ }
184
+ showSuccessSummary(result, logger) {
185
+ logger.section('āœ… Migration Complete!');
186
+ logger.info('\nšŸ“Š Summary:');
187
+ logger.info(` Base: Desmos fork (${result.desmos?.commit || 'latest'})`);
188
+ logger.info(` + Khan: ${result.khan?.featuresCount || 0} patches applied`);
189
+ logger.info(` + Learnosity: ${result.learnosity?.featuresCount || 0} features added`);
190
+ logger.info(` + PIE: ${result.pie?.featuresCount || 0} extensions ported`);
191
+ if (result.files && result.files.length > 0) {
192
+ logger.info('\nšŸ“‚ Generated Files:');
193
+ logger.info(' packages/shared/mathquill/src/extensions/');
194
+ logger.info(' ā”œā”€ā”€ khan/');
195
+ logger.info(' │ ā”œā”€ā”€ mobile-keyboard.ts');
196
+ logger.info(' │ └── i18n-aria.ts');
197
+ logger.info(' ā”œā”€ā”€ learnosity/');
198
+ logger.info(' │ ā”œā”€ā”€ recurring-decimal.ts');
199
+ logger.info(' │ ā”œā”€ā”€ not-symbols.ts');
200
+ logger.info(' │ └── empty-method.ts');
201
+ logger.info(' ā”œā”€ā”€ pie/');
202
+ logger.info(' │ ā”œā”€ā”€ matrices.ts');
203
+ logger.info(' │ └── lrn-exponent.ts');
204
+ logger.info(' └── index.ts (loader)');
205
+ }
206
+ if (result.tests) {
207
+ logger.info('\n🧪 Tests:');
208
+ if (result.tests.unit?.passed) {
209
+ logger.success(` Unit tests: ${result.tests.unit.passed} passed`);
210
+ }
211
+ if (result.tests.integration?.passed) {
212
+ logger.success(` Integration tests: ${result.tests.integration.passed} passed`);
213
+ }
214
+ if (result.tests.warnings && result.tests.warnings.length > 0) {
215
+ logger.warn(` Warnings: ${result.tests.warnings.length}`);
216
+ }
217
+ }
218
+ logger.info('\nšŸ“ Next Steps:');
219
+ logger.info(' 1. Review changes:');
220
+ logger.info(' git diff packages/shared/mathquill');
221
+ logger.info(' 2. Build package:');
222
+ logger.info(' cd packages/shared/mathquill && bun run build');
223
+ logger.info(' 3. Test in demo:');
224
+ logger.info(' bun run dev:demo');
225
+ logger.info(' 4. Verify migration:');
226
+ logger.info(' pie mathquill:status');
227
+ logger.info(' 5. Run full test suite:');
228
+ logger.info(' bun test packages/lib-react/math-input');
229
+ logger.info(' bun test packages/elements-react/math-inline');
230
+ logger.info(' 6. Commit changes:');
231
+ logger.info(' git add packages/shared/mathquill');
232
+ logger.info(' git commit -m "Migrate MathQuill to Desmos fork + patches"');
233
+ logger.info('\nšŸ’” Tips:');
234
+ logger.info(' • Review docs/MATHQUILL_MIGRATION_PLAN.md for details');
235
+ logger.info(' • Check docs/MATHQUILL_FORK_ANALYSIS.md for fork comparison');
236
+ logger.info(' • Run "pie mathquill:status" to verify migration state');
237
+ logger.info(' • Keep /tmp/mathquill-migration for re-running migration\n');
238
+ }
239
+ }
240
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/commands/mathquill/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,MAAM,CAAU,WAAW,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;IAEA,MAAM,CAAU,QAAQ,GAAG;QACzB;YACE,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE,+CAA+C;SACzD;QACD;YACE,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE,+CAA+C;SACzD;QACD;YACE,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE,6CAA6C;SACvD;QACD;YACE,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,kDAAkD;SAC5D;KACF,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,gDAAgD;YAC7D,OAAO,EAAE,KAAK;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,4DAA4D;YACzE,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,+BAA+B;YAC5C,OAAO,EAAE,KAAK;SACf,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,WAAW,EAAE,oCAAoC;YACjD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE,0BAA0B;SACpC,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEzC,qBAAqB;QACrB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;QAEvE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QAED,cAAc;QACd,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAErE,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC;YAC7C,aAAa;YACb,aAAa;YACb,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;YAC1B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM;SACP,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YAEnE,0DAA0D;YAC1D,8BAA8B;YAC9B,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,gBAAgB;YAChB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAE5C,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAErC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACjC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAEhE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAW,EAAE,MAAc;QACnD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE7D,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAEhE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAEjE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAEnE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAE5C,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAEO,kBAAkB,CAAC,MAAW,EAAE,MAAc;QACpD,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAExC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,aAAa,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,UAAU,EAAE,aAAa,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxF,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,GAAG,EAAE,aAAa,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEpF,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9B,MAAM,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,SAAS,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAEhF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class MathQuillStatus extends Command {
3
+ static description: string;
4
+ static examples: {
5
+ description: string;
6
+ command: string;
7
+ }[];
8
+ static flags: {
9
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ private detectSource;
13
+ private determineMigrationState;
14
+ private showExtensionStatus;
15
+ private countTypeScriptFiles;
16
+ private loadMigrationConfig;
17
+ private showMigrationMetadata;
18
+ private showNextSteps;
19
+ }
20
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/mathquill/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAK7C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,OAAgB,WAAW,SAW3B;IAEA,OAAgB,QAAQ;;;QAStB;IAEF,OAAgB,KAAK;;MAMnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0E1B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,aAAa;CA6BtB"}
@@ -0,0 +1,231 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { Logger } from '../../utils/logger.js';
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ export default class MathQuillStatus extends Command {
6
+ static description = `Show MathQuill migration status
7
+
8
+ Displays the current state of the MathQuill migration:
9
+ - Current version and source
10
+ - Migration state (pending, in-progress, complete)
11
+ - Installed fork versions (Desmos, Khan patches, Learnosity features)
12
+ - Extracted features and extensions
13
+ - Test results
14
+ - Next steps
15
+
16
+ Use this to verify migration success or check what needs to be done.
17
+ `;
18
+ static examples = [
19
+ {
20
+ description: 'Show migration status',
21
+ command: '<%= config.bin %> <%= command.id %>',
22
+ },
23
+ {
24
+ description: 'Verbose output with file details',
25
+ command: '<%= config.bin %> <%= command.id %> --verbose',
26
+ },
27
+ ];
28
+ static flags = {
29
+ verbose: Flags.boolean({
30
+ char: 'v',
31
+ description: 'Show detailed information',
32
+ default: false,
33
+ }),
34
+ };
35
+ async run() {
36
+ const { flags } = await this.parse(MathQuillStatus);
37
+ const logger = new Logger(flags.verbose);
38
+ const workspaceRoot = process.cwd();
39
+ const mathquillPath = join(workspaceRoot, 'packages/shared/mathquill');
40
+ if (!existsSync(mathquillPath)) {
41
+ logger.error('MathQuill package not found at: packages/shared/mathquill');
42
+ this.exit(1);
43
+ }
44
+ logger.section('šŸ“Š MathQuill Status');
45
+ // Read package.json
46
+ const pkgPath = join(mathquillPath, 'package.json');
47
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
48
+ // Determine migration state
49
+ const isLegacy = existsSync(join(mathquillPath, 'src/legacy/mathquill-bundle.js'));
50
+ const hasExtensions = existsSync(join(mathquillPath, 'src/extensions'));
51
+ const hasLoader = existsSync(join(mathquillPath, 'src/extensions/index.ts'));
52
+ const migrationConfig = this.loadMigrationConfig(mathquillPath);
53
+ // Current state
54
+ this.log('\nšŸ“¦ Current Configuration:');
55
+ this.log(` Package: ${pkg.name}@${pkg.version}`);
56
+ this.log(` Source: ${this.detectSource(pkg, isLegacy, hasExtensions)}`);
57
+ if (pkg.dependencies?.mathquill) {
58
+ const dep = pkg.dependencies.mathquill;
59
+ if (dep.includes('desmosinc')) {
60
+ this.log(` Fork: Desmos (${dep})`);
61
+ }
62
+ else if (dep.includes('Khan')) {
63
+ this.log(` Fork: Khan Academy (${dep})`);
64
+ }
65
+ else if (dep.includes('Learnosity')) {
66
+ this.log(` Fork: Learnosity (${dep})`);
67
+ }
68
+ else {
69
+ this.log(` Fork: ${dep}`);
70
+ }
71
+ }
72
+ // Migration state
73
+ this.log('\nšŸ”„ Migration State:');
74
+ const migrationState = this.determineMigrationState(isLegacy, hasExtensions, hasLoader, migrationConfig);
75
+ this.log(` Status: ${migrationState.status} ${migrationState.icon}`);
76
+ if (migrationState.detail) {
77
+ this.log(` Detail: ${migrationState.detail}`);
78
+ }
79
+ // Extension state
80
+ if (hasExtensions) {
81
+ this.log('\nšŸ”§ Extensions:');
82
+ this.showExtensionStatus(mathquillPath, flags.verbose, logger);
83
+ }
84
+ // Migration metadata
85
+ if (migrationConfig) {
86
+ this.log('\nšŸ“‹ Migration Metadata:');
87
+ this.showMigrationMetadata(migrationConfig);
88
+ }
89
+ // Next steps
90
+ this.log('\nšŸ“ Next Steps:');
91
+ this.showNextSteps(migrationState.status, isLegacy, hasExtensions);
92
+ this.log('');
93
+ }
94
+ detectSource(_pkg, isLegacy, hasExtensions) {
95
+ if (hasExtensions && !isLegacy) {
96
+ return 'Desmos fork + patches (migrated)';
97
+ }
98
+ if (isLegacy) {
99
+ return 'PIE fork (legacy - needs migration)';
100
+ }
101
+ return 'Unknown';
102
+ }
103
+ determineMigrationState(isLegacy, hasExtensions, hasLoader, _config) {
104
+ if (!isLegacy && hasExtensions && hasLoader) {
105
+ return {
106
+ status: 'Complete',
107
+ icon: 'āœ…',
108
+ detail: 'Migration successful',
109
+ };
110
+ }
111
+ if (hasExtensions && !hasLoader) {
112
+ return {
113
+ status: 'In Progress',
114
+ icon: 'āš ļø',
115
+ detail: 'Extensions exist but loader missing',
116
+ };
117
+ }
118
+ if (isLegacy && !hasExtensions) {
119
+ return {
120
+ status: 'Pending',
121
+ icon: 'šŸ“‹',
122
+ detail: 'Legacy fork still in use',
123
+ };
124
+ }
125
+ if (isLegacy && hasExtensions) {
126
+ return {
127
+ status: 'Transitioning',
128
+ icon: 'šŸ”„',
129
+ detail: 'Both legacy and new extensions present',
130
+ };
131
+ }
132
+ return {
133
+ status: 'Unknown',
134
+ icon: 'ā“',
135
+ detail: 'Unexpected state',
136
+ };
137
+ }
138
+ showExtensionStatus(mathquillPath, verbose, _logger) {
139
+ const extensionDirs = [
140
+ { name: 'Khan', path: 'src/extensions/khan' },
141
+ { name: 'Learnosity', path: 'src/extensions/learnosity' },
142
+ { name: 'PIE', path: 'src/extensions/pie' },
143
+ ];
144
+ for (const ext of extensionDirs) {
145
+ const fullPath = join(mathquillPath, ext.path);
146
+ if (existsSync(fullPath)) {
147
+ const files = this.countTypeScriptFiles(fullPath);
148
+ this.log(` ${ext.name}: ${files} file(s) āœ“`);
149
+ if (verbose) {
150
+ const indexExists = existsSync(join(fullPath, 'index.ts'));
151
+ this.log(` • index.ts: ${indexExists ? 'āœ“' : 'āœ—'}`);
152
+ }
153
+ }
154
+ else {
155
+ this.log(` ${ext.name}: Not found āœ—`);
156
+ }
157
+ }
158
+ const loaderPath = join(mathquillPath, 'src/extensions/index.ts');
159
+ if (existsSync(loaderPath)) {
160
+ this.log(` Loader: āœ“`);
161
+ }
162
+ else {
163
+ this.log(` Loader: āœ— (Missing extension loader)`);
164
+ }
165
+ }
166
+ countTypeScriptFiles(dir) {
167
+ if (!existsSync(dir))
168
+ return 0;
169
+ try {
170
+ const { readdirSync } = require('node:fs');
171
+ const files = readdirSync(dir);
172
+ return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx')).length;
173
+ }
174
+ catch {
175
+ return 0;
176
+ }
177
+ }
178
+ loadMigrationConfig(mathquillPath) {
179
+ const configPath = join(mathquillPath, 'migration-config.json');
180
+ if (!existsSync(configPath)) {
181
+ return null;
182
+ }
183
+ try {
184
+ return JSON.parse(readFileSync(configPath, 'utf-8'));
185
+ }
186
+ catch {
187
+ return null;
188
+ }
189
+ }
190
+ showMigrationMetadata(config) {
191
+ if (config.version) {
192
+ this.log(` Version: ${config.version}`);
193
+ }
194
+ if (config.lastMigration) {
195
+ this.log(` Last run: ${new Date(config.lastMigration).toLocaleString()}`);
196
+ }
197
+ if (config.base?.installed) {
198
+ this.log(` Base fork: ${config.base.fork}@${config.base.installed}`);
199
+ }
200
+ if (config.migrationState) {
201
+ this.log(` State: ${config.migrationState}`);
202
+ }
203
+ }
204
+ showNextSteps(status, isLegacy, _hasExtensions) {
205
+ if (status === 'Complete') {
206
+ this.log(' āœ… Migration complete!');
207
+ this.log(' • Build: cd packages/shared/mathquill && bun run build');
208
+ this.log(' • Test: bun test packages/lib-react/math-input');
209
+ this.log(' • Demo: bun run dev:demo');
210
+ return;
211
+ }
212
+ if (status === 'Pending' && isLegacy) {
213
+ this.log(' šŸ“‹ Migration needed');
214
+ this.log(' 1. Run: pie mathquill:migrate --dry-run');
215
+ this.log(' 2. Review the migration plan');
216
+ this.log(' 3. Run: pie mathquill:migrate');
217
+ this.log(' 4. Test thoroughly before committing');
218
+ return;
219
+ }
220
+ if (status === 'In Progress' || status === 'Transitioning') {
221
+ this.log(' āš ļø Migration incomplete');
222
+ this.log(' 1. Check for errors: pie mathquill:migrate --verbose');
223
+ this.log(' 2. Or re-run: pie mathquill:migrate --force');
224
+ return;
225
+ }
226
+ this.log(' ā“ Unknown state - check documentation');
227
+ this.log(' • See: docs/MATHQUILL_MIGRATION_PLAN.md');
228
+ this.log(' • See: docs/MATHQUILL_MIGRATION_CLI_PLAN.md');
229
+ }
230
+ }
231
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/mathquill/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class CreateControllers 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 scanController;
11
+ private generatePackageJson;
12
+ }
13
+ //# sourceMappingURL=create-controllers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-controllers.d.ts","sourceRoot":"","sources":["../../../src/commands/packages/create-controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAS7C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,OAAO;IACpD,OAAgB,WAAW,SAAsD;IAEjF,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;MAMnB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAqCnB,cAAc;IAuB5B,OAAO,CAAC,mBAAmB;CA0C5B"}
@@ -0,0 +1,103 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { Logger } from '../../utils/logger.js';
3
+ import { extractDependencies } from '../../utils/package-json.js';
4
+ import { existsSync } from 'node:fs';
5
+ import { readdir, readFile, writeFile } from 'node:fs/promises';
6
+ import { join } from 'node:path';
7
+ const SHARED_DIR = 'packages/shared';
8
+ export default class CreateControllers extends Command {
9
+ static description = 'Create package.json files for synced controllers';
10
+ static examples = ['<%= config.bin %> <%= command.id %>'];
11
+ static flags = {
12
+ verbose: Flags.boolean({
13
+ char: 'v',
14
+ description: 'Show detailed output',
15
+ default: false,
16
+ }),
17
+ };
18
+ logger = new Logger();
19
+ async run() {
20
+ const { flags } = await this.parse(CreateControllers);
21
+ this.logger = new Logger(flags.verbose);
22
+ this.logger.section('šŸ“¦ Creating package.json files for controllers');
23
+ const controllers = await readdir(SHARED_DIR);
24
+ let created = 0;
25
+ let skipped = 0;
26
+ for (const controller of controllers) {
27
+ const controllerDir = join(SHARED_DIR, controller);
28
+ const packageJsonPath = join(controllerDir, 'package.json');
29
+ // Skip if package.json already exists
30
+ if (existsSync(packageJsonPath)) {
31
+ this.logger.info(` ā­ļø ${controller}: package.json already exists`);
32
+ skipped++;
33
+ continue;
34
+ }
35
+ // Scan for dependencies
36
+ const deps = await this.scanController(controllerDir);
37
+ // Generate package.json
38
+ const content = this.generatePackageJson(controller, deps);
39
+ // Write file
40
+ await writeFile(packageJsonPath, content, 'utf-8');
41
+ this.logger.success(` āœ… ${controller}: Created package.json (${deps.length} dependencies)`);
42
+ created++;
43
+ }
44
+ this.logger.section(`\nšŸ“Š Summary: ${created} created, ${skipped} skipped`);
45
+ }
46
+ async scanController(controllerDir) {
47
+ const srcDir = join(controllerDir, 'src');
48
+ const deps = new Set();
49
+ if (!existsSync(srcDir)) {
50
+ return [];
51
+ }
52
+ const files = await readdir(srcDir);
53
+ for (const file of files) {
54
+ if (!file.endsWith('.ts'))
55
+ continue;
56
+ const filePath = join(srcDir, file);
57
+ const content = await readFile(filePath, 'utf-8');
58
+ const fileDeps = extractDependencies(content);
59
+ for (const dep of fileDeps)
60
+ deps.add(dep);
61
+ }
62
+ return Array.from(deps).sort();
63
+ }
64
+ generatePackageJson(name, deps) {
65
+ const dependencies = {};
66
+ for (const dep of deps) {
67
+ // Use * for external dependencies (they're in root package.json)
68
+ dependencies[dep] = '*';
69
+ }
70
+ const pkg = {
71
+ name: `@pie-element/${name}`,
72
+ version: '0.1.0',
73
+ description: `Framework-agnostic ${name.replace('-controller', '')} controller synced from pie-elements`,
74
+ type: 'module',
75
+ main: './src/index.ts',
76
+ types: './src/index.ts',
77
+ exports: {
78
+ '.': {
79
+ types: './src/index.ts',
80
+ default: './src/index.ts',
81
+ },
82
+ },
83
+ files: ['src'],
84
+ scripts: {
85
+ build: "echo 'Controllers are consumed as TypeScript source'",
86
+ lint: 'biome check .',
87
+ 'lint:fix': 'biome check --write .',
88
+ },
89
+ dependencies: Object.keys(dependencies).length > 0 ? dependencies : undefined,
90
+ keywords: ['pie', 'pie-element', 'controller', name.replace('-controller', ''), 'assessment'],
91
+ license: 'ISC',
92
+ repository: {
93
+ type: 'git',
94
+ url: 'https://github.com/pie-framework/pie-elements-ng.git',
95
+ directory: `packages/shared/${name}`,
96
+ },
97
+ };
98
+ // Remove undefined fields
99
+ const cleaned = JSON.parse(JSON.stringify(pkg));
100
+ return `${JSON.stringify(cleaned, null, 2)}\n`;
101
+ }
102
+ }
103
+ //# sourceMappingURL=create-controllers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-controllers.js","sourceRoot":"","sources":["../../../src/commands/packages/create-controllers.ts"],"names":[],"mappings":"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"}