1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", {
|
3 | value: true
|
4 | });
|
5 | Object.defineProperty(exports,
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | "default", {
|
12 | enumerable: true,
|
13 | get: ()=>isValidArbitraryValue
|
14 | });
|
15 | let matchingBrackets = new Map([
|
16 | [
|
17 | "{",
|
18 | "}"
|
19 | ],
|
20 | [
|
21 | "[",
|
22 | "]"
|
23 | ],
|
24 | [
|
25 | "(",
|
26 | ")"
|
27 | ]
|
28 | ]);
|
29 | let inverseMatchingBrackets = new Map(Array.from(matchingBrackets.entries()).map(([k, v])=>[
|
30 | v,
|
31 | k
|
32 | ]));
|
33 | let quotes = new Set([
|
34 | '"',
|
35 | "'",
|
36 | "`"
|
37 | ]);
|
38 | function isValidArbitraryValue(value) {
|
39 | let stack = [];
|
40 | let inQuotes = false;
|
41 | for(let i = 0; i < value.length; i++){
|
42 | let char = value[i];
|
43 | if (char === ":" && !inQuotes && stack.length === 0) {
|
44 | return false;
|
45 | }
|
46 |
|
47 | if (quotes.has(char) && value[i - 1] !== "\\") {
|
48 | inQuotes = !inQuotes;
|
49 | }
|
50 | if (inQuotes) continue;
|
51 | if (value[i - 1] === "\\") continue;
|
52 | if (matchingBrackets.has(char)) {
|
53 | stack.push(char);
|
54 | } else if (inverseMatchingBrackets.has(char)) {
|
55 | let inverse = inverseMatchingBrackets.get(char);
|
56 |
|
57 | if (stack.length <= 0) {
|
58 | return false;
|
59 | }
|
60 |
|
61 | if (stack.pop() !== inverse) {
|
62 | return false;
|
63 | }
|
64 | }
|
65 | }
|
66 |
|
67 | if (stack.length > 0) {
|
68 | return false;
|
69 | }
|
70 |
|
71 | return true;
|
72 | }
|