diff --git a/packages/babel-preset-gatsby-package/.gitignore b/packages/babel-preset-gatsby-package/.gitignore deleted file mode 100644 index 1d6fb326da1b3..0000000000000 --- a/packages/babel-preset-gatsby-package/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -yarn.lock -dist/ diff --git a/packages/babel-preset-gatsby-package/__tests__/__snapshots__/index.js.snap b/packages/babel-preset-gatsby-package/lib/__tests__/__snapshots__/index.js.snap similarity index 100% rename from packages/babel-preset-gatsby-package/__tests__/__snapshots__/index.js.snap rename to packages/babel-preset-gatsby-package/lib/__tests__/__snapshots__/index.js.snap diff --git a/packages/babel-preset-gatsby-package/__tests__/babel-transform-compiler-flags.js b/packages/babel-preset-gatsby-package/lib/__tests__/babel-transform-compiler-flags.js similarity index 100% rename from packages/babel-preset-gatsby-package/__tests__/babel-transform-compiler-flags.js rename to packages/babel-preset-gatsby-package/lib/__tests__/babel-transform-compiler-flags.js diff --git a/packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/default/input.js b/packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/default/input.js similarity index 100% rename from packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/default/input.js rename to packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/default/input.js diff --git a/packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/default/output.mjs b/packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/default/output.mjs similarity index 100% rename from packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/default/output.mjs rename to packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/default/output.mjs diff --git a/packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/unused/input.js b/packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/unused/input.js similarity index 100% rename from packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/unused/input.js rename to packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/unused/input.js diff --git a/packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/unused/options.json b/packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/unused/options.json similarity index 100% rename from packages/babel-preset-gatsby-package/__tests__/fixtures/compiler-flags/unused/options.json rename to packages/babel-preset-gatsby-package/lib/__tests__/fixtures/compiler-flags/unused/options.json diff --git a/packages/babel-preset-gatsby-package/__tests__/fixtures/options.js b/packages/babel-preset-gatsby-package/lib/__tests__/fixtures/options.js similarity index 75% rename from packages/babel-preset-gatsby-package/__tests__/fixtures/options.js rename to packages/babel-preset-gatsby-package/lib/__tests__/fixtures/options.js index b4f1a1f9d6265..b6c2571923d7c 100644 --- a/packages/babel-preset-gatsby-package/__tests__/fixtures/options.js +++ b/packages/babel-preset-gatsby-package/lib/__tests__/fixtures/options.js @@ -3,7 +3,7 @@ const path = require("path") module.exports = { sourceType: "module", plugins: [ - [path.resolve(__dirname, "../../src/babel-transform-compiler-flags.ts"), + [path.resolve(__dirname, "../../babel-transform-compiler-flags.js"), { availableFlags: ['MAJOR'], flags: { diff --git a/packages/babel-preset-gatsby-package/__tests__/index.js b/packages/babel-preset-gatsby-package/lib/__tests__/index.js similarity index 94% rename from packages/babel-preset-gatsby-package/__tests__/index.js rename to packages/babel-preset-gatsby-package/lib/__tests__/index.js index 6c77f2693e33f..6b959547c91fc 100644 --- a/packages/babel-preset-gatsby-package/__tests__/index.js +++ b/packages/babel-preset-gatsby-package/lib/__tests__/index.js @@ -1,6 +1,6 @@ -const preset = require(`../src/index.js`) +const preset = require(`../index.js`) -jest.mock(`../src/resolver`, () => jest.fn(moduleName => moduleName)) +jest.mock(`../resolver`, () => jest.fn(moduleName => moduleName)) describe(`babel-preset-gatsby-package`, () => { diff --git a/packages/babel-preset-gatsby-package/lib/babel-transform-compiler-flags.js b/packages/babel-preset-gatsby-package/lib/babel-transform-compiler-flags.js new file mode 100644 index 0000000000000..d229b2c22931e --- /dev/null +++ b/packages/babel-preset-gatsby-package/lib/babel-transform-compiler-flags.js @@ -0,0 +1,71 @@ + +/** + * @typedef {import('@babel/core').NodePath} NodePath + * @typedef {import('@babel/core').PluginObj} PluginObj + * @typedef {import('@babel/core').PluginPass} PluginPass + * @typedef {import('@babel/core').types} BabelTypes + * @typedef {import('@babel/core').types.Identifier} Identifier + * @typedef {import('@babel/core').types.MemberExpression} MemberExpression + */ + +/** + * @typedef {Object} IPluginOptions + * @property {Record} flags + * @property {Array} availableFlags + */ + +/** + * + * @param {{ types: BabelTypes }} args + * @param {Partial} opts + * @returns {PluginObj} + */ +module.exports = function compilerFlags( + { + types: t, + }, + opts +) { + if (!opts.flags) { + throw new Error(`flags option needs to be set`) + } + if (!opts.availableFlags) { + throw new Error(`availableFlags option needs to be set`) + } + + return { + name: `babel-transform-compiler-flags`, + visitor: { + /** + * @param {NodePath} nodePath + * @param {PluginPass} state + */ + Identifier( + nodePath, + state + ) { + const identifier = /** @type {Identifier} */ (nodePath.node) + const flags = /** @type {IPluginOptions} */ (state.opts).flags + const availableFlags = /** @type {IPluginOptions} */ (state.opts).availableFlags + + if ( + identifier.name === `_CFLAGS_` && + t.isMemberExpression(nodePath.parent) + ) { + const parentNode = /** @type {MemberExpression} */ (nodePath.parent) + const cFlag = /** @type {Identifier} */ (parentNode.property).name + + if (!availableFlags.includes(cFlag)) { + throw new Error( + `${cFlag} is not part of the available compiler flags.` + ) + } + + nodePath.parentPath.replaceWith( + t.stringLiteral(flags[cFlag] ? flags[cFlag] : ``) + ) + } + }, + }, + } +} diff --git a/packages/babel-preset-gatsby-package/src/index.js b/packages/babel-preset-gatsby-package/lib/index.js similarity index 100% rename from packages/babel-preset-gatsby-package/src/index.js rename to packages/babel-preset-gatsby-package/lib/index.js diff --git a/packages/babel-preset-gatsby-package/src/resolver.js b/packages/babel-preset-gatsby-package/lib/resolver.js similarity index 100% rename from packages/babel-preset-gatsby-package/src/resolver.js rename to packages/babel-preset-gatsby-package/lib/resolver.js diff --git a/packages/babel-preset-gatsby-package/package.json b/packages/babel-preset-gatsby-package/package.json index cd8508fc15c47..65234f6c851c5 100644 --- a/packages/babel-preset-gatsby-package/package.json +++ b/packages/babel-preset-gatsby-package/package.json @@ -31,12 +31,15 @@ "@babel/core": "^7.11.6" }, "license": "MIT", - "main": "dist/index.js", + "main": "lib/index.js", "engines": { "node": ">=12.13.0" }, + "files": [ + "lib/*.js" + ], "scripts": { - "build": "babel src --out-dir dist/ --ignore \"**/__tests__\" --ignore \"**/__mocks__\" --extensions \".ts,.js\"", + "build": "", "prepare": "cross-env NODE_ENV=production npm run build", "watch": "babel -w src --out-dir dist/ --ignore \"**/__tests__\" --extensions \".ts,.js\"" } diff --git a/packages/babel-preset-gatsby-package/src/babel-transform-compiler-flags.ts b/packages/babel-preset-gatsby-package/src/babel-transform-compiler-flags.ts deleted file mode 100644 index 67a4938d792cf..0000000000000 --- a/packages/babel-preset-gatsby-package/src/babel-transform-compiler-flags.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { NodePath, PluginObj, types, PluginPass } from "@babel/core" - -interface IPluginOptions { - flags: Record - availableFlags: Array -} - -export default function compilerFlags( - { - types: t, - }: { - types: typeof types - }, - opts: Partial -): PluginObj { - if (!opts.flags) { - throw new Error(`flags option needs to be set`) - } - if (!opts.availableFlags) { - throw new Error(`availableFlags option needs to be set`) - } - - return { - name: `babel-transform-compiler-flags`, - visitor: { - Identifier( - nodePath: NodePath, - state: PluginPass - ): void { - const flags = (state.opts as IPluginOptions).flags - const availableFlags = (state.opts as IPluginOptions).availableFlags - - if ( - nodePath.node.name === `_CFLAGS_` && - t.isMemberExpression(nodePath.parent) - ) { - const cFlag = (nodePath.parent.property as types.Identifier).name - - if (!availableFlags.includes(cFlag)) { - throw new Error( - `${cFlag} is not part of the available compiler flags.` - ) - } - - nodePath.parentPath.replaceWith( - t.stringLiteral(flags[cFlag] ? flags[cFlag] : ``) - ) - } - }, - }, - } -} diff --git a/packages/babel-preset-gatsby-package/tsconfig.json b/packages/babel-preset-gatsby-package/tsconfig.json index 7af82cd9557aa..1c6c8da61b49a 100644 --- a/packages/babel-preset-gatsby-package/tsconfig.json +++ b/packages/babel-preset-gatsby-package/tsconfig.json @@ -1,4 +1,8 @@ { "extends": "../../tsconfig.json", - "strict": true + "strict": true, + "compilerOptions": { + "allowJs": true, + "checkJs": true + } }