'use strict'; var path = require('path'); var camelCase = require('camelcase'); var cosmiconfig = require('cosmiconfig'); var __defProp$1 = Object.defineProperty; var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; var __hasOwnProp$1 = Object.prototype.hasOwnProperty; var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues$1 = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp$1.call(b, prop)) __defNormalProp$1(a, prop, b[prop]); if (__getOwnPropSymbols$1) for (var prop of __getOwnPropSymbols$1(b)) { if (__propIsEnum$1.call(b, prop)) __defNormalProp$1(a, prop, b[prop]); } return a; }; const VALID_CHAR_REGEX = /[^a-zA-Z0-9 _-]/g; const getComponentName = (filePath) => { if (!filePath) return "SvgComponent"; const pascalCaseFileName = camelCase( path.parse(filePath).name.replace(VALID_CHAR_REGEX, ""), { pascalCase: true } ); return `Svg${pascalCaseFileName}`; }; const expandState = (state) => { return __spreadValues$1({ componentName: state.componentName || getComponentName(state.filePath) }, state); }; var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; const DEFAULT_CONFIG = { dimensions: true, expandProps: "end", icon: false, native: false, typescript: false, prettier: true, prettierConfig: void 0, memo: false, ref: false, replaceAttrValues: void 0, svgProps: void 0, svgo: true, svgoConfig: void 0, template: void 0, index: false, titleProp: false, descProp: false, runtimeConfig: true, namedExport: "ReactComponent", exportType: "default" }; const explorer = cosmiconfig.cosmiconfig("svgr"); const explorerSync = cosmiconfig.cosmiconfigSync("svgr"); const resolveConfig = async (searchFrom, configFile) => { if (configFile == null) { const result2 = await explorer.search(searchFrom); return result2 ? result2.config : null; } const result = await explorer.load(configFile); return result ? result.config : null; }; resolveConfig.sync = (searchFrom, configFile) => { if (configFile == null) { const result2 = explorerSync.search(searchFrom); return result2 ? result2.config : null; } const result = explorerSync.load(configFile); return result ? result.config : null; }; const resolveConfigFile = async (filePath) => { const result = await explorer.search(filePath); return result ? result.filepath : null; }; resolveConfigFile.sync = (filePath) => { const result = explorerSync.search(filePath); return result ? result.filepath : null; }; const loadConfig = async (_a, state = {}) => { var _b = _a, { configFile } = _b, baseConfig = __objRest(_b, ["configFile"]); const rcConfig = state.filePath && baseConfig.runtimeConfig !== false ? await resolveConfig(state.filePath, configFile) : {}; return __spreadValues(__spreadValues(__spreadValues({}, DEFAULT_CONFIG), baseConfig), rcConfig); }; loadConfig.sync = (_c, state = {}) => { var _d = _c, { configFile } = _d, baseConfig = __objRest(_d, ["configFile"]); const rcConfig = state.filePath && baseConfig.runtimeConfig !== false ? resolveConfig.sync(state.filePath, configFile) : {}; return __spreadValues(__spreadValues(__spreadValues({}, DEFAULT_CONFIG), baseConfig), rcConfig); }; const DEFAULT_PLUGINS = []; const getPlugins = (config, state) => { var _a; if (config.plugins) { return config.plugins; } if ((_a = state.caller) == null ? void 0 : _a.defaultPlugins) { return state.caller.defaultPlugins; } return DEFAULT_PLUGINS; }; const resolvePlugin = (plugin) => { if (typeof plugin === "function") { return plugin; } if (typeof plugin === "string") { return loadPlugin(plugin); } throw new Error(`Invalid plugin "${plugin}"`); }; const pluginCache = {}; const resolveModule = (m) => m ? m.default || m : null; const loadPlugin = (moduleName) => { if (pluginCache[moduleName]) { return pluginCache[moduleName]; } try { const plugin = resolveModule(require(moduleName)); if (!plugin) { throw new Error(`Invalid plugin "${moduleName}"`); } pluginCache[moduleName] = plugin; return pluginCache[moduleName]; } catch (error) { console.log(error); throw new Error( `Module "${moduleName}" missing. Maybe \`npm install ${moduleName}\` could help!` ); } }; const run = (code, config, state) => { const expandedState = expandState(state); const plugins = getPlugins(config, state).map(resolvePlugin); let nextCode = String(code).replace("\0", ""); for (const plugin of plugins) { nextCode = plugin(nextCode, config, expandedState); } return nextCode; }; const transform = async (code, config = {}, state = {}) => { config = await loadConfig(config, state); return run(code, config, state); }; transform.sync = (code, config = {}, state = {}) => { config = loadConfig.sync(config, state); return run(code, config, state); }; exports.DEFAULT_CONFIG = DEFAULT_CONFIG; exports.loadConfig = loadConfig; exports.resolveConfig = resolveConfig; exports.resolveConfigFile = resolveConfigFile; exports.transform = transform; //# sourceMappingURL=index.js.map