@pie-element/cli 0.1.1 → 0.1.2-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -10
- package/dist/commands/dev/demo/index.d.ts +1 -1
- package/dist/commands/dev/demo/index.js +21 -0
- package/dist/commands/dev/demo/index.js.map +1 -1
- package/dist/commands/dev/test-bundler.d.ts +0 -1
- package/dist/commands/dev/test-bundler.js +2 -10
- package/dist/commands/dev/test-bundler.js.map +1 -1
- package/dist/commands/docs/generate.d.ts +16 -0
- package/dist/commands/docs/generate.js +150 -0
- package/dist/commands/docs/generate.js.map +1 -0
- package/dist/commands/docs/verify.d.ts +12 -0
- package/dist/commands/docs/verify.js +40 -0
- package/dist/commands/docs/verify.js.map +1 -0
- package/dist/commands/packages/create-controllers.d.ts +0 -1
- package/dist/commands/packages/create-controllers.js.map +1 -1
- package/dist/commands/packages/create-lib-react.d.ts +0 -1
- package/dist/commands/packages/create-lib-react.js +1 -3
- package/dist/commands/packages/create-lib-react.js.map +1 -1
- package/dist/commands/packages/create-react-elements.d.ts +0 -1
- package/dist/commands/packages/create-react-elements.js +2 -3
- package/dist/commands/packages/create-react-elements.js.map +1 -1
- package/dist/commands/packages/enable-publishing.d.ts +0 -1
- package/dist/commands/packages/enable-publishing.js +26 -23
- package/dist/commands/packages/enable-publishing.js.map +1 -1
- package/dist/commands/packages/init-synced-elements.d.ts +0 -1
- package/dist/commands/packages/init-synced-elements.js +1 -1
- package/dist/commands/packages/init-synced-elements.js.map +1 -1
- package/dist/commands/upstream/analyze-esm.d.ts +0 -1
- package/dist/commands/upstream/analyze-esm.js +5 -1
- package/dist/commands/upstream/analyze-esm.js.map +1 -1
- package/dist/commands/upstream/check.d.ts +0 -1
- package/dist/commands/upstream/check.js.map +1 -1
- package/dist/commands/upstream/deps.d.ts +0 -1
- package/dist/commands/upstream/deps.js.map +1 -1
- package/dist/commands/upstream/sync.d.ts +11 -2
- package/dist/commands/upstream/sync.js +364 -25
- package/dist/commands/upstream/sync.js.map +1 -1
- package/dist/commands/upstream/track.d.ts +0 -1
- package/dist/commands/upstream/track.js.map +1 -1
- package/dist/commands/upstream/update.d.ts +0 -1
- package/dist/commands/upstream/update.js +37 -7
- package/dist/commands/upstream/update.js.map +1 -1
- package/dist/commands/verify/controllers.d.ts +0 -1
- package/dist/commands/verify/controllers.js +213 -59
- package/dist/commands/verify/controllers.js.map +1 -1
- package/dist/commands/verify/dependency-integrity.d.ts +18 -0
- package/dist/commands/verify/dependency-integrity.js +147 -0
- package/dist/commands/verify/dependency-integrity.js.map +1 -0
- package/dist/commands/verify/react-build.d.ts +0 -1
- package/dist/commands/verify/react-build.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/docs/contract-validator.d.ts +12 -0
- package/dist/lib/docs/contract-validator.js +38 -0
- package/dist/lib/docs/contract-validator.js.map +1 -0
- package/dist/lib/docs/contracts.d.ts +11 -0
- package/dist/lib/docs/contracts.js +241 -0
- package/dist/lib/docs/contracts.js.map +1 -0
- package/dist/lib/docs/discovery.d.ts +10 -0
- package/dist/lib/docs/discovery.js +91 -0
- package/dist/lib/docs/discovery.js.map +1 -0
- package/dist/lib/docs/generator.d.ts +14 -0
- package/dist/lib/docs/generator.js +450 -0
- package/dist/lib/docs/generator.js.map +1 -0
- package/dist/lib/docs/source-extractor.d.ts +2 -0
- package/dist/lib/docs/source-extractor.js +209 -0
- package/dist/lib/docs/source-extractor.js.map +1 -0
- package/dist/lib/docs/types.d.ts +77 -0
- package/dist/lib/docs/types.js +2 -0
- package/dist/lib/docs/types.js.map +1 -0
- package/dist/lib/upstream/repo-utils.d.ts +0 -1
- package/dist/lib/upstream/repo-utils.js.map +1 -1
- package/dist/lib/upstream/sync-compatibility.d.ts +0 -1
- package/dist/lib/upstream/sync-compatibility.js.map +1 -1
- package/dist/lib/upstream/sync-constants.d.ts +35 -7
- package/dist/lib/upstream/sync-constants.js +40 -11
- package/dist/lib/upstream/sync-constants.js.map +1 -1
- package/dist/lib/upstream/sync-controllers-strategy.d.ts +0 -1
- package/dist/lib/upstream/sync-controllers-strategy.js +14 -4
- package/dist/lib/upstream/sync-controllers-strategy.js.map +1 -1
- package/dist/lib/upstream/sync-demo-metadata.d.ts +0 -1
- package/dist/lib/upstream/sync-demo-metadata.js +1 -1
- package/dist/lib/upstream/sync-demo-metadata.js.map +1 -1
- package/dist/lib/upstream/sync-entry-discovery.d.ts +3 -0
- package/dist/lib/upstream/sync-entry-discovery.js +23 -0
- package/dist/lib/upstream/sync-entry-discovery.js.map +1 -0
- package/dist/lib/upstream/sync-externals.d.ts +7 -7
- package/dist/lib/upstream/sync-externals.js +51 -35
- package/dist/lib/upstream/sync-externals.js.map +1 -1
- package/dist/lib/upstream/sync-filesystem.d.ts +0 -1
- package/dist/lib/upstream/sync-filesystem.js.map +1 -1
- package/dist/lib/upstream/sync-imports.d.ts +82 -62
- package/dist/lib/upstream/sync-imports.js +658 -185
- package/dist/lib/upstream/sync-imports.js.map +1 -1
- package/dist/lib/upstream/sync-package-json.d.ts +0 -1
- package/dist/lib/upstream/sync-package-json.js +7 -0
- package/dist/lib/upstream/sync-package-json.js.map +1 -1
- package/dist/lib/upstream/sync-package-manager.d.ts +14 -4
- package/dist/lib/upstream/sync-package-manager.js +405 -72
- package/dist/lib/upstream/sync-package-manager.js.map +1 -1
- package/dist/lib/upstream/sync-pielib-strategy.d.ts +2 -1
- package/dist/lib/upstream/sync-pielib-strategy.js +228 -110
- package/dist/lib/upstream/sync-pielib-strategy.js.map +1 -1
- package/dist/lib/upstream/sync-presets.d.ts +52 -0
- package/dist/lib/upstream/sync-presets.js +175 -0
- package/dist/lib/upstream/sync-presets.js.map +1 -0
- package/dist/lib/upstream/sync-react-strategy.d.ts +6 -1
- package/dist/lib/upstream/sync-react-strategy.js +342 -134
- package/dist/lib/upstream/sync-react-strategy.js.map +1 -1
- package/dist/lib/upstream/sync-source-edit.d.ts +14 -0
- package/dist/lib/upstream/sync-source-edit.js +89 -0
- package/dist/lib/upstream/sync-source-edit.js.map +1 -0
- package/dist/lib/upstream/sync-source-tree.d.ts +22 -0
- package/dist/lib/upstream/sync-source-tree.js +99 -0
- package/dist/lib/upstream/sync-source-tree.js.map +1 -0
- package/dist/lib/upstream/sync-strategy.d.ts +1 -1
- package/dist/lib/upstream/sync-strategy.js.map +1 -1
- package/dist/lib/upstream/sync-summary.d.ts +0 -1
- package/dist/lib/upstream/sync-summary.js.map +1 -1
- package/dist/lib/upstream/sync-transforms.d.ts +13 -11
- package/dist/lib/upstream/sync-transforms.js +23 -17
- package/dist/lib/upstream/sync-transforms.js.map +1 -1
- package/dist/lib/upstream/sync-vite-config.d.ts +13 -1
- package/dist/lib/upstream/sync-vite-config.js +65 -46
- package/dist/lib/upstream/sync-vite-config.js.map +1 -1
- package/dist/utils/compatibility.d.ts +13 -1
- package/dist/utils/compatibility.js +143 -2
- package/dist/utils/compatibility.js.map +1 -1
- package/dist/utils/conversion.d.ts +0 -1
- package/dist/utils/conversion.js.map +1 -1
- package/dist/utils/dependency-integrity.d.ts +37 -0
- package/dist/utils/dependency-integrity.js +557 -0
- package/dist/utils/dependency-integrity.js.map +1 -0
- package/dist/utils/git.d.ts +0 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/package-json.d.ts +0 -1
- package/dist/utils/package-json.js.map +1 -1
- package/package.json +25 -8
- package/.compatibility/report.json +0 -2491
- package/.turbo/turbo-build.log +0 -1
- package/CHANGELOG.md +0 -8
- package/REFACTORING.md +0 -131
- package/bin/dev.js +0 -5
- package/dist/commands/dev/demo/index.d.ts.map +0 -1
- package/dist/commands/dev/test-bundler.d.ts.map +0 -1
- package/dist/commands/mathquill/migrate.d.ts +0 -20
- package/dist/commands/mathquill/migrate.d.ts.map +0 -1
- package/dist/commands/mathquill/migrate.js +0 -240
- package/dist/commands/mathquill/migrate.js.map +0 -1
- package/dist/commands/mathquill/status.d.ts +0 -20
- package/dist/commands/mathquill/status.d.ts.map +0 -1
- package/dist/commands/mathquill/status.js +0 -231
- package/dist/commands/mathquill/status.js.map +0 -1
- package/dist/commands/packages/create-controllers.d.ts.map +0 -1
- package/dist/commands/packages/create-lib-react.d.ts.map +0 -1
- package/dist/commands/packages/create-react-elements.d.ts.map +0 -1
- package/dist/commands/packages/enable-publishing.d.ts.map +0 -1
- package/dist/commands/packages/init-synced-elements.d.ts.map +0 -1
- package/dist/commands/upstream/analyze-esm.d.ts.map +0 -1
- package/dist/commands/upstream/check.d.ts.map +0 -1
- package/dist/commands/upstream/deps.d.ts.map +0 -1
- package/dist/commands/upstream/sync-mathquill.d.ts +0 -12
- package/dist/commands/upstream/sync-mathquill.d.ts.map +0 -1
- package/dist/commands/upstream/sync-mathquill.js +0 -97
- package/dist/commands/upstream/sync-mathquill.js.map +0 -1
- package/dist/commands/upstream/sync.d.ts.map +0 -1
- package/dist/commands/upstream/track.d.ts.map +0 -1
- package/dist/commands/upstream/update.d.ts.map +0 -1
- package/dist/commands/verify/controllers.d.ts.map +0 -1
- package/dist/commands/verify/react-build.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/mathquill/extension-generator.d.ts +0 -9
- package/dist/lib/mathquill/extension-generator.d.ts.map +0 -1
- package/dist/lib/mathquill/extension-generator.js +0 -107
- package/dist/lib/mathquill/extension-generator.js.map +0 -1
- package/dist/lib/mathquill/khan-extractor.d.ts +0 -16
- package/dist/lib/mathquill/khan-extractor.d.ts.map +0 -1
- package/dist/lib/mathquill/khan-extractor.js +0 -148
- package/dist/lib/mathquill/khan-extractor.js.map +0 -1
- package/dist/lib/mathquill/learnosity-extractor.d.ts +0 -15
- package/dist/lib/mathquill/learnosity-extractor.d.ts.map +0 -1
- package/dist/lib/mathquill/learnosity-extractor.js +0 -170
- package/dist/lib/mathquill/learnosity-extractor.js.map +0 -1
- package/dist/lib/mathquill/migration-orchestrator.d.ts +0 -77
- package/dist/lib/mathquill/migration-orchestrator.d.ts.map +0 -1
- package/dist/lib/mathquill/migration-orchestrator.js +0 -391
- package/dist/lib/mathquill/migration-orchestrator.js.map +0 -1
- package/dist/lib/mathquill/package-updater.d.ts +0 -9
- package/dist/lib/mathquill/package-updater.d.ts.map +0 -1
- package/dist/lib/mathquill/package-updater.js +0 -103
- package/dist/lib/mathquill/package-updater.js.map +0 -1
- package/dist/lib/mathquill/pie-extractor.d.ts +0 -14
- package/dist/lib/mathquill/pie-extractor.d.ts.map +0 -1
- package/dist/lib/mathquill/pie-extractor.js +0 -167
- package/dist/lib/mathquill/pie-extractor.js.map +0 -1
- package/dist/lib/upstream/repo-utils.d.ts.map +0 -1
- package/dist/lib/upstream/sync-compatibility.d.ts.map +0 -1
- package/dist/lib/upstream/sync-constants.d.ts.map +0 -1
- package/dist/lib/upstream/sync-controllers-strategy.d.ts.map +0 -1
- package/dist/lib/upstream/sync-demo-metadata.d.ts.map +0 -1
- package/dist/lib/upstream/sync-dev-exports.d.ts +0 -13
- package/dist/lib/upstream/sync-dev-exports.d.ts.map +0 -1
- package/dist/lib/upstream/sync-dev-exports.js +0 -115
- package/dist/lib/upstream/sync-dev-exports.js.map +0 -1
- package/dist/lib/upstream/sync-externals.d.ts.map +0 -1
- package/dist/lib/upstream/sync-filesystem.d.ts.map +0 -1
- package/dist/lib/upstream/sync-imports.d.ts.map +0 -1
- package/dist/lib/upstream/sync-mathquill.d.ts +0 -19
- package/dist/lib/upstream/sync-mathquill.d.ts.map +0 -1
- package/dist/lib/upstream/sync-mathquill.js +0 -160
- package/dist/lib/upstream/sync-mathquill.js.map +0 -1
- package/dist/lib/upstream/sync-package-json.d.ts.map +0 -1
- package/dist/lib/upstream/sync-package-manager.d.ts.map +0 -1
- package/dist/lib/upstream/sync-pielib-strategy.d.ts.map +0 -1
- package/dist/lib/upstream/sync-react-strategy.d.ts.map +0 -1
- package/dist/lib/upstream/sync-strategy.d.ts.map +0 -1
- package/dist/lib/upstream/sync-summary.d.ts.map +0 -1
- package/dist/lib/upstream/sync-transforms.d.ts.map +0 -1
- package/dist/lib/upstream/sync-vite-config.d.ts.map +0 -1
- package/dist/utils/compatibility.d.ts.map +0 -1
- package/dist/utils/conversion.d.ts.map +0 -1
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/package-json.d.ts.map +0 -1
- package/packages/cli/bin/dev.js +0 -5
- package/packages/cli/bin/run.js +0 -5
- package/src/commands/dev/demo/index.ts +0 -313
- package/src/commands/dev/test-bundler.ts +0 -345
- package/src/commands/mathquill/migrate.ts +0 -269
- package/src/commands/mathquill/status.ts +0 -267
- package/src/commands/packages/create-controllers.ts +0 -127
- package/src/commands/packages/create-lib-react.ts +0 -279
- package/src/commands/packages/create-react-elements.ts +0 -306
- package/src/commands/packages/enable-publishing.ts +0 -161
- package/src/commands/packages/init-synced-elements.ts +0 -259
- package/src/commands/upstream/README.md +0 -444
- package/src/commands/upstream/analyze-esm.ts +0 -1973
- package/src/commands/upstream/check.ts +0 -228
- package/src/commands/upstream/deps.ts +0 -222
- package/src/commands/upstream/sync-mathquill.ts +0 -108
- package/src/commands/upstream/sync.ts +0 -687
- package/src/commands/upstream/track.ts +0 -145
- package/src/commands/upstream/update.ts +0 -110
- package/src/commands/verify/controllers.ts +0 -166
- package/src/commands/verify/react-build.ts +0 -171
- package/src/index.ts +0 -1
- package/src/lib/mathquill/extension-generator.ts +0 -111
- package/src/lib/mathquill/khan-extractor.ts +0 -175
- package/src/lib/mathquill/learnosity-extractor.ts +0 -198
- package/src/lib/mathquill/migration-orchestrator.ts +0 -513
- package/src/lib/mathquill/package-updater.ts +0 -120
- package/src/lib/mathquill/pie-extractor.ts +0 -194
- package/src/lib/upstream/repo-utils.ts +0 -18
- package/src/lib/upstream/sync-compatibility.ts +0 -89
- package/src/lib/upstream/sync-constants.ts +0 -77
- package/src/lib/upstream/sync-controllers-strategy.ts +0 -291
- package/src/lib/upstream/sync-demo-metadata.ts +0 -199
- package/src/lib/upstream/sync-dev-exports.ts +0 -151
- package/src/lib/upstream/sync-externals.ts +0 -159
- package/src/lib/upstream/sync-filesystem.ts +0 -87
- package/src/lib/upstream/sync-imports.ts +0 -992
- package/src/lib/upstream/sync-mathquill.ts +0 -194
- package/src/lib/upstream/sync-package-json.ts +0 -86
- package/src/lib/upstream/sync-package-manager.ts +0 -694
- package/src/lib/upstream/sync-pielib-strategy.ts +0 -441
- package/src/lib/upstream/sync-react-strategy.ts +0 -945
- package/src/lib/upstream/sync-strategy.ts +0 -61
- package/src/lib/upstream/sync-summary.ts +0 -194
- package/src/lib/upstream/sync-transforms.ts +0 -154
- package/src/lib/upstream/sync-vite-config.ts +0 -243
- package/src/types/es-module-lexer.d.ts +0 -4
- package/src/utils/compatibility.ts +0 -182
- package/src/utils/conversion.ts +0 -153
- package/src/utils/git.ts +0 -63
- package/src/utils/logger.ts +0 -69
- package/src/utils/package-json.ts +0 -43
- package/tests/sync-package-manager.test.ts +0 -112
- package/tests/transform-assign-props.test.ts +0 -101
- package/tsconfig.json +0 -15
|
@@ -5,6 +5,7 @@ import { readdir, readFile } from 'node:fs/promises';
|
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { EXCLUDED_UPSTREAM_ELEMENTS } from '../../lib/upstream/sync-constants.js';
|
|
7
7
|
const ELEMENTS_REACT_DIR = 'packages/elements-react';
|
|
8
|
+
const ELEMENTS_SVELTE_DIR = 'packages/elements-svelte';
|
|
8
9
|
function hasAnyControllerSource(elementDir) {
|
|
9
10
|
const base = join(elementDir, 'src', 'controller', 'index');
|
|
10
11
|
return (existsSync(base + '.ts') ||
|
|
@@ -12,6 +13,188 @@ function hasAnyControllerSource(elementDir) {
|
|
|
12
13
|
existsSync(base + '.js') ||
|
|
13
14
|
existsSync(base + '.jsx'));
|
|
14
15
|
}
|
|
16
|
+
function hasAnyPrintSource(elementDir) {
|
|
17
|
+
const base = join(elementDir, 'src', 'print', 'index');
|
|
18
|
+
return (existsSync(base + '.ts') ||
|
|
19
|
+
existsSync(base + '.tsx') ||
|
|
20
|
+
existsSync(base + '.js') ||
|
|
21
|
+
existsSync(base + '.jsx'));
|
|
22
|
+
}
|
|
23
|
+
function hasAnyAuthorOrConfigureSource(elementDir) {
|
|
24
|
+
for (const view of ['author', 'configure']) {
|
|
25
|
+
const base = join(elementDir, 'src', view, 'index');
|
|
26
|
+
if (existsSync(base + '.ts') ||
|
|
27
|
+
existsSync(base + '.tsx') ||
|
|
28
|
+
existsSync(base + '.js') ||
|
|
29
|
+
existsSync(base + '.jsx')) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
async function verifyControllerPackage(elementDir, element) {
|
|
36
|
+
const pkgPath = join(elementDir, 'package.json');
|
|
37
|
+
if (!existsSync(pkgPath)) {
|
|
38
|
+
return {
|
|
39
|
+
element,
|
|
40
|
+
elementDir,
|
|
41
|
+
ok: false,
|
|
42
|
+
errors: ['Missing package.json'],
|
|
43
|
+
warnings: [],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const hasController = hasAnyControllerSource(elementDir);
|
|
47
|
+
const hasAuthorOrConfigure = hasAnyAuthorOrConfigureSource(elementDir);
|
|
48
|
+
const hasPrint = hasAnyPrintSource(elementDir);
|
|
49
|
+
if (!hasController && !hasAuthorOrConfigure && !hasPrint) {
|
|
50
|
+
return { element, elementDir, ok: true, errors: [], warnings: [] };
|
|
51
|
+
}
|
|
52
|
+
const pkgRaw = await readFile(pkgPath, 'utf-8');
|
|
53
|
+
const pkg = JSON.parse(pkgRaw);
|
|
54
|
+
const exportsObj = pkg?.exports;
|
|
55
|
+
const controllerExport = exportsObj?.['./controller'];
|
|
56
|
+
const controllerJsExport = exportsObj?.['./controller.js'];
|
|
57
|
+
const configureExport = exportsObj?.['./configure'];
|
|
58
|
+
const printExport = exportsObj?.['./print'];
|
|
59
|
+
const printJsExport = exportsObj?.['./print.js'];
|
|
60
|
+
const expectedControllerSpecifier = `${pkg.name}/controller`;
|
|
61
|
+
const expectedConfigureSpecifier = `${pkg.name}/configure`;
|
|
62
|
+
const expectedShim = "export * from './dist/controller/index.js';\n";
|
|
63
|
+
const errors = [];
|
|
64
|
+
const warnings = [];
|
|
65
|
+
const files = Array.isArray(pkg.files) ? pkg.files : [];
|
|
66
|
+
if (hasController) {
|
|
67
|
+
if (pkg?.pie?.controller !== expectedControllerSpecifier) {
|
|
68
|
+
errors.push(`package.json pie.controller must be "${expectedControllerSpecifier}"`);
|
|
69
|
+
}
|
|
70
|
+
if (!files.includes('controller.js')) {
|
|
71
|
+
errors.push('package.json files[] must include "controller.js"');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (hasAuthorOrConfigure) {
|
|
75
|
+
if (pkg?.pie?.configure !== expectedConfigureSpecifier) {
|
|
76
|
+
errors.push(`package.json pie.configure must be "${expectedConfigureSpecifier}"`);
|
|
77
|
+
}
|
|
78
|
+
if (!configureExport) {
|
|
79
|
+
errors.push('Missing exports["./configure"] in package.json');
|
|
80
|
+
}
|
|
81
|
+
if (!files.includes('configure.js')) {
|
|
82
|
+
errors.push('package.json files[] must include "configure.js"');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (hasController && !controllerExport) {
|
|
86
|
+
errors.push('Missing exports["./controller"] in package.json');
|
|
87
|
+
}
|
|
88
|
+
else if (controllerExport) {
|
|
89
|
+
const jsPath = controllerExport?.default;
|
|
90
|
+
const dtsPath = controllerExport?.types;
|
|
91
|
+
if (!jsPath || typeof jsPath !== 'string') {
|
|
92
|
+
errors.push('exports["./controller"].default is missing');
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const abs = join(elementDir, jsPath.replace(/^\.\//, ''));
|
|
96
|
+
if (!existsSync(abs)) {
|
|
97
|
+
errors.push(`Controller JS artifact missing: ${jsPath}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!dtsPath || typeof dtsPath !== 'string') {
|
|
101
|
+
warnings.push('exports["./controller"].types is missing');
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const abs = join(elementDir, dtsPath.replace(/^\.\//, ''));
|
|
105
|
+
if (!existsSync(abs)) {
|
|
106
|
+
warnings.push(`Controller d.ts artifact missing: ${dtsPath}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (hasController && !controllerJsExport) {
|
|
111
|
+
errors.push('Missing exports["./controller.js"] in package.json');
|
|
112
|
+
}
|
|
113
|
+
else if (controllerJsExport) {
|
|
114
|
+
const jsPath = controllerJsExport?.default;
|
|
115
|
+
const dtsPath = controllerJsExport?.types;
|
|
116
|
+
if (controllerExport && jsPath !== controllerExport?.default) {
|
|
117
|
+
errors.push('exports["./controller.js"].default must match exports["./controller"].default');
|
|
118
|
+
}
|
|
119
|
+
if (controllerExport && dtsPath !== controllerExport?.types) {
|
|
120
|
+
errors.push('exports["./controller.js"].types must match exports["./controller"].types');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (configureExport) {
|
|
124
|
+
const configureTarget = configureExport?.default;
|
|
125
|
+
if (!configureTarget || typeof configureTarget !== 'string') {
|
|
126
|
+
errors.push('exports["./configure"].default is missing');
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const abs = join(elementDir, configureTarget.replace(/^\.\//, ''));
|
|
130
|
+
if (!existsSync(abs)) {
|
|
131
|
+
errors.push(`Configure JS artifact missing: ${configureTarget}`);
|
|
132
|
+
}
|
|
133
|
+
const configureShimPath = join(elementDir, 'configure.js');
|
|
134
|
+
const expectedConfigureShim = `export { default } from '${configureTarget}';\nexport * from '${configureTarget}';\n`;
|
|
135
|
+
if (!existsSync(configureShimPath)) {
|
|
136
|
+
errors.push('Missing root configure.js compatibility shim');
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const configureShim = await readFile(configureShimPath, 'utf-8');
|
|
140
|
+
if (configureShim !== expectedConfigureShim) {
|
|
141
|
+
errors.push(`Root configure.js shim must re-export ${configureTarget}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Print is checked on the same terms as controller and configure: the root shim is a
|
|
147
|
+
// publish contract, because a directory-aliasing bundler resolves `<pkg>/print` to it
|
|
148
|
+
// rather than through the exports map.
|
|
149
|
+
if (hasPrint) {
|
|
150
|
+
if (!files.includes('print.js')) {
|
|
151
|
+
errors.push('package.json files[] must include "print.js"');
|
|
152
|
+
}
|
|
153
|
+
if (!printExport) {
|
|
154
|
+
errors.push('Missing exports["./print"] in package.json');
|
|
155
|
+
}
|
|
156
|
+
if (!printJsExport) {
|
|
157
|
+
errors.push('Missing exports["./print.js"] in package.json');
|
|
158
|
+
}
|
|
159
|
+
else if (printExport) {
|
|
160
|
+
if (printJsExport?.default !== printExport?.default) {
|
|
161
|
+
errors.push('exports["./print.js"].default must match exports["./print"].default');
|
|
162
|
+
}
|
|
163
|
+
if (printJsExport?.types !== printExport?.types) {
|
|
164
|
+
errors.push('exports["./print.js"].types must match exports["./print"].types');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const printTarget = printExport?.default ?? './dist/print/index.js';
|
|
168
|
+
const printArtifact = join(elementDir, printTarget.replace(/^\.\//, ''));
|
|
169
|
+
if (!existsSync(printArtifact)) {
|
|
170
|
+
errors.push(`Print JS artifact missing: ${printTarget}`);
|
|
171
|
+
}
|
|
172
|
+
const printShimPath = join(elementDir, 'print.js');
|
|
173
|
+
const expectedPrintShim = `export { default } from '${printTarget}';\nexport * from '${printTarget}';\n`;
|
|
174
|
+
if (!existsSync(printShimPath)) {
|
|
175
|
+
errors.push('Missing root print.js compatibility shim');
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const printShim = await readFile(printShimPath, 'utf-8');
|
|
179
|
+
if (printShim !== expectedPrintShim) {
|
|
180
|
+
errors.push(`Root print.js shim must re-export ${printTarget}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (hasController) {
|
|
185
|
+
const shimPath = join(elementDir, 'controller.js');
|
|
186
|
+
if (!existsSync(shimPath)) {
|
|
187
|
+
errors.push('Missing root controller.js compatibility shim');
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
const shim = await readFile(shimPath, 'utf-8');
|
|
191
|
+
if (shim !== expectedShim) {
|
|
192
|
+
errors.push('Root controller.js shim must re-export ./dist/controller/index.js');
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return { element, elementDir, ok: errors.length === 0, errors, warnings };
|
|
197
|
+
}
|
|
15
198
|
export default class VerifyControllers extends Command {
|
|
16
199
|
static description = 'Verify that element packages will publish controller modules correctly (exports + dist artifacts)';
|
|
17
200
|
static examples = [
|
|
@@ -26,7 +209,7 @@ export default class VerifyControllers extends Command {
|
|
|
26
209
|
default: false,
|
|
27
210
|
}),
|
|
28
211
|
element: Flags.string({
|
|
29
|
-
description: 'Check only specified element',
|
|
212
|
+
description: 'Check only specified element (react or svelte package name)',
|
|
30
213
|
}),
|
|
31
214
|
};
|
|
32
215
|
logger = new Logger();
|
|
@@ -34,75 +217,41 @@ export default class VerifyControllers extends Command {
|
|
|
34
217
|
const { flags } = await this.parse(VerifyControllers);
|
|
35
218
|
this.logger = new Logger(flags.verbose);
|
|
36
219
|
this.logger.section('🧩 Verifying published controller modules');
|
|
37
|
-
const items = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });
|
|
38
220
|
const excludedElements = new Set(EXCLUDED_UPSTREAM_ELEMENTS);
|
|
39
|
-
|
|
221
|
+
const reactItems = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });
|
|
222
|
+
const reactNames = reactItems
|
|
40
223
|
.filter((d) => d.isDirectory())
|
|
41
224
|
.map((d) => d.name)
|
|
42
225
|
.filter((name) => !excludedElements.has(name));
|
|
226
|
+
const svelteItems = await readdir(ELEMENTS_SVELTE_DIR, { withFileTypes: true });
|
|
227
|
+
const svelteNames = svelteItems.filter((d) => d.isDirectory()).map((d) => d.name);
|
|
228
|
+
let jobs = [];
|
|
43
229
|
if (flags.element) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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;
|
|
230
|
+
const r = join(ELEMENTS_REACT_DIR, flags.element);
|
|
231
|
+
const s = join(ELEMENTS_SVELTE_DIR, flags.element);
|
|
232
|
+
if (reactNames.includes(flags.element) && existsSync(join(r, 'package.json'))) {
|
|
233
|
+
jobs = [{ name: flags.element, dir: r }];
|
|
61
234
|
}
|
|
62
|
-
|
|
63
|
-
|
|
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');
|
|
235
|
+
else if (svelteNames.includes(flags.element) && existsSync(join(s, 'package.json'))) {
|
|
236
|
+
jobs = [{ name: flags.element, dir: s }];
|
|
76
237
|
}
|
|
77
238
|
else {
|
|
78
|
-
|
|
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
|
-
}
|
|
239
|
+
this.error(`Element '${flags.element}' not found under ${ELEMENTS_REACT_DIR} or ${ELEMENTS_SVELTE_DIR}`);
|
|
100
240
|
}
|
|
101
|
-
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
jobs = [
|
|
244
|
+
...reactNames.sort().map((name) => ({ name, dir: join(ELEMENTS_REACT_DIR, name) })),
|
|
245
|
+
...svelteNames.sort().map((name) => ({ name, dir: join(ELEMENTS_SVELTE_DIR, name) })),
|
|
246
|
+
];
|
|
247
|
+
}
|
|
248
|
+
const results = [];
|
|
249
|
+
for (const { name, dir } of jobs) {
|
|
250
|
+
results.push(await verifyControllerPackage(dir, name));
|
|
102
251
|
}
|
|
103
252
|
const failed = results.filter((r) => !r.ok);
|
|
104
253
|
const warned = results.filter((r) => r.warnings.length > 0);
|
|
105
|
-
const checked = results.filter((r) => hasAnyControllerSource(
|
|
254
|
+
const checked = results.filter((r) => hasAnyControllerSource(r.elementDir));
|
|
106
255
|
this.log(`\n${'='.repeat(60)}`);
|
|
107
256
|
this.log('📊 CONTROLLER PUBLISH VERIFICATION REPORT');
|
|
108
257
|
this.log('='.repeat(60));
|
|
@@ -119,9 +268,14 @@ export default class VerifyControllers extends Command {
|
|
|
119
268
|
this.log(` • ${e}`);
|
|
120
269
|
}
|
|
121
270
|
this.log('\n💡 Fixes:');
|
|
122
|
-
this.log(' - Ensure package.json exports include "./controller"');
|
|
271
|
+
this.log(' - Ensure package.json exports include "./controller" and "./controller.js"');
|
|
272
|
+
this.log(' - Ensure package.json pie.controller is "@pie-element/<element>/controller"');
|
|
273
|
+
this.log(' - Ensure package.json files[] includes "controller.js"');
|
|
274
|
+
this.log(' - Ensure root controller.js re-exports "./dist/controller/index.js"');
|
|
275
|
+
this.log(' - Ensure print-bearing elements publish "print.js" and export "./print.js"');
|
|
123
276
|
this.log(' - Ensure build outputs exist under dist/controller/');
|
|
124
277
|
this.log(` - Rebuild: cd ${ELEMENTS_REACT_DIR}/<element> && bun run build`);
|
|
278
|
+
this.log(` - Or: cd ${ELEMENTS_SVELTE_DIR}/<element> && bun run build`);
|
|
125
279
|
this.error('Some controller publish checks failed', { exit: 1 });
|
|
126
280
|
}
|
|
127
281
|
if (warned.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/commands/verify/controllers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/commands/verify/controllers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport { Logger } from '../../utils/logger.js';\nimport { existsSync } from 'node:fs';\nimport { readdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { EXCLUDED_UPSTREAM_ELEMENTS } from '../../lib/upstream/sync-constants.js';\n\ntype CheckResult = {\n element: string;\n elementDir: string;\n ok: boolean;\n errors: string[];\n warnings: string[];\n};\n\nconst ELEMENTS_REACT_DIR = 'packages/elements-react';\nconst ELEMENTS_SVELTE_DIR = 'packages/elements-svelte';\n\nfunction hasAnyControllerSource(elementDir: string): boolean {\n const base = join(elementDir, 'src', 'controller', 'index');\n return (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n );\n}\n\nfunction hasAnyPrintSource(elementDir: string): boolean {\n const base = join(elementDir, 'src', 'print', 'index');\n return (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n );\n}\n\nfunction hasAnyAuthorOrConfigureSource(elementDir: string): boolean {\n for (const view of ['author', 'configure']) {\n const base = join(elementDir, 'src', view, 'index');\n if (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n ) {\n return true;\n }\n }\n return false;\n}\n\nasync function verifyControllerPackage(elementDir: string, element: string): Promise<CheckResult> {\n const pkgPath = join(elementDir, 'package.json');\n if (!existsSync(pkgPath)) {\n return {\n element,\n elementDir,\n ok: false,\n errors: ['Missing package.json'],\n warnings: [],\n };\n }\n\n const hasController = hasAnyControllerSource(elementDir);\n const hasAuthorOrConfigure = hasAnyAuthorOrConfigureSource(elementDir);\n const hasPrint = hasAnyPrintSource(elementDir);\n if (!hasController && !hasAuthorOrConfigure && !hasPrint) {\n return { element, elementDir, ok: true, errors: [], warnings: [] };\n }\n\n const pkgRaw = await readFile(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgRaw) as any;\n const exportsObj = pkg?.exports as any;\n const controllerExport = exportsObj?.['./controller'];\n const controllerJsExport = exportsObj?.['./controller.js'];\n const configureExport = exportsObj?.['./configure'];\n const printExport = exportsObj?.['./print'];\n const printJsExport = exportsObj?.['./print.js'];\n const expectedControllerSpecifier = `${pkg.name}/controller`;\n const expectedConfigureSpecifier = `${pkg.name}/configure`;\n const expectedShim = \"export * from './dist/controller/index.js';\\n\";\n\n const errors: string[] = [];\n const warnings: string[] = [];\n const files = Array.isArray(pkg.files) ? pkg.files : [];\n\n if (hasController) {\n if (pkg?.pie?.controller !== expectedControllerSpecifier) {\n errors.push(`package.json pie.controller must be \"${expectedControllerSpecifier}\"`);\n }\n if (!files.includes('controller.js')) {\n errors.push('package.json files[] must include \"controller.js\"');\n }\n }\n if (hasAuthorOrConfigure) {\n if (pkg?.pie?.configure !== expectedConfigureSpecifier) {\n errors.push(`package.json pie.configure must be \"${expectedConfigureSpecifier}\"`);\n }\n if (!configureExport) {\n errors.push('Missing exports[\"./configure\"] in package.json');\n }\n if (!files.includes('configure.js')) {\n errors.push('package.json files[] must include \"configure.js\"');\n }\n }\n\n if (hasController && !controllerExport) {\n errors.push('Missing exports[\"./controller\"] in package.json');\n } else if (controllerExport) {\n const jsPath = controllerExport?.default as string | undefined;\n const dtsPath = controllerExport?.types as string | undefined;\n\n if (!jsPath || typeof jsPath !== 'string') {\n errors.push('exports[\"./controller\"].default is missing');\n } else {\n const abs = join(elementDir, jsPath.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n errors.push(`Controller JS artifact missing: ${jsPath}`);\n }\n }\n\n if (!dtsPath || typeof dtsPath !== 'string') {\n warnings.push('exports[\"./controller\"].types is missing');\n } else {\n const abs = join(elementDir, dtsPath.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n warnings.push(`Controller d.ts artifact missing: ${dtsPath}`);\n }\n }\n }\n\n if (hasController && !controllerJsExport) {\n errors.push('Missing exports[\"./controller.js\"] in package.json');\n } else if (controllerJsExport) {\n const jsPath = controllerJsExport?.default as string | undefined;\n const dtsPath = controllerJsExport?.types as string | undefined;\n if (controllerExport && jsPath !== controllerExport?.default) {\n errors.push('exports[\"./controller.js\"].default must match exports[\"./controller\"].default');\n }\n if (controllerExport && dtsPath !== controllerExport?.types) {\n errors.push('exports[\"./controller.js\"].types must match exports[\"./controller\"].types');\n }\n }\n\n if (configureExport) {\n const configureTarget = configureExport?.default as string | undefined;\n if (!configureTarget || typeof configureTarget !== 'string') {\n errors.push('exports[\"./configure\"].default is missing');\n } else {\n const abs = join(elementDir, configureTarget.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n errors.push(`Configure JS artifact missing: ${configureTarget}`);\n }\n const configureShimPath = join(elementDir, 'configure.js');\n const expectedConfigureShim = `export { default } from '${configureTarget}';\\nexport * from '${configureTarget}';\\n`;\n if (!existsSync(configureShimPath)) {\n errors.push('Missing root configure.js compatibility shim');\n } else {\n const configureShim = await readFile(configureShimPath, 'utf-8');\n if (configureShim !== expectedConfigureShim) {\n errors.push(`Root configure.js shim must re-export ${configureTarget}`);\n }\n }\n }\n }\n\n // Print is checked on the same terms as controller and configure: the root shim is a\n // publish contract, because a directory-aliasing bundler resolves `<pkg>/print` to it\n // rather than through the exports map.\n if (hasPrint) {\n if (!files.includes('print.js')) {\n errors.push('package.json files[] must include \"print.js\"');\n }\n if (!printExport) {\n errors.push('Missing exports[\"./print\"] in package.json');\n }\n if (!printJsExport) {\n errors.push('Missing exports[\"./print.js\"] in package.json');\n } else if (printExport) {\n if (printJsExport?.default !== printExport?.default) {\n errors.push('exports[\"./print.js\"].default must match exports[\"./print\"].default');\n }\n if (printJsExport?.types !== printExport?.types) {\n errors.push('exports[\"./print.js\"].types must match exports[\"./print\"].types');\n }\n }\n\n const printTarget = (printExport?.default as string | undefined) ?? './dist/print/index.js';\n const printArtifact = join(elementDir, printTarget.replace(/^\\.\\//, ''));\n if (!existsSync(printArtifact)) {\n errors.push(`Print JS artifact missing: ${printTarget}`);\n }\n\n const printShimPath = join(elementDir, 'print.js');\n const expectedPrintShim = `export { default } from '${printTarget}';\\nexport * from '${printTarget}';\\n`;\n if (!existsSync(printShimPath)) {\n errors.push('Missing root print.js compatibility shim');\n } else {\n const printShim = await readFile(printShimPath, 'utf-8');\n if (printShim !== expectedPrintShim) {\n errors.push(`Root print.js shim must re-export ${printTarget}`);\n }\n }\n }\n\n if (hasController) {\n const shimPath = join(elementDir, 'controller.js');\n if (!existsSync(shimPath)) {\n errors.push('Missing root controller.js compatibility shim');\n } else {\n const shim = await readFile(shimPath, 'utf-8');\n if (shim !== expectedShim) {\n errors.push('Root controller.js shim must re-export ./dist/controller/index.js');\n }\n }\n }\n\n return { element, elementDir, ok: errors.length === 0, errors, warnings };\n}\n\nexport default class VerifyControllers extends Command {\n static override description =\n 'Verify that element packages will publish controller modules correctly (exports + dist artifacts)';\n\n static override examples = [\n 'bun run cli <%= command.id %>',\n 'bun cli <%= command.id %>',\n '<%= config.bin %> <%= command.id %>',\n ];\n\n static override flags = {\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show detailed output',\n default: false,\n }),\n element: Flags.string({\n description: 'Check only specified element (react or svelte package name)',\n }),\n };\n\n private logger = new Logger();\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(VerifyControllers);\n this.logger = new Logger(flags.verbose);\n\n this.logger.section('🧩 Verifying published controller modules');\n\n const excludedElements = new Set<string>(EXCLUDED_UPSTREAM_ELEMENTS as readonly string[]);\n\n const reactItems = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });\n const reactNames = reactItems\n .filter((d) => d.isDirectory())\n .map((d) => d.name)\n .filter((name) => !excludedElements.has(name));\n\n const svelteItems = await readdir(ELEMENTS_SVELTE_DIR, { withFileTypes: true });\n const svelteNames = svelteItems.filter((d) => d.isDirectory()).map((d) => d.name);\n\n type Job = { name: string; dir: string };\n let jobs: Job[] = [];\n\n if (flags.element) {\n const r = join(ELEMENTS_REACT_DIR, flags.element);\n const s = join(ELEMENTS_SVELTE_DIR, flags.element);\n if (reactNames.includes(flags.element) && existsSync(join(r, 'package.json'))) {\n jobs = [{ name: flags.element, dir: r }];\n } else if (svelteNames.includes(flags.element) && existsSync(join(s, 'package.json'))) {\n jobs = [{ name: flags.element, dir: s }];\n } else {\n this.error(\n `Element '${flags.element}' not found under ${ELEMENTS_REACT_DIR} or ${ELEMENTS_SVELTE_DIR}`\n );\n }\n } else {\n jobs = [\n ...reactNames.sort().map((name) => ({ name, dir: join(ELEMENTS_REACT_DIR, name) })),\n ...svelteNames.sort().map((name) => ({ name, dir: join(ELEMENTS_SVELTE_DIR, name) })),\n ];\n }\n\n const results: CheckResult[] = [];\n for (const { name, dir } of jobs) {\n results.push(await verifyControllerPackage(dir, name));\n }\n\n const failed = results.filter((r) => !r.ok);\n const warned = results.filter((r) => r.warnings.length > 0);\n const checked = results.filter((r) => hasAnyControllerSource(r.elementDir));\n\n this.log(`\\n${'='.repeat(60)}`);\n this.log('📊 CONTROLLER PUBLISH VERIFICATION REPORT');\n this.log('='.repeat(60));\n this.log(`Elements scanned: ${results.length}`);\n this.log(`Elements with controllers: ${checked.length}`);\n this.log(`Passed: ${results.length - failed.length} ✅`);\n this.log(`Failed: ${failed.length} ❌`);\n this.log(`Warnings: ${warned.length} ⚠️`);\n\n if (failed.length > 0) {\n this.log('\\n❌ FAILURES:');\n for (const f of failed) {\n this.log(` - ${f.element}`);\n for (const e of f.errors) this.log(` • ${e}`);\n }\n this.log('\\n💡 Fixes:');\n this.log(' - Ensure package.json exports include \"./controller\" and \"./controller.js\"');\n this.log(' - Ensure package.json pie.controller is \"@pie-element/<element>/controller\"');\n this.log(' - Ensure package.json files[] includes \"controller.js\"');\n this.log(' - Ensure root controller.js re-exports \"./dist/controller/index.js\"');\n this.log(' - Ensure print-bearing elements publish \"print.js\" and export \"./print.js\"');\n this.log(' - Ensure build outputs exist under dist/controller/');\n this.log(` - Rebuild: cd ${ELEMENTS_REACT_DIR}/<element> && bun run build`);\n this.log(` - Or: cd ${ELEMENTS_SVELTE_DIR}/<element> && bun run build`);\n this.error('Some controller publish checks failed', { exit: 1 });\n }\n\n if (warned.length > 0) {\n this.log('\\n⚠️ WARNINGS (non-blocking):');\n for (const w of warned) {\n this.log(` - ${w.element}`);\n for (const msg of w.warnings) this.log(` • ${msg}`);\n }\n }\n\n this.log(`\\n${'='.repeat(60)}\\n`);\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class VerifyDependencyIntegrity extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
package: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
'include-non-package-workspaces': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
'check-peer-gaps': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
fix: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
'fail-on-hoist': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
'fail-on-peer': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
private logger;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
private printIssueGroup;
|
|
17
|
+
private toRepoRelative;
|
|
18
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { analyzePackageDependencyIntegrity, autoFixWorkspaceDependencyDeclarations, collectWorkspacePackageDirs, } from '../../utils/dependency-integrity.js';
|
|
3
|
+
import { Logger } from '../../utils/logger.js';
|
|
4
|
+
export default class VerifyDependencyIntegrity extends Command {
|
|
5
|
+
static description = 'Inspect package imports and classify transitive, hoist-reliant, broken, and missing peer dependency resolution';
|
|
6
|
+
static examples = [
|
|
7
|
+
'<%= config.bin %> <%= command.id %>',
|
|
8
|
+
'<%= config.bin %> <%= command.id %> --package @pie-element/ebsr',
|
|
9
|
+
'<%= config.bin %> <%= command.id %> --fail-on-hoist',
|
|
10
|
+
];
|
|
11
|
+
static flags = {
|
|
12
|
+
verbose: Flags.boolean({
|
|
13
|
+
char: 'v',
|
|
14
|
+
description: 'Show detailed output',
|
|
15
|
+
default: false,
|
|
16
|
+
}),
|
|
17
|
+
package: Flags.string({
|
|
18
|
+
description: 'Limit analysis to one package name (eg @pie-element/ebsr)',
|
|
19
|
+
}),
|
|
20
|
+
'include-non-package-workspaces': Flags.boolean({
|
|
21
|
+
description: 'Also analyze app/tool workspaces (can surface many existing issues outside package code)',
|
|
22
|
+
default: false,
|
|
23
|
+
}),
|
|
24
|
+
'check-peer-gaps': Flags.boolean({
|
|
25
|
+
description: 'Also validate missing required peer dependencies from declared direct dependencies',
|
|
26
|
+
default: false,
|
|
27
|
+
}),
|
|
28
|
+
fix: Flags.boolean({
|
|
29
|
+
description: 'Auto-add missing direct dependencies for hoist/broken issues before reporting',
|
|
30
|
+
default: false,
|
|
31
|
+
}),
|
|
32
|
+
'fail-on-hoist': Flags.boolean({
|
|
33
|
+
description: 'Exit non-zero when hoist-reliant imports are found',
|
|
34
|
+
default: true,
|
|
35
|
+
}),
|
|
36
|
+
'fail-on-peer': Flags.boolean({
|
|
37
|
+
description: 'Exit non-zero when required peer dependencies are not declared directly',
|
|
38
|
+
default: false,
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
logger = new Logger();
|
|
42
|
+
async run() {
|
|
43
|
+
const { flags } = await this.parse(VerifyDependencyIntegrity);
|
|
44
|
+
this.logger = new Logger(flags.verbose);
|
|
45
|
+
this.logger.section('🔍 Verifying dependency integrity');
|
|
46
|
+
const repoRoot = process.cwd();
|
|
47
|
+
if (flags.fix) {
|
|
48
|
+
this.logger.info('Applying dependency declaration autofixes...');
|
|
49
|
+
const fixResult = await autoFixWorkspaceDependencyDeclarations(repoRoot, {
|
|
50
|
+
includeNonPackageWorkspaces: flags['include-non-package-workspaces'],
|
|
51
|
+
packageName: flags.package,
|
|
52
|
+
includePeerGaps: flags['check-peer-gaps'],
|
|
53
|
+
});
|
|
54
|
+
this.logger.info(` Scanned: ${fixResult.packagesScanned}, Updated: ${fixResult.packagesUpdated}, Added: ${fixResult.dependenciesAdded}`);
|
|
55
|
+
if (fixResult.unresolved.length > 0) {
|
|
56
|
+
this.logger.warn(` Unresolved: ${fixResult.unresolved.length}`);
|
|
57
|
+
for (const unresolved of fixResult.unresolved) {
|
|
58
|
+
this.logger.warn(` - ${unresolved.packageName}: ${unresolved.dependency}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
this.log('');
|
|
62
|
+
}
|
|
63
|
+
const pkgDirs = await collectWorkspacePackageDirs(repoRoot, {
|
|
64
|
+
includeNonPackageWorkspaces: flags['include-non-package-workspaces'],
|
|
65
|
+
});
|
|
66
|
+
const results = [];
|
|
67
|
+
for (const pkgDir of pkgDirs) {
|
|
68
|
+
const analysis = await analyzePackageDependencyIntegrity(pkgDir, {
|
|
69
|
+
includePeerGaps: flags['check-peer-gaps'],
|
|
70
|
+
});
|
|
71
|
+
if (!analysis)
|
|
72
|
+
continue;
|
|
73
|
+
if (flags.package && analysis.packageName !== flags.package)
|
|
74
|
+
continue;
|
|
75
|
+
results.push(analysis);
|
|
76
|
+
}
|
|
77
|
+
if (results.length === 0) {
|
|
78
|
+
this.error(flags.package
|
|
79
|
+
? `Package '${flags.package}' not found in configured workspaces`
|
|
80
|
+
: 'No packages found to inspect', { exit: 1 });
|
|
81
|
+
}
|
|
82
|
+
const allIssues = [];
|
|
83
|
+
for (const result of results) {
|
|
84
|
+
for (const issue of result.issues) {
|
|
85
|
+
allIssues.push({
|
|
86
|
+
packageName: result.packageName,
|
|
87
|
+
issue,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const byStatus = {
|
|
92
|
+
transitive: allIssues.filter((r) => r.issue.status === 'transitive'),
|
|
93
|
+
hoist: allIssues.filter((r) => r.issue.status === 'hoist'),
|
|
94
|
+
broken: allIssues.filter((r) => r.issue.status === 'broken'),
|
|
95
|
+
peer: allIssues.filter((r) => r.issue.status === 'peer'),
|
|
96
|
+
};
|
|
97
|
+
this.log(`Packages scanned: ${results.length}`);
|
|
98
|
+
this.log(`Transitive leaks: ${byStatus.transitive.length}`);
|
|
99
|
+
this.log(`Hoist-reliant: ${byStatus.hoist.length}`);
|
|
100
|
+
this.log(`Broken: ${byStatus.broken.length}\n`);
|
|
101
|
+
if (flags['check-peer-gaps']) {
|
|
102
|
+
this.log(`Peer gaps: ${byStatus.peer.length}\n`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.log('');
|
|
106
|
+
}
|
|
107
|
+
this.printIssueGroup('❌ Broken imports', byStatus.broken);
|
|
108
|
+
if (flags['check-peer-gaps']) {
|
|
109
|
+
this.printIssueGroup('⚠️ Missing required peer dependencies', byStatus.peer);
|
|
110
|
+
}
|
|
111
|
+
this.printIssueGroup('⚠️ Hoist-reliant imports', byStatus.hoist);
|
|
112
|
+
this.printIssueGroup('ℹ️ Transitive imports (currently resolvable)', byStatus.transitive);
|
|
113
|
+
const shouldFail = byStatus.broken.length > 0 ||
|
|
114
|
+
(flags['fail-on-hoist'] && byStatus.hoist.length > 0) ||
|
|
115
|
+
(flags['fail-on-peer'] && byStatus.peer.length > 0);
|
|
116
|
+
if (shouldFail) {
|
|
117
|
+
const failReason = byStatus.broken.length > 0
|
|
118
|
+
? 'Broken imports found'
|
|
119
|
+
: byStatus.hoist.length > 0 && flags['fail-on-hoist']
|
|
120
|
+
? 'Hoist-reliant imports found (--fail-on-hoist)'
|
|
121
|
+
: 'Missing required peer dependencies found (--fail-on-peer)';
|
|
122
|
+
this.error(failReason, { exit: 1 });
|
|
123
|
+
}
|
|
124
|
+
this.logger.success('Dependency integrity check complete');
|
|
125
|
+
}
|
|
126
|
+
printIssueGroup(title, rows) {
|
|
127
|
+
if (rows.length === 0)
|
|
128
|
+
return;
|
|
129
|
+
this.log(`${title}:`);
|
|
130
|
+
for (const row of rows) {
|
|
131
|
+
const extra = row.issue.resolvedPath
|
|
132
|
+
? ` -> ${this.toRepoRelative(row.issue.resolvedPath)}`
|
|
133
|
+
: '';
|
|
134
|
+
const requiredBy = row.issue.requiredBy ? ` (required by ${row.issue.requiredBy})` : '';
|
|
135
|
+
this.log(` - ${row.packageName}: ${row.issue.dependency}${requiredBy}${extra}`);
|
|
136
|
+
}
|
|
137
|
+
this.log('');
|
|
138
|
+
}
|
|
139
|
+
toRepoRelative(absolutePath) {
|
|
140
|
+
const repoRoot = process.cwd();
|
|
141
|
+
if (absolutePath.startsWith(repoRoot)) {
|
|
142
|
+
return absolutePath.slice(repoRoot.length + 1);
|
|
143
|
+
}
|
|
144
|
+
return absolutePath;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=dependency-integrity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-integrity.js","sourceRoot":"","sources":["../../../src/commands/verify/dependency-integrity.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport {\n analyzePackageDependencyIntegrity,\n autoFixWorkspaceDependencyDeclarations,\n collectWorkspacePackageDirs,\n type ImportIntegrityIssue,\n} from '../../utils/dependency-integrity.js';\nimport { Logger } from '../../utils/logger.js';\n\ntype Row = {\n packageName: string;\n issue: ImportIntegrityIssue;\n};\n\nexport default class VerifyDependencyIntegrity extends Command {\n static override description =\n 'Inspect package imports and classify transitive, hoist-reliant, broken, and missing peer dependency resolution';\n\n static override examples = [\n '<%= config.bin %> <%= command.id %>',\n '<%= config.bin %> <%= command.id %> --package @pie-element/ebsr',\n '<%= config.bin %> <%= command.id %> --fail-on-hoist',\n ];\n\n static override flags = {\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show detailed output',\n default: false,\n }),\n package: Flags.string({\n description: 'Limit analysis to one package name (eg @pie-element/ebsr)',\n }),\n 'include-non-package-workspaces': Flags.boolean({\n description:\n 'Also analyze app/tool workspaces (can surface many existing issues outside package code)',\n default: false,\n }),\n 'check-peer-gaps': Flags.boolean({\n description:\n 'Also validate missing required peer dependencies from declared direct dependencies',\n default: false,\n }),\n fix: Flags.boolean({\n description: 'Auto-add missing direct dependencies for hoist/broken issues before reporting',\n default: false,\n }),\n 'fail-on-hoist': Flags.boolean({\n description: 'Exit non-zero when hoist-reliant imports are found',\n default: true,\n }),\n 'fail-on-peer': Flags.boolean({\n description: 'Exit non-zero when required peer dependencies are not declared directly',\n default: false,\n }),\n };\n\n private logger = new Logger();\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(VerifyDependencyIntegrity);\n this.logger = new Logger(flags.verbose);\n\n this.logger.section('🔍 Verifying dependency integrity');\n\n const repoRoot = process.cwd();\n if (flags.fix) {\n this.logger.info('Applying dependency declaration autofixes...');\n const fixResult = await autoFixWorkspaceDependencyDeclarations(repoRoot, {\n includeNonPackageWorkspaces: flags['include-non-package-workspaces'],\n packageName: flags.package,\n includePeerGaps: flags['check-peer-gaps'],\n });\n this.logger.info(\n ` Scanned: ${fixResult.packagesScanned}, Updated: ${fixResult.packagesUpdated}, Added: ${fixResult.dependenciesAdded}`\n );\n if (fixResult.unresolved.length > 0) {\n this.logger.warn(` Unresolved: ${fixResult.unresolved.length}`);\n for (const unresolved of fixResult.unresolved) {\n this.logger.warn(` - ${unresolved.packageName}: ${unresolved.dependency}`);\n }\n }\n this.log('');\n }\n\n const pkgDirs = await collectWorkspacePackageDirs(repoRoot, {\n includeNonPackageWorkspaces: flags['include-non-package-workspaces'],\n });\n const results = [];\n\n for (const pkgDir of pkgDirs) {\n const analysis = await analyzePackageDependencyIntegrity(pkgDir, {\n includePeerGaps: flags['check-peer-gaps'],\n });\n if (!analysis) continue;\n if (flags.package && analysis.packageName !== flags.package) continue;\n results.push(analysis);\n }\n\n if (results.length === 0) {\n this.error(\n flags.package\n ? `Package '${flags.package}' not found in configured workspaces`\n : 'No packages found to inspect',\n { exit: 1 }\n );\n }\n\n const allIssues: Row[] = [];\n for (const result of results) {\n for (const issue of result.issues) {\n allIssues.push({\n packageName: result.packageName,\n issue,\n });\n }\n }\n\n const byStatus = {\n transitive: allIssues.filter((r) => r.issue.status === 'transitive'),\n hoist: allIssues.filter((r) => r.issue.status === 'hoist'),\n broken: allIssues.filter((r) => r.issue.status === 'broken'),\n peer: allIssues.filter((r) => r.issue.status === 'peer'),\n };\n\n this.log(`Packages scanned: ${results.length}`);\n this.log(`Transitive leaks: ${byStatus.transitive.length}`);\n this.log(`Hoist-reliant: ${byStatus.hoist.length}`);\n this.log(`Broken: ${byStatus.broken.length}\\n`);\n if (flags['check-peer-gaps']) {\n this.log(`Peer gaps: ${byStatus.peer.length}\\n`);\n } else {\n this.log('');\n }\n\n this.printIssueGroup('❌ Broken imports', byStatus.broken);\n if (flags['check-peer-gaps']) {\n this.printIssueGroup('⚠️ Missing required peer dependencies', byStatus.peer);\n }\n this.printIssueGroup('⚠️ Hoist-reliant imports', byStatus.hoist);\n this.printIssueGroup('ℹ️ Transitive imports (currently resolvable)', byStatus.transitive);\n\n const shouldFail =\n byStatus.broken.length > 0 ||\n (flags['fail-on-hoist'] && byStatus.hoist.length > 0) ||\n (flags['fail-on-peer'] && byStatus.peer.length > 0);\n if (shouldFail) {\n const failReason =\n byStatus.broken.length > 0\n ? 'Broken imports found'\n : byStatus.hoist.length > 0 && flags['fail-on-hoist']\n ? 'Hoist-reliant imports found (--fail-on-hoist)'\n : 'Missing required peer dependencies found (--fail-on-peer)';\n this.error(failReason, { exit: 1 });\n }\n\n this.logger.success('Dependency integrity check complete');\n }\n\n private printIssueGroup(title: string, rows: Row[]): void {\n if (rows.length === 0) return;\n\n this.log(`${title}:`);\n for (const row of rows) {\n const extra = row.issue.resolvedPath\n ? ` -> ${this.toRepoRelative(row.issue.resolvedPath)}`\n : '';\n const requiredBy = row.issue.requiredBy ? ` (required by ${row.issue.requiredBy})` : '';\n this.log(` - ${row.packageName}: ${row.issue.dependency}${requiredBy}${extra}`);\n }\n this.log('');\n }\n\n private toRepoRelative(absolutePath: string): string {\n const repoRoot = process.cwd();\n if (absolutePath.startsWith(repoRoot)) {\n return absolutePath.slice(repoRoot.length + 1);\n }\n\n return absolutePath;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-build.js","sourceRoot":"","sources":["../../../src/commands/verify/react-build.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-build.js","sourceRoot":"","sources":["../../../src/commands/verify/react-build.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport { Logger } from '../../utils/logger.js';\nimport { execSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { readdir } from 'node:fs/promises';\nimport { join } from 'node:path';\n\ninterface BuildResult {\n element: string;\n success: boolean;\n error?: string;\n duration?: number;\n}\n\nconst ELEMENTS_REACT_DIR = 'packages/elements-react';\n\nexport default class ReactBuild extends Command {\n static override description = 'Verify React element builds';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show detailed build output',\n default: false,\n }),\n element: Flags.string({\n description: 'Build only specified element',\n }),\n };\n\n private logger = new Logger();\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(ReactBuild);\n\n this.logger = new Logger(flags.verbose);\n\n this.logger.section('🔨 Verifying React element builds');\n\n // Get all element directories\n const items = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });\n let elements = items.filter((item) => item.isDirectory()).map((item) => item.name);\n\n // Filter to specific element if requested\n if (flags.element) {\n if (!elements.includes(flags.element)) {\n this.error(`Element '${flags.element}' not found in ${ELEMENTS_REACT_DIR}`);\n }\n elements = [flags.element];\n }\n\n if (elements.length === 0) {\n this.logger.warn(`⚠️ No React elements found in ${ELEMENTS_REACT_DIR}/`);\n return;\n }\n\n this.logger.info(`Found ${elements.length} element(s) to verify\\n`);\n\n const results: BuildResult[] = [];\n\n // Build each element sequentially\n for (const element of elements) {\n process.stdout.write(` Building ${element}... `);\n\n const result = await this.buildElement(element, flags.verbose);\n results.push(result);\n\n if (result.success) {\n console.log(`✅ (${result.duration}ms)`);\n } else {\n console.log('❌');\n }\n }\n\n // Generate report\n this.log(`\\n${'='.repeat(60)}`);\n this.log('📊 BUILD VERIFICATION REPORT');\n this.log('='.repeat(60));\n\n const successful = results.filter((r) => r.success);\n const failed = results.filter((r) => !r.success);\n\n this.log(`Total: ${results.length}`);\n this.log(`Passed: ${successful.length} ✅`);\n this.log(`Failed: ${failed.length} ❌`);\n\n if (successful.length > 0) {\n this.log('\\n✅ SUCCESSFUL BUILDS:');\n successful.forEach((r) => {\n this.log(` - ${r.element} (${r.duration}ms)`);\n });\n }\n\n if (failed.length > 0) {\n this.log('\\n❌ FAILED BUILDS:');\n failed.forEach((r) => {\n this.log(`\\n Element: ${r.element}`);\n if (r.error) {\n // Extract first few lines of error for summary\n const errorLines = r.error.split('\\n').slice(0, 10);\n errorLines.forEach((line) => {\n if (line.trim()) {\n this.log(` ${line}`);\n }\n });\n if (r.error.split('\\n').length > 10) {\n this.log(' ... (truncated)');\n }\n }\n });\n\n this.log('\\n💡 To see full error for a specific element:');\n this.log(' cd packages/elements-react/<element-name>');\n this.log(' bun run build');\n }\n\n this.log(`\\n${'='.repeat(60)}\\n`);\n\n // Exit with error code if any builds failed\n if (failed.length > 0) {\n this.error('Some builds failed', { exit: 1 });\n }\n }\n\n private async buildElement(element: string, verbose: boolean): Promise<BuildResult> {\n const elementDir = join(ELEMENTS_REACT_DIR, element);\n const packageJsonPath = join(elementDir, 'package.json');\n\n // Skip if no package.json\n if (!existsSync(packageJsonPath)) {\n return {\n element,\n success: false,\n error: 'No package.json found',\n };\n }\n\n const startTime = Date.now();\n\n try {\n execSync('bun run build', {\n cwd: elementDir,\n stdio: verbose ? 'inherit' : 'pipe',\n encoding: 'utf-8',\n });\n\n const duration = Date.now() - startTime;\n\n return {\n element,\n success: true,\n duration,\n };\n } catch (error: unknown) {\n const duration = Date.now() - startTime;\n\n // Extract error message from stderr\n const err = error as { stderr?: Buffer; message?: string };\n const stderr = err.stderr?.toString() || err.message || 'Unknown error';\n\n return {\n element,\n success: false,\n error: stderr,\n duration,\n };\n }\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED