@tbela99/css-parser 0.0.1-alpha3

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.
@@ -0,0 +1,494 @@
1
+ // name to color
2
+ const COLORS_NAMES = Object.seal({
3
+ 'aliceblue': '#f0f8ff',
4
+ 'antiquewhite': '#faebd7',
5
+ 'aqua': '#00ffff',
6
+ 'aquamarine': '#7fffd4',
7
+ 'azure': '#f0ffff',
8
+ 'beige': '#f5f5dc',
9
+ 'bisque': '#ffe4c4',
10
+ 'black': '#000000',
11
+ 'blanchedalmond': '#ffebcd',
12
+ 'blue': '#0000ff',
13
+ 'blueviolet': '#8a2be2',
14
+ 'brown': '#a52a2a',
15
+ 'burlywood': '#deb887',
16
+ 'cadetblue': '#5f9ea0',
17
+ 'chartreuse': '#7fff00',
18
+ 'chocolate': '#d2691e',
19
+ 'coral': '#ff7f50',
20
+ 'cornflowerblue': '#6495ed',
21
+ 'cornsilk': '#fff8dc',
22
+ 'crimson': '#dc143c',
23
+ 'cyan': '#00ffff',
24
+ 'darkblue': '#00008b',
25
+ 'darkcyan': '#008b8b',
26
+ 'darkgoldenrod': '#b8860b',
27
+ 'darkgray': '#a9a9a9',
28
+ 'darkgrey': '#a9a9a9',
29
+ 'darkgreen': '#006400',
30
+ 'darkkhaki': '#bdb76b',
31
+ 'darkmagenta': '#8b008b',
32
+ 'darkolivegreen': '#556b2f',
33
+ 'darkorange': '#ff8c00',
34
+ 'darkorchid': '#9932cc',
35
+ 'darkred': '#8b0000',
36
+ 'darksalmon': '#e9967a',
37
+ 'darkseagreen': '#8fbc8f',
38
+ 'darkslateblue': '#483d8b',
39
+ 'darkslategray': '#2f4f4f',
40
+ 'darkslategrey': '#2f4f4f',
41
+ 'darkturquoise': '#00ced1',
42
+ 'darkviolet': '#9400d3',
43
+ 'deeppink': '#ff1493',
44
+ 'deepskyblue': '#00bfff',
45
+ 'dimgray': '#696969',
46
+ 'dimgrey': '#696969',
47
+ 'dodgerblue': '#1e90ff',
48
+ 'firebrick': '#b22222',
49
+ 'floralwhite': '#fffaf0',
50
+ 'forestgreen': '#228b22',
51
+ 'fuchsia': '#ff00ff',
52
+ 'gainsboro': '#dcdcdc',
53
+ 'ghostwhite': '#f8f8ff',
54
+ 'gold': '#ffd700',
55
+ 'goldenrod': '#daa520',
56
+ 'gray': '#808080',
57
+ 'grey': '#808080',
58
+ 'green': '#008000',
59
+ 'greenyellow': '#adff2f',
60
+ 'honeydew': '#f0fff0',
61
+ 'hotpink': '#ff69b4',
62
+ 'indianred': '#cd5c5c',
63
+ 'indigo': '#4b0082',
64
+ 'ivory': '#fffff0',
65
+ 'khaki': '#f0e68c',
66
+ 'lavender': '#e6e6fa',
67
+ 'lavenderblush': '#fff0f5',
68
+ 'lawngreen': '#7cfc00',
69
+ 'lemonchiffon': '#fffacd',
70
+ 'lightblue': '#add8e6',
71
+ 'lightcoral': '#f08080',
72
+ 'lightcyan': '#e0ffff',
73
+ 'lightgoldenrodyellow': '#fafad2',
74
+ 'lightgray': '#d3d3d3',
75
+ 'lightgrey': '#d3d3d3',
76
+ 'lightgreen': '#90ee90',
77
+ 'lightpink': '#ffb6c1',
78
+ 'lightsalmon': '#ffa07a',
79
+ 'lightseagreen': '#20b2aa',
80
+ 'lightskyblue': '#87cefa',
81
+ 'lightslategray': '#778899',
82
+ 'lightslategrey': '#778899',
83
+ 'lightsteelblue': '#b0c4de',
84
+ 'lightyellow': '#ffffe0',
85
+ 'lime': '#00ff00',
86
+ 'limegreen': '#32cd32',
87
+ 'linen': '#faf0e6',
88
+ 'magenta': '#ff00ff',
89
+ 'maroon': '#800000',
90
+ 'mediumaquamarine': '#66cdaa',
91
+ 'mediumblue': '#0000cd',
92
+ 'mediumorchid': '#ba55d3',
93
+ 'mediumpurple': '#9370d8',
94
+ 'mediumseagreen': '#3cb371',
95
+ 'mediumslateblue': '#7b68ee',
96
+ 'mediumspringgreen': '#00fa9a',
97
+ 'mediumturquoise': '#48d1cc',
98
+ 'mediumvioletred': '#c71585',
99
+ 'midnightblue': '#191970',
100
+ 'mintcream': '#f5fffa',
101
+ 'mistyrose': '#ffe4e1',
102
+ 'moccasin': '#ffe4b5',
103
+ 'navajowhite': '#ffdead',
104
+ 'navy': '#000080',
105
+ 'oldlace': '#fdf5e6',
106
+ 'olive': '#808000',
107
+ 'olivedrab': '#6b8e23',
108
+ 'orange': '#ffa500',
109
+ 'orangered': '#ff4500',
110
+ 'orchid': '#da70d6',
111
+ 'palegoldenrod': '#eee8aa',
112
+ 'palegreen': '#98fb98',
113
+ 'paleturquoise': '#afeeee',
114
+ 'palevioletred': '#d87093',
115
+ 'papayawhip': '#ffefd5',
116
+ 'peachpuff': '#ffdab9',
117
+ 'peru': '#cd853f',
118
+ 'pink': '#ffc0cb',
119
+ 'plum': '#dda0dd',
120
+ 'powderblue': '#b0e0e6',
121
+ 'purple': '#800080',
122
+ 'red': '#ff0000',
123
+ 'rosybrown': '#bc8f8f',
124
+ 'royalblue': '#4169e1',
125
+ 'saddlebrown': '#8b4513',
126
+ 'salmon': '#fa8072',
127
+ 'sandybrown': '#f4a460',
128
+ 'seagreen': '#2e8b57',
129
+ 'seashell': '#fff5ee',
130
+ 'sienna': '#a0522d',
131
+ 'silver': '#c0c0c0',
132
+ 'skyblue': '#87ceeb',
133
+ 'slateblue': '#6a5acd',
134
+ 'slategray': '#708090',
135
+ 'slategrey': '#708090',
136
+ 'snow': '#fffafa',
137
+ 'springgreen': '#00ff7f',
138
+ 'steelblue': '#4682b4',
139
+ 'tan': '#d2b48c',
140
+ 'teal': '#008080',
141
+ 'thistle': '#d8bfd8',
142
+ 'tomato': '#ff6347',
143
+ 'turquoise': '#40e0d0',
144
+ 'violet': '#ee82ee',
145
+ 'wheat': '#f5deb3',
146
+ 'white': '#ffffff',
147
+ 'whitesmoke': '#f5f5f5',
148
+ 'yellow': '#ffff00',
149
+ 'yellowgreen': '#9acd32',
150
+ 'rebeccapurple': '#663399',
151
+ 'transparent': '#00000000'
152
+ });
153
+ // color to name
154
+ const NAMES_COLORS = Object.seal({
155
+ '#f0f8ff': 'aliceblue',
156
+ '#faebd7': 'antiquewhite',
157
+ // '#00ffff': 'aqua',
158
+ '#7fffd4': 'aquamarine',
159
+ '#f0ffff': 'azure',
160
+ '#f5f5dc': 'beige',
161
+ '#ffe4c4': 'bisque',
162
+ '#000000': 'black',
163
+ '#ffebcd': 'blanchedalmond',
164
+ '#0000ff': 'blue',
165
+ '#8a2be2': 'blueviolet',
166
+ '#a52a2a': 'brown',
167
+ '#deb887': 'burlywood',
168
+ '#5f9ea0': 'cadetblue',
169
+ '#7fff00': 'chartreuse',
170
+ '#d2691e': 'chocolate',
171
+ '#ff7f50': 'coral',
172
+ '#6495ed': 'cornflowerblue',
173
+ '#fff8dc': 'cornsilk',
174
+ '#dc143c': 'crimson',
175
+ '#00ffff': 'cyan',
176
+ '#00008b': 'darkblue',
177
+ '#008b8b': 'darkcyan',
178
+ '#b8860b': 'darkgoldenrod',
179
+ // '#a9a9a9': 'darkgray',
180
+ '#a9a9a9': 'darkgrey',
181
+ '#006400': 'darkgreen',
182
+ '#bdb76b': 'darkkhaki',
183
+ '#8b008b': 'darkmagenta',
184
+ '#556b2f': 'darkolivegreen',
185
+ '#ff8c00': 'darkorange',
186
+ '#9932cc': 'darkorchid',
187
+ '#8b0000': 'darkred',
188
+ '#e9967a': 'darksalmon',
189
+ '#8fbc8f': 'darkseagreen',
190
+ '#483d8b': 'darkslateblue',
191
+ // '#2f4f4f': 'darkslategray',
192
+ '#2f4f4f': 'darkslategrey',
193
+ '#00ced1': 'darkturquoise',
194
+ '#9400d3': 'darkviolet',
195
+ '#ff1493': 'deeppink',
196
+ '#00bfff': 'deepskyblue',
197
+ // '#696969': 'dimgray',
198
+ '#696969': 'dimgrey',
199
+ '#1e90ff': 'dodgerblue',
200
+ '#b22222': 'firebrick',
201
+ '#fffaf0': 'floralwhite',
202
+ '#228b22': 'forestgreen',
203
+ // '#ff00ff': 'fuchsia',
204
+ '#dcdcdc': 'gainsboro',
205
+ '#f8f8ff': 'ghostwhite',
206
+ '#ffd700': 'gold',
207
+ '#daa520': 'goldenrod',
208
+ // '#808080': 'gray',
209
+ '#808080': 'grey',
210
+ '#008000': 'green',
211
+ '#adff2f': 'greenyellow',
212
+ '#f0fff0': 'honeydew',
213
+ '#ff69b4': 'hotpink',
214
+ '#cd5c5c': 'indianred',
215
+ '#4b0082': 'indigo',
216
+ '#fffff0': 'ivory',
217
+ '#f0e68c': 'khaki',
218
+ '#e6e6fa': 'lavender',
219
+ '#fff0f5': 'lavenderblush',
220
+ '#7cfc00': 'lawngreen',
221
+ '#fffacd': 'lemonchiffon',
222
+ '#add8e6': 'lightblue',
223
+ '#f08080': 'lightcoral',
224
+ '#e0ffff': 'lightcyan',
225
+ '#fafad2': 'lightgoldenrodyellow',
226
+ // '#d3d3d3': 'lightgray',
227
+ '#d3d3d3': 'lightgrey',
228
+ '#90ee90': 'lightgreen',
229
+ '#ffb6c1': 'lightpink',
230
+ '#ffa07a': 'lightsalmon',
231
+ '#20b2aa': 'lightseagreen',
232
+ '#87cefa': 'lightskyblue',
233
+ // '#778899': 'lightslategray',
234
+ '#778899': 'lightslategrey',
235
+ '#b0c4de': 'lightsteelblue',
236
+ '#ffffe0': 'lightyellow',
237
+ '#00ff00': 'lime',
238
+ '#32cd32': 'limegreen',
239
+ '#faf0e6': 'linen',
240
+ '#ff00ff': 'magenta',
241
+ '#800000': 'maroon',
242
+ '#66cdaa': 'mediumaquamarine',
243
+ '#0000cd': 'mediumblue',
244
+ '#ba55d3': 'mediumorchid',
245
+ '#9370d8': 'mediumpurple',
246
+ '#3cb371': 'mediumseagreen',
247
+ '#7b68ee': 'mediumslateblue',
248
+ '#00fa9a': 'mediumspringgreen',
249
+ '#48d1cc': 'mediumturquoise',
250
+ '#c71585': 'mediumvioletred',
251
+ '#191970': 'midnightblue',
252
+ '#f5fffa': 'mintcream',
253
+ '#ffe4e1': 'mistyrose',
254
+ '#ffe4b5': 'moccasin',
255
+ '#ffdead': 'navajowhite',
256
+ '#000080': 'navy',
257
+ '#fdf5e6': 'oldlace',
258
+ '#808000': 'olive',
259
+ '#6b8e23': 'olivedrab',
260
+ '#ffa500': 'orange',
261
+ '#ff4500': 'orangered',
262
+ '#da70d6': 'orchid',
263
+ '#eee8aa': 'palegoldenrod',
264
+ '#98fb98': 'palegreen',
265
+ '#afeeee': 'paleturquoise',
266
+ '#d87093': 'palevioletred',
267
+ '#ffefd5': 'papayawhip',
268
+ '#ffdab9': 'peachpuff',
269
+ '#cd853f': 'peru',
270
+ '#ffc0cb': 'pink',
271
+ '#dda0dd': 'plum',
272
+ '#b0e0e6': 'powderblue',
273
+ '#800080': 'purple',
274
+ '#ff0000': 'red',
275
+ '#bc8f8f': 'rosybrown',
276
+ '#4169e1': 'royalblue',
277
+ '#8b4513': 'saddlebrown',
278
+ '#fa8072': 'salmon',
279
+ '#f4a460': 'sandybrown',
280
+ '#2e8b57': 'seagreen',
281
+ '#fff5ee': 'seashell',
282
+ '#a0522d': 'sienna',
283
+ '#c0c0c0': 'silver',
284
+ '#87ceeb': 'skyblue',
285
+ '#6a5acd': 'slateblue',
286
+ // '#708090': 'slategray',
287
+ '#708090': 'slategrey',
288
+ '#fffafa': 'snow',
289
+ '#00ff7f': 'springgreen',
290
+ '#4682b4': 'steelblue',
291
+ '#d2b48c': 'tan',
292
+ '#008080': 'teal',
293
+ '#d8bfd8': 'thistle',
294
+ '#ff6347': 'tomato',
295
+ '#40e0d0': 'turquoise',
296
+ '#ee82ee': 'violet',
297
+ '#f5deb3': 'wheat',
298
+ '#ffffff': 'white',
299
+ '#f5f5f5': 'whitesmoke',
300
+ '#ffff00': 'yellow',
301
+ '#9acd32': 'yellowgreen',
302
+ '#663399': 'rebeccapurple',
303
+ '#00000000': 'transparent'
304
+ });
305
+ function rgb2Hex(token) {
306
+ let value = '#';
307
+ let t;
308
+ // @ts-ignore
309
+ for (let i = 0; i < 6; i += 2) {
310
+ // @ts-ignore
311
+ t = token.chi[i];
312
+ // @ts-ignore
313
+ value += Math.round(t.typ == 'Perc' ? 255 * t.val / 100 : t.val).toString(16).padStart(2, '0');
314
+ }
315
+ // @ts-ignore
316
+ if (token.chi.length == 7) {
317
+ // @ts-ignore
318
+ t = token.chi[6];
319
+ // @ts-ignore
320
+ if ((t.typ == 'Number' && t.val < 1) ||
321
+ // @ts-ignore
322
+ (t.typ == 'Perc' && t.val < 100)) {
323
+ // @ts-ignore
324
+ value += Math.round(255 * (t.typ == 'Perc' ? t.val / 100 : t.val)).toString(16).padStart(2, '0');
325
+ }
326
+ }
327
+ return value;
328
+ }
329
+ function hsl2Hex(token) {
330
+ let t;
331
+ // @ts-ignore
332
+ let h = getAngle(token.chi[0]);
333
+ // @ts-ignore
334
+ t = token.chi[2];
335
+ // @ts-ignore
336
+ let s = t.typ == 'Perc' ? t.val / 100 : t.val;
337
+ // @ts-ignore
338
+ t = token.chi[4];
339
+ // @ts-ignore
340
+ let l = t.typ == 'Perc' ? t.val / 100 : t.val;
341
+ let a = null;
342
+ if (token.chi?.length == 7) {
343
+ // @ts-ignore
344
+ t = token.chi[6];
345
+ // @ts-ignore
346
+ if ((t.typ == 'Perc' && t.val < 100) ||
347
+ // @ts-ignore
348
+ (t.typ == 'Number' && t.val < 1)) {
349
+ // @ts-ignore
350
+ a = (t.typ == 'Perc' ? t.val / 100 : t.val);
351
+ }
352
+ }
353
+ return `#${hsl2rgb(h, s, l, a).reduce((acc, curr) => acc + curr.toString(16).padStart(2, '0'), '')}`;
354
+ }
355
+ function hwb2hex(token) {
356
+ let t;
357
+ // @ts-ignore
358
+ let h = getAngle(token.chi[0]);
359
+ // @ts-ignore
360
+ t = token.chi[2];
361
+ // @ts-ignore
362
+ let white = t.typ == 'Perc' ? t.val / 100 : t.val;
363
+ // @ts-ignore
364
+ t = token.chi[4];
365
+ // @ts-ignore
366
+ let black = t.typ == 'Perc' ? t.val / 100 : t.val;
367
+ let a = null;
368
+ if (token.chi?.length == 7) {
369
+ // @ts-ignore
370
+ t = token.chi[6];
371
+ // @ts-ignore
372
+ if ((t.typ == 'Perc' && t.val < 100) ||
373
+ // @ts-ignore
374
+ (t.typ == 'Number' && t.val < 1)) {
375
+ // @ts-ignore
376
+ a = (t.typ == 'Perc' ? t.val / 100 : t.val);
377
+ }
378
+ }
379
+ const rgb = hsl2rgb(h, 1, .5, a);
380
+ let value;
381
+ for (let i = 0; i < 3; i++) {
382
+ value = rgb[i] / 255;
383
+ value *= (1 - white - black);
384
+ value += white;
385
+ rgb[i] = Math.round(value * 255);
386
+ }
387
+ return `#${rgb.reduce((acc, curr) => acc + curr.toString(16).padStart(2, '0'), '')}`;
388
+ }
389
+ function cmyk2hex(token) {
390
+ // @ts-ignore
391
+ let t = token.chi[0];
392
+ // @ts-ignore
393
+ const c = t.typ == 'Perc' ? t.val / 100 : t.val;
394
+ // @ts-ignore
395
+ t = token.chi[2];
396
+ // @ts-ignore
397
+ const m = t.typ == 'Perc' ? t.val / 100 : t.val;
398
+ // @ts-ignore
399
+ t = token.chi[4];
400
+ // @ts-ignore
401
+ const y = t.typ == 'Perc' ? t.val / 100 : t.val;
402
+ // @ts-ignore
403
+ t = token.chi[6];
404
+ // @ts-ignore
405
+ const k = t.typ == 'Perc' ? t.val / 100 : t.val;
406
+ const rgb = [
407
+ Math.round(255 * (1 - Math.min(1, c * (1 - k) + k))),
408
+ Math.round(255 * (1 - Math.min(1, m * (1 - k) + k))),
409
+ Math.round(255 * (1 - Math.min(1, y * (1 - k) + k)))
410
+ ];
411
+ // @ts-ignore
412
+ if (token.chi.length >= 9) {
413
+ // @ts-ignore
414
+ t = token.chi[8];
415
+ // @ts-ignore
416
+ rgb.push(Math.round(255 * (t.typ == 'Perc' ? t.val / 100 : t.val)));
417
+ }
418
+ return `#${rgb.reduce((acc, curr) => acc + curr.toString(16).padStart(2, '0'), '')}`;
419
+ }
420
+ function getAngle(token) {
421
+ if (token.typ == 'Dimension') {
422
+ switch (token.unit) {
423
+ case 'deg':
424
+ // @ts-ignore
425
+ return token.val / 360;
426
+ case 'rad':
427
+ // @ts-ignore
428
+ return token.val / (2 * Math.PI);
429
+ case 'grad':
430
+ // @ts-ignore
431
+ return token.val / 400;
432
+ case 'turn':
433
+ // @ts-ignore
434
+ return +token.val;
435
+ }
436
+ }
437
+ // @ts-ignore
438
+ return token.val / 360;
439
+ }
440
+ function hsl2rgb(h, s, l, a = null) {
441
+ let v = l <= .5 ? l * (1.0 + s) : l + s - l * s;
442
+ let r = l;
443
+ let g = l;
444
+ let b = l;
445
+ if (v > 0) {
446
+ let m = l + l - v;
447
+ let sv = (v - m) / v;
448
+ h *= 6.0;
449
+ let sextant = Math.floor(h);
450
+ let fract = h - sextant;
451
+ let vsf = v * sv * fract;
452
+ let mid1 = m + vsf;
453
+ let mid2 = v - vsf;
454
+ switch (sextant) {
455
+ case 0:
456
+ r = v;
457
+ g = mid1;
458
+ b = m;
459
+ break;
460
+ case 1:
461
+ r = mid2;
462
+ g = v;
463
+ b = m;
464
+ break;
465
+ case 2:
466
+ r = m;
467
+ g = v;
468
+ b = mid1;
469
+ break;
470
+ case 3:
471
+ r = m;
472
+ g = mid2;
473
+ b = v;
474
+ break;
475
+ case 4:
476
+ r = mid1;
477
+ g = m;
478
+ b = v;
479
+ break;
480
+ case 5:
481
+ r = v;
482
+ g = m;
483
+ b = mid2;
484
+ break;
485
+ }
486
+ }
487
+ const values = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
488
+ if (a != null && a != 1) {
489
+ values.push(Math.round(a * 255));
490
+ }
491
+ return values;
492
+ }
493
+
494
+ export { COLORS_NAMES, NAMES_COLORS, cmyk2hex, hsl2Hex, hwb2hex, rgb2Hex };
@@ -0,0 +1,22 @@
1
+ import { parse } from './parser/parse.js';
2
+ import { render } from './renderer/render.js';
3
+
4
+ async function transform(css, options = {}) {
5
+ options = { compress: true, removeEmpty: true, ...options };
6
+ const startTime = performance.now();
7
+ const parseResult = await parse(css, options);
8
+ const renderTime = performance.now();
9
+ const rendered = render(parseResult.ast, options);
10
+ const endTime = performance.now();
11
+ return {
12
+ ...parseResult, ...rendered, stats: {
13
+ bytesIn: parseResult.bytesIn,
14
+ bytesOut: rendered.code.length,
15
+ parse: `${(renderTime - startTime).toFixed(2)}ms`,
16
+ render: `${(endTime - renderTime).toFixed(2)}ms`,
17
+ total: `${(endTime - startTime).toFixed(2)}ms`
18
+ }
19
+ };
20
+ }
21
+
22
+ export { transform };
@@ -0,0 +1,14 @@
1
+ function* walk(node) {
2
+ // @ts-ignore
3
+ yield* doWalk(node, null, null);
4
+ }
5
+ function* doWalk(node, parent, root) {
6
+ yield { node, parent, root };
7
+ if ('chi' in node) {
8
+ for (const child of node.chi) {
9
+ yield* doWalk(child, node, (root == null ? node : root));
10
+ }
11
+ }
12
+ }
13
+
14
+ export { walk };
@@ -0,0 +1,17 @@
1
+ import { parse as parse$1 } from '../lib/parser/parse.js';
2
+ import '../lib/renderer/utils/color.js';
3
+ import { transform as transform$1 } from '../lib/transform.js';
4
+ import { load } from './load.js';
5
+ import { resolve } from '../lib/fs/resolve.js';
6
+ export { dirname, matchUrl } from '../lib/fs/resolve.js';
7
+
8
+ function parse(iterator, opt = {}) {
9
+ Object.assign(opt, { load, resolve, cwd: opt.cwd ?? process.cwd() });
10
+ return parse$1(iterator, opt);
11
+ }
12
+ function transform(css, options = {}) {
13
+ Object.assign(options, { load, resolve, cwd: options.cwd ?? process.cwd() });
14
+ return transform$1(css, options);
15
+ }
16
+
17
+ export { load, parse, resolve, transform };
@@ -0,0 +1,15 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { resolve, matchUrl } from '../lib/fs/resolve.js';
3
+
4
+ function parseResponse(response) {
5
+ if (!response.ok) {
6
+ throw new Error(`${response.status} ${response.statusText} ${response.url}`);
7
+ }
8
+ return response.text();
9
+ }
10
+ async function load(url, currentFile) {
11
+ const resolved = resolve(url, currentFile);
12
+ return matchUrl.test(resolved.absolute) ? fetch(resolved.absolute).then(parseResponse) : readFile(resolved.absolute, { encoding: 'utf-8' });
13
+ }
14
+
15
+ export { load };
@@ -0,0 +1,27 @@
1
+ import { parse as parse$1 } from '../lib/parser/parse.js';
2
+ export { deduplicate, deduplicateRule, hasDeclaration } from '../lib/parser/deduplicate.js';
3
+ export { render, renderToken } from '../lib/renderer/render.js';
4
+ export { walk } from '../lib/walker/walk.js';
5
+ import { transform as transform$1 } from '../lib/transform.js';
6
+ import { load } from './load.js';
7
+ import { resolve, dirname } from '../lib/fs/resolve.js';
8
+ export { matchUrl } from '../lib/fs/resolve.js';
9
+
10
+ function parse(iterator, opt = {}) {
11
+ Object.assign(opt, {
12
+ load,
13
+ resolve,
14
+ cwd: opt.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname)
15
+ });
16
+ return parse$1(iterator, opt);
17
+ }
18
+ function transform(css, options = {}) {
19
+ Object.assign(options, {
20
+ load,
21
+ resolve,
22
+ cwd: options.cwd ?? self.location.pathname.endsWith('/') ? self.location.pathname : dirname(self.location.pathname)
23
+ });
24
+ return transform$1(css, options);
25
+ }
26
+
27
+ export { dirname, load, parse, resolve, transform };
@@ -0,0 +1,20 @@
1
+ import { matchUrl, resolve } from '../lib/fs/resolve.js';
2
+
3
+ function parseResponse(response) {
4
+ if (!response.ok) {
5
+ throw new Error(`${response.status} ${response.statusText} ${response.url}`);
6
+ }
7
+ return response.text();
8
+ }
9
+ async function load(url, currentFile) {
10
+ if (matchUrl.test(url)) {
11
+ return fetch(url).then(parseResponse);
12
+ }
13
+ if (matchUrl.test(currentFile)) {
14
+ return fetch(new URL(url, currentFile)).then(parseResponse);
15
+ }
16
+ // return fetch(new URL(url, new URL(currentFile, self.location.href).href)).then(parseResponse);
17
+ return fetch(resolve(url, currentFile).absolute).then(parseResponse);
18
+ }
19
+
20
+ export { load };
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@tbela99/css-parser",
3
+ "description": "CSS parser for node and the browser",
4
+ "version": "0.0.1-alpha3",
5
+ "exports": {
6
+ ".": "./dist/index.js",
7
+ "./web": "./dist/web/index.js",
8
+ "./cjs": "./dist/index.cjs"
9
+ },
10
+ "type": "module",
11
+ "typings": "dist/index.d.ts",
12
+ "scripts": {
13
+ "build": "rollup -c",
14
+ "debug": "web-test-runner \"test/**/*.web.js\" --manual --open --node-resolve --root-dir=./test/",
15
+ "test": "web-test-runner \"test/**/*.web.js\" --node-resolve --root-dir=./test/; mocha --reporter-options='maxDiffSize=181920' \"test/**/*.test.js\""
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/tbela99/css-parser.git"
20
+ },
21
+ "keywords": [
22
+ "parser",
23
+ "css",
24
+ "css-parser",
25
+ "node",
26
+ "browser"
27
+ ],
28
+ "author": "Thierry Bela",
29
+ "license": "MIT OR LGPL-3.0",
30
+ "bugs": {
31
+ "url": "https://github.com/tbela99/css-parser/issues"
32
+ },
33
+ "homepage": "https://github.com/tbela99/css-parser#readme",
34
+ "devDependencies": {
35
+ "@esm-bundle/chai": "^4.3.4-fix.0",
36
+ "@rollup/plugin-commonjs": "^25.0.2",
37
+ "@rollup/plugin-json": "^6.0.0",
38
+ "@rollup/plugin-node-resolve": "^15.0.1",
39
+ "@rollup/plugin-terser": "^0.4.3",
40
+ "@rollup/plugin-typescript": "^11.0.0",
41
+ "@types/chai": "^4.3.5",
42
+ "@types/mocha": "^10.0.1",
43
+ "@types/node": "^18.15.10",
44
+ "@web/test-runner": "^0.16.1",
45
+ "@webref/css": "^6.5.9",
46
+ "glob": "^10.3.0",
47
+ "mocha": "^10.2.0",
48
+ "rollup": "^3.20.1",
49
+ "rollup-plugin-dts": "^5.3.0",
50
+ "tslib": "^2.5.0"
51
+ }
52
+ }