1 line
32 KiB
JSON
1 line
32 KiB
JSON
{"ast":null,"code":"/*!\n * node-sass: lib/index.js\n */\nvar path = require('path'),\n clonedeep = require('lodash/cloneDeep'),\n sass = require('./extensions');\n/**\n * Require binding\n */\n\n\nvar binding = require('./binding')(sass);\n/**\n * Get input file\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getInputFile(options) {\n return options.file ? path.resolve(options.file) : null;\n}\n/**\n * Get output file\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getOutputFile(options) {\n var outFile = options.outFile;\n\n if (!outFile || typeof outFile !== 'string' || !options.data && !options.file) {\n return null;\n }\n\n return path.resolve(outFile);\n}\n/**\n * Get source map\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getSourceMap(options) {\n var sourceMap = options.sourceMap;\n\n if (sourceMap && typeof sourceMap !== 'string' && options.outFile) {\n sourceMap = options.outFile + '.map';\n }\n\n return sourceMap && typeof sourceMap === 'string' ? path.resolve(sourceMap) : null;\n}\n/**\n * Get stats\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getStats(options) {\n var stats = {};\n stats.entry = options.file || 'data';\n stats.start = Date.now();\n return stats;\n}\n/**\n * End stats\n *\n * @param {Object} stats\n * @param {Object} sourceMap\n * @api private\n */\n\n\nfunction endStats(stats) {\n stats.end = Date.now();\n stats.duration = stats.end - stats.start;\n return stats;\n}\n/**\n * Get style\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getStyle(options) {\n var styles = {\n nested: 0,\n expanded: 1,\n compact: 2,\n compressed: 3\n };\n return styles[options.outputStyle] || 0;\n}\n/**\n * Get indent width\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getIndentWidth(options) {\n var width = parseInt(options.indentWidth) || 2;\n return width > 10 ? 2 : width;\n}\n/**\n * Get indent type\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getIndentType(options) {\n var types = {\n space: 0,\n tab: 1\n };\n return types[options.indentType] || 0;\n}\n/**\n * Get linefeed\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getLinefeed(options) {\n var feeds = {\n cr: '\\r',\n crlf: '\\r\\n',\n lf: '\\n',\n lfcr: '\\n\\r'\n };\n return feeds[options.linefeed] || '\\n';\n}\n/**\n * Build an includePaths string\n * from the options.includePaths array and the SASS_PATH environment variable\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction buildIncludePaths(options) {\n options.includePaths = options.includePaths || [];\n\n if (Object.prototype.hasOwnProperty.call(process.env, 'SASS_PATH')) {\n options.includePaths = options.includePaths.concat(process.env.SASS_PATH.split(path.delimiter));\n } // Preserve the behaviour people have come to expect.\n // This behaviour was removed from Sass in 3.4 and\n // LibSass in 3.5.\n\n\n options.includePaths.unshift(process.cwd());\n return options.includePaths.join(path.delimiter);\n}\n/**\n * Get options\n *\n * @param {Object} options\n * @api private\n */\n\n\nfunction getOptions(opts, cb) {\n if (typeof opts !== 'object') {\n throw new Error('Invalid: options is not an object.');\n }\n\n var options = clonedeep(opts || {});\n options.sourceComments = options.sourceComments || false;\n\n if (Object.prototype.hasOwnProperty.call(options, 'file')) {\n options.file = getInputFile(options);\n }\n\n options.outFile = getOutputFile(options);\n options.includePaths = buildIncludePaths(options);\n options.precision = parseInt(options.precision) || 5;\n options.sourceMap = getSourceMap(options);\n options.style = getStyle(options);\n options.indentWidth = getIndentWidth(options);\n options.indentType = getIndentType(options);\n options.linefeed = getLinefeed(options); // context object represents node-sass environment\n\n options.context = {\n options: options,\n callback: cb\n };\n options.result = {\n stats: getStats(options)\n };\n return options;\n}\n/**\n * Executes a callback and transforms any exception raised into a sass error\n *\n * @param {Function} callback\n * @param {Array} arguments\n * @api private\n */\n\n\nfunction tryCallback(callback, args) {\n try {\n return callback.apply(this, args);\n } catch (e) {\n if (typeof e === 'string') {\n return new binding.types.Error(e);\n } else if (e instanceof Error) {\n return new binding.types.Error(e.message);\n } else {\n return new binding.types.Error('An unexpected error occurred');\n }\n }\n}\n/**\n * Normalizes the signature of custom functions to make it possible to just supply the\n * function name and have the signature default to `fn(...)`. The callback is adjusted\n * to transform the input sass list into discrete arguments.\n *\n * @param {String} signature\n * @param {Function} callback\n * @return {Object}\n * @api private\n */\n\n\nfunction normalizeFunctionSignature(signature, callback) {\n if (!/^\\*|@warn|@error|@debug|\\w+\\(.*\\)$/.test(signature)) {\n if (!/\\w+/.test(signature)) {\n throw new Error('Invalid function signature format \"' + signature + '\"');\n }\n\n return {\n signature: signature + '(...)',\n callback: function () {\n var args = Array.prototype.slice.call(arguments),\n list = args.shift(),\n i;\n\n for (i = list.getLength() - 1; i >= 0; i--) {\n args.unshift(list.getValue(i));\n }\n\n return callback.apply(this, args);\n }\n };\n }\n\n return {\n signature: signature,\n callback: callback\n };\n}\n/**\n * Render\n *\n * @param {Object} options\n * @api public\n */\n\n\nmodule.exports.render = function (opts, cb) {\n var options = getOptions(opts, cb); // options.error and options.success are for libsass binding\n\n options.error = function (err) {\n var payload = Object.assign(new Error(), JSON.parse(err));\n\n if (cb) {\n options.context.callback.call(options.context, payload, null);\n }\n };\n\n options.success = function () {\n var result = options.result;\n var stats = endStats(result.stats);\n var payload = {\n css: result.css,\n stats: stats\n };\n\n if (result.map) {\n payload.map = result.map;\n }\n\n if (cb) {\n options.context.callback.call(options.context, null, payload);\n }\n };\n\n var importer = options.importer;\n\n if (importer) {\n if (Array.isArray(importer)) {\n options.importer = [];\n importer.forEach(function (subject, index) {\n options.importer[index] = function (file, prev, bridge) {\n function done(result) {\n bridge.success(result === module.exports.NULL ? null : result);\n }\n\n var result = subject.call(options.context, file, prev, done);\n\n if (result !== undefined) {\n done(result);\n }\n };\n });\n } else {\n options.importer = function (file, prev, bridge) {\n function done(result) {\n bridge.success(result === module.exports.NULL ? null : result);\n }\n\n var result = importer.call(options.context, file, prev, done);\n\n if (result !== undefined) {\n done(result);\n }\n };\n }\n }\n\n var functions = clonedeep(options.functions);\n\n if (functions) {\n options.functions = {};\n Object.keys(functions).forEach(function (subject) {\n var cb = normalizeFunctionSignature(subject, functions[subject]);\n\n options.functions[cb.signature] = function () {\n var args = Array.prototype.slice.call(arguments),\n bridge = args.pop();\n\n function done(data) {\n bridge.success(data);\n }\n\n var result = tryCallback(cb.callback.bind(options.context), args.concat(done));\n\n if (result) {\n done(result);\n }\n };\n });\n }\n\n if (options.data) {\n binding.render(options);\n } else if (options.file) {\n binding.renderFile(options);\n } else {\n cb({\n status: 3,\n message: 'No input specified: provide a file name or a source string to process'\n });\n }\n};\n/**\n * Render sync\n *\n * @param {Object} options\n * @api public\n */\n\n\nmodule.exports.renderSync = function (opts) {\n var options = getOptions(opts);\n var importer = options.importer;\n\n if (importer) {\n if (Array.isArray(importer)) {\n options.importer = [];\n importer.forEach(function (subject, index) {\n options.importer[index] = function (file, prev) {\n var result = subject.call(options.context, file, prev);\n return result === module.exports.NULL ? null : result;\n };\n });\n } else {\n options.importer = function (file, prev) {\n var result = importer.call(options.context, file, prev);\n return result === module.exports.NULL ? null : result;\n };\n }\n }\n\n var functions = clonedeep(options.functions);\n\n if (options.functions) {\n options.functions = {};\n Object.keys(functions).forEach(function (signature) {\n var cb = normalizeFunctionSignature(signature, functions[signature]);\n\n options.functions[cb.signature] = function () {\n return tryCallback(cb.callback.bind(options.context), arguments);\n };\n });\n }\n\n var status;\n\n if (options.data) {\n status = binding.renderSync(options);\n } else if (options.file) {\n status = binding.renderFileSync(options);\n } else {\n throw new Error('No input specified: provide a file name or a source string to process');\n }\n\n var result = options.result;\n\n if (status) {\n result.stats = endStats(result.stats);\n return result;\n }\n\n throw Object.assign(new Error(), JSON.parse(result.error));\n};\n/**\n * API Info\n *\n * @api public\n */\n\n\nmodule.exports.info = sass.getVersionInfo(binding);\n/**\n * Expose sass types\n */\n\nmodule.exports.types = binding.types;\nmodule.exports.TRUE = binding.types.Boolean.TRUE;\nmodule.exports.FALSE = binding.types.Boolean.FALSE;\nmodule.exports.NULL = binding.types.Null.NULL;","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/node-sass/lib/index.js"],"names":["path","require","clonedeep","sass","binding","getInputFile","options","file","resolve","getOutputFile","outFile","data","getSourceMap","sourceMap","getStats","stats","entry","start","Date","now","endStats","end","duration","getStyle","styles","nested","expanded","compact","compressed","outputStyle","getIndentWidth","width","parseInt","indentWidth","getIndentType","types","space","tab","indentType","getLinefeed","feeds","cr","crlf","lf","lfcr","linefeed","buildIncludePaths","includePaths","Object","prototype","hasOwnProperty","call","process","env","concat","SASS_PATH","split","delimiter","unshift","cwd","join","getOptions","opts","cb","Error","sourceComments","precision","style","context","callback","result","tryCallback","args","apply","e","message","normalizeFunctionSignature","signature","test","Array","slice","arguments","list","shift","i","getLength","getValue","module","exports","render","error","err","payload","assign","JSON","parse","success","css","map","importer","isArray","forEach","subject","index","prev","bridge","done","NULL","undefined","functions","keys","pop","bind","renderFile","status","renderSync","renderFileSync","info","getVersionInfo","TRUE","Boolean","FALSE","Null"],"mappings":"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","sourcesContent":["/*!\n * node-sass: lib/index.js\n */\n\nvar path = require('path'),\n clonedeep = require('lodash/cloneDeep'),\n sass = require('./extensions');\n\n/**\n * Require binding\n */\n\nvar binding = require('./binding')(sass);\n\n/**\n * Get input file\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getInputFile(options) {\n return options.file ? path.resolve(options.file) : null;\n}\n\n/**\n * Get output file\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getOutputFile(options) {\n var outFile = options.outFile;\n\n if (!outFile || typeof outFile !== 'string' || (!options.data && !options.file)) {\n return null;\n }\n\n return path.resolve(outFile);\n}\n\n/**\n * Get source map\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getSourceMap(options) {\n var sourceMap = options.sourceMap;\n\n if (sourceMap && typeof sourceMap !== 'string' && options.outFile) {\n sourceMap = options.outFile + '.map';\n }\n\n return sourceMap && typeof sourceMap === 'string' ? path.resolve(sourceMap) : null;\n}\n\n/**\n * Get stats\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getStats(options) {\n var stats = {};\n\n stats.entry = options.file || 'data';\n stats.start = Date.now();\n\n return stats;\n}\n\n/**\n * End stats\n *\n * @param {Object} stats\n * @param {Object} sourceMap\n * @api private\n */\n\nfunction endStats(stats) {\n stats.end = Date.now();\n stats.duration = stats.end - stats.start;\n\n return stats;\n}\n\n/**\n * Get style\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getStyle(options) {\n var styles = {\n nested: 0,\n expanded: 1,\n compact: 2,\n compressed: 3\n };\n\n return styles[options.outputStyle] || 0;\n}\n\n/**\n * Get indent width\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getIndentWidth(options) {\n var width = parseInt(options.indentWidth) || 2;\n\n return width > 10 ? 2 : width;\n}\n\n/**\n * Get indent type\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getIndentType(options) {\n var types = {\n space: 0,\n tab: 1\n };\n\n return types[options.indentType] || 0;\n}\n\n/**\n * Get linefeed\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getLinefeed(options) {\n var feeds = {\n cr: '\\r',\n crlf: '\\r\\n',\n lf: '\\n',\n lfcr: '\\n\\r'\n };\n\n return feeds[options.linefeed] || '\\n';\n}\n\n/**\n * Build an includePaths string\n * from the options.includePaths array and the SASS_PATH environment variable\n *\n * @param {Object} options\n * @api private\n */\n\nfunction buildIncludePaths(options) {\n options.includePaths = options.includePaths || [];\n\n if (Object.prototype.hasOwnProperty.call(process.env, 'SASS_PATH')) {\n options.includePaths = options.includePaths.concat(\n process.env.SASS_PATH.split(path.delimiter)\n );\n }\n\n // Preserve the behaviour people have come to expect.\n // This behaviour was removed from Sass in 3.4 and\n // LibSass in 3.5.\n options.includePaths.unshift(process.cwd());\n\n return options.includePaths.join(path.delimiter);\n}\n\n/**\n * Get options\n *\n * @param {Object} options\n * @api private\n */\n\nfunction getOptions(opts, cb) {\n if (typeof opts !== 'object') {\n throw new Error('Invalid: options is not an object.');\n }\n var options = clonedeep(opts || {});\n\n options.sourceComments = options.sourceComments || false;\n if (Object.prototype.hasOwnProperty.call(options, 'file')) {\n options.file = getInputFile(options);\n }\n options.outFile = getOutputFile(options);\n options.includePaths = buildIncludePaths(options);\n options.precision = parseInt(options.precision) || 5;\n options.sourceMap = getSourceMap(options);\n options.style = getStyle(options);\n options.indentWidth = getIndentWidth(options);\n options.indentType = getIndentType(options);\n options.linefeed = getLinefeed(options);\n\n // context object represents node-sass environment\n options.context = { options: options, callback: cb };\n\n options.result = {\n stats: getStats(options)\n };\n\n return options;\n}\n\n/**\n * Executes a callback and transforms any exception raised into a sass error\n *\n * @param {Function} callback\n * @param {Array} arguments\n * @api private\n */\n\nfunction tryCallback(callback, args) {\n try {\n return callback.apply(this, args);\n } catch (e) {\n if (typeof e === 'string') {\n return new binding.types.Error(e);\n } else if (e instanceof Error) {\n return new binding.types.Error(e.message);\n } else {\n return new binding.types.Error('An unexpected error occurred');\n }\n }\n}\n\n/**\n * Normalizes the signature of custom functions to make it possible to just supply the\n * function name and have the signature default to `fn(...)`. The callback is adjusted\n * to transform the input sass list into discrete arguments.\n *\n * @param {String} signature\n * @param {Function} callback\n * @return {Object}\n * @api private\n */\n\nfunction normalizeFunctionSignature(signature, callback) {\n if (!/^\\*|@warn|@error|@debug|\\w+\\(.*\\)$/.test(signature)) {\n if (!/\\w+/.test(signature)) {\n throw new Error('Invalid function signature format \"' + signature + '\"');\n }\n\n return {\n signature: signature + '(...)',\n callback: function() {\n var args = Array.prototype.slice.call(arguments),\n list = args.shift(),\n i;\n\n for (i = list.getLength() - 1; i >= 0; i--) {\n args.unshift(list.getValue(i));\n }\n\n return callback.apply(this, args);\n }\n };\n }\n\n return {\n signature: signature,\n callback: callback\n };\n}\n\n/**\n * Render\n *\n * @param {Object} options\n * @api public\n */\n\nmodule.exports.render = function(opts, cb) {\n var options = getOptions(opts, cb);\n\n // options.error and options.success are for libsass binding\n options.error = function(err) {\n var payload = Object.assign(new Error(), JSON.parse(err));\n\n if (cb) {\n options.context.callback.call(options.context, payload, null);\n }\n };\n\n options.success = function() {\n var result = options.result;\n var stats = endStats(result.stats);\n var payload = {\n css: result.css,\n stats: stats\n };\n if (result.map) {\n payload.map = result.map;\n }\n\n if (cb) {\n options.context.callback.call(options.context, null, payload);\n }\n };\n\n var importer = options.importer;\n\n if (importer) {\n if (Array.isArray(importer)) {\n options.importer = [];\n importer.forEach(function(subject, index) {\n options.importer[index] = function(file, prev, bridge) {\n function done(result) {\n bridge.success(result === module.exports.NULL ? null : result);\n }\n\n var result = subject.call(options.context, file, prev, done);\n\n if (result !== undefined) {\n done(result);\n }\n };\n });\n } else {\n options.importer = function(file, prev, bridge) {\n function done(result) {\n bridge.success(result === module.exports.NULL ? null : result);\n }\n\n var result = importer.call(options.context, file, prev, done);\n\n if (result !== undefined) {\n done(result);\n }\n };\n }\n }\n\n var functions = clonedeep(options.functions);\n\n if (functions) {\n options.functions = {};\n\n Object.keys(functions).forEach(function(subject) {\n var cb = normalizeFunctionSignature(subject, functions[subject]);\n\n options.functions[cb.signature] = function() {\n var args = Array.prototype.slice.call(arguments),\n bridge = args.pop();\n\n function done(data) {\n bridge.success(data);\n }\n\n var result = tryCallback(cb.callback.bind(options.context), args.concat(done));\n\n if (result) {\n done(result);\n }\n };\n });\n }\n\n if (options.data) {\n binding.render(options);\n } else if (options.file) {\n binding.renderFile(options);\n } else {\n cb({status: 3, message: 'No input specified: provide a file name or a source string to process' });\n }\n};\n\n/**\n * Render sync\n *\n * @param {Object} options\n * @api public\n */\n\nmodule.exports.renderSync = function(opts) {\n var options = getOptions(opts);\n var importer = options.importer;\n\n if (importer) {\n if (Array.isArray(importer)) {\n options.importer = [];\n importer.forEach(function(subject, index) {\n options.importer[index] = function(file, prev) {\n var result = subject.call(options.context, file, prev);\n\n return result === module.exports.NULL ? null : result;\n };\n });\n } else {\n options.importer = function(file, prev) {\n var result = importer.call(options.context, file, prev);\n\n return result === module.exports.NULL ? null : result;\n };\n }\n }\n\n var functions = clonedeep(options.functions);\n\n if (options.functions) {\n options.functions = {};\n\n Object.keys(functions).forEach(function(signature) {\n var cb = normalizeFunctionSignature(signature, functions[signature]);\n\n options.functions[cb.signature] = function() {\n return tryCallback(cb.callback.bind(options.context), arguments);\n };\n });\n }\n\n var status;\n if (options.data) {\n status = binding.renderSync(options);\n } else if (options.file) {\n status = binding.renderFileSync(options);\n } else {\n throw new Error('No input specified: provide a file name or a source string to process');\n }\n\n var result = options.result;\n\n if (status) {\n result.stats = endStats(result.stats);\n return result;\n }\n\n throw Object.assign(new Error(), JSON.parse(result.error));\n};\n\n/**\n * API Info\n *\n * @api public\n */\n\nmodule.exports.info = sass.getVersionInfo(binding);\n\n/**\n * Expose sass types\n */\n\nmodule.exports.types = binding.types;\nmodule.exports.TRUE = binding.types.Boolean.TRUE;\nmodule.exports.FALSE = binding.types.Boolean.FALSE;\nmodule.exports.NULL = binding.types.Null.NULL;\n"]},"metadata":{},"sourceType":"script"} |