Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,15 @@ module.exports = {
rules: {
// disabling sort keys for now so we can get the rest of the linting shored up
'sort-keys': 'off',
'typescript-sort-keys/interface': 'off'
'typescript-sort-keys/interface': 'off',
'import/extensions': 'off',
'import/no-unresolved': 'off'
},
overrides: [
{
files: ['**/fixtures/**'],
rules: {
'no-console': 'off',
'import/extensions': 'off',
'import/no-unresolved': 'off'
}
},
{
files: ['**/test/**'],
rules: {
'import/extensions': 'off'
'no-console': 'off'
}
}
]
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ coverage.lcov
.idea
.rollup.cache

!packages/*/test/**/node_modules
!packages/node-resolve/test/fixtures/**/node_modules
!packages/commonjs/test/**/node_modules
!packages/typescript/test/fixtures/**/node_modules
Expand Down
23 changes: 13 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
"private": true,
"scripts": {
"ci:coverage:submit": "node scripts/codecov",
"fix:js": "eslint --cache packages scripts shared util --ext .js,.ts --fix",
"fix:js": "eslint --cache packages scripts shared util --ext .js,.ts,.mjs --fix",
"lint": "pnpm lint:docs && pnpm --no-bail lint:json && pnpm lint:package && pnpm lint:js",
"lint:docs": "prettier --write .github/**/*.md **/README.md **/CHANGELOG.md",
"lint:js": "eslint --cache packages scripts shared util --ext .js,.ts",
"lint:js": "eslint --cache packages scripts shared util --ext .js,.ts,.mjs",
"lint:json": "prettier --write .github/**/*.yml **/tsconfig.json tsconfig.*.json pnpm-workspace.yaml",
"lint:package": "prettier --write **/package.json",
"plugin:release": "ts-node ./scripts/release.ts",
Expand All @@ -18,32 +18,35 @@
},
"devDependencies": {
"@ava/babel": "2.0.0",
"@rollup/plugin-typescript": "^8.5.0",
"@types/conventional-commits-parser": "^3.0.2",
"@types/node": "14.18.30",
"@types/semver": "^7.3.7",
"@types/source-map-support": "^0.5.4",
"@types/yargs-parser": "^20.2.1",
"@typescript-eslint/eslint-plugin": "^4.9.0",
"@typescript-eslint/parser": "^4.9.0",
"ava": "^3.15.0",
"@typescript-eslint/eslint-plugin": "^5.38.0",
"@typescript-eslint/parser": "^5.38.0",
"ava": "^4.3.3",
"chalk": "^4.1.0",
"codecov-lite": "2.0.0",
"conventional-commits-parser": "^3.2.1",
"del-cli": "4.0.0",
"eslint-config-rollup": "^2.0.4",
"del-cli": "^5.0.0",
"eslint": "^8.24.0",
"eslint-config-rollup": "^3.0.0",
"esm": "^3.2.25",
"execa": "^5.1.1",
"globby": "^11.0.1",
"husky": "8.0.1",
"lint-staged": "11.0.1",
"nyc": "^15.1.0",
"pnpm": "^7.12.2",
"prettier": "^2.2.1",
"prettier": "^2.7.1",
"prettier-plugin-package": "^1.3.0",
"semver": "^7.3.2",
"source-map-support": "^0.5.19",
"source-map-support": "^0.5.21",
"ts-node": "10.9.1",
"tsconfig-paths": "^3.9.0",
"typescript": "4.8.3",
"typescript": "^4.8.3",
"write-pkg": "^4.0.0",
"yaml": "^1.10.0",
"yargs-parser": "^20.2.9"
Expand Down
11 changes: 1 addition & 10 deletions packages/alias/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,20 +54,11 @@
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-typescript": "^5.0.2",
"del-cli": "^3.0.1",
"rollup": "^2.67.3",
"rollup": "2.67.3",
"typescript": "^4.1.2"
},
"types": "types/index.d.ts",
"ava": {
"babel": {
"compileEnhancements": false
},
"extensions": [
"ts"
],
"require": [
"ts-node/register"
],
"files": [
"!**/fixtures/**",
"!**/output/**",
Expand Down
1 change: 1 addition & 0 deletions packages/alias/test/node_modules/current-package

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 48 additions & 9 deletions packages/alias/test/test.js → packages/alias/test/test.mjs
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import path, { posix } from 'path';
import { fileURLToPath } from 'url';
import { createRequire } from 'module';

import test from 'ava';
import { rollup } from 'rollup';

// eslint-disable-next-line import/no-unresolved, import/extensions
import nodeResolvePlugin from '@rollup/plugin-node-resolve';

import alias from '../dist';
import alias from 'current-package';

const normalizePath = (pathToNormalize) => pathToNormalize;
const DIRNAME = normalizePath(__dirname);
const DIRNAME = fileURLToPath(new URL('.', import.meta.url));

/**
* Helper function to test configuration with Rollup
Expand Down Expand Up @@ -197,9 +196,7 @@ test('Windows absolute path aliasing', (t) =>
importer: posix.resolve(DIRNAME, './fixtures/index.js')
}
]
).then((result) =>
t.deepEqual(result, [normalizePath('E:\\react\\node_modules\\fbjs\\lib\\warning')])
));
).then((result) => t.deepEqual(result, ['E:\\react\\node_modules\\fbjs\\lib\\warning'])));

/**
* Helper function to get moduleIDs from final Rollup bundle
Expand All @@ -211,7 +208,7 @@ const getModuleIdsFromBundle = (bundle) => {
return Promise.resolve(bundle.modules.map((module) => module.id));
}
return bundle
.generate({ format: 'esm' })
.generate({ format: 'es' })
.then((generated) => {
if (generated.output) {
return generated.output.length
Expand Down Expand Up @@ -565,3 +562,45 @@ test('CustomResolver plugin-like object with buildStart', (t) => {
})
);
});

test('Works as CJS plugin', async (t) => {
const require = createRequire(import.meta.url);
const aliasCjs = require('current-package');
const bundle = await rollup({
input: './test/fixtures/index.js',
plugins: [
aliasCjs({
entries: [
{ find: 'fancyNumber', replacement: './aliasMe' },
{
find: './anotherFancyNumber',
replacement: './localAliasMe'
},
{ find: 'numberFolder', replacement: './folder' },
{
find: './numberFolder',
replacement: './folder'
}
]
})
]
});
const moduleIds = await getModuleIdsFromBundle(bundle);
const normalizedIds = moduleIds.map((id) => path.resolve(id)).sort();
t.is(normalizedIds.length, 5);
[
'/fixtures/aliasMe.js',
'/fixtures/folder/anotherNumber.js',
'/fixtures/index.js',
'/fixtures/localAliasMe.js',
'/fixtures/nonAliased.js'
]
.map((id) => path.normalize(id))
.forEach((expectedId, index) =>
t.is(
normalizedIds[index].endsWith(expectedId),
true,
`expected ${normalizedIds[index]} to end with ${expectedId}`
)
);
});
12 changes: 2 additions & 10 deletions packages/buble/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,11 @@
"del-cli": "^3.0.1",
"rollup": "^2.67.3",
"source-map": "^0.7.3",
"typescript": "^4.1.2"
"typescript": "4.1.2"
},
"types": "types/index.d.ts",
"ava": {
"babel": {
"compileEnhancements": false
},
"extensions": [
"ts"
],
"require": [
"ts-node/register"
],
"workerThreads": false,
"files": [
"!**/fixtures/**",
"!**/output/**",
Expand Down
2 changes: 1 addition & 1 deletion packages/buble/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default function buble(options: RollupBubleOptions = {}): Plugin {

try {
return transform(code, transformOptions);
} catch (e) {
} catch (e: any) {
e.plugin = 'buble';
if (!e.loc) e.loc = {};
e.loc.file = id;
Expand Down
4 changes: 1 addition & 3 deletions packages/commonjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,7 @@
},
"types": "types/index.d.ts",
"ava": {
"babel": {
"compileEnhancements": false
},
"workerThreads": false,
"files": [
"!**/fixtures/**",
"!**/helpers/**",
Expand Down
109 changes: 53 additions & 56 deletions packages/commonjs/src/resolve-require-sources.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,9 @@ export function getRequireResolver(extensions, detectCyclesAndConditional, curre
if (isWrappedId(resolved.id, ES_IMPORT_SUFFIX)) {
return (
(await getTypeForImportedModule(
(await this.load({ id: resolved.id })).meta.commonjs.resolved,
(
await this.load({ id: resolved.id })
).meta.commonjs.resolved,
this.load
)) !== IS_WRAPPED_COMMONJS
);
Expand All @@ -151,61 +153,56 @@ export function getRequireResolver(extensions, detectCyclesAndConditional, curre
).some((shouldTransform) => shouldTransform);
},
/* eslint-disable no-param-reassign */
resolveRequireSourcesAndUpdateMeta: (rollupContext) => async (
parentId,
isParentCommonJS,
parentMeta,
sources
) => {
parentMeta.initialCommonJSType = isParentCommonJS;
parentMeta.requires = [];
parentMeta.isRequiredCommonJS = Object.create(null);
setInitialParentType(parentId, isParentCommonJS);
const currentlyResolvingForParent = currentlyResolving.get(parentId) || new Set();
currentlyResolving.set(parentId, currentlyResolvingForParent);
const requireTargets = await Promise.all(
sources.map(async ({ source, isConditional }) => {
// Never analyze or proxy internal modules
if (source.startsWith('\0')) {
return { id: source, allowProxy: false };
}
currentlyResolvingForParent.add(source);
const resolved =
(await rollupContext.resolve(source, parentId, {
custom: { 'node-resolve': { isRequire: true } }
})) || resolveExtensions(source, parentId, extensions);
currentlyResolvingForParent.delete(source);
if (!resolved) {
return { id: wrapId(source, EXTERNAL_SUFFIX), allowProxy: false };
}
const childId = resolved.id;
if (resolved.external) {
return { id: wrapId(childId, EXTERNAL_SUFFIX), allowProxy: false };
}
parentMeta.requires.push({ resolved, isConditional });
await analyzeRequiredModule(parentId, resolved, isConditional, rollupContext.load);
return { id: childId, allowProxy: true };
})
);
parentMeta.isCommonJS = getTypeForFullyAnalyzedModule(parentId);
fullyAnalyzedModules[parentId] = true;
return requireTargets.map(({ id: dependencyId, allowProxy }, index) => {
// eslint-disable-next-line no-multi-assign
const isCommonJS = (parentMeta.isRequiredCommonJS[
dependencyId
] = getTypeForFullyAnalyzedModule(dependencyId));
fullyAnalyzedModules[dependencyId] = true;
return {
source: sources[index].source,
id: allowProxy
? isCommonJS === IS_WRAPPED_COMMONJS
? wrapId(dependencyId, WRAPPED_SUFFIX)
: wrapId(dependencyId, PROXY_SUFFIX)
: dependencyId,
isCommonJS
};
});
},
resolveRequireSourcesAndUpdateMeta:
(rollupContext) => async (parentId, isParentCommonJS, parentMeta, sources) => {
parentMeta.initialCommonJSType = isParentCommonJS;
parentMeta.requires = [];
parentMeta.isRequiredCommonJS = Object.create(null);
setInitialParentType(parentId, isParentCommonJS);
const currentlyResolvingForParent = currentlyResolving.get(parentId) || new Set();
currentlyResolving.set(parentId, currentlyResolvingForParent);
const requireTargets = await Promise.all(
sources.map(async ({ source, isConditional }) => {
// Never analyze or proxy internal modules
if (source.startsWith('\0')) {
return { id: source, allowProxy: false };
}
currentlyResolvingForParent.add(source);
const resolved =
(await rollupContext.resolve(source, parentId, {
custom: { 'node-resolve': { isRequire: true } }
})) || resolveExtensions(source, parentId, extensions);
currentlyResolvingForParent.delete(source);
if (!resolved) {
return { id: wrapId(source, EXTERNAL_SUFFIX), allowProxy: false };
}
const childId = resolved.id;
if (resolved.external) {
return { id: wrapId(childId, EXTERNAL_SUFFIX), allowProxy: false };
}
parentMeta.requires.push({ resolved, isConditional });
await analyzeRequiredModule(parentId, resolved, isConditional, rollupContext.load);
return { id: childId, allowProxy: true };
})
);
parentMeta.isCommonJS = getTypeForFullyAnalyzedModule(parentId);
fullyAnalyzedModules[parentId] = true;
return requireTargets.map(({ id: dependencyId, allowProxy }, index) => {
// eslint-disable-next-line no-multi-assign
const isCommonJS = (parentMeta.isRequiredCommonJS[dependencyId] =
getTypeForFullyAnalyzedModule(dependencyId));
fullyAnalyzedModules[dependencyId] = true;
return {
source: sources[index].source,
id: allowProxy
? isCommonJS === IS_WRAPPED_COMMONJS
? wrapId(dependencyId, WRAPPED_SUFFIX)
: wrapId(dependencyId, PROXY_SUFFIX)
: dependencyId,
isCommonJS
};
});
},
isCurrentlyResolving(source, parentId) {
const currentlyResolvingForParent = currentlyResolving.get(parentId);
return currentlyResolvingForParent && currentlyResolvingForParent.has(source);
Expand Down
10 changes: 5 additions & 5 deletions packages/commonjs/test/form.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/* eslint-disable global-require, import/no-dynamic-require, no-console */

import * as fs from 'fs';
import * as path from 'path';
const fs = require('fs');
const path = require('path');

import * as acorn from 'acorn';
import test from 'ava';
const acorn = require('acorn');
const test = require('ava');

import { commonjs } from './helpers/util';
const { commonjs } = require('./helpers/util.js');

process.chdir(__dirname);

Expand Down
Loading