inline-style-parser 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  [![NPM](https://nodei.co/npm/inline-style-parser.png)](https://nodei.co/npm/inline-style-parser/)
4
4
 
5
- [![NPM version](https://img.shields.io/npm/v/inline-style-parser.svg)](https://www.npmjs.com/package/inline-style-parser)
6
- [![Build Status](https://travis-ci.org/remarkablemark/inline-style-parser.svg?branch=master)](https://travis-ci.org/remarkablemark/inline-style-parser)
7
- [![Coverage Status](https://coveralls.io/repos/github/remarkablemark/inline-style-parser/badge.svg?branch=master)](https://coveralls.io/github/remarkablemark/inline-style-parser?branch=master)
5
+ [![NPM version](https://badgen.net/npm/v/inline-style-parser)](https://www.npmjs.com/package/inline-style-parser)
6
+ [![Bundlephobia minified + gzip](https://badgen.net/bundlephobia/minzip/inline-style-parser)](https://bundlephobia.com/package/inline-style-parser)
7
+ [![build](https://github.com/remarkablemark/inline-style-parser/actions/workflows/build.yml/badge.svg)](https://github.com/remarkablemark/inline-style-parser/actions/workflows/build.yml)
8
+ [![codecov](https://codecov.io/gh/remarkablemark/inline-style-parser/branch/master/graph/badge.svg?token=B8EEK5709W)](https://codecov.io/gh/remarkablemark/inline-style-parser)
9
+ [![NPM downloads](https://badgen.net/npm/dm/inline-style-parser)](https://www.npmjs.com/package/inline-style-parser)
8
10
 
9
11
  An inline style parser copied from [`css/lib/parse/index.js`](https://github.com/reworkcss/css/blob/v2.2.4/lib/parse/index.js):
10
12
 
@@ -28,7 +30,7 @@ Output:
28
30
  position: Position { start: [Object], end: [Object], source: undefined } } ]
29
31
  ```
30
32
 
31
- [JSFiddle](https://jsfiddle.net/remarkablemark/hcxbpwq8/) | [Repl.it](https://repl.it/@remarkablemark/inline-style-parser)
33
+ [JSFiddle](https://jsfiddle.net/remarkablemark/hcxbpwq8/) | [Replit](https://replit.com/@remarkablemark/inline-style-parser)
32
34
 
33
35
  See [usage](#usage) and [examples](https://github.com/remarkablemark/inline-style-parser/tree/master/examples).
34
36
 
@@ -37,13 +39,13 @@ See [usage](#usage) and [examples](https://github.com/remarkablemark/inline-styl
37
39
  [NPM](https://www.npmjs.com/package/inline-style-parser):
38
40
 
39
41
  ```sh
40
- $ npm install inline-style-parser --save
42
+ npm install inline-style-parser --save
41
43
  ```
42
44
 
43
45
  [Yarn](https://yarnpkg.com/package/inline-style-parser):
44
46
 
45
47
  ```sh
46
- $ yarn add inline-style-parser
48
+ yarn add inline-style-parser
47
49
  ```
48
50
 
49
51
  [CDN](https://unpkg.com/inline-style-parser/):
@@ -184,47 +186,42 @@ parse('/*'); // throws Error
184
186
  Run tests:
185
187
 
186
188
  ```sh
187
- $ npm test
189
+ npm test
188
190
  ```
189
191
 
190
192
  Run tests in watch mode:
191
193
 
192
194
  ```sh
193
- $ npm run test:watch
195
+ npm run test:watch
194
196
  ```
195
197
 
196
198
  Run tests with coverage:
197
199
 
198
200
  ```sh
199
- $ npm run test:coverage
201
+ npm run test:coverage
200
202
  ```
201
203
 
202
204
  Run tests in CI mode:
203
205
 
204
206
  ```sh
205
- $ npm run test:ci
207
+ npm run test:ci
206
208
  ```
207
209
 
208
210
  Lint files:
209
211
 
210
212
  ```sh
211
- $ npm run lint
213
+ npm run lint
212
214
  ```
213
215
 
214
216
  Fix lint errors:
215
217
 
216
218
  ```sh
217
- $ npm run lint:fix
219
+ npm run lint:fix
218
220
  ```
219
221
 
220
222
  ## Release
221
223
 
222
- Only collaborators with credentials can release and publish:
223
-
224
- ```sh
225
- $ npm run release
226
- $ git push --follow-tags && npm publish
227
- ```
224
+ Release and publish are automated by [Release Please](https://github.com/googleapis/release-please).
228
225
 
229
226
  ## License
230
227
 
@@ -1,267 +1,274 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
- typeof define === 'function' && define.amd ? define(factory) :
4
- (global = global || self, global.InlineStyleParser = factory());
5
- }(this, function () { 'use strict';
6
-
7
- // http://www.w3.org/TR/CSS21/grammar.html
8
- // https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
9
- var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
10
-
11
- var NEWLINE_REGEX = /\n/g;
12
- var WHITESPACE_REGEX = /^\s*/;
13
-
14
- // declaration
15
- var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/;
16
- var COLON_REGEX = /^:\s*/;
17
- var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/;
18
- var SEMICOLON_REGEX = /^[;\s]*/;
19
-
20
- // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill
21
- var TRIM_REGEX = /^\s+|\s+$/g;
22
-
23
- // strings
24
- var NEWLINE = '\n';
25
- var FORWARD_SLASH = '/';
26
- var ASTERISK = '*';
27
- var EMPTY_STRING = '';
28
-
29
- // types
30
- var TYPE_COMMENT = 'comment';
31
- var TYPE_DECLARATION = 'declaration';
32
-
33
- /**
34
- * @param {String} style
35
- * @param {Object} [options]
36
- * @return {Object[]}
37
- * @throws {TypeError}
38
- * @throws {Error}
39
- */
40
- var inlineStyleParser = function(style, options) {
41
- if (typeof style !== 'string') {
42
- throw new TypeError('First argument must be a string');
43
- }
44
-
45
- if (!style) return [];
46
-
47
- options = options || {};
48
-
49
- /**
50
- * Positional.
51
- */
52
- var lineno = 1;
53
- var column = 1;
54
-
55
- /**
56
- * Update lineno and column based on `str`.
57
- *
58
- * @param {String} str
59
- */
60
- function updatePosition(str) {
61
- var lines = str.match(NEWLINE_REGEX);
62
- if (lines) lineno += lines.length;
63
- var i = str.lastIndexOf(NEWLINE);
64
- column = ~i ? str.length - i : column + str.length;
65
- }
66
-
67
- /**
68
- * Mark position and patch `node.position`.
69
- *
70
- * @return {Function}
71
- */
72
- function position() {
73
- var start = { line: lineno, column: column };
74
- return function(node) {
75
- node.position = new Position(start);
76
- whitespace();
77
- return node;
78
- };
79
- }
80
-
81
- /**
82
- * Store position information for a node.
83
- *
84
- * @constructor
85
- * @property {Object} start
86
- * @property {Object} end
87
- * @property {undefined|String} source
88
- */
89
- function Position(start) {
90
- this.start = start;
91
- this.end = { line: lineno, column: column };
92
- this.source = options.source;
93
- }
94
-
95
- /**
96
- * Non-enumerable source string.
97
- */
98
- Position.prototype.content = style;
99
-
100
- /**
101
- * Error `msg`.
102
- *
103
- * @param {String} msg
104
- * @throws {Error}
105
- */
106
- function error(msg) {
107
- var err = new Error(
108
- options.source + ':' + lineno + ':' + column + ': ' + msg
109
- );
110
- err.reason = msg;
111
- err.filename = options.source;
112
- err.line = lineno;
113
- err.column = column;
114
- err.source = style;
115
-
116
- if (options.silent) ; else {
117
- throw err;
118
- }
119
- }
120
-
121
- /**
122
- * Match `re` and return captures.
123
- *
124
- * @param {RegExp} re
125
- * @return {undefined|Array}
126
- */
127
- function match(re) {
128
- var m = re.exec(style);
129
- if (!m) return;
130
- var str = m[0];
131
- updatePosition(str);
132
- style = style.slice(str.length);
133
- return m;
134
- }
135
-
136
- /**
137
- * Parse whitespace.
138
- */
139
- function whitespace() {
140
- match(WHITESPACE_REGEX);
141
- }
142
-
143
- /**
144
- * Parse comments.
145
- *
146
- * @param {Object[]} [rules]
147
- * @return {Object[]}
148
- */
149
- function comments(rules) {
150
- var c;
151
- rules = rules || [];
152
- while ((c = comment())) {
153
- if (c !== false) {
154
- rules.push(c);
155
- }
156
- }
157
- return rules;
158
- }
159
-
160
- /**
161
- * Parse comment.
162
- *
163
- * @return {Object}
164
- * @throws {Error}
165
- */
166
- function comment() {
167
- var pos = position();
168
- if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;
169
-
170
- var i = 2;
171
- while (
172
- EMPTY_STRING != style.charAt(i) &&
173
- (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))
174
- ) {
175
- ++i;
176
- }
177
- i += 2;
178
-
179
- if (EMPTY_STRING === style.charAt(i - 1)) {
180
- return error('End of comment missing');
181
- }
182
-
183
- var str = style.slice(2, i - 2);
184
- column += 2;
185
- updatePosition(str);
186
- style = style.slice(i);
187
- column += 2;
188
-
189
- return pos({
190
- type: TYPE_COMMENT,
191
- comment: str
192
- });
193
- }
194
-
195
- /**
196
- * Parse declaration.
197
- *
198
- * @return {Object}
199
- * @throws {Error}
200
- */
201
- function declaration() {
202
- var pos = position();
203
-
204
- // prop
205
- var prop = match(PROPERTY_REGEX);
206
- if (!prop) return;
207
- comment();
208
-
209
- // :
210
- if (!match(COLON_REGEX)) return error("property missing ':'");
211
-
212
- // val
213
- var val = match(VALUE_REGEX);
214
-
215
- var ret = pos({
216
- type: TYPE_DECLARATION,
217
- property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),
218
- value: val
219
- ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))
220
- : EMPTY_STRING
221
- });
222
-
223
- // ;
224
- match(SEMICOLON_REGEX);
225
-
226
- return ret;
227
- }
228
-
229
- /**
230
- * Parse declarations.
231
- *
232
- * @return {Object[]}
233
- */
234
- function declarations() {
235
- var decls = [];
236
-
237
- comments(decls);
238
-
239
- // declarations
240
- var decl;
241
- while ((decl = declaration())) {
242
- if (decl !== false) {
243
- decls.push(decl);
244
- comments(decls);
245
- }
246
- }
247
-
248
- return decls;
249
- }
250
-
251
- whitespace();
252
- return declarations();
253
- };
254
-
255
- /**
256
- * Trim `str`.
257
- *
258
- * @param {String} str
259
- * @return {String}
260
- */
261
- function trim(str) {
262
- return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;
263
- }
264
-
265
- return inlineStyleParser;
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.InlineStyleParser = factory());
5
+ })(this, (function () { 'use strict';
6
+
7
+ function getDefaultExportFromCjs (x) {
8
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
9
+ }
10
+
11
+ // http://www.w3.org/TR/CSS21/grammar.html
12
+ // https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
13
+ var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
14
+
15
+ var NEWLINE_REGEX = /\n/g;
16
+ var WHITESPACE_REGEX = /^\s*/;
17
+
18
+ // declaration
19
+ var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/;
20
+ var COLON_REGEX = /^:\s*/;
21
+ var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/;
22
+ var SEMICOLON_REGEX = /^[;\s]*/;
23
+
24
+ // https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill
25
+ var TRIM_REGEX = /^\s+|\s+$/g;
26
+
27
+ // strings
28
+ var NEWLINE = '\n';
29
+ var FORWARD_SLASH = '/';
30
+ var ASTERISK = '*';
31
+ var EMPTY_STRING = '';
32
+
33
+ // types
34
+ var TYPE_COMMENT = 'comment';
35
+ var TYPE_DECLARATION = 'declaration';
36
+
37
+ /**
38
+ * @param {String} style
39
+ * @param {Object} [options]
40
+ * @return {Object[]}
41
+ * @throws {TypeError}
42
+ * @throws {Error}
43
+ */
44
+ var inlineStyleParser = function (style, options) {
45
+ if (typeof style !== 'string') {
46
+ throw new TypeError('First argument must be a string');
47
+ }
48
+
49
+ if (!style) return [];
50
+
51
+ options = options || {};
52
+
53
+ /**
54
+ * Positional.
55
+ */
56
+ var lineno = 1;
57
+ var column = 1;
58
+
59
+ /**
60
+ * Update lineno and column based on `str`.
61
+ *
62
+ * @param {String} str
63
+ */
64
+ function updatePosition(str) {
65
+ var lines = str.match(NEWLINE_REGEX);
66
+ if (lines) lineno += lines.length;
67
+ var i = str.lastIndexOf(NEWLINE);
68
+ column = ~i ? str.length - i : column + str.length;
69
+ }
70
+
71
+ /**
72
+ * Mark position and patch `node.position`.
73
+ *
74
+ * @return {Function}
75
+ */
76
+ function position() {
77
+ var start = { line: lineno, column: column };
78
+ return function (node) {
79
+ node.position = new Position(start);
80
+ whitespace();
81
+ return node;
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Store position information for a node.
87
+ *
88
+ * @constructor
89
+ * @property {Object} start
90
+ * @property {Object} end
91
+ * @property {undefined|String} source
92
+ */
93
+ function Position(start) {
94
+ this.start = start;
95
+ this.end = { line: lineno, column: column };
96
+ this.source = options.source;
97
+ }
98
+
99
+ /**
100
+ * Non-enumerable source string.
101
+ */
102
+ Position.prototype.content = style;
103
+
104
+ /**
105
+ * Error `msg`.
106
+ *
107
+ * @param {String} msg
108
+ * @throws {Error}
109
+ */
110
+ function error(msg) {
111
+ var err = new Error(
112
+ options.source + ':' + lineno + ':' + column + ': ' + msg
113
+ );
114
+ err.reason = msg;
115
+ err.filename = options.source;
116
+ err.line = lineno;
117
+ err.column = column;
118
+ err.source = style;
119
+
120
+ if (options.silent) ; else {
121
+ throw err;
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Match `re` and return captures.
127
+ *
128
+ * @param {RegExp} re
129
+ * @return {undefined|Array}
130
+ */
131
+ function match(re) {
132
+ var m = re.exec(style);
133
+ if (!m) return;
134
+ var str = m[0];
135
+ updatePosition(str);
136
+ style = style.slice(str.length);
137
+ return m;
138
+ }
139
+
140
+ /**
141
+ * Parse whitespace.
142
+ */
143
+ function whitespace() {
144
+ match(WHITESPACE_REGEX);
145
+ }
146
+
147
+ /**
148
+ * Parse comments.
149
+ *
150
+ * @param {Object[]} [rules]
151
+ * @return {Object[]}
152
+ */
153
+ function comments(rules) {
154
+ var c;
155
+ rules = rules || [];
156
+ while ((c = comment())) {
157
+ if (c !== false) {
158
+ rules.push(c);
159
+ }
160
+ }
161
+ return rules;
162
+ }
163
+
164
+ /**
165
+ * Parse comment.
166
+ *
167
+ * @return {Object}
168
+ * @throws {Error}
169
+ */
170
+ function comment() {
171
+ var pos = position();
172
+ if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;
173
+
174
+ var i = 2;
175
+ while (
176
+ EMPTY_STRING != style.charAt(i) &&
177
+ (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))
178
+ ) {
179
+ ++i;
180
+ }
181
+ i += 2;
182
+
183
+ if (EMPTY_STRING === style.charAt(i - 1)) {
184
+ return error('End of comment missing');
185
+ }
186
+
187
+ var str = style.slice(2, i - 2);
188
+ column += 2;
189
+ updatePosition(str);
190
+ style = style.slice(i);
191
+ column += 2;
192
+
193
+ return pos({
194
+ type: TYPE_COMMENT,
195
+ comment: str
196
+ });
197
+ }
198
+
199
+ /**
200
+ * Parse declaration.
201
+ *
202
+ * @return {Object}
203
+ * @throws {Error}
204
+ */
205
+ function declaration() {
206
+ var pos = position();
207
+
208
+ // prop
209
+ var prop = match(PROPERTY_REGEX);
210
+ if (!prop) return;
211
+ comment();
212
+
213
+ // :
214
+ if (!match(COLON_REGEX)) return error("property missing ':'");
215
+
216
+ // val
217
+ var val = match(VALUE_REGEX);
218
+
219
+ var ret = pos({
220
+ type: TYPE_DECLARATION,
221
+ property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),
222
+ value: val
223
+ ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))
224
+ : EMPTY_STRING
225
+ });
226
+
227
+ // ;
228
+ match(SEMICOLON_REGEX);
229
+
230
+ return ret;
231
+ }
232
+
233
+ /**
234
+ * Parse declarations.
235
+ *
236
+ * @return {Object[]}
237
+ */
238
+ function declarations() {
239
+ var decls = [];
240
+
241
+ comments(decls);
242
+
243
+ // declarations
244
+ var decl;
245
+ while ((decl = declaration())) {
246
+ if (decl !== false) {
247
+ decls.push(decl);
248
+ comments(decls);
249
+ }
250
+ }
251
+
252
+ return decls;
253
+ }
254
+
255
+ whitespace();
256
+ return declarations();
257
+ };
258
+
259
+ /**
260
+ * Trim `str`.
261
+ *
262
+ * @param {String} str
263
+ * @return {String}
264
+ */
265
+ function trim(str) {
266
+ return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;
267
+ }
268
+
269
+ var index = /*@__PURE__*/getDefaultExportFromCjs(inlineStyleParser);
270
+
271
+ return index;
266
272
 
267
273
  }));
274
+ //# sourceMappingURL=inline-style-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-style-parser.js","sources":["../index.js"],"sourcesContent":["// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n"],"names":[],"mappings":";;;;;;;;;;CAAA;CACA;CACA,IAAI,aAAa,GAAG,iCAAiC,CAAC;AACtD;CACA,IAAI,aAAa,GAAG,KAAK,CAAC;CAC1B,IAAI,gBAAgB,GAAG,MAAM,CAAC;AAC9B;CACA;CACA,IAAI,cAAc,GAAG,wCAAwC,CAAC;CAC9D,IAAI,WAAW,GAAG,OAAO,CAAC;CAC1B,IAAI,WAAW,GAAG,sDAAsD,CAAC;CACzE,IAAI,eAAe,GAAG,SAAS,CAAC;AAChC;CACA;CACA,IAAI,UAAU,GAAG,YAAY,CAAC;AAC9B;CACA;CACA,IAAI,OAAO,GAAG,IAAI,CAAC;CACnB,IAAI,aAAa,GAAG,GAAG,CAAC;CACxB,IAAI,QAAQ,GAAG,GAAG,CAAC;CACnB,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB;CACA;CACA,IAAI,YAAY,GAAG,SAAS,CAAC;CAC7B,IAAI,gBAAgB,GAAG,aAAa,CAAC;AACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,IAAA,iBAAc,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;CAC3C,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;CACjC,IAAI,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;CAC3D,GAAG;AACH;CACA,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AACxB;CACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;CACA;CACA;CACA;CACA,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;CACjB,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AACjB;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,cAAc,CAAC,GAAG,EAAE;CAC/B,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;CACzC,IAAI,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;CACtC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CACrC,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;CACvD,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,QAAQ,GAAG;CACtB,IAAI,IAAI,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;CACjD,IAAI,OAAO,UAAU,IAAI,EAAE;CAC3B,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;CAC1C,MAAM,UAAU,EAAE,CAAC;CACnB,MAAM,OAAO,IAAI,CAAC;CAClB,KAAK,CAAC;CACN,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;CAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACvB,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;CAChD,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CACjC,GAAG;AACH;CACA;CACA;CACA;CACA,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;AAGrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,KAAK,CAAC,GAAG,EAAE;CACtB,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK;CACvB,MAAM,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG;CAC/D,KAAK,CAAC;CACN,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;CACrB,IAAI,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAClC,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;CACtB,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;CACxB,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB;CACA,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAEnB,MAAM;CACX,MAAM,MAAM,GAAG,CAAC;CAChB,KAAK;CACL,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,KAAK,CAAC,EAAE,EAAE;CACrB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO;CACnB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACnB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;CACxB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC,IAAI,OAAO,CAAC,CAAC;CACb,GAAG;AACH;CACA;CACA;CACA;CACA,EAAE,SAAS,UAAU,GAAG;CACxB,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAC5B,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;CAC3B,IAAI,IAAI,CAAC,CAAC;CACV,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;CACxB,IAAI,QAAQ,CAAC,GAAG,OAAO,EAAE,GAAG;CAC5B,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;CACvB,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACtB,OAAO;CACP,KAAK;CACL,IAAI,OAAO,KAAK,CAAC;CACjB,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,OAAO,GAAG;CACrB,IAAI,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;CACzB,IAAI,IAAI,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;AAChF;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACd,IAAI;CACJ,MAAM,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACrC,OAAO,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3E,MAAM;CACN,MAAM,EAAE,CAAC,CAAC;CACV,KAAK;CACL,IAAI,CAAC,IAAI,CAAC,CAAC;AACX;CACA,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;CAC9C,MAAM,OAAO,KAAK,CAAC,wBAAwB,CAAC,CAAC;CAC7C,KAAK;AACL;CACA,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,IAAI,MAAM,IAAI,CAAC,CAAC;CAChB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;CACxB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC3B,IAAI,MAAM,IAAI,CAAC,CAAC;AAChB;CACA,IAAI,OAAO,GAAG,CAAC;CACf,MAAM,IAAI,EAAE,YAAY;CACxB,MAAM,OAAO,EAAE,GAAG;CAClB,KAAK,CAAC,CAAC;CACP,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,WAAW,GAAG;CACzB,IAAI,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;AACzB;CACA;CACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;CACrC,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;CACtB,IAAI,OAAO,EAAE,CAAC;AACd;CACA;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAClE;CACA;CACA,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC;CACA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;CAClB,MAAM,IAAI,EAAE,gBAAgB;CAC5B,MAAM,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;CAClE,MAAM,KAAK,EAAE,GAAG;CAChB,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;CAC3D,UAAU,YAAY;CACtB,KAAK,CAAC,CAAC;AACP;CACA;CACA,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC3B;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;CACA,EAAE,SAAS,YAAY,GAAG;CAC1B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB;CACA,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpB;CACA;CACA,IAAI,IAAI,IAAI,CAAC;CACb,IAAI,QAAQ,IAAI,GAAG,WAAW,EAAE,GAAG;CACnC,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACzB,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;CACxB,OAAO;CACP,KAAK;AACL;CACA,IAAI,OAAO,KAAK,CAAC;CACjB,GAAG;AACH;CACA,EAAE,UAAU,EAAE,CAAC;CACf,EAAE,OAAO,YAAY,EAAE,CAAC;CACxB,CAAC,CAAC;AACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA,SAAS,IAAI,CAAC,GAAG,EAAE;CACnB,EAAE,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC;CACpE,CAAA;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- !function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n=n||self).InlineStyleParser=r()}(this,function(){"use strict";var v=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,d=/\n/g,n=/^\s*/,g=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,y=/^:\s*/,w=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,A=/^[;\s]*/,r=/^\s+|\s+$/g,x="";function E(n){return n?n.replace(r,x):x}return function(t,e){if("string"!=typeof t)throw new TypeError("First argument must be a string");if(!t)return[];e=e||{};var o=1,i=1;function u(n){var r=n.match(d);r&&(o+=r.length);var e=n.lastIndexOf("\n");i=~e?n.length-e:i+n.length}function c(){var r={line:o,column:i};return function(n){return n.position=new f(r),l(),n}}function f(n){this.start=n,this.end={line:o,column:i},this.source=e.source}function s(n){var r=new Error(e.source+":"+o+":"+i+": "+n);if(r.reason=n,r.filename=e.source,r.line=o,r.column=i,r.source=t,!e.silent)throw r}function a(n){var r=n.exec(t);if(r){var e=r[0];return u(e),t=t.slice(e.length),r}}function l(){a(n)}function p(n){var r;for(n=n||[];r=h();)!1!==r&&n.push(r);return n}function h(){var n=c();if("/"==t.charAt(0)&&"*"==t.charAt(1)){for(var r=2;x!=t.charAt(r)&&("*"!=t.charAt(r)||"/"!=t.charAt(r+1));)++r;if(r+=2,x===t.charAt(r-1))return s("End of comment missing");var e=t.slice(2,r-2);return i+=2,u(e),t=t.slice(r),i+=2,n({type:"comment",comment:e})}}function m(){var n=c(),r=a(g);if(r){if(h(),!a(y))return s("property missing ':'");var e=a(w),t=n({type:"declaration",property:E(r[0].replace(v,x)),value:e?E(e[0].replace(v,x)):x});return a(A),t}}return f.prototype.content=t,l(),function(){var n,r=[];for(p(r);n=m();)!1!==n&&(r.push(n),p(r));return r}()}});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).InlineStyleParser=n()}(this,(function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,t=/^\s*/,o=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,u=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,f=/^\s+|\s+$/g,a="";function s(e){return e?e.replace(f,a):a}return e((function(e,f){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];f=f||{};var l=1,p=1;function h(e){var n=e.match(r);n&&(l+=n.length);var t=e.lastIndexOf("\n");p=~t?e.length-t:p+e.length}function m(){var e={line:l,column:p};return function(n){return n.position=new d(e),y(),n}}function d(e){this.start=e,this.end={line:l,column:p},this.source=f.source}function v(n){var r=new Error(f.source+":"+l+":"+p+": "+n);if(r.reason=n,r.filename=f.source,r.line=l,r.column=p,r.source=e,!f.silent)throw r}function g(n){var r=n.exec(e);if(r){var t=r[0];return h(t),e=e.slice(t.length),r}}function y(){g(t)}function w(e){var n;for(e=e||[];n=A();)!1!==n&&e.push(n);return e}function A(){var n=m();if("/"==e.charAt(0)&&"*"==e.charAt(1)){for(var r=2;a!=e.charAt(r)&&("*"!=e.charAt(r)||"/"!=e.charAt(r+1));)++r;if(r+=2,a===e.charAt(r-1))return v("End of comment missing");var t=e.slice(2,r-2);return p+=2,h(t),e=e.slice(r),p+=2,n({type:"comment",comment:t})}}function b(){var e=m(),r=g(o);if(r){if(A(),!g(i))return v("property missing ':'");var t=g(u),f=e({type:"declaration",property:s(r[0].replace(n,a)),value:t?s(t[0].replace(n,a)):a});return g(c),f}}return d.prototype.content=e,y(),function(){var e,n=[];for(w(n);e=b();)!1!==e&&(n.push(e),w(n));return n}()}))}));
2
2
  //# sourceMappingURL=inline-style-parser.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inline-style-parser.min.js","sources":["../index.js"],"sourcesContent":["// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n"],"names":["COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","options","TypeError","lineno","column","updatePosition","lines","match","length","i","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","error","msg","err","Error","reason","filename","silent","re","m","exec","slice","comments","rules","c","comment","push","pos","charAt","type","declaration","prop","val","ret","property","value","prototype","content","decl","decls","declarations"],"mappings":"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"}
1
+ {"version":3,"file":"inline-style-parser.min.js","sources":["../index.js"],"sourcesContent":["// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n"],"names":["COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","str","replace","style","options","TypeError","lineno","column","updatePosition","lines","match","length","i","lastIndexOf","position","start","line","node","Position","whitespace","this","end","source","error","msg","err","Error","reason","filename","silent","re","m","exec","slice","comments","rules","c","comment","push","pos","charAt","type","declaration","prop","val","ret","property","value","prototype","content","decl","decls","declarations"],"mappings":"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"}
package/index.js CHANGED
@@ -31,7 +31,7 @@ var TYPE_DECLARATION = 'declaration';
31
31
  * @throws {TypeError}
32
32
  * @throws {Error}
33
33
  */
34
- module.exports = function(style, options) {
34
+ module.exports = function (style, options) {
35
35
  if (typeof style !== 'string') {
36
36
  throw new TypeError('First argument must be a string');
37
37
  }
@@ -65,7 +65,7 @@ module.exports = function(style, options) {
65
65
  */
66
66
  function position() {
67
67
  var start = { line: lineno, column: column };
68
- return function(node) {
68
+ return function (node) {
69
69
  node.position = new Position(start);
70
70
  whitespace();
71
71
  return node;
package/package.json CHANGED
@@ -1,22 +1,20 @@
1
1
  {
2
2
  "name": "inline-style-parser",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "An inline style parser.",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "build": "npm run clean && npm run build:min && npm run build:unmin",
8
- "build:min": "NODE_ENV=production rollup --config --output.file dist/inline-style-parser.min.js --sourcemap",
9
- "build:unmin": "NODE_ENV=development rollup --config --file dist/inline-style-parser.js",
7
+ "build": "rollup --config --failAfterWarnings",
10
8
  "clean": "rm -rf dist",
11
- "coveralls": "cat coverage/lcov.info | coveralls",
12
9
  "lint": "eslint --ignore-path .gitignore .",
13
10
  "lint:fix": "npm run lint -- --fix",
14
- "prepublishOnly": "npm run build",
15
- "release": "standard-version --no-verify",
11
+ "prepublishOnly": "pinst --disable && npm run lint && npm test && npm run build",
16
12
  "test": "jest",
17
13
  "test:ci": "npm run test:coverage -- --ci",
18
14
  "test:coverage": "jest --coverage --collectCoverageFrom=index.js",
19
- "test:watch": "jest --watch"
15
+ "test:watch": "jest --watch",
16
+ "_postinstall": "husky install",
17
+ "postpublish": "pinst --enable"
20
18
  },
21
19
  "repository": {
22
20
  "type": "git",
@@ -33,20 +31,19 @@
33
31
  "css"
34
32
  ],
35
33
  "devDependencies": {
36
- "@commitlint/cli": "^8.0.0",
37
- "@commitlint/config-conventional": "^8.0.0",
38
- "coveralls": "^3.0.4",
39
- "css": "2.2.4",
40
- "eslint": "^5.16.0",
41
- "eslint-plugin-prettier": "^3.1.0",
42
- "husky": "^2.4.1",
43
- "jest": "^24.8.0",
44
- "lint-staged": "^8.2.1",
45
- "prettier": "^1.18.2",
46
- "rollup": "^1.15.6",
47
- "rollup-plugin-commonjs": "^10.0.0",
48
- "rollup-plugin-uglify": "^6.0.2",
49
- "standard-version": "^6.0.1"
34
+ "@commitlint/cli": "17.8.0",
35
+ "@commitlint/config-conventional": "17.8.0",
36
+ "@rollup/plugin-commonjs": "25.0.5",
37
+ "@rollup/plugin-terser": "0.4.4",
38
+ "css": "3.0.0",
39
+ "eslint": "8.51.0",
40
+ "eslint-plugin-prettier": "5.0.1",
41
+ "husky": "8.0.3",
42
+ "jest": "29.7.0",
43
+ "lint-staged": "14.0.0",
44
+ "pinst": "3.0.0",
45
+ "prettier": "3.0.3",
46
+ "rollup": "4.1.0"
50
47
  },
51
48
  "files": [
52
49
  "/dist"
package/CHANGELOG.md DELETED
@@ -1,56 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- ### [0.1.1](https://github.com/remarkablemark/inline-style-parser/compare/v0.1.0...v0.1.1) (2019-06-20)
6
-
7
-
8
- ### Build System
9
-
10
- * **package:** fix whitelisting of `/dist` in "files" field ([2c13b2f](https://github.com/remarkablemark/inline-style-parser/commit/2c13b2f))
11
-
12
-
13
-
14
- ## 0.1.0 (2019-06-19)
15
-
16
-
17
- ### Bug Fixes
18
-
19
- * **index:** do not throw an error if a comment precedes the colon ([7f962ee](https://github.com/remarkablemark/inline-style-parser/commit/7f962ee))
20
-
21
-
22
- ### Build System
23
-
24
- * **package:** add `build` and `clean` scripts ([d27a653](https://github.com/remarkablemark/inline-style-parser/commit/d27a653))
25
- * **package:** add script `prepublishOnly` and "files" field ([5fad9ff](https://github.com/remarkablemark/inline-style-parser/commit/5fad9ff))
26
- * **package:** save `css@2.2.4` to devDependencies ([93ad729](https://github.com/remarkablemark/inline-style-parser/commit/93ad729))
27
- * **package:** save devDependencies for `rollup` and its plugins ([872b1fa](https://github.com/remarkablemark/inline-style-parser/commit/872b1fa))
28
- * **package:** set `NODE_ENV=development` in script `build:unmin` ([5a7877b](https://github.com/remarkablemark/inline-style-parser/commit/5a7877b))
29
- * **package:** update `build:min` to generate sourcemap (external) ([c81d66a](https://github.com/remarkablemark/inline-style-parser/commit/c81d66a))
30
- * **rollup:** add `rollup.config.js` ([ac60124](https://github.com/remarkablemark/inline-style-parser/commit/ac60124))
31
-
32
-
33
- ### Features
34
-
35
- * clone project from `npm-package-template` ([5976c6f](https://github.com/remarkablemark/inline-style-parser/commit/5976c6f))
36
- * **index:** copy `parse` module from `css` package ([3bf4bee](https://github.com/remarkablemark/inline-style-parser/commit/3bf4bee))
37
- * **index:** parse only declarations and remove all unused code ([a04d918](https://github.com/remarkablemark/inline-style-parser/commit/a04d918))
38
- * **index:** throw error if first argument is not a string ([346ae28](https://github.com/remarkablemark/inline-style-parser/commit/346ae28))
39
-
40
-
41
- ### Tests
42
-
43
- * add snapshot for the parsed output of a single declaration ([c2c774c](https://github.com/remarkablemark/inline-style-parser/commit/c2c774c))
44
- * **data:** add more cases for 'content' and 'background-image' ([204c574](https://github.com/remarkablemark/inline-style-parser/commit/204c574))
45
- * **index:** add more misc and one-off test cases ([a08f521](https://github.com/remarkablemark/inline-style-parser/commit/a08f521))
46
- * **index:** check that a comment before colon is parsed correctly ([bf9518c](https://github.com/remarkablemark/inline-style-parser/commit/bf9518c))
47
- * **index:** check that the error message matches ([9169525](https://github.com/remarkablemark/inline-style-parser/commit/9169525))
48
- * add snapshots for the parsed output of multiple declarations ([8708031](https://github.com/remarkablemark/inline-style-parser/commit/8708031))
49
- * **index:** disable placeholder test suite ([20bf8af](https://github.com/remarkablemark/inline-style-parser/commit/20bf8af))
50
- * add cases and compare parser output with `css.parse` output ([361974b](https://github.com/remarkablemark/inline-style-parser/commit/361974b))
51
- * **index:** refactor tests and use `expect` and `it.each` ([dbf2ef0](https://github.com/remarkablemark/inline-style-parser/commit/dbf2ef0))
52
- * organize tests with describe blocks and tidy test names ([5c5fcd4](https://github.com/remarkablemark/inline-style-parser/commit/5c5fcd4))
53
- * replace `mocha` and `nyc` with `jest` ([100311d](https://github.com/remarkablemark/inline-style-parser/commit/100311d))
54
- * **index:** test "End of comment missing" error and silent option ([9f0c832](https://github.com/remarkablemark/inline-style-parser/commit/9f0c832))
55
- * **index:** verify that expected errors are thrown ([d0ed3bd](https://github.com/remarkablemark/inline-style-parser/commit/d0ed3bd))
56
- * **package:** collect coverage from `index.js` only ([bc503b7](https://github.com/remarkablemark/inline-style-parser/commit/bc503b7))