UNPKG

scss-extract

Version:

Extract structured variables from scss files. Fast and accurate.

80 lines (63 loc) 2.26 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadCompiledFiles = loadCompiledFiles; exports.loadCompiledFilesSync = loadCompiledFilesSync; var _promises = require('fs/promises'); var _fs = require('fs'); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var RAW_DATA_FILE = 'data'; /** * Include any raw compilation data as a 'data' file */ function includeRawDataFile(includedFiles, files, entryFilename, data) { var orderedFiles = includedFiles; if (entryFilename === RAW_DATA_FILE && data) { files[RAW_DATA_FILE] = data; orderedFiles = [].concat(_toConsumableArray(orderedFiles), [RAW_DATA_FILE]); } else if (orderedFiles.length > 0) { orderedFiles = [].concat(_toConsumableArray(orderedFiles.slice(1)), [orderedFiles[0]]); } return { compiledFiles: files, orderedFiles: orderedFiles }; } /** * Async load a file from filename */ function load(filename) { var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf8'; return (0, _promises.readFile)(filename, encoding); } /** * Sync load a file from filename */ function loadSync(filename) { var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf8'; return (0, _fs.readFileSync)(filename, encoding); } /** * Load all files included in a sass compilations including potential raw data input */ function loadCompiledFiles(includedFiles, entryFilename, data) { var files = {}; return Promise.all(includedFiles.map(function (filename) { return load(filename).then(function (data) { files[filename] = data; }); })).then(function () { return includeRawDataFile(includedFiles, files, entryFilename, data); }); } /** * Synchronously load all files included in a sass compilations including potential raw data input */ function loadCompiledFilesSync(includedFiles, entryFilename, data) { var files = {}; includedFiles.forEach(function (filename) { files[filename] = loadSync(filename); }); return includeRawDataFile(includedFiles, files, entryFilename, data); }