Skip to content

Commit 1c10a1a

Browse files
committed
fix: stabilize pro scaffolder import [Story 122.3]
1 parent ffe910f commit 1c10a1a

4 files changed

Lines changed: 12 additions & 12 deletions

File tree

.aiox-core/core/pro/pro-updater.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@
1717
const path = require('path');
1818
const fs = require('fs');
1919
const https = require('https');
20+
const { createRequire } = require('module');
2021
const semver = require('semver');
2122
const { execSync } = require('child_process');
2223

2324
const PRO_PACKAGES = ['@aiox-fullstack/pro', '@aios-fullstack/pro'];
2425
const CORE_PACKAGES = ['@synkra/aiox-core', 'aiox-core'];
2526
const DEPENDENCY_FIELDS = ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies'];
2627
const CORE_PACKAGE_ROOT = path.resolve(__dirname, '..', '..', '..');
27-
const INSTALLER_PACKAGE_ROOT = path.join(CORE_PACKAGE_ROOT, 'packages', 'installer');
28+
const CORE_PACKAGE_REQUIRE = createRequire(path.join(CORE_PACKAGE_ROOT, 'package.json'));
29+
const INSTALLER_SCAFFOLDER_EXPORT = 'aiox-core/installer/pro-scaffolder';
2830

2931
/**
3032
* Detect which package manager the project uses.
@@ -233,13 +235,7 @@ function satisfiesPeer(installed, range) {
233235
}
234236

235237
function loadInstallerScaffolder() {
236-
const installerPackageJson = path.join(INSTALLER_PACKAGE_ROOT, 'package.json');
237-
if (!fs.existsSync(installerPackageJson)) {
238-
throw new Error(`AIOX installer package not found at ${installerPackageJson}`);
239-
}
240-
241-
const scaffolderPath = path.join(INSTALLER_PACKAGE_ROOT, 'src', 'pro', 'pro-scaffolder');
242-
return require(scaffolderPath);
238+
return CORE_PACKAGE_REQUIRE(INSTALLER_SCAFFOLDER_EXPORT);
243239
}
244240

245241
async function applyScaffoldStep(projectRoot, proPath, result, onProgress, errorMessage) {

.aiox-core/install-manifest.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
# - File types for categorization
99
#
1010
version: 5.0.3
11-
generated_at: "2026-04-11T00:43:45.131Z"
11+
generated_at: "2026-04-11T00:48:43.533Z"
1212
generator: scripts/generate-install-manifest.js
1313
file_count: 1091
1414
files:
@@ -969,9 +969,9 @@ files:
969969
type: core
970970
size: 7193
971971
- path: core/pro/pro-updater.js
972-
hash: sha256:feddcf498a0299a14af91f98d4db8946bed5650cdc4356963a29a222b56de22e
972+
hash: sha256:dd6add27c415a7a869267a06b5ca9de0fe632f2855385f6552a0ebba784b13f7
973973
type: core
974-
size: 17565
974+
size: 17405
975975
- path: core/quality-gates/base-layer.js
976976
hash: sha256:9a9a3921da08176b0bd44f338a59abc1f5107f3b1ee56571e840bf4e8ed233f4
977977
type: core

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@
4343
"README.md",
4444
"LICENSE"
4545
],
46+
"exports": {
47+
"./installer/pro-scaffolder": "./packages/installer/src/pro/pro-scaffolder.js",
48+
"./package.json": "./package.json"
49+
},
4650
"scripts": {
4751
"format": "prettier --write \"**/*.md\"",
4852
"test": "jest",

tests/pro/pro-updater.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ describe('pro-updater', () => {
205205
const projectRoot = '/tmp/aiox-project';
206206
const installedPackageJson = path.join(projectRoot, 'node_modules', '@aiox-fullstack', 'pro', 'package.json');
207207
const versionJsonPath = path.join(projectRoot, '.aiox-core', 'version.json');
208-
const scaffolderPath = require.resolve('../../packages/installer/src/pro/pro-scaffolder');
208+
const scaffolderPath = 'aiox-core/installer/pro-scaffolder';
209209

210210
fs.statSync.mockReturnValue({ isDirectory: () => true });
211211
fs.existsSync.mockImplementation((targetPath) => (

0 commit comments

Comments
 (0)