iobroker.mywebui 1.37.21 → 1.37.22

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.
Files changed (29) hide show
  1. package/io-package.json +1 -1
  2. package/package.json +1 -1
  3. package/www/node_modules/@node-projects/css-parser/LICENSE +11 -0
  4. package/www/node_modules/@node-projects/css-parser/README.md +161 -0
  5. package/www/node_modules/@node-projects/css-parser/dist/CssParseError.d.ts +8 -0
  6. package/www/node_modules/@node-projects/css-parser/dist/CssParseError.js +15 -0
  7. package/www/node_modules/@node-projects/css-parser/dist/CssPosition.d.ts +25 -0
  8. package/www/node_modules/@node-projects/css-parser/dist/CssPosition.js +13 -0
  9. package/www/node_modules/@node-projects/css-parser/dist/index-min.js +56 -0
  10. package/www/node_modules/@node-projects/css-parser/dist/index-min.js.map +7 -0
  11. package/www/node_modules/@node-projects/css-parser/dist/index.d.ts +12 -0
  12. package/www/node_modules/@node-projects/css-parser/dist/index.js +8 -0
  13. package/www/node_modules/@node-projects/css-parser/dist/parse/index.d.ts +8 -0
  14. package/www/node_modules/@node-projects/css-parser/dist/parse/index.js +1293 -0
  15. package/www/node_modules/@node-projects/css-parser/dist/parse/lexer.d.ts +118 -0
  16. package/www/node_modules/@node-projects/css-parser/dist/parse/lexer.js +248 -0
  17. package/www/node_modules/@node-projects/css-parser/dist/stringify/compiler.d.ts +172 -0
  18. package/www/node_modules/@node-projects/css-parser/dist/stringify/compiler.js +732 -0
  19. package/www/node_modules/@node-projects/css-parser/dist/stringify/index.d.ts +5 -0
  20. package/www/node_modules/@node-projects/css-parser/dist/stringify/index.js +5 -0
  21. package/www/node_modules/@node-projects/css-parser/dist/type.d.ts +205 -0
  22. package/www/node_modules/@node-projects/css-parser/dist/type.js +31 -0
  23. package/www/node_modules/@node-projects/css-parser/dist/utils/stringSearch.d.ts +53 -0
  24. package/www/node_modules/@node-projects/css-parser/dist/utils/stringSearch.js +166 -0
  25. package/www/node_modules/@node-projects/css-parser/docs/API.md +362 -0
  26. package/www/node_modules/@node-projects/css-parser/docs/AST.md +417 -0
  27. package/www/node_modules/@node-projects/css-parser/docs/CHANGELOG.md +205 -0
  28. package/www/node_modules/@node-projects/css-parser/docs/EXAMPLES.md +497 -0
  29. package/www/node_modules/@node-projects/css-parser/package.json +66 -0
