UNPKG

sass-all-variable-loader

Version:

Loads sass files and extracts all variable declarations including from the imported sass files.

46 lines (45 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs"); var _ = require("lodash"); var extractVariables_1 = require("./extractVariables"); var packageJson = require('../package.json'); var writeTypes = function (strings, name, value, sub) { if (sub === void 0) { sub = false; } var subExpr = sub ? ' ' : 'const '; if (_.isString(value)) { strings.push(" " + subExpr + name + ": string;"); } else if (_.isNumber(value)) { strings.push(" " + subExpr + name + ": number;"); } else if (_.isBoolean(value)) { strings.push(" " + subExpr + name + ": boolean;"); } else if (_.isObjectLike(value)) { strings.push(" " + subExpr + name + ": {"); Object.keys(value) .forEach(function (k) { writeTypes(strings, k, value[k], true); }); strings.push(' };'); } else { } }; // noinspection JSUnusedGlobalSymbols exports.declareModule = function (file, options) { var variables = extractVariables_1.extractVariables(file, options); var statements = Object.keys(variables) .reduce(function (strings, name) { var value = variables[name]; writeTypes(strings, name, value); return strings; }, []); var result = "/**\n * This file is autogenerated by " + packageJson.name + ".\n */\n\ndeclare module 'scss/variables.scss' {\n" + statements.join('\n') + "\n}\n"; var destFile = options.destFile; if (destFile) { fs.writeFileSync(destFile, result); } return result; };