Comparing version 1.6.0 to 2.0.0
@@ -1,3 +0,2 @@ | ||
exports.parse = require('css-parse'); | ||
exports.stringify = require('css-stringify'); | ||
exports.parse = require('./lib/parse'); | ||
exports.stringify = require('./lib/stringify'); |
{ | ||
"name": "css", | ||
"version": "1.6.0", | ||
"description": "CSS parser / stringifier using css-parse and css-stringify", | ||
"keywords": [ | ||
"css", | ||
"parser", | ||
"stylesheet" | ||
"version": "2.0.0", | ||
"description": "CSS parser / stringifier", | ||
"main": "index", | ||
"files": [ | ||
"index.js", | ||
"lib" | ||
], | ||
"author": "TJ Holowaychuk <tj@vision-media.ca>", | ||
"dependencies": { | ||
"css-parse": "1.7.0", | ||
"css-stringify": "1.4.1" | ||
"source-map": "~0.1.31", | ||
"source-map-resolve": "~0.1.3", | ||
"urix": "~0.1.0" | ||
}, | ||
"main": "index", | ||
"devDependencies": { | ||
"mocha": "*", | ||
"should": "*", | ||
"matcha": "~0.4.0", | ||
"bytes": "~0.2.1" | ||
}, | ||
"scripts": { | ||
"benchmark": "matcha", | ||
"test": "mocha --require should --reporter spec --bail test/**/*.js" | ||
}, | ||
"author": "TJ Holowaychuk <tj@vision-media.ca>", | ||
"license": "MIT", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/visionmedia/css.git" | ||
"url": "https://github.com/reworkcss/css.git" | ||
}, | ||
"scripts": { | ||
"test": "make test" | ||
} | ||
"keywords": [ | ||
"css", | ||
"parser", | ||
"stringifier", | ||
"stylesheet" | ||
] | ||
} |
311
Readme.md
@@ -0,6 +1,5 @@ | ||
# css [![Build Status](https://travis-ci.org/reworkcss/css.svg?branch=master)](https://travis-ci.org/reworkcss/css) | ||
# css | ||
CSS parser / stringifier. | ||
CSS parser / stringifier using [css-parse](https://github.com/visionmedia/css-parse) and [css-stringify](https://github.com/visionmedia/css-stringify). | ||
## Installation | ||
@@ -10,26 +9,273 @@ | ||
## Example | ||
## Usage | ||
js: | ||
```js | ||
var css = require('css') | ||
var obj = css.parse('tobi { name: "tobi" }') | ||
css.stringify(obj); | ||
var obj = css.parse('body { font-size: 12px; }', options) | ||
css.stringify(obj, options); | ||
``` | ||
object returned by `.parse()`: | ||
## 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`: | ||
- 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. | ||
### Example | ||
```js | ||
var ast = css.parse('body { font-size: 12px; }', { position: true, 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 will have `error.position`, just like [`node.position`](#position). | ||
If you create any errors in plugins such as in | ||
[rework](https://github.com/reworkcss/rework), you __must__ set the `position` | ||
as well for consistency. | ||
## AST | ||
### 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`. | ||
- parent: `Object`. Reference to the parent node that contains this node. | ||
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. | ||
### 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. | ||
#### 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": [ | ||
{ | ||
"selector": "tobi", | ||
"type": "rule", | ||
"selectors": [ | ||
"body" | ||
], | ||
"declarations": [ | ||
{ | ||
"property": "name", | ||
"value": "tobi" | ||
"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 | ||
} | ||
} | ||
} | ||
@@ -41,39 +287,4 @@ ] | ||
string returned by `.stringify(ast)`: | ||
## License | ||
```css | ||
tobi { | ||
name: tobi; | ||
} | ||
``` | ||
string returned by `.stringify(ast, { compress: true })`: | ||
```css | ||
tobi{name:tobi} | ||
``` | ||
## License | ||
(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. | ||
MIT |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
31036
996
289
3
4
9
2
+ Addedsource-map@~0.1.31
+ Addedsource-map-resolve@~0.1.3
+ Addedurix@~0.1.0
+ Addedatob@1.1.3(transitive)
+ Addedresolve-url@0.2.1(transitive)
+ Addedsource-map-resolve@0.1.4(transitive)
+ Addedsource-map-url@0.2.0(transitive)
+ Addedurix@0.1.0(transitive)
- Removedcss-parse@1.7.0
- Removedcss-stringify@1.4.1
- Removedcss-parse@1.7.0(transitive)
- Removedcss-stringify@1.4.1(transitive)