UNPKG

vite-plugin-twstyled

Version:

Vite plugin for twstyled -- the full-featured Tailwind CSS + CSS in JS Compiler

97 lines (96 loc) 4.95 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const babel = __importStar(require("@babel/core")); const addBabelPlugin = (options, plugin) => { return Object.assign(Object.assign({}, options), { plugins: options.plugins.concat(plugin) }); }; const BUNDLED = 'bundled'; const INLINE = 'inline'; const RUNTIME = 'runtime'; const EXTERNAL = 'external'; const MODULE_ERROR = 'Rollup requires that your Babel configuration keeps ES6 module syntax intact. ' + 'Unfortunately it looks like your configuration specifies a module transformer ' + 'to replace ES6 modules with another module format. To continue you have to disable it.' + '\n\n' + "Most commonly it's a CommonJS transform added by @babel/preset-env - " + 'in such case you should disable it by adding `modules: false` option to that preset ' + '(described in more detail here - https://github.com/rollup/plugins/tree/master/packages/babel#modules ).'; const UNEXPECTED_ERROR = 'An unexpected situation arose. Please raise an issue at ' + 'https://github.com/rollup/plugins/issues. Thanks!'; const PREFLIGHT_TEST_STRING = '__ROLLUP__PREFLIGHT_CHECK_DO_NOT_TOUCH__'; const PREFLIGHT_INPUT = `export default "${PREFLIGHT_TEST_STRING}";`; function helpersTestTransform() { return { visitor: { StringLiteral(path, state) { if (path.node.value === PREFLIGHT_TEST_STRING) { path.replaceWith(state.file.addHelper('inherits')); } } } }; } const mismatchError = (actual, expected, filename) => `You have declared using "${expected}" babelHelpers, but transforming ${filename} resulted in "${actual}". Please check your configuration.`; const inheritsHelperRe = /\/helpers\/(esm\/)?inherits/; function preflightCheck(ctx, babelHelpers, transformOptions) { return __awaiter(this, void 0, void 0, function* () { const finalOptions = addBabelPlugin(transformOptions, helpersTestTransform); const check = (yield babel.transformAsync(PREFLIGHT_INPUT, finalOptions)).code; // Babel sometimes splits ExportDefaultDeclaration into 2 statements, so we also check for ExportNamedDeclaration if (!/export (d|{)/.test(check)) { ctx.error(MODULE_ERROR); } if (inheritsHelperRe.test(check)) { if (babelHelpers === RUNTIME) { return; } ctx.error(mismatchError(RUNTIME, babelHelpers, transformOptions.filename)); } if (check.includes('babelHelpers.inherits')) { if (babelHelpers === EXTERNAL) { return; } ctx.error(mismatchError(EXTERNAL, babelHelpers, transformOptions.filename)); } // test unminifiable string content if (check.includes('Super expression must either be null or a function')) { if (babelHelpers === INLINE || babelHelpers === BUNDLED) { return; } if (babelHelpers === RUNTIME && !transformOptions.plugins.length) { ctx.error(`You must use the \`@babel/plugin-transform-runtime\` plugin when \`babelHelpers\` is "${RUNTIME}".\n`); } ctx.error(mismatchError(INLINE, babelHelpers, transformOptions.filename)); } ctx.error(UNEXPECTED_ERROR); }); } exports.default = preflightCheck;