@esbuild-plugins/node-resolve
Advanced tools
Comparing version
# @esbuild-plugins/node-resolve | ||
## 0.0.14 | ||
### Patch Changes | ||
- 8f79800: Support for mainFields in resolveasync | ||
## 0.0.13 | ||
@@ -4,0 +10,0 @@ |
import { OnResolveResult, Plugin } from 'esbuild'; | ||
import { Opts as ResolveOpts } from 'resolve'; | ||
export declare const resolveAsync: (id: string, opts: ResolveOpts) => Promise<string | void>; | ||
declare type ResolveAsyncOpts = ResolveOpts & { | ||
mainFields?: string[]; | ||
}; | ||
export declare const resolveAsync: (id: string, opts: ResolveAsyncOpts) => Promise<string | void>; | ||
interface Options { | ||
@@ -5,0 +8,0 @@ name?: string; |
@@ -49,2 +49,13 @@ "use strict"; | ||
}; | ||
var __rest = (this && this.__rest) || function (s, e) { | ||
var t = {}; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) | ||
t[p] = s[p]; | ||
if (s != null && typeof Object.getOwnPropertySymbols === "function") | ||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { | ||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) | ||
t[p[i]] = s[p[i]]; | ||
} | ||
return t; | ||
}; | ||
var __values = (this && this.__values) || function(o) { | ||
@@ -74,9 +85,46 @@ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; | ||
var debug = require('debug')(NAME); | ||
exports.resolveAsync = util_1.promisify(resolve_1.default); | ||
var isUsingYarnPnp = false; | ||
try { | ||
require('pnpapi'); | ||
isUsingYarnPnp = true; | ||
} | ||
catch (_a) { } | ||
var resolveAsync = function (id, _a) { return __awaiter(void 0, void 0, void 0, function () { | ||
function packageFilter(packageJSON) { | ||
var e_1, _a; | ||
if (!(mainFields === null || mainFields === void 0 ? void 0 : mainFields.length)) { | ||
return packageJSON; | ||
} | ||
try { | ||
// changes the main field to be another field | ||
for (var mainFields_1 = __values(mainFields), mainFields_1_1 = mainFields_1.next(); !mainFields_1_1.done; mainFields_1_1 = mainFields_1.next()) { | ||
var mainField = mainFields_1_1.value; | ||
if (mainField === 'main') { | ||
break; | ||
} | ||
var newMain = packageJSON[mainField]; | ||
if (newMain && typeof newMain === 'string') { | ||
debug("set main to '" + mainField); | ||
packageJSON['main'] = newMain; | ||
break; | ||
} | ||
} | ||
} | ||
catch (e_1_1) { e_1 = { error: e_1_1 }; } | ||
finally { | ||
try { | ||
if (mainFields_1_1 && !mainFields_1_1.done && (_a = mainFields_1.return)) _a.call(mainFields_1); | ||
} | ||
finally { if (e_1) throw e_1.error; } | ||
} | ||
return packageJSON; | ||
} | ||
var opts, res; | ||
var mainFields = _a.mainFields, _opts = __rest(_a, ["mainFields"]); | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
opts = __assign(__assign({}, _opts), { preserveSymlinks: false, packageFilter: packageFilter }); | ||
return [4 /*yield*/, util_1.promisify(resolve_1.default)(id, opts)]; | ||
case 1: | ||
res = _b.sent(); | ||
return [2 /*return*/, res]; | ||
} | ||
}); | ||
}); }; | ||
exports.resolveAsync = resolveAsync; | ||
function NodeResolvePlugin(_a) { | ||
@@ -93,3 +141,3 @@ var onNonResolved = _a.onNonResolved, namespace = _a.namespace, extensions = _a.extensions, onResolved = _a.onResolved, resolveOptions = _a.resolveOptions, mainFields = _a.mainFields, _b = _a.name, name = _b === void 0 ? NAME : _b, isExtensionRequiredInImportPath = _a.isExtensionRequiredInImportPath, resolveSynchronously = _a.resolveSynchronously; | ||
onLoad({ filter: filter, namespace: namespace }, function (args) { return __awaiter(_this, void 0, void 0, function () { | ||
var contents, resolveDir, e_1; | ||
var contents, resolveDir, e_2; | ||
return __generator(this, function (_a) { | ||
@@ -114,3 +162,3 @@ switch (_a.label) { | ||
case 2: | ||
e_1 = _a.sent(); | ||
e_2 = _a.sent(); | ||
return [2 /*return*/, null]; | ||
@@ -123,32 +171,3 @@ case 3: return [2 /*return*/]; | ||
return __awaiter(this, void 0, void 0, function () { | ||
function packageFilter(packageJSON) { | ||
var e_3, _a; | ||
if (!(mainFields === null || mainFields === void 0 ? void 0 : mainFields.length)) { | ||
return packageJSON; | ||
} | ||
try { | ||
// changes the main field to be another field | ||
for (var mainFields_1 = __values(mainFields), mainFields_1_1 = mainFields_1.next(); !mainFields_1_1.done; mainFields_1_1 = mainFields_1.next()) { | ||
var mainField = mainFields_1_1.value; | ||
if (mainField === 'main') { | ||
break; | ||
} | ||
var newMain = packageJSON[mainField]; | ||
if (newMain && typeof newMain === 'string') { | ||
debug("set main to '" + mainField); | ||
packageJSON['main'] = newMain; | ||
break; | ||
} | ||
} | ||
} | ||
catch (e_3_1) { e_3 = { error: e_3_1 }; } | ||
finally { | ||
try { | ||
if (mainFields_1_1 && !mainFields_1_1.done && (_a = mainFields_1.return)) _a.call(mainFields_1); | ||
} | ||
finally { if (e_3) throw e_3.error; } | ||
} | ||
return packageJSON; | ||
} | ||
var resolved, options, _a, e_2, res, res; | ||
var resolved, options, _a, e_3, res, res; | ||
return __generator(this, function (_b) { | ||
@@ -165,3 +184,3 @@ switch (_b.label) { | ||
options = __assign({ basedir: args.resolveDir, preserveSymlinks: false, extensions: extensions, | ||
packageFilter: packageFilter }, resolveOptions); | ||
mainFields: mainFields }, resolveOptions); | ||
if (!resolveSynchronously) return [3 /*break*/, 2]; | ||
@@ -178,3 +197,3 @@ _a = resolve_1.default.sync(args.path, options); | ||
case 5: | ||
e_2 = _b.sent(); | ||
e_3 = _b.sent(); | ||
debug("not resolved " + args.path); | ||
@@ -181,0 +200,0 @@ if (!onNonResolved) return [3 /*break*/, 7]; |
{ | ||
"name": "@esbuild-plugins/node-resolve", | ||
"version": "0.0.13", | ||
"version": "0.0.14", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -12,6 +12,34 @@ import { OnResolveArgs, OnResolveResult, Plugin } from 'esbuild' | ||
type ResolveAsyncOpts = ResolveOpts & { mainFields?: string[] } | ||
export const resolveAsync: ( | ||
id: string, | ||
opts: ResolveOpts, | ||
) => Promise<string | void> = promisify(resolve as any) | ||
opts: ResolveAsyncOpts, | ||
) => Promise<string | void> = async (id, { mainFields, ..._opts }) => { | ||
function packageFilter(packageJSON) { | ||
if (!mainFields?.length) { | ||
return packageJSON | ||
} | ||
// changes the main field to be another field | ||
for (let mainField of mainFields) { | ||
if (mainField === 'main') { | ||
break | ||
} | ||
const newMain = packageJSON[mainField] | ||
if (newMain && typeof newMain === 'string') { | ||
debug(`set main to '${mainField}`) | ||
packageJSON['main'] = newMain | ||
break | ||
} | ||
} | ||
return packageJSON | ||
} | ||
const opts: ResolveOpts = { | ||
..._opts, | ||
preserveSymlinks: false, | ||
packageFilter, | ||
} | ||
const res = await promisify(resolve as any)(id, opts) | ||
return res | ||
} | ||
@@ -38,9 +66,2 @@ interface Options { | ||
let isUsingYarnPnp = false | ||
try { | ||
require('pnpapi') | ||
isUsingYarnPnp = true | ||
} catch {} | ||
export function NodeResolvePlugin({ | ||
@@ -90,27 +111,10 @@ onNonResolved, | ||
} | ||
function packageFilter(packageJSON) { | ||
if (!mainFields?.length) { | ||
return packageJSON | ||
} | ||
// changes the main field to be another field | ||
for (let mainField of mainFields) { | ||
if (mainField === 'main') { | ||
break | ||
} | ||
const newMain = packageJSON[mainField] | ||
if (newMain && typeof newMain === 'string') { | ||
debug(`set main to '${mainField}`) | ||
packageJSON['main'] = newMain | ||
break | ||
} | ||
} | ||
return packageJSON | ||
} | ||
let resolved | ||
try { | ||
const options: ResolveOpts = { | ||
const options: ResolveAsyncOpts = { | ||
basedir: args.resolveDir, | ||
preserveSymlinks: false, | ||
extensions, | ||
packageFilter, | ||
mainFields, | ||
...resolveOptions, | ||
@@ -117,0 +121,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
68040
1.17%1145
2.32%