@@ -0,0 +1,417 @@
1
+ # Abstract Syntax Tree (AST)
2
+
3
+ ## Overview
4
+
5
+ The AST represents CSS as a tree structure where each node has a specific type and properties. All nodes share common properties and have type-specific properties.
6
+
7
+ ## Common Properties
8
+
9
+ All AST nodes have these properties:
10
+
11
+ ### `type`
12
+
13
+ The node type as a string. See [Node Types](#node-types) for all possible values.
14
+
15
+ ### `position` (optional)
16
+
17
+ Position information for the node in the source code:
18
+
19
+ ```typescript
20
+ {
21
+ start: { line: number; column: number };
22
+ end: { line: number; column: number };
23
+ source?: string;
24
+ }
25
+ ```
26
+
27
+ ### `parent` (optional)
28
+
29
+ Reference to the parent node in the AST.
30
+
31
+ ## Node Types
32
+
33
+ ### `stylesheet`
34
+
35
+ The root node representing an entire CSS document.
36
+
37
+ **Properties:**
38
+ - `stylesheet.source` (optional): Source file path
39
+ - `stylesheet.rules`: Array of top-level rules (may include `whitespace` nodes when `preserveFormatting: true`)
40
+ - `stylesheet.parsingErrors` (optional): Array of parse errors when `silent` option is used
41
+
42
+ **Example:**
43
+ ```json
44
+ {
45
+ "type": "stylesheet",
46
+ "stylesheet": {
47
+ "rules": [
48
+ // ... other nodes
49
+ ]
50
+ }
51
+ }
52
+ ```
53
+
54
+ ### `rule`
55
+
56
+ A CSS rule with selectors and declarations.
57
+
58
+ **Properties:**
59
+ - `selectors`: Array of CSS selectors as strings
60
+ - `declarations`: Array of declarations and comments
61
+
62
+ **Example:**
63
+ ```json
64
+ {
65
+ "type": "rule",
66
+ "selectors": ["body", "html"],
67
+ "declarations": [
68
+ {
69
+ "type": "declaration",
70
+ "property": "color",
71
+ "value": "red"
72
+ }
73
+ ]
74
+ }
75
+ ```
76
+
77
+ ### `declaration`
78
+
79
+ A CSS property declaration.
80
+
81
+ **Properties:**
82
+ - `property`: The CSS property name
83
+ - `value`: The CSS property value as a string
84
+
85
+ **Example:**
86
+ ```json
87
+ {
88
+ "type": "declaration",
89
+ "property": "background-color",
90
+ "value": "#ffffff"
91
+ }
92
+ ```
93
+
94
+ ### `comment`
95
+
96
+ A CSS comment.
97
+
98
+ **Properties:**
99
+ - `comment`: The comment text (without `/*` and `*/`)
100
+
101
+ **Example:**
102
+ ```json
103
+ {
104
+ "type": "comment",
105
+ "comment": " This is a comment "
106
+ }
107
+ ```
108
+
109
+ ### `whitespace`
110
+
111
+ A whitespace node that preserves original formatting between sibling nodes. Only present when `preserveFormatting: true` is used during parsing.
112
+
113
+ **Properties:**
114
+ - `value`: The whitespace text (spaces, newlines, tabs, etc.)
115
+
116
+ **Example:**
117
+ ```json
118
+ {
119
+ "type": "whitespace",
120
+ "value": "\n\n"
121
+ }
122
+ ```
123
+
124
+ ### `media`
125
+
126
+ A `@media` rule.
127
+
128
+ **Properties:**
129
+ - `media`: The media query string
130
+ - `rules`: Array of rules within the media block
131
+
132
+ **Example:**
133
+ ```json
134
+ {
135
+ "type": "media",
136
+ "media": "screen and (max-width: 768px)",
137
+ "rules": [
138
+ // ... nested rules
139
+ ]
140
+ }
141
+ ```
142
+
143
+ ### `keyframes`
144
+
145
+ A `@keyframes` rule.
146
+
147
+ **Properties:**
148
+ - `name`: The keyframes name
149
+ - `vendor` (optional): Vendor prefix (e.g., "-webkit-")
150
+ - `keyframes`: Array of keyframe rules and comments
151
+
152
+ **Example:**
153
+ ```json
154
+ {
155
+ "type": "keyframes",
156
+ "name": "fade",
157
+ "keyframes": [
158
+ {
159
+ "type": "keyframe",
160
+ "values": ["from"],
161
+ "declarations": [
162
+ {
163
+ "type": "declaration",
164
+ "property": "opacity",
165
+ "value": "0"
166
+ }
167
+ ]
168
+ }
169
+ ]
170
+ }
171
+ ```
172
+
173
+ ### `keyframe`
174
+
175
+ A keyframe within a `@keyframes` rule.
176
+
177
+ **Properties:**
178
+ - `values`: Array of keyframe selectors (e.g., `["from"]`, `["to"]`, `["50%"]`)
179
+ - `declarations`: Array of declarations and comments
180
+
181
+ ### `import`
182
+
183
+ An `@import` rule.
184
+
185
+ **Properties:**
186
+ - `import`: The import string (URL or media query)
187
+
188
+ **Example:**
189
+ ```json
190
+ {
191
+ "type": "import",
192
+ "import": "url('styles.css')"
193
+ }
194
+ ```
195
+
196
+ ### `charset`
197
+
198
+ A `@charset` rule.
199
+
200
+ **Properties:**
201
+ - `charset`: The character encoding
202
+
203
+ **Example:**
204
+ ```json
205
+ {
206
+ "type": "charset",
207
+ "charset": "utf-8"
208
+ }
209
+ ```
210
+
211
+ ### `namespace`
212
+
213
+ A `@namespace` rule.
214
+
215
+ **Properties:**
216
+ - `namespace`: The namespace declaration
217
+
218
+ **Example:**
219
+ ```json
220
+ {
221
+ "type": "namespace",
222
+ "namespace": "url(http://www.w3.org/1999/xhtml)"
223
+ }
224
+ ```
225
+
226
+ ### `supports`
227
+
228
+ A `@supports` rule.
229
+
230
+ **Properties:**
231
+ - `supports`: The supports condition
232
+ - `rules`: Array of rules within the supports block
233
+
234
+ **Example:**
235
+ ```json
236
+ {
237
+ "type": "supports",
238
+ "supports": "(display: grid)",
239
+ "rules": [
240
+ // ... nested rules
241
+ ]
242
+ }
243
+ ```
244
+
245
+ ### `document`
246
+
247
+ A `@document` rule.
248
+
249
+ **Properties:**
250
+ - `document`: The document condition
251
+ - `vendor` (optional): Vendor prefix
252
+ - `rules`: Array of rules within the document block
253
+
254
+ ### `page`
255
+
256
+ A `@page` rule.
257
+
258
+ **Properties:**
259
+ - `selectors`: Array of page selectors
260
+ - `declarations`: Array of declarations and comments
261
+
262
+ ### `font-face`
263
+
264
+ A `@font-face` rule.
265
+
266
+ **Properties:**
267
+ - `declarations`: Array of font declarations and comments
268
+
269
+ ### `host`
270
+
271
+ A `:host` rule.
272
+
273
+ **Properties:**
274
+ - `rules`: Array of rules within the host block
275
+
276
+ ### `container`
277
+
278
+ A `@container` rule.
279
+
280
+ **Properties:**
281
+ - `container`: The container query
282
+ - `rules`: Array of rules within the container block
283
+
284
+ ### `layer`
285
+
286
+ A `@layer` rule.
287
+
288
+ **Properties:**
289
+ - `layer`: The layer name
290
+ - `rules` (optional): Array of rules within the layer block
291
+
292
+ ### `custom-media`
293
+
294
+ A `@custom-media` rule.
295
+
296
+ **Properties:**
297
+ - `name`: The custom media query name
298
+ - `media`: The media query definition
299
+
300
+ ### `starting-style`
301
+
302
+ A `@starting-style` rule.
303
+
304
+ **Properties:**
305
+ - `rules`: Array of rules within the starting-style block
306
+
307
+ ## Type Hierarchy
308
+
309
+ The AST nodes are organized in the following hierarchy:
310
+
311
+ - `CssStylesheetAST` - Root node
312
+ - `CssAtRuleAST` - Union of all at-rule and rule nodes
313
+ - `CssAllNodesAST` - Union of all possible node types
314
+
315
+ ## Working with the AST
316
+
317
+ ### Traversing Nodes
318
+
319
+ ```typescript
320
+ import { parse, CssStylesheetAST } from '@adobe/css-tools';
321
+
322
+ const ast: CssStylesheetAST = parse('body { color: red; }');
323
+
324
+ // Access top-level rules
325
+ ast.stylesheet.rules.forEach(rule => {
326
+ if (rule.type === 'rule') {
327
+ console.log('Selectors:', rule.selectors);
328
+ rule.declarations.forEach(decl => {
329
+ if (decl.type === 'declaration') {
330
+ console.log(`${decl.property}: ${decl.value}`);
331
+ }
332
+ });
333
+ }
334
+ });
335
+ ```
336
+
337
+ ### Modifying Nodes
338
+
339
+ ```typescript
340
+ // Add a new declaration
341
+ const newDecl = {
342
+ type: 'declaration' as const,
343
+ property: 'font-size',
344
+ value: '16px'
345
+ };
346
+
347
+ // Find a rule and add the declaration
348
+ ast.stylesheet.rules.forEach(rule => {
349
+ if (rule.type === 'rule' && rule.selectors.includes('body')) {
350
+ rule.declarations.push(newDecl);
351
+ }
352
+ });
353
+ ```
354
+
355
+ ### Error Handling
356
+
357
+ When parsing with the `silent` option, errors are collected in the AST:
358
+
359
+ ```typescript
360
+ const ast = parse('invalid css {', { silent: true });
361
+
362
+ if (ast.stylesheet.parsingErrors) {
363
+ ast.stylesheet.parsingErrors.forEach(error => {
364
+ console.error('Parse error:', error.message);
365
+ });
366
+ }
367
+ ```
368
+
369
+ ## Position Information
370
+
371
+ Position information is available on most nodes and includes:
372
+
373
+ - `start.line` and `start.column`: Beginning of the node
374
+ - `end.line` and `end.column`: End of the node
375
+ - `source`: Source file path (if provided during parsing)
376
+
377
+ This is useful for:
378
+ - Error reporting
379
+ - Source mapping
380
+ - Code analysis tools
381
+ - IDE integration
382
+
383
+ ## Formatting Properties (`preserveFormatting: true`)
384
+
385
+ When parsing with `preserveFormatting: true`, the parser stores additional formatting metadata on AST nodes to support exact round-trip via identity mode. These properties are optional and only present when formatting is preserved.
386
+
387
+ ### Whitespace Nodes
388
+
389
+ `CssWhitespaceAST` nodes are inserted between sibling nodes in all arrays (rules, declarations, keyframes) to preserve the original whitespace and line breaks.
390
+
391
+ ### Raw Properties on Nodes
392
+
393
+ - **`rawPrelude`** (on rules, at-rules with blocks): The exact original text before `{`, preserving whitespace between selector/condition and brace
394
+ - **`rawBetween`** (on declarations): The text between the property name and value, including `:` and any surrounding whitespace (e.g., `": "` or `": "`)
395
+ - **`rawValue`** (on declarations): The untrimmed original value text
396
+ - **`rawSource`** (on statement at-rules: import, charset, namespace, custom-media, layer statement): The exact original text of the entire at-rule
397
+
398
+ ### AST Modification with Identity Mode
399
+
400
+ Because formatting data is stored per-node rather than as a single cached string, you can freely insert, remove, or modify AST nodes and identity mode will reflect the changes:
401
+
402
+ ```typescript
403
+ const ast = parse(css, { preserveFormatting: true });
404
+
405
+ // Insert a new rule — it will be beautified since it has no raw properties
406
+ ast.stylesheet.rules.push({
407
+ type: CssTypes.rule,
408
+ selectors: ['.new'],
409
+ declarations: [{ type: CssTypes.declaration, property: 'color', value: 'blue' }]
410
+ });
411
+
412
+ // Remove a rule — the surrounding whitespace nodes naturally adapt
413
+ ast.stylesheet.rules.splice(1, 1);
414
+
415
+ // Identity mode outputs original formatting for untouched nodes + beautified for new nodes
416
+ stringify(ast, { identity: true });
417
+ ```
@@ -0,0 +1,205 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [5.0.0] - 2026-03.18
9
+
10
+ ### Changed
11
+ - Fork from Adobe's `@adobe/css-tools` library to `@node-projects/css-tools` package
12
+ - Only ESM code in package
13
+
14
+ ### Added
15
+ - Add `preserveFormatting` parser option to insert whitespace AST nodes and store raw formatting properties for identity round-trip
16
+ - Add `CssTypes.whitespace` node type (`CssWhitespaceAST`) to represent whitespace between sibling nodes
17
+ - Add `identity` compiler option to reproduce original CSS exactly as parsed (round-trip fidelity), with support for AST modifications
18
+ - Add `removeEmptyRules` compiler option to strip rules with empty declaration blocks
19
+ - Add raw formatting properties: `rawPrelude`, `rawBetween`, `rawValue`, `rawSource` on relevant AST nodes
20
+ - Export `CompilerOptions`, `ParseOptions`, and `CssWhitespaceAST` types from the public API
21
+
22
+ ## [4.4.4] - 2025-07-22
23
+
24
+ ### Changed
25
+ - Switch from yarn to npm for package management
26
+ - Switch from eslint to biome for code formatting and linting
27
+ - Reformat codebase to comply with biome recommendations
28
+ - Switch from webpack to rollup for bundling
29
+
30
+ ### Fixed
31
+ - Fix module exports to ensure proper compatibility with bundlers
32
+ - Add validation check to prevent future export issues
33
+
34
+ ## [4.4.3] - 2025-05-15
35
+
36
+ ### Security
37
+ - Fix polynomial regular expression vulnerability on uncontrolled data
38
+ - Refactor code to enable GitHub security static analysis
39
+
40
+ ### Performance
41
+ - Improve parsing performance with minor optimizations
42
+ - Replace regex patterns with string search (indexOf-based) for better performance
43
+
44
+ ### Added
45
+ - Add new utility functions with comprehensive unit tests
46
+ - Add improved formatting for CSS Grid template areas (#283 by @jogibear9988)
47
+
48
+ ### Fixed
49
+ - Fix TypeScript error with ConstructorParameters in Parcel bundler (#444)
50
+
51
+ ## [4.4.2] - 2025-02-12
52
+
53
+ ### Fixed
54
+ - Fix regular expression for parsing quoted values in parentheses
55
+
56
+ ## [4.4.0] - 2024-06-05
57
+
58
+ ### Added
59
+ - Add support for CSS `@starting-style` at-rule (#319)
60
+
61
+ ## [4.3.3] - 2024-01-24
62
+
63
+ ### Changed
64
+ - Update package export configuration (#271)
65
+
66
+ ## [4.3.2] - 2023-11-28
67
+
68
+ ### Security
69
+ - Fix ReDoS vulnerability with crafted CSS strings - CVE-2023-48631
70
+
71
+ ### Fixed
72
+ - Fix parsing issues with `:is()` and nested `:nth-child()` selectors (#211)
73
+
74
+ ## [4.3.1] - 2023-03-14
75
+
76
+ ### Security
77
+ - Fix ReDoS vulnerability with crafted CSS strings - CVE-2023-26364
78
+
79
+ ## [4.3.0] - 2023-03-07
80
+
81
+ ### Changed
82
+ - Update build toolchain and dependencies
83
+ - Update package exports configuration and file structure
84
+
85
+ ## [4.2.0] - 2023-02-21
86
+
87
+ ### Added
88
+ - Add support for CSS `@container` at-rule
89
+ - Add support for CSS `@layer` at-rule
90
+
91
+ ## [4.1.0] - 2023-01-25
92
+
93
+ ### Added
94
+ - Add support for ES Modules (ESM)
95
+
96
+ ## [4.0.2] - 2023-01-12
97
+
98
+ ### Fixed
99
+ - Fix `@import` parsing when URL contains semicolons (#71)
100
+ - Fix regression in selector parsing for attribute selectors (#77)
101
+
102
+ ## [4.0.1] - 2022-08-03
103
+
104
+ ### Fixed
105
+ - Fix `globalThis` configuration for webpack to enable UMD module usage in Node.js environments
106
+
107
+ ## [4.0.0] - 2022-06-09
108
+
109
+ ### Changed
110
+ - Fork from original css library to Adobe's `@adobe/css-tools` package
111
+ - Convert codebase from JavaScript to TypeScript
112
+ - Improve parsing performance by approximately 25%
113
+ - Update all dependencies to latest versions
114
+ - Remove source map support
115
+
116
+ ---
117
+
118
+ ## Legacy Versions (Pre-Adobe Fork)
119
+
120
+ ## [3.0.0] - 2020-07-01
121
+
122
+ ### Changed
123
+ - Bump major version due to major dependency updates and Node.js version requirement changes
124
+
125
+ ## [2.2.1] - 2015-06-17
126
+
127
+ ### Fixed
128
+ - Fix parsing of escaped quotes in quoted strings
129
+
130
+ ## [2.2.0] - 2015-02-18
131
+
132
+ ### Added
133
+ - Add `parsingErrors` property to list errors when parsing with `silent: true`
134
+ - Accept EOL characters and all whitespace characters in at-rules such as `@media`
135
+
136
+ ## [2.1.0] - 2014-08-05
137
+
138
+ ### Added
139
+ - Add `inputSourcemaps` option to disable input source map processing
140
+ - Add `sourcemap: 'generator'` option to return the `SourceMapGenerator` object
141
+ - Use `inherits` package for inheritance (fixes browser compatibility issues)
142
+
143
+ ### Changed
144
+ - Change error message format and add `.reason` property to error objects
145
+
146
+ ## [2.0.0] - 2014-06-18
147
+
148
+ ### Added
149
+ - Add non-enumerable parent reference to each AST node
150
+ - Add support for `@custom-media`, `@host`, and `@font-face` at-rules
151
+ - Allow commas inside selector functions
152
+ - Allow empty property values
153
+ - Add `node.position.content` property
154
+ - Integrate css-parse and css-stringify libraries
155
+ - Apply original source maps from source files
156
+
157
+ ### Changed
158
+ - Change default `options.position` value to `true`
159
+ - Remove comments from properties and values
160
+
161
+ ### Removed
162
+ - Drop Component(1) support
163
+
164
+ ### Fixed
165
+ - Fix assertion errors when selectors are missing
166
+
167
+ ## [1.6.1] - 2014-01-02
168
+
169
+ ### Fixed
170
+ - Fix component.json configuration
171
+
172
+ ## [1.6.0] - 2013-12-21
173
+
174
+ ### Changed
175
+ - Update dependencies
176
+
177
+ ## [1.5.0] - 2013-12-03
178
+
179
+ ### Changed
180
+ - Update dependencies
181
+
182
+ ## [1.1.0] - 2013-04-04
183
+
184
+ ### Changed
185
+ - Update dependencies
186
+
187
+ ## [1.0.7] - 2012-11-21
188
+
189
+ ### Fixed
190
+ - Fix component.json configuration
191
+
192
+ ## [1.0.4] - 2012-11-15
193
+
194
+ ### Changed
195
+ - Update css-stringify dependency
196
+
197
+ ## [1.0.3] - 2012-09-01
198
+
199
+ ### Added
200
+ - Add Component support
201
+
202
+ ## [0.0.1] - 2010-01-03
203
+
204
+ ### Added
205
+ - Initial release