initial commit
This commit is contained in:
75
node_modules/css/History.md
generated
vendored
Normal file
75
node_modules/css/History.md
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
2.2.1 / 2015-06-17
|
||||
==================
|
||||
|
||||
* fix parsing escaped quotes in quoted strings
|
||||
|
||||
2.2.0 / 2015-02-18
|
||||
==================
|
||||
|
||||
* add `parsingErrors` to list errors when parsing with `silent: true`
|
||||
* accept EOL characters and all other whitespace characters in `@` rules such
|
||||
as `@media`
|
||||
|
||||
2.1.0 / 2014-08-05
|
||||
==================
|
||||
|
||||
* change error message format and add `.reason` property to errors
|
||||
* add `inputSourcemaps` option to disable input source map processing
|
||||
* use `inherits` for inheritance (fixes some browsers)
|
||||
* add `sourcemap: 'generator'` option to return the `SourceMapGenerator`
|
||||
object
|
||||
|
||||
2.0.0 / 2014-06-18
|
||||
==================
|
||||
|
||||
* add non-enumerable parent reference to each node
|
||||
* drop Component(1) support
|
||||
* add support for @custom-media, @host, and @font-face
|
||||
* allow commas inside selector functions
|
||||
* allow empty property values
|
||||
* changed default options.position value to true
|
||||
* remove comments from properties and values
|
||||
* asserts when selectors are missing
|
||||
* added node.position.content property
|
||||
* absorb css-parse and css-stringify libraries
|
||||
* apply original source maps from source files
|
||||
|
||||
1.6.1 / 2014-01-02
|
||||
==================
|
||||
|
||||
* fix component.json
|
||||
|
||||
1.6.0 / 2013-12-21
|
||||
==================
|
||||
|
||||
* update deps
|
||||
|
||||
1.5.0 / 2013-12-03
|
||||
==================
|
||||
|
||||
* update deps
|
||||
|
||||
1.1.0 / 2013-04-04
|
||||
==================
|
||||
|
||||
* update deps
|
||||
|
||||
1.0.7 / 2012-11-21
|
||||
==================
|
||||
|
||||
* fix component.json
|
||||
|
||||
1.0.4 / 2012-11-15
|
||||
==================
|
||||
|
||||
* update css-stringify
|
||||
|
||||
1.0.3 / 2012-09-01
|
||||
==================
|
||||
|
||||
* add component support
|
||||
|
||||
0.0.1 / 2010-01-03
|
||||
==================
|
||||
|
||||
* Initial release
|
||||
9
node_modules/css/LICENSE
generated
vendored
Normal file
9
node_modules/css/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
314
node_modules/css/Readme.md
generated
vendored
Normal file
314
node_modules/css/Readme.md
generated
vendored
Normal file
@@ -0,0 +1,314 @@
|
||||
# css [](https://travis-ci.org/reworkcss/css)
|
||||
|
||||
CSS parser / stringifier.
|
||||
|
||||
## Installation
|
||||
|
||||
$ npm install css
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var css = require('css');
|
||||
var obj = css.parse('body { font-size: 12px; }', options);
|
||||
css.stringify(obj, options);
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### css.parse(code, [options])
|
||||
|
||||
Accepts a CSS string and returns an AST `object`.
|
||||
|
||||
`options`:
|
||||
|
||||
- silent: silently fail on parse errors.
|
||||
- source: the path to the file containing `css`. Makes errors and source
|
||||
maps more helpful, by letting them know where code comes from.
|
||||
|
||||
### css.stringify(object, [options])
|
||||
|
||||
Accepts an AST `object` (as `css.parse` produces) and returns a CSS string.
|
||||
|
||||
`options`:
|
||||
|
||||
- indent: the string used to indent the output. Defaults to two spaces.
|
||||
- compress: omit comments and extraneous whitespace.
|
||||
- sourcemap: return a sourcemap along with the CSS output. Using the `source`
|
||||
option of `css.parse` is strongly recommended when creating a source map.
|
||||
Specify `sourcemap: 'generator'` to return the SourceMapGenerator object
|
||||
instead of serializing the source map.
|
||||
- inputSourcemaps: (enabled by default, specify `false` to disable) reads any
|
||||
source maps referenced by the input files when generating the output source
|
||||
map. When enabled, file system access may be required for reading the
|
||||
referenced source maps.
|
||||
|
||||
### Example
|
||||
|
||||
```js
|
||||
var ast = css.parse('body { font-size: 12px; }', { source: 'source.css' });
|
||||
|
||||
var css = css.stringify(ast);
|
||||
|
||||
var result = css.stringify(ast, { sourcemap: true });
|
||||
result.code // string with CSS
|
||||
result.map // source map object
|
||||
```
|
||||
|
||||
### Errors
|
||||
|
||||
Errors thrown during parsing have the following properties:
|
||||
|
||||
- message: `String`. The full error message with the source position.
|
||||
- reason: `String`. The error message without position.
|
||||
- filename: `String` or `undefined`. The value of `options.source` if
|
||||
passed to `css.parse`. Otherwise `undefined`.
|
||||
- line: `Integer`.
|
||||
- column: `Integer`.
|
||||
- source: `String`. The portion of code that couldn't be parsed.
|
||||
|
||||
When parsing with the `silent` option, errors are listed in the
|
||||
`parsingErrors` property of the [`stylesheet`](#stylesheet) node instead
|
||||
of being thrown.
|
||||
|
||||
If you create any errors in plugins such as in
|
||||
[rework](https://github.com/reworkcss/rework), you __must__ set the same
|
||||
properties for consistency.
|
||||
|
||||
## AST
|
||||
|
||||
Interactively explore the AST with <http://iamdustan.com/reworkcss_ast_explorer/>.
|
||||
|
||||
### Common properties
|
||||
|
||||
All nodes have the following properties.
|
||||
|
||||
#### position
|
||||
|
||||
Information about the position in the source string that corresponds to
|
||||
the node.
|
||||
|
||||
`Object`:
|
||||
|
||||
- start: `Object`:
|
||||
- line: `Number`.
|
||||
- column: `Number`.
|
||||
- end: `Object`:
|
||||
- line: `Number`.
|
||||
- column: `Number`.
|
||||
- source: `String` or `undefined`. The value of `options.source` if passed to
|
||||
`css.parse`. Otherwise `undefined`.
|
||||
- content: `String`. The full source string passed to `css.parse`.
|
||||
|
||||
The line and column numbers are 1-based: The first line is 1 and the first
|
||||
column of a line is 1 (not 0).
|
||||
|
||||
The `position` property lets you know from which source file the node comes
|
||||
from (if available), what that file contains, and what part of that file was
|
||||
parsed into the node.
|
||||
|
||||
#### type
|
||||
|
||||
`String`. The possible values are the ones listed in the Types section below.
|
||||
|
||||
#### parent
|
||||
|
||||
A reference to the parent node, or `null` if the node has no parent.
|
||||
|
||||
### Types
|
||||
|
||||
The available values of `node.type` are listed below, as well as the available
|
||||
properties of each node (other than the common properties listed above.)
|
||||
|
||||
#### stylesheet
|
||||
|
||||
The root node returned by `css.parse`.
|
||||
|
||||
- stylesheet: `Object`:
|
||||
- rules: `Array` of nodes with the types `rule`, `comment` and any of the
|
||||
at-rule types.
|
||||
- parsingErrors: `Array` of `Error`s. Errors collected during parsing when
|
||||
option `silent` is true.
|
||||
|
||||
#### rule
|
||||
|
||||
- selectors: `Array` of `String`s. The list of selectors of the rule, split
|
||||
on commas. Each selector is trimmed from whitespace and comments.
|
||||
- declarations: `Array` of nodes with the types `declaration` and `comment`.
|
||||
|
||||
#### declaration
|
||||
|
||||
- property: `String`. The property name, trimmed from whitespace and
|
||||
comments. May not be empty.
|
||||
- value: `String`. The value of the property, trimmed from whitespace and
|
||||
comments. Empty values are allowed.
|
||||
|
||||
#### comment
|
||||
|
||||
A rule-level or declaration-level comment. Comments inside selectors,
|
||||
properties and values etc. are lost.
|
||||
|
||||
- comment: `String`. The part between the starting `/*` and the ending `*/`
|
||||
of the comment, including whitespace.
|
||||
|
||||
#### charset
|
||||
|
||||
The `@charset` at-rule.
|
||||
|
||||
- charset: `String`. The part following `@charset `.
|
||||
|
||||
#### custom-media
|
||||
|
||||
The `@custom-media` at-rule.
|
||||
|
||||
- name: `String`. The `--`-prefixed name.
|
||||
- media: `String`. The part following the name.
|
||||
|
||||
#### document
|
||||
|
||||
The `@document` at-rule.
|
||||
|
||||
- document: `String`. The part following `@document `.
|
||||
- vendor: `String` or `undefined`. The vendor prefix in `@document`, or
|
||||
`undefined` if there is none.
|
||||
- rules: `Array` of nodes with the types `rule`, `comment` and any of the
|
||||
at-rule types.
|
||||
|
||||
#### font-face
|
||||
|
||||
The `@font-face` at-rule.
|
||||
|
||||
- declarations: `Array` of nodes with the types `declaration` and `comment`.
|
||||
|
||||
#### host
|
||||
|
||||
The `@host` at-rule.
|
||||
|
||||
- rules: `Array` of nodes with the types `rule`, `comment` and any of the
|
||||
at-rule types.
|
||||
|
||||
#### import
|
||||
|
||||
The `@import` at-rule.
|
||||
|
||||
- import: `String`. The part following `@import `.
|
||||
|
||||
#### keyframes
|
||||
|
||||
The `@keyframes` at-rule.
|
||||
|
||||
- name: `String`. The name of the keyframes rule.
|
||||
- vendor: `String` or `undefined`. The vendor prefix in `@keyframes`, or
|
||||
`undefined` if there is none.
|
||||
- keyframes: `Array` of nodes with the types `keyframe` and `comment`.
|
||||
|
||||
#### keyframe
|
||||
|
||||
- values: `Array` of `String`s. The list of “selectors” of the keyframe rule,
|
||||
split on commas. Each “selector” is trimmed from whitespace.
|
||||
- declarations: `Array` of nodes with the types `declaration` and `comment`.
|
||||
|
||||
#### media
|
||||
|
||||
The `@media` at-rule.
|
||||
|
||||
- media: `String`. The part following `@media `.
|
||||
- rules: `Array` of nodes with the types `rule`, `comment` and any of the
|
||||
at-rule types.
|
||||
|
||||
#### namespace
|
||||
|
||||
The `@namespace` at-rule.
|
||||
|
||||
- namespace: `String`. The part following `@namespace `.
|
||||
|
||||
#### page
|
||||
|
||||
The `@page` at-rule.
|
||||
|
||||
- selectors: `Array` of `String`s. The list of selectors of the rule, split
|
||||
on commas. Each selector is trimmed from whitespace and comments.
|
||||
- declarations: `Array` of nodes with the types `declaration` and `comment`.
|
||||
|
||||
#### supports
|
||||
|
||||
The `@supports` at-rule.
|
||||
|
||||
- supports: `String`. The part following `@supports `.
|
||||
- rules: `Array` of nodes with the types `rule`, `comment` and any of the
|
||||
at-rule types.
|
||||
|
||||
### Example
|
||||
|
||||
CSS:
|
||||
|
||||
```css
|
||||
body {
|
||||
background: #eee;
|
||||
color: #888;
|
||||
}
|
||||
```
|
||||
|
||||
Parse tree:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "stylesheet",
|
||||
"stylesheet": {
|
||||
"rules": [
|
||||
{
|
||||
"type": "rule",
|
||||
"selectors": [
|
||||
"body"
|
||||
],
|
||||
"declarations": [
|
||||
{
|
||||
"type": "declaration",
|
||||
"property": "background",
|
||||
"value": "#eee",
|
||||
"position": {
|
||||
"start": {
|
||||
"line": 2,
|
||||
"column": 3
|
||||
},
|
||||
"end": {
|
||||
"line": 2,
|
||||
"column": 19
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "declaration",
|
||||
"property": "color",
|
||||
"value": "#888",
|
||||
"position": {
|
||||
"start": {
|
||||
"line": 3,
|
||||
"column": 3
|
||||
},
|
||||
"end": {
|
||||
"line": 3,
|
||||
"column": 14
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"position": {
|
||||
"start": {
|
||||
"line": 1,
|
||||
"column": 1
|
||||
},
|
||||
"end": {
|
||||
"line": 4,
|
||||
"column": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
2
node_modules/css/index.js
generated
vendored
Normal file
2
node_modules/css/index.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
exports.parse = require('./lib/parse');
|
||||
exports.stringify = require('./lib/stringify');
|
||||
603
node_modules/css/lib/parse/index.js
generated
vendored
Normal file
603
node_modules/css/lib/parse/index.js
generated
vendored
Normal file
@@ -0,0 +1,603 @@
|
||||
// http://www.w3.org/TR/CSS21/grammar.html
|
||||
// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
|
||||
var commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g
|
||||
|
||||
module.exports = function(css, options){
|
||||
options = options || {};
|
||||
|
||||
/**
|
||||
* Positional.
|
||||
*/
|
||||
|
||||
var lineno = 1;
|
||||
var column = 1;
|
||||
|
||||
/**
|
||||
* Update lineno and column based on `str`.
|
||||
*/
|
||||
|
||||
function updatePosition(str) {
|
||||
var lines = str.match(/\n/g);
|
||||
if (lines) lineno += lines.length;
|
||||
var i = str.lastIndexOf('\n');
|
||||
column = ~i ? str.length - i : column + str.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark position and patch `node.position`.
|
||||
*/
|
||||
|
||||
function position() {
|
||||
var start = { line: lineno, column: column };
|
||||
return function(node){
|
||||
node.position = new Position(start);
|
||||
whitespace();
|
||||
return node;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Store position information for a node
|
||||
*/
|
||||
|
||||
function Position(start) {
|
||||
this.start = start;
|
||||
this.end = { line: lineno, column: column };
|
||||
this.source = options.source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Non-enumerable source string
|
||||
*/
|
||||
|
||||
Position.prototype.content = css;
|
||||
|
||||
/**
|
||||
* Error `msg`.
|
||||
*/
|
||||
|
||||
var errorsList = [];
|
||||
|
||||
function error(msg) {
|
||||
var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);
|
||||
err.reason = msg;
|
||||
err.filename = options.source;
|
||||
err.line = lineno;
|
||||
err.column = column;
|
||||
err.source = css;
|
||||
|
||||
if (options.silent) {
|
||||
errorsList.push(err);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse stylesheet.
|
||||
*/
|
||||
|
||||
function stylesheet() {
|
||||
var rulesList = rules();
|
||||
|
||||
return {
|
||||
type: 'stylesheet',
|
||||
stylesheet: {
|
||||
source: options.source,
|
||||
rules: rulesList,
|
||||
parsingErrors: errorsList
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Opening brace.
|
||||
*/
|
||||
|
||||
function open() {
|
||||
return match(/^{\s*/);
|
||||
}
|
||||
|
||||
/**
|
||||
* Closing brace.
|
||||
*/
|
||||
|
||||
function close() {
|
||||
return match(/^}/);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse ruleset.
|
||||
*/
|
||||
|
||||
function rules() {
|
||||
var node;
|
||||
var rules = [];
|
||||
whitespace();
|
||||
comments(rules);
|
||||
while (css.length && css.charAt(0) != '}' && (node = atrule() || rule())) {
|
||||
if (node !== false) {
|
||||
rules.push(node);
|
||||
comments(rules);
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Match `re` and return captures.
|
||||
*/
|
||||
|
||||
function match(re) {
|
||||
var m = re.exec(css);
|
||||
if (!m) return;
|
||||
var str = m[0];
|
||||
updatePosition(str);
|
||||
css = css.slice(str.length);
|
||||
return m;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse whitespace.
|
||||
*/
|
||||
|
||||
function whitespace() {
|
||||
match(/^\s*/);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse comments;
|
||||
*/
|
||||
|
||||
function comments(rules) {
|
||||
var c;
|
||||
rules = rules || [];
|
||||
while (c = comment()) {
|
||||
if (c !== false) {
|
||||
rules.push(c);
|
||||
}
|
||||
}
|
||||
return rules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse comment.
|
||||
*/
|
||||
|
||||
function comment() {
|
||||
var pos = position();
|
||||
if ('/' != css.charAt(0) || '*' != css.charAt(1)) return;
|
||||
|
||||
var i = 2;
|
||||
while ("" != css.charAt(i) && ('*' != css.charAt(i) || '/' != css.charAt(i + 1))) ++i;
|
||||
i += 2;
|
||||
|
||||
if ("" === css.charAt(i-1)) {
|
||||
return error('End of comment missing');
|
||||
}
|
||||
|
||||
var str = css.slice(2, i - 2);
|
||||
column += 2;
|
||||
updatePosition(str);
|
||||
css = css.slice(i);
|
||||
column += 2;
|
||||
|
||||
return pos({
|
||||
type: 'comment',
|
||||
comment: str
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse selector.
|
||||
*/
|
||||
|
||||
function selector() {
|
||||
var m = match(/^([^{]+)/);
|
||||
if (!m) return;
|
||||
/* @fix Remove all comments from selectors
|
||||
* http://ostermiller.org/findcomment.html */
|
||||
return trim(m[0])
|
||||
.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, '')
|
||||
.replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g, function(m) {
|
||||
return m.replace(/,/g, '\u200C');
|
||||
})
|
||||
.split(/\s*(?![^(]*\)),\s*/)
|
||||
.map(function(s) {
|
||||
return s.replace(/\u200C/g, ',');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse declaration.
|
||||
*/
|
||||
|
||||
function declaration() {
|
||||
var pos = position();
|
||||
|
||||
// prop
|
||||
var prop = match(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
|
||||
if (!prop) return;
|
||||
prop = trim(prop[0]);
|
||||
|
||||
// :
|
||||
if (!match(/^:\s*/)) return error("property missing ':'");
|
||||
|
||||
// val
|
||||
var val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/);
|
||||
|
||||
var ret = pos({
|
||||
type: 'declaration',
|
||||
property: prop.replace(commentre, ''),
|
||||
value: val ? trim(val[0]).replace(commentre, '') : ''
|
||||
});
|
||||
|
||||
// ;
|
||||
match(/^[;\s]*/);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse declarations.
|
||||
*/
|
||||
|
||||
function declarations() {
|
||||
var decls = [];
|
||||
|
||||
if (!open()) return error("missing '{'");
|
||||
comments(decls);
|
||||
|
||||
// declarations
|
||||
var decl;
|
||||
while (decl = declaration()) {
|
||||
if (decl !== false) {
|
||||
decls.push(decl);
|
||||
comments(decls);
|
||||
}
|
||||
}
|
||||
|
||||
if (!close()) return error("missing '}'");
|
||||
return decls;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse keyframe.
|
||||
*/
|
||||
|
||||
function keyframe() {
|
||||
var m;
|
||||
var vals = [];
|
||||
var pos = position();
|
||||
|
||||
while (m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/)) {
|
||||
vals.push(m[1]);
|
||||
match(/^,\s*/);
|
||||
}
|
||||
|
||||
if (!vals.length) return;
|
||||
|
||||
return pos({
|
||||
type: 'keyframe',
|
||||
values: vals,
|
||||
declarations: declarations()
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse keyframes.
|
||||
*/
|
||||
|
||||
function atkeyframes() {
|
||||
var pos = position();
|
||||
var m = match(/^@([-\w]+)?keyframes\s*/);
|
||||
|
||||
if (!m) return;
|
||||
var vendor = m[1];
|
||||
|
||||
// identifier
|
||||
var m = match(/^([-\w]+)\s*/);
|
||||
if (!m) return error("@keyframes missing name");
|
||||
var name = m[1];
|
||||
|
||||
if (!open()) return error("@keyframes missing '{'");
|
||||
|
||||
var frame;
|
||||
var frames = comments();
|
||||
while (frame = keyframe()) {
|
||||
frames.push(frame);
|
||||
frames = frames.concat(comments());
|
||||
}
|
||||
|
||||
if (!close()) return error("@keyframes missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'keyframes',
|
||||
name: name,
|
||||
vendor: vendor,
|
||||
keyframes: frames
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse supports.
|
||||
*/
|
||||
|
||||
function atsupports() {
|
||||
var pos = position();
|
||||
var m = match(/^@supports *([^{]+)/);
|
||||
|
||||
if (!m) return;
|
||||
var supports = trim(m[1]);
|
||||
|
||||
if (!open()) return error("@supports missing '{'");
|
||||
|
||||
var style = comments().concat(rules());
|
||||
|
||||
if (!close()) return error("@supports missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'supports',
|
||||
supports: supports,
|
||||
rules: style
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse host.
|
||||
*/
|
||||
|
||||
function athost() {
|
||||
var pos = position();
|
||||
var m = match(/^@host\s*/);
|
||||
|
||||
if (!m) return;
|
||||
|
||||
if (!open()) return error("@host missing '{'");
|
||||
|
||||
var style = comments().concat(rules());
|
||||
|
||||
if (!close()) return error("@host missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'host',
|
||||
rules: style
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse media.
|
||||
*/
|
||||
|
||||
function atmedia() {
|
||||
var pos = position();
|
||||
var m = match(/^@media *([^{]+)/);
|
||||
|
||||
if (!m) return;
|
||||
var media = trim(m[1]);
|
||||
|
||||
if (!open()) return error("@media missing '{'");
|
||||
|
||||
var style = comments().concat(rules());
|
||||
|
||||
if (!close()) return error("@media missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'media',
|
||||
media: media,
|
||||
rules: style
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse custom-media.
|
||||
*/
|
||||
|
||||
function atcustommedia() {
|
||||
var pos = position();
|
||||
var m = match(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);
|
||||
if (!m) return;
|
||||
|
||||
return pos({
|
||||
type: 'custom-media',
|
||||
name: trim(m[1]),
|
||||
media: trim(m[2])
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse paged media.
|
||||
*/
|
||||
|
||||
function atpage() {
|
||||
var pos = position();
|
||||
var m = match(/^@page */);
|
||||
if (!m) return;
|
||||
|
||||
var sel = selector() || [];
|
||||
|
||||
if (!open()) return error("@page missing '{'");
|
||||
var decls = comments();
|
||||
|
||||
// declarations
|
||||
var decl;
|
||||
while (decl = declaration()) {
|
||||
decls.push(decl);
|
||||
decls = decls.concat(comments());
|
||||
}
|
||||
|
||||
if (!close()) return error("@page missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'page',
|
||||
selectors: sel,
|
||||
declarations: decls
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse document.
|
||||
*/
|
||||
|
||||
function atdocument() {
|
||||
var pos = position();
|
||||
var m = match(/^@([-\w]+)?document *([^{]+)/);
|
||||
if (!m) return;
|
||||
|
||||
var vendor = trim(m[1]);
|
||||
var doc = trim(m[2]);
|
||||
|
||||
if (!open()) return error("@document missing '{'");
|
||||
|
||||
var style = comments().concat(rules());
|
||||
|
||||
if (!close()) return error("@document missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'document',
|
||||
document: doc,
|
||||
vendor: vendor,
|
||||
rules: style
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse font-face.
|
||||
*/
|
||||
|
||||
function atfontface() {
|
||||
var pos = position();
|
||||
var m = match(/^@font-face\s*/);
|
||||
if (!m) return;
|
||||
|
||||
if (!open()) return error("@font-face missing '{'");
|
||||
var decls = comments();
|
||||
|
||||
// declarations
|
||||
var decl;
|
||||
while (decl = declaration()) {
|
||||
decls.push(decl);
|
||||
decls = decls.concat(comments());
|
||||
}
|
||||
|
||||
if (!close()) return error("@font-face missing '}'");
|
||||
|
||||
return pos({
|
||||
type: 'font-face',
|
||||
declarations: decls
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse import
|
||||
*/
|
||||
|
||||
var atimport = _compileAtrule('import');
|
||||
|
||||
/**
|
||||
* Parse charset
|
||||
*/
|
||||
|
||||
var atcharset = _compileAtrule('charset');
|
||||
|
||||
/**
|
||||
* Parse namespace
|
||||
*/
|
||||
|
||||
var atnamespace = _compileAtrule('namespace');
|
||||
|
||||
/**
|
||||
* Parse non-block at-rules
|
||||
*/
|
||||
|
||||
|
||||
function _compileAtrule(name) {
|
||||
var re = new RegExp('^@' + name + '\\s*([^;]+);');
|
||||
return function() {
|
||||
var pos = position();
|
||||
var m = match(re);
|
||||
if (!m) return;
|
||||
var ret = { type: name };
|
||||
ret[name] = m[1].trim();
|
||||
return pos(ret);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse at rule.
|
||||
*/
|
||||
|
||||
function atrule() {
|
||||
if (css[0] != '@') return;
|
||||
|
||||
return atkeyframes()
|
||||
|| atmedia()
|
||||
|| atcustommedia()
|
||||
|| atsupports()
|
||||
|| atimport()
|
||||
|| atcharset()
|
||||
|| atnamespace()
|
||||
|| atdocument()
|
||||
|| atpage()
|
||||
|| athost()
|
||||
|| atfontface();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse rule.
|
||||
*/
|
||||
|
||||
function rule() {
|
||||
var pos = position();
|
||||
var sel = selector();
|
||||
|
||||
if (!sel) return error('selector missing');
|
||||
comments();
|
||||
|
||||
return pos({
|
||||
type: 'rule',
|
||||
selectors: sel,
|
||||
declarations: declarations()
|
||||
});
|
||||
}
|
||||
|
||||
return addParent(stylesheet());
|
||||
};
|
||||
|
||||
/**
|
||||
* Trim `str`.
|
||||
*/
|
||||
|
||||
function trim(str) {
|
||||
return str ? str.replace(/^\s+|\s+$/g, '') : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds non-enumerable parent node reference to each node.
|
||||
*/
|
||||
|
||||
function addParent(obj, parent) {
|
||||
var isNode = obj && typeof obj.type === 'string';
|
||||
var childParent = isNode ? obj : parent;
|
||||
|
||||
for (var k in obj) {
|
||||
var value = obj[k];
|
||||
if (Array.isArray(value)) {
|
||||
value.forEach(function(v) { addParent(v, childParent); });
|
||||
} else if (value && typeof value === 'object') {
|
||||
addParent(value, childParent);
|
||||
}
|
||||
}
|
||||
|
||||
if (isNode) {
|
||||
Object.defineProperty(obj, 'parent', {
|
||||
configurable: true,
|
||||
writable: true,
|
||||
enumerable: false,
|
||||
value: parent || null
|
||||
});
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
50
node_modules/css/lib/stringify/compiler.js
generated
vendored
Normal file
50
node_modules/css/lib/stringify/compiler.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
/**
|
||||
* Expose `Compiler`.
|
||||
*/
|
||||
|
||||
module.exports = Compiler;
|
||||
|
||||
/**
|
||||
* Initialize a compiler.
|
||||
*
|
||||
* @param {Type} name
|
||||
* @return {Type}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function Compiler(opts) {
|
||||
this.options = opts || {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit `str`
|
||||
*/
|
||||
|
||||
Compiler.prototype.emit = function(str) {
|
||||
return str;
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit `node`.
|
||||
*/
|
||||
|
||||
Compiler.prototype.visit = function(node){
|
||||
return this[node.type](node);
|
||||
};
|
||||
|
||||
/**
|
||||
* Map visit over array of `nodes`, optionally using a `delim`
|
||||
*/
|
||||
|
||||
Compiler.prototype.mapVisit = function(nodes, delim){
|
||||
var buf = '';
|
||||
delim = delim || '';
|
||||
|
||||
for (var i = 0, length = nodes.length; i < length; i++) {
|
||||
buf += this.visit(nodes[i]);
|
||||
if (delim && i < length - 1) buf += this.emit(delim);
|
||||
}
|
||||
|
||||
return buf;
|
||||
};
|
||||
199
node_modules/css/lib/stringify/compress.js
generated
vendored
Normal file
199
node_modules/css/lib/stringify/compress.js
generated
vendored
Normal file
@@ -0,0 +1,199 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var Base = require('./compiler');
|
||||
var inherits = require('inherits');
|
||||
|
||||
/**
|
||||
* Expose compiler.
|
||||
*/
|
||||
|
||||
module.exports = Compiler;
|
||||
|
||||
/**
|
||||
* Initialize a new `Compiler`.
|
||||
*/
|
||||
|
||||
function Compiler(options) {
|
||||
Base.call(this, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inherit from `Base.prototype`.
|
||||
*/
|
||||
|
||||
inherits(Compiler, Base);
|
||||
|
||||
/**
|
||||
* Compile `node`.
|
||||
*/
|
||||
|
||||
Compiler.prototype.compile = function(node){
|
||||
return node.stylesheet
|
||||
.rules.map(this.visit, this)
|
||||
.join('');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit comment node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.comment = function(node){
|
||||
return this.emit('', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit import node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.import = function(node){
|
||||
return this.emit('@import ' + node.import + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit media node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.media = function(node){
|
||||
return this.emit('@media ' + node.media, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit document node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.document = function(node){
|
||||
var doc = '@' + (node.vendor || '') + 'document ' + node.document;
|
||||
|
||||
return this.emit(doc, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit charset node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.charset = function(node){
|
||||
return this.emit('@charset ' + node.charset + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit namespace node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.namespace = function(node){
|
||||
return this.emit('@namespace ' + node.namespace + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit supports node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.supports = function(node){
|
||||
return this.emit('@supports ' + node.supports, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit keyframes node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.keyframes = function(node){
|
||||
return this.emit('@'
|
||||
+ (node.vendor || '')
|
||||
+ 'keyframes '
|
||||
+ node.name, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.keyframes)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit keyframe node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.keyframe = function(node){
|
||||
var decls = node.declarations;
|
||||
|
||||
return this.emit(node.values.join(','), node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(decls)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit page node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.page = function(node){
|
||||
var sel = node.selectors.length
|
||||
? node.selectors.join(', ')
|
||||
: '';
|
||||
|
||||
return this.emit('@page ' + sel, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.declarations)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit font-face node.
|
||||
*/
|
||||
|
||||
Compiler.prototype['font-face'] = function(node){
|
||||
return this.emit('@font-face', node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.declarations)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit host node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.host = function(node){
|
||||
return this.emit('@host', node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit custom-media node.
|
||||
*/
|
||||
|
||||
Compiler.prototype['custom-media'] = function(node){
|
||||
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit rule node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.rule = function(node){
|
||||
var decls = node.declarations;
|
||||
if (!decls.length) return '';
|
||||
|
||||
return this.emit(node.selectors.join(','), node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(decls)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit declaration node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.declaration = function(node){
|
||||
return this.emit(node.property + ':' + node.value, node.position) + this.emit(';');
|
||||
};
|
||||
|
||||
254
node_modules/css/lib/stringify/identity.js
generated
vendored
Normal file
254
node_modules/css/lib/stringify/identity.js
generated
vendored
Normal file
@@ -0,0 +1,254 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var Base = require('./compiler');
|
||||
var inherits = require('inherits');
|
||||
|
||||
/**
|
||||
* Expose compiler.
|
||||
*/
|
||||
|
||||
module.exports = Compiler;
|
||||
|
||||
/**
|
||||
* Initialize a new `Compiler`.
|
||||
*/
|
||||
|
||||
function Compiler(options) {
|
||||
options = options || {};
|
||||
Base.call(this, options);
|
||||
this.indentation = options.indent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inherit from `Base.prototype`.
|
||||
*/
|
||||
|
||||
inherits(Compiler, Base);
|
||||
|
||||
/**
|
||||
* Compile `node`.
|
||||
*/
|
||||
|
||||
Compiler.prototype.compile = function(node){
|
||||
return this.stylesheet(node);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit stylesheet node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.stylesheet = function(node){
|
||||
return this.mapVisit(node.stylesheet.rules, '\n\n');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit comment node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.comment = function(node){
|
||||
return this.emit(this.indent() + '/*' + node.comment + '*/', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit import node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.import = function(node){
|
||||
return this.emit('@import ' + node.import + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit media node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.media = function(node){
|
||||
return this.emit('@media ' + node.media, node.position)
|
||||
+ this.emit(
|
||||
' {\n'
|
||||
+ this.indent(1))
|
||||
+ this.mapVisit(node.rules, '\n\n')
|
||||
+ this.emit(
|
||||
this.indent(-1)
|
||||
+ '\n}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit document node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.document = function(node){
|
||||
var doc = '@' + (node.vendor || '') + 'document ' + node.document;
|
||||
|
||||
return this.emit(doc, node.position)
|
||||
+ this.emit(
|
||||
' '
|
||||
+ ' {\n'
|
||||
+ this.indent(1))
|
||||
+ this.mapVisit(node.rules, '\n\n')
|
||||
+ this.emit(
|
||||
this.indent(-1)
|
||||
+ '\n}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit charset node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.charset = function(node){
|
||||
return this.emit('@charset ' + node.charset + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit namespace node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.namespace = function(node){
|
||||
return this.emit('@namespace ' + node.namespace + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit supports node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.supports = function(node){
|
||||
return this.emit('@supports ' + node.supports, node.position)
|
||||
+ this.emit(
|
||||
' {\n'
|
||||
+ this.indent(1))
|
||||
+ this.mapVisit(node.rules, '\n\n')
|
||||
+ this.emit(
|
||||
this.indent(-1)
|
||||
+ '\n}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit keyframes node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.keyframes = function(node){
|
||||
return this.emit('@' + (node.vendor || '') + 'keyframes ' + node.name, node.position)
|
||||
+ this.emit(
|
||||
' {\n'
|
||||
+ this.indent(1))
|
||||
+ this.mapVisit(node.keyframes, '\n')
|
||||
+ this.emit(
|
||||
this.indent(-1)
|
||||
+ '}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit keyframe node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.keyframe = function(node){
|
||||
var decls = node.declarations;
|
||||
|
||||
return this.emit(this.indent())
|
||||
+ this.emit(node.values.join(', '), node.position)
|
||||
+ this.emit(
|
||||
' {\n'
|
||||
+ this.indent(1))
|
||||
+ this.mapVisit(decls, '\n')
|
||||
+ this.emit(
|
||||
this.indent(-1)
|
||||
+ '\n'
|
||||
+ this.indent() + '}\n');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit page node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.page = function(node){
|
||||
var sel = node.selectors.length
|
||||
? node.selectors.join(', ') + ' '
|
||||
: '';
|
||||
|
||||
return this.emit('@page ' + sel, node.position)
|
||||
+ this.emit('{\n')
|
||||
+ this.emit(this.indent(1))
|
||||
+ this.mapVisit(node.declarations, '\n')
|
||||
+ this.emit(this.indent(-1))
|
||||
+ this.emit('\n}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit font-face node.
|
||||
*/
|
||||
|
||||
Compiler.prototype['font-face'] = function(node){
|
||||
return this.emit('@font-face ', node.position)
|
||||
+ this.emit('{\n')
|
||||
+ this.emit(this.indent(1))
|
||||
+ this.mapVisit(node.declarations, '\n')
|
||||
+ this.emit(this.indent(-1))
|
||||
+ this.emit('\n}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit host node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.host = function(node){
|
||||
return this.emit('@host', node.position)
|
||||
+ this.emit(
|
||||
' {\n'
|
||||
+ this.indent(1))
|
||||
+ this.mapVisit(node.rules, '\n\n')
|
||||
+ this.emit(
|
||||
this.indent(-1)
|
||||
+ '\n}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit custom-media node.
|
||||
*/
|
||||
|
||||
Compiler.prototype['custom-media'] = function(node){
|
||||
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit rule node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.rule = function(node){
|
||||
var indent = this.indent();
|
||||
var decls = node.declarations;
|
||||
if (!decls.length) return '';
|
||||
|
||||
return this.emit(node.selectors.map(function(s){ return indent + s }).join(',\n'), node.position)
|
||||
+ this.emit(' {\n')
|
||||
+ this.emit(this.indent(1))
|
||||
+ this.mapVisit(decls, '\n')
|
||||
+ this.emit(this.indent(-1))
|
||||
+ this.emit('\n' + this.indent() + '}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit declaration node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.declaration = function(node){
|
||||
return this.emit(this.indent())
|
||||
+ this.emit(node.property + ': ' + node.value, node.position)
|
||||
+ this.emit(';');
|
||||
};
|
||||
|
||||
/**
|
||||
* Increase, decrease or return current indentation.
|
||||
*/
|
||||
|
||||
Compiler.prototype.indent = function(level) {
|
||||
this.level = this.level || 1;
|
||||
|
||||
if (null != level) {
|
||||
this.level += level;
|
||||
return '';
|
||||
}
|
||||
|
||||
return Array(this.level).join(this.indentation || ' ');
|
||||
};
|
||||
47
node_modules/css/lib/stringify/index.js
generated
vendored
Normal file
47
node_modules/css/lib/stringify/index.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var Compressed = require('./compress');
|
||||
var Identity = require('./identity');
|
||||
|
||||
/**
|
||||
* Stringfy the given AST `node`.
|
||||
*
|
||||
* Options:
|
||||
*
|
||||
* - `compress` space-optimized output
|
||||
* - `sourcemap` return an object with `.code` and `.map`
|
||||
*
|
||||
* @param {Object} node
|
||||
* @param {Object} [options]
|
||||
* @return {String}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
module.exports = function(node, options){
|
||||
options = options || {};
|
||||
|
||||
var compiler = options.compress
|
||||
? new Compressed(options)
|
||||
: new Identity(options);
|
||||
|
||||
// source maps
|
||||
if (options.sourcemap) {
|
||||
var sourcemaps = require('./source-map-support');
|
||||
sourcemaps(compiler);
|
||||
|
||||
var code = compiler.compile(node);
|
||||
compiler.applySourceMaps();
|
||||
|
||||
var map = options.sourcemap === 'generator'
|
||||
? compiler.map
|
||||
: compiler.map.toJSON();
|
||||
|
||||
return { code: code, map: map };
|
||||
}
|
||||
|
||||
var code = compiler.compile(node);
|
||||
return code;
|
||||
};
|
||||
126
node_modules/css/lib/stringify/source-map-support.js
generated
vendored
Normal file
126
node_modules/css/lib/stringify/source-map-support.js
generated
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var SourceMap = require('source-map').SourceMapGenerator;
|
||||
var SourceMapConsumer = require('source-map').SourceMapConsumer;
|
||||
var sourceMapResolve = require('source-map-resolve');
|
||||
var urix = require('urix');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
/**
|
||||
* Expose `mixin()`.
|
||||
*/
|
||||
|
||||
module.exports = mixin;
|
||||
|
||||
/**
|
||||
* Mixin source map support into `compiler`.
|
||||
*
|
||||
* @param {Compiler} compiler
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function mixin(compiler) {
|
||||
compiler._comment = compiler.comment;
|
||||
compiler.map = new SourceMap();
|
||||
compiler.position = { line: 1, column: 1 };
|
||||
compiler.files = {};
|
||||
for (var k in exports) compiler[k] = exports[k];
|
||||
}
|
||||
|
||||
/**
|
||||
* Update position.
|
||||
*
|
||||
* @param {String} str
|
||||
* @api private
|
||||
*/
|
||||
|
||||
exports.updatePosition = function(str) {
|
||||
var lines = str.match(/\n/g);
|
||||
if (lines) this.position.line += lines.length;
|
||||
var i = str.lastIndexOf('\n');
|
||||
this.position.column = ~i ? str.length - i : this.position.column + str.length;
|
||||
};
|
||||
|
||||
/**
|
||||
* Emit `str`.
|
||||
*
|
||||
* @param {String} str
|
||||
* @param {Object} [pos]
|
||||
* @return {String}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
exports.emit = function(str, pos) {
|
||||
if (pos) {
|
||||
var sourceFile = urix(pos.source || 'source.css');
|
||||
|
||||
this.map.addMapping({
|
||||
source: sourceFile,
|
||||
generated: {
|
||||
line: this.position.line,
|
||||
column: Math.max(this.position.column - 1, 0)
|
||||
},
|
||||
original: {
|
||||
line: pos.start.line,
|
||||
column: pos.start.column - 1
|
||||
}
|
||||
});
|
||||
|
||||
this.addFile(sourceFile, pos);
|
||||
}
|
||||
|
||||
this.updatePosition(str);
|
||||
|
||||
return str;
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds a file to the source map output if it has not already been added
|
||||
* @param {String} file
|
||||
* @param {Object} pos
|
||||
*/
|
||||
|
||||
exports.addFile = function(file, pos) {
|
||||
if (typeof pos.content !== 'string') return;
|
||||
if (Object.prototype.hasOwnProperty.call(this.files, file)) return;
|
||||
|
||||
this.files[file] = pos.content;
|
||||
};
|
||||
|
||||
/**
|
||||
* Applies any original source maps to the output and embeds the source file
|
||||
* contents in the source map.
|
||||
*/
|
||||
|
||||
exports.applySourceMaps = function() {
|
||||
Object.keys(this.files).forEach(function(file) {
|
||||
var content = this.files[file];
|
||||
this.map.setSourceContent(file, content);
|
||||
|
||||
if (this.options.inputSourcemaps !== false) {
|
||||
var originalMap = sourceMapResolve.resolveSync(
|
||||
content, file, fs.readFileSync);
|
||||
if (originalMap) {
|
||||
var map = new SourceMapConsumer(originalMap.map);
|
||||
var relativeTo = originalMap.sourcesRelativeTo;
|
||||
this.map.applySourceMap(map, file, urix(path.dirname(relativeTo)));
|
||||
}
|
||||
}
|
||||
}, this);
|
||||
};
|
||||
|
||||
/**
|
||||
* Process comments, drops sourceMap comments.
|
||||
* @param {Object} node
|
||||
*/
|
||||
|
||||
exports.comment = function(node) {
|
||||
if (/^# sourceMappingURL=/.test(node.comment))
|
||||
return this.emit('', node.position);
|
||||
else
|
||||
return this._comment(node);
|
||||
};
|
||||
72
node_modules/css/package.json
generated
vendored
Normal file
72
node_modules/css/package.json
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"_from": "css@2.X",
|
||||
"_id": "css@2.2.4",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
|
||||
"_location": "/css",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "css@2.X",
|
||||
"name": "css",
|
||||
"escapedName": "css",
|
||||
"rawSpec": "2.X",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "2.X"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/@gulp-sourcemaps/identity-map",
|
||||
"/gulp-sourcemaps"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
|
||||
"_shasum": "c646755c73971f2bba6a601e2cf2fd71b1298929",
|
||||
"_spec": "css@2.X",
|
||||
"_where": "D:\\Air66 Files\\dev_sites\\www.airurl.dev.cc\\user\\plugins\\air66Theme\\node_modules\\gulp-sourcemaps",
|
||||
"author": {
|
||||
"name": "TJ Holowaychuk",
|
||||
"email": "tj@vision-media.ca"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/reworkcss/css/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"source-map": "^0.6.1",
|
||||
"source-map-resolve": "^0.5.2",
|
||||
"urix": "^0.1.0"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "CSS parser / stringifier",
|
||||
"devDependencies": {
|
||||
"bytes": "^1.0.0",
|
||||
"matcha": "^0.5.0",
|
||||
"mocha": "^1.21.3",
|
||||
"should": "^4.0.4"
|
||||
},
|
||||
"files": [
|
||||
"index.js",
|
||||
"lib",
|
||||
"Readme.md"
|
||||
],
|
||||
"homepage": "https://github.com/reworkcss/css#readme",
|
||||
"keywords": [
|
||||
"css",
|
||||
"parser",
|
||||
"stringifier",
|
||||
"stylesheet"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index",
|
||||
"name": "css",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/reworkcss/css.git"
|
||||
},
|
||||
"scripts": {
|
||||
"benchmark": "matcha",
|
||||
"test": "mocha --require should --reporter spec --bail test/*.js"
|
||||
},
|
||||
"version": "2.2.4"
|
||||
}
|
||||
Reference in New Issue
Block a user