@o-lang/olang 1.0.18 → 1.0.20
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/cli.js +28 -7
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -90,27 +90,48 @@ function createResolverChain(resolvers, verbose = false) {
|
|
|
90
90
|
* Load a single resolver — NO fallback to defaultMockResolver
|
|
91
91
|
*/
|
|
92
92
|
function loadSingleResolver(specifier) {
|
|
93
|
-
// ❌ Remove fallback: do NOT return defaultMockResolver
|
|
94
93
|
if (!specifier) {
|
|
95
94
|
throw new Error('Empty resolver specifier provided');
|
|
96
95
|
}
|
|
96
|
+
|
|
97
|
+
let resolver, pkgName;
|
|
98
|
+
|
|
99
|
+
// Extract clean package name (e.g., @o-lang/extractor → extractor)
|
|
100
|
+
if (specifier.startsWith('./') || specifier.startsWith('../') || specifier.startsWith('/')) {
|
|
101
|
+
// Local file: use filename without extension
|
|
102
|
+
pkgName = path.basename(specifier, path.extname(specifier));
|
|
103
|
+
} else {
|
|
104
|
+
// npm package: strip scope (e.g., @o-lang/extractor → extractor)
|
|
105
|
+
pkgName = specifier.replace(/^@[^/]+\//, '');
|
|
106
|
+
}
|
|
107
|
+
|
|
97
108
|
try {
|
|
98
|
-
|
|
99
|
-
if (typeof resolver !== 'function') throw new Error(`Resolver must export a function`);
|
|
100
|
-
console.log(` 📦 Loaded resolver: ${specifier}`);
|
|
101
|
-
return resolver;
|
|
109
|
+
resolver = require(specifier);
|
|
102
110
|
} catch (e1) {
|
|
103
111
|
try {
|
|
104
112
|
const absolutePath = path.resolve(process.cwd(), specifier);
|
|
105
|
-
|
|
113
|
+
resolver = require(absolutePath);
|
|
106
114
|
console.log(` 📁 Loaded resolver: ${absolutePath}`);
|
|
107
|
-
return resolver;
|
|
108
115
|
} catch (e2) {
|
|
109
116
|
throw new Error(
|
|
110
117
|
`Failed to load resolver '${specifier}':\n npm: ${e1.message}\n file: ${e2.message}`
|
|
111
118
|
);
|
|
112
119
|
}
|
|
113
120
|
}
|
|
121
|
+
|
|
122
|
+
if (typeof resolver !== 'function') {
|
|
123
|
+
throw new Error(`Resolver must export a function`);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// ✅ Auto-assign resolverName from package/filename if missing
|
|
127
|
+
if (!resolver.resolverName || typeof resolver.resolverName !== 'string') {
|
|
128
|
+
resolver.resolverName = pkgName;
|
|
129
|
+
console.log(` 🏷️ Auto-assigned resolverName: "${pkgName}" (from ${specifier})`);
|
|
130
|
+
} else {
|
|
131
|
+
console.log(` 📦 Loaded resolver: ${specifier} (name: ${resolver.resolverName})`);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return resolver;
|
|
114
135
|
}
|
|
115
136
|
|
|
116
137
|
/**
|
package/package.json
CHANGED