UNPKG

6.67 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/requireCssModule.js"],"names":["getFiletypeOptions","cssSourceFilePath","filetypes","extension","substr","lastIndexOf","filetype","getSyntax","filetypeOptions","syntax","require","getExtraPlugins","plugins","map","plugin","Array","isArray","pluginName","pluginOptions","getTokens","runner","options","from","lazyResult","process","warnings","forEach","message","console","warn","text","root","tokens","generateScopedName","context","cwd","fetch","to","fromDirectoryPath","toPath","extraPlugins","Values","LocalByDefault","ExtractImports","Scope","Parser"],"mappings":"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","file":"requireCssModule.js","sourcesContent":["// @flow\n\nimport {\n dirname,\n resolve\n} from 'path';\nimport {\n readFileSync\n} from 'fs';\nimport postcss from 'postcss';\nimport genericNames from 'generic-names';\nimport ExtractImports from 'postcss-modules-extract-imports';\nimport LocalByDefault from 'postcss-modules-local-by-default';\nimport Parser from 'postcss-modules-parser';\nimport Scope from 'postcss-modules-scope';\nimport Values from 'postcss-modules-values';\nimport type {\n GenerateScopedNameConfigurationType,\n StyleModuleMapType\n} from './types';\n\ntype FiletypeOptionsType = {|\n +syntax: string,\n +plugins?: $ReadOnlyArray<string | $ReadOnlyArray<[string, mixed]>>\n|};\n\ntype FiletypesConfigurationType = {\n [key: string]: FiletypeOptionsType\n};\n\nconst getFiletypeOptions = (cssSourceFilePath: string, filetypes: FiletypesConfigurationType): ?FiletypeOptionsType => {\n const extension = cssSourceFilePath.substr(cssSourceFilePath.lastIndexOf('.'));\n const filetype = filetypes ? filetypes[extension] : null;\n\n return filetype;\n};\n\n// eslint-disable-next-line flowtype/no-weak-types\nconst getSyntax = (filetypeOptions: FiletypeOptionsType): ?(Function | Object) => {\n if (!filetypeOptions || !filetypeOptions.syntax) {\n return null;\n }\n\n // eslint-disable-next-line import/no-dynamic-require, global-require\n return require(filetypeOptions.syntax);\n};\n\n// eslint-disable-next-line flowtype/no-weak-types\nconst getExtraPlugins = (filetypeOptions: ?FiletypeOptionsType): $ReadOnlyArray<*> => {\n if (!filetypeOptions || !filetypeOptions.plugins) {\n return [];\n }\n\n return filetypeOptions.plugins.map((plugin) => {\n if (Array.isArray(plugin)) {\n const [pluginName, pluginOptions] = plugin;\n\n // eslint-disable-next-line import/no-dynamic-require, global-require\n return require(pluginName)(pluginOptions);\n }\n\n // eslint-disable-next-line import/no-dynamic-require, global-require\n return require(plugin);\n });\n};\n\nconst getTokens = (runner, cssSourceFilePath: string, filetypeOptions: ?FiletypeOptionsType): StyleModuleMapType => {\n // eslint-disable-next-line flowtype/no-weak-types\n const options: Object = {\n from: cssSourceFilePath\n };\n\n if (filetypeOptions) {\n options.syntax = getSyntax(filetypeOptions);\n }\n\n const lazyResult = runner\n .process(readFileSync(cssSourceFilePath, 'utf-8'), options);\n\n lazyResult\n .warnings()\n .forEach((message) => {\n // eslint-disable-next-line no-console\n console.warn(message.text);\n });\n\n return lazyResult.root.tokens;\n};\n\ntype OptionsType = {|\n filetypes: FiletypesConfigurationType,\n generateScopedName?: GenerateScopedNameConfigurationType,\n context?: string\n|};\n\nexport default (cssSourceFilePath: string, options: OptionsType): StyleModuleMapType => {\n // eslint-disable-next-line prefer-const\n let runner;\n\n let generateScopedName;\n\n if (options.generateScopedName && typeof options.generateScopedName === 'function') {\n generateScopedName = options.generateScopedName;\n } else {\n generateScopedName = genericNames(options.generateScopedName || '[path]___[name]__[local]___[hash:base64:5]', {\n context: options.context || process.cwd()\n });\n }\n\n const filetypeOptions = getFiletypeOptions(cssSourceFilePath, options.filetypes);\n\n const fetch = (to: string, from: string) => {\n const fromDirectoryPath = dirname(from);\n const toPath = resolve(fromDirectoryPath, to);\n\n return getTokens(runner, toPath, filetypeOptions);\n };\n\n const extraPlugins = getExtraPlugins(filetypeOptions);\n\n const plugins = [\n ...extraPlugins,\n Values,\n LocalByDefault,\n ExtractImports,\n new Scope({\n generateScopedName\n }),\n new Parser({\n fetch\n })\n ];\n\n runner = postcss(plugins);\n\n return getTokens(runner, cssSourceFilePath, filetypeOptions);\n};\n"]}
\No newline at end of file