Skip to content

Commit

Permalink
babel.config.json and fix semver usage (#3903)
Browse files Browse the repository at this point in the history
* Use babel.config.json

* Update semver and use minVersion

* Fix flow libdefs

* Use upstream flowlib
  • Loading branch information
mischnic committed Dec 14, 2019
1 parent b3ddbd5 commit 92fd22f
Show file tree
Hide file tree
Showing 8 changed files with 189 additions and 76 deletions.
3 changes: 0 additions & 3 deletions babel.config.js

This file was deleted.

3 changes: 3 additions & 0 deletions babel.config.json
@@ -0,0 +1,3 @@
{
"presets": ["@parcel/babel-preset"]
}
128 changes: 74 additions & 54 deletions flow-typed/npm/semver_v5.1.x.js → flow-typed/npm/semver_v6.2.x.js
@@ -1,29 +1,29 @@
// flow-typed signature: dc381ee55406f66b7272c6343db0834b
// flow-typed version: da30fe6876/semver_v5.1.x/flow_>=v0.25.x
// flow-typed signature: 0f3a5488505547a0a71d5b49cf5c2954
// flow-typed version: 01cfe946d5/semver_v6.2.x/flow_>=v0.104.x

declare module 'semver' {
declare module "semver" {
declare type Release =
| 'major'
| 'premajor'
| 'minor'
| 'preminor'
| 'patch'
| 'prepatch'
| 'prerelease';
| "major"
| "premajor"
| "minor"
| "preminor"
| "patch"
| "prepatch"
| "prerelease";

// The supported comparators are taken from the source here:
// https://github.com/npm/node-semver/blob/8bd070b550db2646362c9883c8d008d32f66a234/semver.js#L623
declare type Operator =
| '==='
| '!=='
| '=='
| '='
| '' // Not sure why you would want this, but whatever.
| '!='
| '>'
| '>='
| '<'
| '<=';
| "==="
| "!=="
| "=="
| "="
| "" // Not sure why you would want this, but whatever.
| "!="
| ">"
| ">="
| "<"
| "<=";

declare class SemVer {
build: Array<string>;
Expand All @@ -35,21 +35,22 @@ declare module 'semver' {
raw: string;
version: string;

constructor(version: string | SemVer, loose?: boolean): SemVer;
constructor(version: string | SemVer, options?: Options): SemVer;
compare(other: string | SemVer): -1 | 0 | 1;
compareMain(other: string | SemVer): -1 | 0 | 1;
comparePre(other: string | SemVer): -1 | 0 | 1;
compareBuild(other: string | SemVer): -1 | 0 | 1;
format(): string;
inc(release: Release, identifier: string): this;
}

declare class Comparator {
loose?: boolean;
options?: Options;
operator: Operator;
semver: SemVer;
value: string;

constructor(comp: string | Comparator, loose?: boolean): Comparator;
constructor(comp: string | Comparator, options?: Options): Comparator;
parse(comp: string): void;
test(version: string): boolean;
}
Expand All @@ -59,7 +60,7 @@ declare module 'semver' {
raw: string;
set: Array<Array<Comparator>>;

constructor(range: string | Range, loose?: boolean): Range;
constructor(range: string | Range, options?: Options): Range;
format(): string;
parseRange(range: string): Array<Comparator>;
test(version: string): boolean;
Expand All @@ -70,83 +71,88 @@ declare module 'semver' {
declare var re: Array<RegExp>;
declare var src: Array<string>;

declare type Options = {
options?: Options,
includePrerelease?: boolean,
...
} | boolean;

// Functions
declare function valid(v: string | SemVer, loose?: boolean): string | null;
declare function clean(v: string | SemVer, loose?: boolean): string | null;
declare function valid(v: string | SemVer, options?: Options): string | null;
declare function clean(v: string | SemVer, options?: Options): string | null;
declare function inc(
v: string | SemVer,
release: Release,
loose?: boolean,
options?: Options,
identifier?: string
): string | null;
declare function inc(
v: string | SemVer,
release: Release,
identifier: string
): string | null;
declare function major(v: string | SemVer, loose?: boolean): number;
declare function minor(v: string | SemVer, loose?: boolean): number;
declare function patch(v: string | SemVer, loose?: boolean): number;
declare function major(v: string | SemVer, options?: Options): number;
declare function minor(v: string | SemVer, options?: Options): number;
declare function patch(v: string | SemVer, options?: Options): number;
declare function intersects(r1: string | SemVer, r2: string | SemVer, loose?: boolean): boolean;
declare function minVersion(r: string | Range): Range | null;

// Comparison
declare function gt(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function gte(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function lt(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function lte(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function eq(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function neq(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function cmp(
v1: string | SemVer,
comparator: Operator,
v2: string | SemVer,
loose?: boolean
options?: Options
): boolean;
declare function compare(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
options?: Options
): -1 | 0 | 1;
declare function rcompare(
v1: string | SemVer,
v2: string | SemVer,
loose?: boolean
): -1 | 0 | 1;
declare function compareLoose(
v1: string | SemVer,
v2: string | SemVer
options?: Options
): -1 | 0 | 1;
declare function diff(v1: string | SemVer, v2: string | SemVer): ?Release;
declare function intersects(comparator: Comparator): boolean;
declare function sort(
list: Array<string | SemVer>,
loose?: boolean
options?: Options
): Array<string | SemVer>;
declare function rsort(
list: Array<string | SemVer>,
loose?: boolean
options?: Options
): Array<string | SemVer>;
declare function compareIdentifiers(
v1: string | SemVer,
Expand All @@ -160,39 +166,53 @@ declare module 'semver' {
// Ranges
declare function validRange(
range: string | Range,
loose?: boolean
options?: Options
): string | null;
declare function satisfies(
version: string | SemVer,
range: string | Range,
loose?: boolean
options?: Options
): boolean;
declare function maxSatisfying(
versions: Array<string | SemVer>,
range: string | Range,
loose?: boolean
options?: Options
): string | SemVer | null;
declare function minSatisfying(
versions: Array<string | SemVer>,
range: string | Range,
options?: Options
): string | SemVer | null;
declare function gtr(
version: string | SemVer,
range: string | Range,
loose?: boolean
options?: Options
): boolean;
declare function ltr(
version: string | SemVer,
range: string | Range,
loose?: boolean
options?: Options
): boolean;
declare function outside(
version: string | SemVer,
range: string | Range,
hilo: '>' | '<',
loose?: boolean
hilo: ">" | "<",
options?: Options
): boolean;
declare function intersects(
range: Range
): boolean;

// Coercion
declare function coerce(
version: string | SemVer,
options?: Options
): ?SemVer

// Not explicitly documented, or deprecated
declare function parse(version: string, loose?: boolean): ?SemVer;
declare function parse(version: string, options?: Options): ?SemVer;
declare function toComparators(
range: string | Range,
loose?: boolean
options?: Options
): Array<Array<string>>;
}
14 changes: 7 additions & 7 deletions gulpfile.js
Expand Up @@ -3,15 +3,15 @@ const babel = require('gulp-babel');
const gulp = require('gulp');
const path = require('path');
const rimraf = require('rimraf');
const babelConfig = require('./babel.config.js');
const babelConfig = require('./babel.config.json');

const IGNORED_PACKAGES = [
'!packages/examples/**',
'!packages/core/integration-tests/**',
'!packages/core/workers/test/integration/**',
'!packages/core/is-v2-ready-yet/**',
'!packages/core/test-utils/**',
'!packages/core/types/**'
'!packages/core/types/**',
];

const paths = {
Expand All @@ -20,16 +20,16 @@ const paths = {
'!packages/*/scope-hoisting/src/helpers.js',
'!**/loaders/**',
'!**/prelude.js',
...IGNORED_PACKAGES
...IGNORED_PACKAGES,
],
packageOther: [
'packages/*/scope-hoisting/src/helpers.js',
'packages/*/*/src/**/loaders/**',
'packages/*/*/src/**/prelude.js',
'packages/*/dev-server/src/templates/**'
'packages/*/dev-server/src/templates/**',
],
packageJson: 'packages/core/parcel/package.json',
packages: 'packages/'
packages: 'packages/',
};

/*
Expand Down Expand Up @@ -59,7 +59,7 @@ exports.clean = function clean(cb) {
exports.default = exports.build = gulp.series(
gulp.parallel(buildBabel, copyOthers),
// Babel reads from package.json so update these after babel has run
() => updatePackageJson(paths.packageJson)
() => updatePackageJson(paths.packageJson),
);

function buildBabel() {
Expand Down Expand Up @@ -94,7 +94,7 @@ function updatePackageJson(file) {
}

vinyl.contents = Buffer.from(JSON.stringify(json, null, 2));
})
}),
)
.pipe(gulp.dest(path.dirname(file)));
}
Expand Down
2 changes: 1 addition & 1 deletion packages/dev/babel-preset/package.json
Expand Up @@ -15,6 +15,6 @@
"read-pkg-up": "^4.0.0"
},
"devDependencies": {
"@babel/core": "^7.1.2"
"@babel/core": "^7.7.0"
}
}
2 changes: 1 addition & 1 deletion packages/transformers/babel/package.json
Expand Up @@ -30,7 +30,7 @@
"browserslist": "^4.6.6",
"core-js": "^3.2.1",
"nullthrows": "^1.1.1",
"semver": "^5.4.1"
"semver": "^5.7.0"
},
"devDependencies": {
"@parcel/types": "^2.0.0-alpha.3.1"
Expand Down
11 changes: 2 additions & 9 deletions packages/transformers/babel/src/getBabelTargets.js
Expand Up @@ -37,7 +37,8 @@ export default async function getBabelTargets(
// Use package.engines.node by default if we are compiling for node.
if (typeof nodeVersion === 'string') {
try {
targets.node = getMinSemver(nodeVersion);
//$FlowFixMe catch error when minVersion() returned null
targets.node = semver.minVersion(nodeVersion).version;
} catch (e) {
throw new Error("Expected 'node' engine to be a valid Semver Range");
}
Expand Down Expand Up @@ -94,11 +95,3 @@ async function loadBrowserslist(config): Promise<?BrowserslistConfig> {
return browserslist.parseConfig(browserslistConfig);
}
}

// TODO: Replace with `minVersion` (https://github.com/npm/node-semver#ranges-1)
// once semver has been upgraded across Parcel.
function getMinSemver(version) {
let range = new semver.Range(version);
let sorted = range.set.sort((a, b) => a[0].semver.compare(b[0].semver));
return sorted[0][0].semver.version;
}

0 comments on commit 92fd22f

Please sign in to comment.