UNPKG

4.44 kBJavaScriptView Raw
1'use strict';
2
3var fs = require('fs');
4var core$1 = require('@svgr/core');
5var rollupPluginutils = require('rollup-pluginutils');
6var core = require('@babel/core');
7var svgo = require('@svgr/plugin-svgo');
8var jsx = require('@svgr/plugin-jsx');
9var presetReact = require('@babel/preset-react');
10var presetEnv = require('@babel/preset-env');
11var presetTS = require('@babel/preset-typescript');
12var pluginTransformReactConstantElements = require('@babel/plugin-transform-react-constant-elements');
13
14function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
16function _interopNamespace(e) {
17 if (e && e.__esModule) return e;
18 var n = Object.create(null);
19 if (e) {
20 Object.keys(e).forEach(function (k) {
21 if (k !== 'default') {
22 var d = Object.getOwnPropertyDescriptor(e, k);
23 Object.defineProperty(n, k, d.get ? d : {
24 enumerable: true,
25 get: function () { return e[k]; }
26 });
27 }
28 });
29 }
30 n["default"] = e;
31 return Object.freeze(n);
32}
33
34var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
35var svgo__default = /*#__PURE__*/_interopDefaultLegacy(svgo);
36var jsx__default = /*#__PURE__*/_interopDefaultLegacy(jsx);
37var presetReact__default = /*#__PURE__*/_interopDefaultLegacy(presetReact);
38var presetEnv__default = /*#__PURE__*/_interopDefaultLegacy(presetEnv);
39var presetTS__default = /*#__PURE__*/_interopDefaultLegacy(presetTS);
40var pluginTransformReactConstantElements__default = /*#__PURE__*/_interopDefaultLegacy(pluginTransformReactConstantElements);
41
42var __defProp = Object.defineProperty;
43var __defProps = Object.defineProperties;
44var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
45var __getOwnPropSymbols = Object.getOwnPropertySymbols;
46var __hasOwnProp = Object.prototype.hasOwnProperty;
47var __propIsEnum = Object.prototype.propertyIsEnumerable;
48var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
49var __spreadValues = (a, b) => {
50 for (var prop in b || (b = {}))
51 if (__hasOwnProp.call(b, prop))
52 __defNormalProp(a, prop, b[prop]);
53 if (__getOwnPropSymbols)
54 for (var prop of __getOwnPropSymbols(b)) {
55 if (__propIsEnum.call(b, prop))
56 __defNormalProp(a, prop, b[prop]);
57 }
58 return a;
59};
60var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
61const babelOptions = {
62 babelrc: false,
63 configFile: false,
64 presets: [
65 core.createConfigItem(presetReact__default["default"], { type: "preset" }),
66 core.createConfigItem([presetEnv__default["default"], { modules: false }], { type: "preset" })
67 ],
68 plugins: [core.createConfigItem(pluginTransformReactConstantElements__default["default"])]
69};
70const typeScriptBabelOptions = __spreadProps(__spreadValues({}, babelOptions), {
71 presets: [
72 ...babelOptions.presets,
73 core.createConfigItem([presetTS__default["default"], { allowNamespaces: true, allExtensions: true, isTSX: true }], { type: "preset" })
74 ]
75});
76const plugin = (options = {}) => {
77 const EXPORT_REGEX = /(module\.exports *= *|export default)/;
78 const filter = rollupPluginutils.createFilter(options.include || "**/*.svg", options.exclude);
79 const { babel = true } = options;
80 return {
81 name: "svgr",
82 async transform(data, id) {
83 if (!filter(id))
84 return null;
85 if (id.slice(-4) !== ".svg")
86 return null;
87 const load = fs__namespace.readFileSync(id, "utf8");
88 const previousExport = EXPORT_REGEX.test(data) ? data : null;
89 const jsCode = await core$1.transform(load, options, {
90 filePath: id,
91 caller: {
92 name: "@svgr/rollup",
93 previousExport,
94 defaultPlugins: [svgo__default["default"], jsx__default["default"]]
95 }
96 });
97 if (babel) {
98 const result = await core.transformAsync(jsCode, options.typescript ? typeScriptBabelOptions : babelOptions);
99 if (!(result == null ? void 0 : result.code)) {
100 throw new Error(`Error while transforming using Babel`);
101 }
102 return { code: result.code, map: null };
103 }
104 return {
105 ast: {
106 type: "Program",
107 start: 0,
108 end: 0,
109 sourceType: "module",
110 body: []
111 },
112 code: jsCode,
113 map: null
114 };
115 }
116 };
117};
118
119module.exports = plugin;
120//# sourceMappingURL=index.js.map