@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.
- package/.compatibility/report.json +2491 -0
- package/.turbo/turbo-build.log +1 -0
- package/CHANGELOG.md +8 -0
- package/README.md +240 -0
- package/REFACTORING.md +131 -0
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/commands/dev/demo/index.d.ts +33 -0
- package/dist/commands/dev/demo/index.d.ts.map +1 -0
- package/dist/commands/dev/demo/index.js +274 -0
- package/dist/commands/dev/demo/index.js.map +1 -0
- package/dist/commands/dev/test-bundler.d.ts +18 -0
- package/dist/commands/dev/test-bundler.d.ts.map +1 -0
- package/dist/commands/dev/test-bundler.js +284 -0
- package/dist/commands/dev/test-bundler.js.map +1 -0
- package/dist/commands/mathquill/migrate.d.ts +20 -0
- package/dist/commands/mathquill/migrate.d.ts.map +1 -0
- package/dist/commands/mathquill/migrate.js +240 -0
- package/dist/commands/mathquill/migrate.js.map +1 -0
- package/dist/commands/mathquill/status.d.ts +20 -0
- package/dist/commands/mathquill/status.d.ts.map +1 -0
- package/dist/commands/mathquill/status.js +231 -0
- package/dist/commands/mathquill/status.js.map +1 -0
- package/dist/commands/packages/create-controllers.d.ts +13 -0
- package/dist/commands/packages/create-controllers.d.ts.map +1 -0
- package/dist/commands/packages/create-controllers.js +103 -0
- package/dist/commands/packages/create-controllers.js.map +1 -0
- package/dist/commands/packages/create-lib-react.d.ts +17 -0
- package/dist/commands/packages/create-lib-react.d.ts.map +1 -0
- package/dist/commands/packages/create-lib-react.js +228 -0
- package/dist/commands/packages/create-lib-react.js.map +1 -0
- package/dist/commands/packages/create-react-elements.d.ts +16 -0
- package/dist/commands/packages/create-react-elements.d.ts.map +1 -0
- package/dist/commands/packages/create-react-elements.js +259 -0
- package/dist/commands/packages/create-react-elements.js.map +1 -0
- package/dist/commands/packages/enable-publishing.d.ts +11 -0
- package/dist/commands/packages/enable-publishing.d.ts.map +1 -0
- package/dist/commands/packages/enable-publishing.js +117 -0
- package/dist/commands/packages/enable-publishing.js.map +1 -0
- package/dist/commands/packages/init-synced-elements.d.ts +16 -0
- package/dist/commands/packages/init-synced-elements.d.ts.map +1 -0
- package/dist/commands/packages/init-synced-elements.js +204 -0
- package/dist/commands/packages/init-synced-elements.js.map +1 -0
- package/dist/commands/upstream/analyze-esm.d.ts +59 -0
- package/dist/commands/upstream/analyze-esm.d.ts.map +1 -0
- package/dist/commands/upstream/analyze-esm.js +1481 -0
- package/dist/commands/upstream/analyze-esm.js.map +1 -0
- package/dist/commands/upstream/check.d.ts +15 -0
- package/dist/commands/upstream/check.d.ts.map +1 -0
- package/dist/commands/upstream/check.js +165 -0
- package/dist/commands/upstream/check.js.map +1 -0
- package/dist/commands/upstream/deps.d.ts +15 -0
- package/dist/commands/upstream/deps.d.ts.map +1 -0
- package/dist/commands/upstream/deps.js +174 -0
- package/dist/commands/upstream/deps.js.map +1 -0
- package/dist/commands/upstream/sync-mathquill.d.ts +12 -0
- package/dist/commands/upstream/sync-mathquill.d.ts.map +1 -0
- package/dist/commands/upstream/sync-mathquill.js +97 -0
- package/dist/commands/upstream/sync-mathquill.js.map +1 -0
- package/dist/commands/upstream/sync.d.ts +25 -0
- package/dist/commands/upstream/sync.d.ts.map +1 -0
- package/dist/commands/upstream/sync.js +552 -0
- package/dist/commands/upstream/sync.js.map +1 -0
- package/dist/commands/upstream/track.d.ts +15 -0
- package/dist/commands/upstream/track.d.ts.map +1 -0
- package/dist/commands/upstream/track.js +115 -0
- package/dist/commands/upstream/track.js.map +1 -0
- package/dist/commands/upstream/update.d.ts +15 -0
- package/dist/commands/upstream/update.d.ts.map +1 -0
- package/dist/commands/upstream/update.js +98 -0
- package/dist/commands/upstream/update.js.map +1 -0
- package/dist/commands/verify/controllers.d.ts +12 -0
- package/dist/commands/verify/controllers.d.ts.map +1 -0
- package/dist/commands/verify/controllers.js +138 -0
- package/dist/commands/verify/controllers.js.map +1 -0
- package/dist/commands/verify/react-build.d.ts +13 -0
- package/dist/commands/verify/react-build.d.ts.map +1 -0
- package/dist/commands/verify/react-build.js +135 -0
- package/dist/commands/verify/react-build.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/mathquill/extension-generator.d.ts +9 -0
- package/dist/lib/mathquill/extension-generator.d.ts.map +1 -0
- package/dist/lib/mathquill/extension-generator.js +107 -0
- package/dist/lib/mathquill/extension-generator.js.map +1 -0
- package/dist/lib/mathquill/khan-extractor.d.ts +16 -0
- package/dist/lib/mathquill/khan-extractor.d.ts.map +1 -0
- package/dist/lib/mathquill/khan-extractor.js +148 -0
- package/dist/lib/mathquill/khan-extractor.js.map +1 -0
- package/dist/lib/mathquill/learnosity-extractor.d.ts +15 -0
- package/dist/lib/mathquill/learnosity-extractor.d.ts.map +1 -0
- package/dist/lib/mathquill/learnosity-extractor.js +170 -0
- package/dist/lib/mathquill/learnosity-extractor.js.map +1 -0
- package/dist/lib/mathquill/migration-orchestrator.d.ts +77 -0
- package/dist/lib/mathquill/migration-orchestrator.d.ts.map +1 -0
- package/dist/lib/mathquill/migration-orchestrator.js +391 -0
- package/dist/lib/mathquill/migration-orchestrator.js.map +1 -0
- package/dist/lib/mathquill/package-updater.d.ts +9 -0
- package/dist/lib/mathquill/package-updater.d.ts.map +1 -0
- package/dist/lib/mathquill/package-updater.js +103 -0
- package/dist/lib/mathquill/package-updater.js.map +1 -0
- package/dist/lib/mathquill/pie-extractor.d.ts +14 -0
- package/dist/lib/mathquill/pie-extractor.d.ts.map +1 -0
- package/dist/lib/mathquill/pie-extractor.js +167 -0
- package/dist/lib/mathquill/pie-extractor.js.map +1 -0
- package/dist/lib/upstream/repo-utils.d.ts +9 -0
- package/dist/lib/upstream/repo-utils.d.ts.map +1 -0
- package/dist/lib/upstream/repo-utils.js +10 -0
- package/dist/lib/upstream/repo-utils.js.map +1 -0
- package/dist/lib/upstream/sync-compatibility.d.ts +29 -0
- package/dist/lib/upstream/sync-compatibility.d.ts.map +1 -0
- package/dist/lib/upstream/sync-compatibility.js +70 -0
- package/dist/lib/upstream/sync-compatibility.js.map +1 -0
- package/dist/lib/upstream/sync-constants.d.ts +50 -0
- package/dist/lib/upstream/sync-constants.d.ts.map +1 -0
- package/dist/lib/upstream/sync-constants.js +66 -0
- package/dist/lib/upstream/sync-constants.js.map +1 -0
- package/dist/lib/upstream/sync-controllers-strategy.d.ts +18 -0
- package/dist/lib/upstream/sync-controllers-strategy.d.ts.map +1 -0
- package/dist/lib/upstream/sync-controllers-strategy.js +243 -0
- package/dist/lib/upstream/sync-controllers-strategy.js.map +1 -0
- package/dist/lib/upstream/sync-demo-metadata.d.ts +15 -0
- package/dist/lib/upstream/sync-demo-metadata.d.ts.map +1 -0
- package/dist/lib/upstream/sync-demo-metadata.js +165 -0
- package/dist/lib/upstream/sync-demo-metadata.js.map +1 -0
- package/dist/lib/upstream/sync-dev-exports.d.ts +13 -0
- package/dist/lib/upstream/sync-dev-exports.d.ts.map +1 -0
- package/dist/lib/upstream/sync-dev-exports.js +115 -0
- package/dist/lib/upstream/sync-dev-exports.js.map +1 -0
- package/dist/lib/upstream/sync-externals.d.ts +29 -0
- package/dist/lib/upstream/sync-externals.d.ts.map +1 -0
- package/dist/lib/upstream/sync-externals.js +164 -0
- package/dist/lib/upstream/sync-externals.js.map +1 -0
- package/dist/lib/upstream/sync-filesystem.d.ts +21 -0
- package/dist/lib/upstream/sync-filesystem.d.ts.map +1 -0
- package/dist/lib/upstream/sync-filesystem.js +64 -0
- package/dist/lib/upstream/sync-filesystem.js.map +1 -0
- package/dist/lib/upstream/sync-imports.d.ts +284 -0
- package/dist/lib/upstream/sync-imports.d.ts.map +1 -0
- package/dist/lib/upstream/sync-imports.js +816 -0
- package/dist/lib/upstream/sync-imports.js.map +1 -0
- package/dist/lib/upstream/sync-mathquill.d.ts +19 -0
- package/dist/lib/upstream/sync-mathquill.d.ts.map +1 -0
- package/dist/lib/upstream/sync-mathquill.js +160 -0
- package/dist/lib/upstream/sync-mathquill.js.map +1 -0
- package/dist/lib/upstream/sync-package-json.d.ts +28 -0
- package/dist/lib/upstream/sync-package-json.d.ts.map +1 -0
- package/dist/lib/upstream/sync-package-json.js +66 -0
- package/dist/lib/upstream/sync-package-json.js.map +1 -0
- package/dist/lib/upstream/sync-package-manager.d.ts +50 -0
- package/dist/lib/upstream/sync-package-manager.d.ts.map +1 -0
- package/dist/lib/upstream/sync-package-manager.js +570 -0
- package/dist/lib/upstream/sync-package-manager.js.map +1 -0
- package/dist/lib/upstream/sync-pielib-strategy.d.ts +26 -0
- package/dist/lib/upstream/sync-pielib-strategy.d.ts.map +1 -0
- package/dist/lib/upstream/sync-pielib-strategy.js +345 -0
- package/dist/lib/upstream/sync-pielib-strategy.js.map +1 -0
- package/dist/lib/upstream/sync-react-strategy.d.ts +54 -0
- package/dist/lib/upstream/sync-react-strategy.d.ts.map +1 -0
- package/dist/lib/upstream/sync-react-strategy.js +733 -0
- package/dist/lib/upstream/sync-react-strategy.js.map +1 -0
- package/dist/lib/upstream/sync-strategy.d.ts +49 -0
- package/dist/lib/upstream/sync-strategy.d.ts.map +1 -0
- package/dist/lib/upstream/sync-strategy.js +2 -0
- package/dist/lib/upstream/sync-strategy.js.map +1 -0
- package/dist/lib/upstream/sync-summary.d.ts +20 -0
- package/dist/lib/upstream/sync-summary.d.ts.map +1 -0
- package/dist/lib/upstream/sync-summary.js +157 -0
- package/dist/lib/upstream/sync-summary.js.map +1 -0
- package/dist/lib/upstream/sync-transforms.d.ts +60 -0
- package/dist/lib/upstream/sync-transforms.d.ts.map +1 -0
- package/dist/lib/upstream/sync-transforms.js +97 -0
- package/dist/lib/upstream/sync-transforms.js.map +1 -0
- package/dist/lib/upstream/sync-vite-config.d.ts +13 -0
- package/dist/lib/upstream/sync-vite-config.d.ts.map +1 -0
- package/dist/lib/upstream/sync-vite-config.js +231 -0
- package/dist/lib/upstream/sync-vite-config.js.map +1 -0
- package/dist/utils/compatibility.d.ts +129 -0
- package/dist/utils/compatibility.d.ts.map +1 -0
- package/dist/utils/compatibility.js +44 -0
- package/dist/utils/compatibility.js.map +1 -0
- package/dist/utils/conversion.d.ts +25 -0
- package/dist/utils/conversion.d.ts.map +1 -0
- package/dist/utils/conversion.js +123 -0
- package/dist/utils/conversion.js.map +1 -0
- package/dist/utils/git.d.ts +7 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +63 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/logger.d.ts +29 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +63 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/package-json.d.ts +12 -0
- package/dist/utils/package-json.d.ts.map +1 -0
- package/dist/utils/package-json.js +29 -0
- package/dist/utils/package-json.js.map +1 -0
- package/package.json +59 -0
- package/packages/cli/bin/dev.js +5 -0
- package/packages/cli/bin/run.js +5 -0
- package/src/commands/dev/demo/index.ts +313 -0
- package/src/commands/dev/test-bundler.ts +345 -0
- package/src/commands/mathquill/migrate.ts +269 -0
- package/src/commands/mathquill/status.ts +267 -0
- package/src/commands/packages/create-controllers.ts +127 -0
- package/src/commands/packages/create-lib-react.ts +279 -0
- package/src/commands/packages/create-react-elements.ts +306 -0
- package/src/commands/packages/enable-publishing.ts +161 -0
- package/src/commands/packages/init-synced-elements.ts +259 -0
- package/src/commands/upstream/README.md +444 -0
- package/src/commands/upstream/analyze-esm.ts +1973 -0
- package/src/commands/upstream/check.ts +228 -0
- package/src/commands/upstream/deps.ts +222 -0
- package/src/commands/upstream/sync-mathquill.ts +108 -0
- package/src/commands/upstream/sync.ts +687 -0
- package/src/commands/upstream/track.ts +145 -0
- package/src/commands/upstream/update.ts +110 -0
- package/src/commands/verify/controllers.ts +166 -0
- package/src/commands/verify/react-build.ts +171 -0
- package/src/index.ts +1 -0
- package/src/lib/mathquill/extension-generator.ts +111 -0
- package/src/lib/mathquill/khan-extractor.ts +175 -0
- package/src/lib/mathquill/learnosity-extractor.ts +198 -0
- package/src/lib/mathquill/migration-orchestrator.ts +513 -0
- package/src/lib/mathquill/package-updater.ts +120 -0
- package/src/lib/mathquill/pie-extractor.ts +194 -0
- package/src/lib/upstream/repo-utils.ts +18 -0
- package/src/lib/upstream/sync-compatibility.ts +89 -0
- package/src/lib/upstream/sync-constants.ts +77 -0
- package/src/lib/upstream/sync-controllers-strategy.ts +291 -0
- package/src/lib/upstream/sync-demo-metadata.ts +199 -0
- package/src/lib/upstream/sync-dev-exports.ts +151 -0
- package/src/lib/upstream/sync-externals.ts +159 -0
- package/src/lib/upstream/sync-filesystem.ts +87 -0
- package/src/lib/upstream/sync-imports.ts +992 -0
- package/src/lib/upstream/sync-mathquill.ts +194 -0
- package/src/lib/upstream/sync-package-json.ts +86 -0
- package/src/lib/upstream/sync-package-manager.ts +694 -0
- package/src/lib/upstream/sync-pielib-strategy.ts +441 -0
- package/src/lib/upstream/sync-react-strategy.ts +945 -0
- package/src/lib/upstream/sync-strategy.ts +61 -0
- package/src/lib/upstream/sync-summary.ts +194 -0
- package/src/lib/upstream/sync-transforms.ts +154 -0
- package/src/lib/upstream/sync-vite-config.ts +243 -0
- package/src/types/es-module-lexer.d.ts +4 -0
- package/src/utils/compatibility.ts +182 -0
- package/src/utils/conversion.ts +153 -0
- package/src/utils/git.ts +63 -0
- package/src/utils/logger.ts +69 -0
- package/src/utils/package-json.ts +43 -0
- package/tests/sync-package-manager.test.ts +112 -0
- package/tests/transform-assign-props.test.ts +101 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Command, Args } from '@oclif/core';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { getCurrentCommit, getCommitsSince, getCommitDetails, getAuthorName, } from '../../utils/git.js';
|
|
5
|
+
import { Logger } from '../../utils/logger.js';
|
|
6
|
+
import { DEFAULT_PATHS, HISTORY_FILE } from '../../lib/upstream/sync-constants.js';
|
|
7
|
+
export default class Track extends Command {
|
|
8
|
+
static description = 'Track upstream repository changes';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> <%= command.id %> show',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> record',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> compare <commit-sha>',
|
|
13
|
+
];
|
|
14
|
+
static args = {
|
|
15
|
+
action: Args.string({
|
|
16
|
+
description: 'Action to perform',
|
|
17
|
+
required: true,
|
|
18
|
+
options: ['show', 'record', 'compare'],
|
|
19
|
+
}),
|
|
20
|
+
commit: Args.string({
|
|
21
|
+
description: 'Commit SHA for compare action',
|
|
22
|
+
required: false,
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
logger = new Logger();
|
|
26
|
+
async run() {
|
|
27
|
+
const { args } = await this.parse(Track);
|
|
28
|
+
switch (args.action) {
|
|
29
|
+
case 'show':
|
|
30
|
+
await this.showCommits();
|
|
31
|
+
break;
|
|
32
|
+
case 'record':
|
|
33
|
+
await this.recordState();
|
|
34
|
+
break;
|
|
35
|
+
case 'compare':
|
|
36
|
+
if (!args.commit) {
|
|
37
|
+
this.error('Commit SHA required for compare action');
|
|
38
|
+
}
|
|
39
|
+
await this.compareCommit(args.commit);
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
this.error(`Unknown action: ${args.action}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async showCommits() {
|
|
46
|
+
this.logger.section('š Upstream Repository Status');
|
|
47
|
+
const pieElements = DEFAULT_PATHS.PIE_ELEMENTS;
|
|
48
|
+
const pieLib = DEFAULT_PATHS.PIE_LIB;
|
|
49
|
+
if (!existsSync(HISTORY_FILE)) {
|
|
50
|
+
this.logger.warn('No history file found. Run "record" first to establish baseline.');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const history = JSON.parse(await readFile(HISTORY_FILE, 'utf-8'));
|
|
54
|
+
this.logger.info(`\nLast checked: ${history.lastCheck}`);
|
|
55
|
+
this.logger.info(`Checked by: ${history.checkedBy}\n`);
|
|
56
|
+
// Show new commits for pie-elements
|
|
57
|
+
this.logger.section('š¦ pie-elements');
|
|
58
|
+
const elementsCommits = getCommitsSince(history.upstreamCommits.pieElements, pieElements);
|
|
59
|
+
if (elementsCommits.length === 0) {
|
|
60
|
+
this.logger.info(' No new commits');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.logger.info(` ${elementsCommits.length} new commits:`);
|
|
64
|
+
for (const commit of elementsCommits.slice(0, 10)) {
|
|
65
|
+
this.logger.info(` ${commit}`);
|
|
66
|
+
}
|
|
67
|
+
if (elementsCommits.length > 10) {
|
|
68
|
+
this.logger.info(` ... and ${elementsCommits.length - 10} more`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Show new commits for pie-lib
|
|
72
|
+
this.logger.section('\nš pie-lib');
|
|
73
|
+
const libCommits = getCommitsSince(history.upstreamCommits.pieLib, pieLib);
|
|
74
|
+
if (libCommits.length === 0) {
|
|
75
|
+
this.logger.info(' No new commits');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.logger.info(` ${libCommits.length} new commits:`);
|
|
79
|
+
for (const commit of libCommits.slice(0, 10)) {
|
|
80
|
+
this.logger.info(` ${commit}`);
|
|
81
|
+
}
|
|
82
|
+
if (libCommits.length > 10) {
|
|
83
|
+
this.logger.info(` ... and ${libCommits.length - 10} more`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async recordState() {
|
|
88
|
+
const pieElements = DEFAULT_PATHS.PIE_ELEMENTS;
|
|
89
|
+
const pieLib = DEFAULT_PATHS.PIE_LIB;
|
|
90
|
+
const state = {
|
|
91
|
+
lastCheck: new Date().toISOString(),
|
|
92
|
+
upstreamCommits: {
|
|
93
|
+
pieElements: getCurrentCommit(pieElements),
|
|
94
|
+
pieLib: getCurrentCommit(pieLib),
|
|
95
|
+
},
|
|
96
|
+
checkedBy: getAuthorName(pieElements),
|
|
97
|
+
};
|
|
98
|
+
await writeFile(HISTORY_FILE, `${JSON.stringify(state, null, 2)}\n`, 'utf-8');
|
|
99
|
+
this.logger.success('ā
Upstream state recorded');
|
|
100
|
+
this.logger.info(` pie-elements: ${state.upstreamCommits.pieElements.substring(0, 8)}`);
|
|
101
|
+
this.logger.info(` pie-lib: ${state.upstreamCommits.pieLib.substring(0, 8)}`);
|
|
102
|
+
}
|
|
103
|
+
async compareCommit(commit) {
|
|
104
|
+
const pieElements = DEFAULT_PATHS.PIE_ELEMENTS;
|
|
105
|
+
this.logger.section(`š Commit Details: ${commit.substring(0, 8)}`);
|
|
106
|
+
try {
|
|
107
|
+
const details = getCommitDetails(commit, pieElements);
|
|
108
|
+
this.log(details);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
this.error(`Failed to get commit details: ${error}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../../../src/commands/upstream/track.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Update 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
|
+
element: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
'skip-build': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
'include-dev-deps': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
validate: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/upstream/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAM7C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,OAAgB,WAAW,SACsD;IAEjF,OAAgB,QAAQ,WAKtB;IAEF,OAAgB,KAAK;;;;;;;MAyBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiE3B"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import AnalyzeEsm from './analyze-esm.js';
|
|
4
|
+
import Sync from './sync.js';
|
|
5
|
+
import { assertReposExist } from '../../lib/upstream/repo-utils.js';
|
|
6
|
+
export default class Update extends Command {
|
|
7
|
+
static description = 'Update from upstream: analyze ESM compatibility and sync compatible packages';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> <%= command.id %>',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> --dry-run',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --element=multiple-choice',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> --verbose',
|
|
13
|
+
];
|
|
14
|
+
static flags = {
|
|
15
|
+
'dry-run': Flags.boolean({
|
|
16
|
+
description: 'Show what would be synced without making changes',
|
|
17
|
+
default: false,
|
|
18
|
+
}),
|
|
19
|
+
verbose: Flags.boolean({
|
|
20
|
+
char: 'v',
|
|
21
|
+
description: 'Show detailed output',
|
|
22
|
+
default: false,
|
|
23
|
+
}),
|
|
24
|
+
element: Flags.string({
|
|
25
|
+
description: 'Update only specified element',
|
|
26
|
+
}),
|
|
27
|
+
'skip-build': Flags.boolean({
|
|
28
|
+
description: 'Skip building after sync',
|
|
29
|
+
default: false,
|
|
30
|
+
}),
|
|
31
|
+
'include-dev-deps': Flags.boolean({
|
|
32
|
+
description: 'Include dev dependencies in ESM analysis',
|
|
33
|
+
default: false,
|
|
34
|
+
}),
|
|
35
|
+
validate: Flags.boolean({
|
|
36
|
+
description: 'Run runtime validation during ESM analysis',
|
|
37
|
+
default: false,
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
40
|
+
async run() {
|
|
41
|
+
const { flags } = await this.parse(Update);
|
|
42
|
+
// Verify pie-elements and pie-lib repos exist
|
|
43
|
+
const pieElementsPath = resolve(process.cwd(), '../pie-elements');
|
|
44
|
+
const pieLibPath = resolve(process.cwd(), '../pie-lib');
|
|
45
|
+
try {
|
|
46
|
+
assertReposExist([
|
|
47
|
+
{
|
|
48
|
+
label: 'pie-elements repository',
|
|
49
|
+
path: pieElementsPath,
|
|
50
|
+
extraMessage: 'Expected upstream repository as a sibling directory.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
label: 'pie-lib repository',
|
|
54
|
+
path: pieLibPath,
|
|
55
|
+
extraMessage: 'Expected upstream repository as a sibling directory.',
|
|
56
|
+
},
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.error(error instanceof Error ? error.message : String(error));
|
|
61
|
+
}
|
|
62
|
+
if (flags.verbose) {
|
|
63
|
+
this.log('');
|
|
64
|
+
this.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
65
|
+
this.log('ā Updating from Upstream Repositories ā');
|
|
66
|
+
this.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
67
|
+
this.log('');
|
|
68
|
+
this.log('š Step 1/2: Analyzing ESM compatibility...');
|
|
69
|
+
this.log('');
|
|
70
|
+
}
|
|
71
|
+
const analyzeFlags = [
|
|
72
|
+
'--output=.compatibility/report.json',
|
|
73
|
+
flags.verbose ? '--verbose' : '',
|
|
74
|
+
flags['include-dev-deps'] ? '--include-dev-deps' : '',
|
|
75
|
+
flags.validate ? '--validate' : '',
|
|
76
|
+
].filter(Boolean);
|
|
77
|
+
await AnalyzeEsm.run(analyzeFlags);
|
|
78
|
+
if (flags.verbose) {
|
|
79
|
+
this.log('');
|
|
80
|
+
this.log('ā'.repeat(60));
|
|
81
|
+
this.log('');
|
|
82
|
+
this.log('š Step 2/2: Syncing compatible packages...');
|
|
83
|
+
this.log('');
|
|
84
|
+
}
|
|
85
|
+
const syncFlags = [
|
|
86
|
+
flags['dry-run'] ? '--dry-run' : '',
|
|
87
|
+
flags.verbose ? '--verbose' : '',
|
|
88
|
+
flags.element ? `--element=${flags.element}` : '',
|
|
89
|
+
flags['skip-build'] ? '--skip-build' : '',
|
|
90
|
+
].filter(Boolean);
|
|
91
|
+
await Sync.run(syncFlags);
|
|
92
|
+
if (!flags.verbose) {
|
|
93
|
+
this.log('');
|
|
94
|
+
this.log('ā
Update complete!');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/upstream/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class VerifyControllers extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
element: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
private logger;
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=controllers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../src/commands/verify/controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AA0B7C,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,OAAO;IACpD,OAAgB,WAAW,SAC2E;IAEtG,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;MASnB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoHlC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { Logger } from '../../utils/logger.js';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { EXCLUDED_UPSTREAM_ELEMENTS } from '../../lib/upstream/sync-constants.js';
|
|
7
|
+
const ELEMENTS_REACT_DIR = 'packages/elements-react';
|
|
8
|
+
function hasAnyControllerSource(elementDir) {
|
|
9
|
+
const base = join(elementDir, 'src', 'controller', 'index');
|
|
10
|
+
return (existsSync(base + '.ts') ||
|
|
11
|
+
existsSync(base + '.tsx') ||
|
|
12
|
+
existsSync(base + '.js') ||
|
|
13
|
+
existsSync(base + '.jsx'));
|
|
14
|
+
}
|
|
15
|
+
export default class VerifyControllers extends Command {
|
|
16
|
+
static description = 'Verify that element packages will publish controller modules correctly (exports + dist artifacts)';
|
|
17
|
+
static examples = [
|
|
18
|
+
'bun run cli <%= command.id %>',
|
|
19
|
+
'bun cli <%= command.id %>',
|
|
20
|
+
'<%= config.bin %> <%= command.id %>',
|
|
21
|
+
];
|
|
22
|
+
static flags = {
|
|
23
|
+
verbose: Flags.boolean({
|
|
24
|
+
char: 'v',
|
|
25
|
+
description: 'Show detailed output',
|
|
26
|
+
default: false,
|
|
27
|
+
}),
|
|
28
|
+
element: Flags.string({
|
|
29
|
+
description: 'Check only specified element',
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
logger = new Logger();
|
|
33
|
+
async run() {
|
|
34
|
+
const { flags } = await this.parse(VerifyControllers);
|
|
35
|
+
this.logger = new Logger(flags.verbose);
|
|
36
|
+
this.logger.section('š§© Verifying published controller modules');
|
|
37
|
+
const items = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });
|
|
38
|
+
const excludedElements = new Set(EXCLUDED_UPSTREAM_ELEMENTS);
|
|
39
|
+
let elements = items
|
|
40
|
+
.filter((d) => d.isDirectory())
|
|
41
|
+
.map((d) => d.name)
|
|
42
|
+
.filter((name) => !excludedElements.has(name));
|
|
43
|
+
if (flags.element) {
|
|
44
|
+
if (!elements.includes(flags.element)) {
|
|
45
|
+
this.error(`Element '${flags.element}' not found in ${ELEMENTS_REACT_DIR}`);
|
|
46
|
+
}
|
|
47
|
+
elements = [flags.element];
|
|
48
|
+
}
|
|
49
|
+
const results = [];
|
|
50
|
+
for (const element of elements.sort()) {
|
|
51
|
+
const elementDir = join(ELEMENTS_REACT_DIR, element);
|
|
52
|
+
const pkgPath = join(elementDir, 'package.json');
|
|
53
|
+
if (!existsSync(pkgPath)) {
|
|
54
|
+
results.push({
|
|
55
|
+
element,
|
|
56
|
+
ok: false,
|
|
57
|
+
errors: ['Missing package.json'],
|
|
58
|
+
warnings: [],
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const hasController = hasAnyControllerSource(elementDir);
|
|
63
|
+
if (!hasController) {
|
|
64
|
+
// Nothing to publish for controllers; skip.
|
|
65
|
+
results.push({ element, ok: true, errors: [], warnings: [] });
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const pkgRaw = await readFile(pkgPath, 'utf-8');
|
|
69
|
+
const pkg = JSON.parse(pkgRaw);
|
|
70
|
+
const exportsObj = pkg?.exports;
|
|
71
|
+
const controllerExport = exportsObj?.['./controller'];
|
|
72
|
+
const errors = [];
|
|
73
|
+
const warnings = [];
|
|
74
|
+
if (!controllerExport) {
|
|
75
|
+
errors.push('Missing exports["./controller"] in package.json');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const jsPath = controllerExport?.default;
|
|
79
|
+
const dtsPath = controllerExport?.types;
|
|
80
|
+
if (!jsPath || typeof jsPath !== 'string') {
|
|
81
|
+
errors.push('exports["./controller"].default is missing');
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const abs = join(elementDir, jsPath.replace(/^\.\//, ''));
|
|
85
|
+
if (!existsSync(abs)) {
|
|
86
|
+
errors.push(`Controller JS artifact missing: ${jsPath}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Types are nice-to-have for TS consumers, but not required for runtime/controller loading.
|
|
90
|
+
// We'll warn (not fail) if types are missing.
|
|
91
|
+
if (!dtsPath || typeof dtsPath !== 'string') {
|
|
92
|
+
warnings.push('exports["./controller"].types is missing');
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const abs = join(elementDir, dtsPath.replace(/^\.\//, ''));
|
|
96
|
+
if (!existsSync(abs)) {
|
|
97
|
+
warnings.push(`Controller d.ts artifact missing: ${dtsPath}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
results.push({ element, ok: errors.length === 0, errors, warnings });
|
|
102
|
+
}
|
|
103
|
+
const failed = results.filter((r) => !r.ok);
|
|
104
|
+
const warned = results.filter((r) => r.warnings.length > 0);
|
|
105
|
+
const checked = results.filter((r) => hasAnyControllerSource(join(ELEMENTS_REACT_DIR, r.element)));
|
|
106
|
+
this.log(`\n${'='.repeat(60)}`);
|
|
107
|
+
this.log('š CONTROLLER PUBLISH VERIFICATION REPORT');
|
|
108
|
+
this.log('='.repeat(60));
|
|
109
|
+
this.log(`Elements scanned: ${results.length}`);
|
|
110
|
+
this.log(`Elements with controllers: ${checked.length}`);
|
|
111
|
+
this.log(`Passed: ${results.length - failed.length} ā
`);
|
|
112
|
+
this.log(`Failed: ${failed.length} ā`);
|
|
113
|
+
this.log(`Warnings: ${warned.length} ā ļø`);
|
|
114
|
+
if (failed.length > 0) {
|
|
115
|
+
this.log('\nā FAILURES:');
|
|
116
|
+
for (const f of failed) {
|
|
117
|
+
this.log(` - ${f.element}`);
|
|
118
|
+
for (const e of f.errors)
|
|
119
|
+
this.log(` ⢠${e}`);
|
|
120
|
+
}
|
|
121
|
+
this.log('\nš” Fixes:');
|
|
122
|
+
this.log(' - Ensure package.json exports include "./controller"');
|
|
123
|
+
this.log(' - Ensure build outputs exist under dist/controller/');
|
|
124
|
+
this.log(` - Rebuild: cd ${ELEMENTS_REACT_DIR}/<element> && bun run build`);
|
|
125
|
+
this.error('Some controller publish checks failed', { exit: 1 });
|
|
126
|
+
}
|
|
127
|
+
if (warned.length > 0) {
|
|
128
|
+
this.log('\nā ļø WARNINGS (non-blocking):');
|
|
129
|
+
for (const w of warned) {
|
|
130
|
+
this.log(` - ${w.element}`);
|
|
131
|
+
for (const msg of w.warnings)
|
|
132
|
+
this.log(` ⢠${msg}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this.log(`\n${'='.repeat(60)}\n`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=controllers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/commands/verify/controllers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ReactBuild extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
element: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
private logger;
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
private buildElement;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=react-build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-build.d.ts","sourceRoot":"","sources":["../../../src/commands/verify/react-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAgB7C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,OAAgB,WAAW,SAAiC;IAE5D,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;MASnB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAEjB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA4FnB,YAAY;CA4C3B"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { Logger } from '../../utils/logger.js';
|
|
3
|
+
import { execSync } from 'node:child_process';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { readdir } from 'node:fs/promises';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
const ELEMENTS_REACT_DIR = 'packages/elements-react';
|
|
8
|
+
export default class ReactBuild extends Command {
|
|
9
|
+
static description = 'Verify React element builds';
|
|
10
|
+
static examples = ['<%= config.bin %> <%= command.id %>'];
|
|
11
|
+
static flags = {
|
|
12
|
+
verbose: Flags.boolean({
|
|
13
|
+
char: 'v',
|
|
14
|
+
description: 'Show detailed build output',
|
|
15
|
+
default: false,
|
|
16
|
+
}),
|
|
17
|
+
element: Flags.string({
|
|
18
|
+
description: 'Build only specified element',
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
logger = new Logger();
|
|
22
|
+
async run() {
|
|
23
|
+
const { flags } = await this.parse(ReactBuild);
|
|
24
|
+
this.logger = new Logger(flags.verbose);
|
|
25
|
+
this.logger.section('šØ Verifying React element builds');
|
|
26
|
+
// Get all element directories
|
|
27
|
+
const items = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });
|
|
28
|
+
let elements = items.filter((item) => item.isDirectory()).map((item) => item.name);
|
|
29
|
+
// Filter to specific element if requested
|
|
30
|
+
if (flags.element) {
|
|
31
|
+
if (!elements.includes(flags.element)) {
|
|
32
|
+
this.error(`Element '${flags.element}' not found in ${ELEMENTS_REACT_DIR}`);
|
|
33
|
+
}
|
|
34
|
+
elements = [flags.element];
|
|
35
|
+
}
|
|
36
|
+
if (elements.length === 0) {
|
|
37
|
+
this.logger.warn(`ā ļø No React elements found in ${ELEMENTS_REACT_DIR}/`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.logger.info(`Found ${elements.length} element(s) to verify\n`);
|
|
41
|
+
const results = [];
|
|
42
|
+
// Build each element sequentially
|
|
43
|
+
for (const element of elements) {
|
|
44
|
+
process.stdout.write(` Building ${element}... `);
|
|
45
|
+
const result = await this.buildElement(element, flags.verbose);
|
|
46
|
+
results.push(result);
|
|
47
|
+
if (result.success) {
|
|
48
|
+
console.log(`ā
(${result.duration}ms)`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log('ā');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Generate report
|
|
55
|
+
this.log(`\n${'='.repeat(60)}`);
|
|
56
|
+
this.log('š BUILD VERIFICATION REPORT');
|
|
57
|
+
this.log('='.repeat(60));
|
|
58
|
+
const successful = results.filter((r) => r.success);
|
|
59
|
+
const failed = results.filter((r) => !r.success);
|
|
60
|
+
this.log(`Total: ${results.length}`);
|
|
61
|
+
this.log(`Passed: ${successful.length} ā
`);
|
|
62
|
+
this.log(`Failed: ${failed.length} ā`);
|
|
63
|
+
if (successful.length > 0) {
|
|
64
|
+
this.log('\nā
SUCCESSFUL BUILDS:');
|
|
65
|
+
successful.forEach((r) => {
|
|
66
|
+
this.log(` - ${r.element} (${r.duration}ms)`);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (failed.length > 0) {
|
|
70
|
+
this.log('\nā FAILED BUILDS:');
|
|
71
|
+
failed.forEach((r) => {
|
|
72
|
+
this.log(`\n Element: ${r.element}`);
|
|
73
|
+
if (r.error) {
|
|
74
|
+
// Extract first few lines of error for summary
|
|
75
|
+
const errorLines = r.error.split('\n').slice(0, 10);
|
|
76
|
+
errorLines.forEach((line) => {
|
|
77
|
+
if (line.trim()) {
|
|
78
|
+
this.log(` ${line}`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
if (r.error.split('\n').length > 10) {
|
|
82
|
+
this.log(' ... (truncated)');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
this.log('\nš” To see full error for a specific element:');
|
|
87
|
+
this.log(' cd packages/elements-react/<element-name>');
|
|
88
|
+
this.log(' bun run build');
|
|
89
|
+
}
|
|
90
|
+
this.log(`\n${'='.repeat(60)}\n`);
|
|
91
|
+
// Exit with error code if any builds failed
|
|
92
|
+
if (failed.length > 0) {
|
|
93
|
+
this.error('Some builds failed', { exit: 1 });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async buildElement(element, verbose) {
|
|
97
|
+
const elementDir = join(ELEMENTS_REACT_DIR, element);
|
|
98
|
+
const packageJsonPath = join(elementDir, 'package.json');
|
|
99
|
+
// Skip if no package.json
|
|
100
|
+
if (!existsSync(packageJsonPath)) {
|
|
101
|
+
return {
|
|
102
|
+
element,
|
|
103
|
+
success: false,
|
|
104
|
+
error: 'No package.json found',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const startTime = Date.now();
|
|
108
|
+
try {
|
|
109
|
+
execSync('bun run build', {
|
|
110
|
+
cwd: elementDir,
|
|
111
|
+
stdio: verbose ? 'inherit' : 'pipe',
|
|
112
|
+
encoding: 'utf-8',
|
|
113
|
+
});
|
|
114
|
+
const duration = Date.now() - startTime;
|
|
115
|
+
return {
|
|
116
|
+
element,
|
|
117
|
+
success: true,
|
|
118
|
+
duration,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const duration = Date.now() - startTime;
|
|
123
|
+
// Extract error message from stderr
|
|
124
|
+
const err = error;
|
|
125
|
+
const stderr = err.stderr?.toString() || err.message || 'Unknown error';
|
|
126
|
+
return {
|
|
127
|
+
element,
|
|
128
|
+
success: false,
|
|
129
|
+
error: stderr,
|
|
130
|
+
duration,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=react-build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-build.js","sourceRoot":"","sources":["../../../src/commands/verify/react-build.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Logger } from '../../utils/logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extension Loader Generator
|
|
4
|
+
*
|
|
5
|
+
* Generates the main extension loader that initializes MathQuill
|
|
6
|
+
* with all patches and extensions in the correct order.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateExtensionLoader(mathquillPath: string, logger: Logger): void;
|
|
9
|
+
//# sourceMappingURL=extension-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-generator.d.ts","sourceRoot":"","sources":["../../../src/lib/mathquill/extension-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;GAKG;AAEH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAmGnF"}
|