create-microact-app 1.0.1
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/index.js +95 -0
- package/package.json +21 -0
- package/templates/vanilla/.github/workflows/deploy.yml +38 -0
- package/templates/vanilla/index.html +13 -0
- package/templates/vanilla/node_modules/.package-lock.json +207 -0
- package/templates/vanilla/node_modules/@esbuild/darwin-x64/README.md +3 -0
- package/templates/vanilla/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
- package/templates/vanilla/node_modules/@esbuild/darwin-x64/package.json +17 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/README.md +154 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js +1749 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js.map +1 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js +1743 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js.map +1 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js +2 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js.map +1 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.html +13 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.js +63 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/package.json +38 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/rollup.config.cjs +30 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Component.js +831 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/DOMUpdater.js +320 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/EventBus.js +123 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Router.js +253 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/UpdateScheduler.js +218 -0
- package/templates/vanilla/node_modules/@monygroupcorp/microact/src/index.js +6 -0
- package/templates/vanilla/node_modules/esbuild/LICENSE.md +21 -0
- package/templates/vanilla/node_modules/esbuild/README.md +3 -0
- package/templates/vanilla/node_modules/esbuild/bin/esbuild +0 -0
- package/templates/vanilla/node_modules/esbuild/install.js +287 -0
- package/templates/vanilla/node_modules/esbuild/lib/main.d.ts +660 -0
- package/templates/vanilla/node_modules/esbuild/lib/main.js +2393 -0
- package/templates/vanilla/node_modules/esbuild/package.json +42 -0
- package/templates/vanilla/node_modules/nanoid/LICENSE +20 -0
- package/templates/vanilla/node_modules/nanoid/README.md +39 -0
- package/templates/vanilla/node_modules/nanoid/async/index.browser.cjs +69 -0
- package/templates/vanilla/node_modules/nanoid/async/index.browser.js +34 -0
- package/templates/vanilla/node_modules/nanoid/async/index.cjs +71 -0
- package/templates/vanilla/node_modules/nanoid/async/index.d.ts +56 -0
- package/templates/vanilla/node_modules/nanoid/async/index.js +35 -0
- package/templates/vanilla/node_modules/nanoid/async/index.native.js +26 -0
- package/templates/vanilla/node_modules/nanoid/async/package.json +12 -0
- package/templates/vanilla/node_modules/nanoid/bin/nanoid.cjs +55 -0
- package/templates/vanilla/node_modules/nanoid/index.browser.cjs +72 -0
- package/templates/vanilla/node_modules/nanoid/index.browser.js +34 -0
- package/templates/vanilla/node_modules/nanoid/index.cjs +85 -0
- package/templates/vanilla/node_modules/nanoid/index.d.cts +91 -0
- package/templates/vanilla/node_modules/nanoid/index.d.ts +91 -0
- package/templates/vanilla/node_modules/nanoid/index.js +45 -0
- package/templates/vanilla/node_modules/nanoid/nanoid.js +1 -0
- package/templates/vanilla/node_modules/nanoid/non-secure/index.cjs +34 -0
- package/templates/vanilla/node_modules/nanoid/non-secure/index.d.ts +33 -0
- package/templates/vanilla/node_modules/nanoid/non-secure/index.js +21 -0
- package/templates/vanilla/node_modules/nanoid/non-secure/package.json +6 -0
- package/templates/vanilla/node_modules/nanoid/package.json +89 -0
- package/templates/vanilla/node_modules/nanoid/url-alphabet/index.cjs +7 -0
- package/templates/vanilla/node_modules/nanoid/url-alphabet/index.js +3 -0
- package/templates/vanilla/node_modules/nanoid/url-alphabet/package.json +6 -0
- package/templates/vanilla/node_modules/picocolors/LICENSE +15 -0
- package/templates/vanilla/node_modules/picocolors/README.md +21 -0
- package/templates/vanilla/node_modules/picocolors/package.json +25 -0
- package/templates/vanilla/node_modules/picocolors/picocolors.browser.js +4 -0
- package/templates/vanilla/node_modules/picocolors/picocolors.d.ts +5 -0
- package/templates/vanilla/node_modules/picocolors/picocolors.js +75 -0
- package/templates/vanilla/node_modules/picocolors/types.d.ts +51 -0
- package/templates/vanilla/node_modules/postcss/LICENSE +20 -0
- package/templates/vanilla/node_modules/postcss/README.md +29 -0
- package/templates/vanilla/node_modules/postcss/lib/at-rule.d.ts +140 -0
- package/templates/vanilla/node_modules/postcss/lib/at-rule.js +25 -0
- package/templates/vanilla/node_modules/postcss/lib/comment.d.ts +68 -0
- package/templates/vanilla/node_modules/postcss/lib/comment.js +13 -0
- package/templates/vanilla/node_modules/postcss/lib/container.d.ts +483 -0
- package/templates/vanilla/node_modules/postcss/lib/container.js +447 -0
- package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts +248 -0
- package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.js +133 -0
- package/templates/vanilla/node_modules/postcss/lib/declaration.d.ts +151 -0
- package/templates/vanilla/node_modules/postcss/lib/declaration.js +24 -0
- package/templates/vanilla/node_modules/postcss/lib/document.d.ts +69 -0
- package/templates/vanilla/node_modules/postcss/lib/document.js +33 -0
- package/templates/vanilla/node_modules/postcss/lib/fromJSON.d.ts +9 -0
- package/templates/vanilla/node_modules/postcss/lib/fromJSON.js +54 -0
- package/templates/vanilla/node_modules/postcss/lib/input.d.ts +227 -0
- package/templates/vanilla/node_modules/postcss/lib/input.js +265 -0
- package/templates/vanilla/node_modules/postcss/lib/lazy-result.d.ts +190 -0
- package/templates/vanilla/node_modules/postcss/lib/lazy-result.js +550 -0
- package/templates/vanilla/node_modules/postcss/lib/list.d.ts +60 -0
- package/templates/vanilla/node_modules/postcss/lib/list.js +58 -0
- package/templates/vanilla/node_modules/postcss/lib/map-generator.js +368 -0
- package/templates/vanilla/node_modules/postcss/lib/no-work-result.d.ts +46 -0
- package/templates/vanilla/node_modules/postcss/lib/no-work-result.js +138 -0
- package/templates/vanilla/node_modules/postcss/lib/node.d.ts +556 -0
- package/templates/vanilla/node_modules/postcss/lib/node.js +449 -0
- package/templates/vanilla/node_modules/postcss/lib/parse.d.ts +9 -0
- package/templates/vanilla/node_modules/postcss/lib/parse.js +42 -0
- package/templates/vanilla/node_modules/postcss/lib/parser.js +611 -0
- package/templates/vanilla/node_modules/postcss/lib/postcss.d.mts +69 -0
- package/templates/vanilla/node_modules/postcss/lib/postcss.d.ts +458 -0
- package/templates/vanilla/node_modules/postcss/lib/postcss.js +101 -0
- package/templates/vanilla/node_modules/postcss/lib/postcss.mjs +30 -0
- package/templates/vanilla/node_modules/postcss/lib/previous-map.d.ts +81 -0
- package/templates/vanilla/node_modules/postcss/lib/previous-map.js +144 -0
- package/templates/vanilla/node_modules/postcss/lib/processor.d.ts +115 -0
- package/templates/vanilla/node_modules/postcss/lib/processor.js +67 -0
- package/templates/vanilla/node_modules/postcss/lib/result.d.ts +205 -0
- package/templates/vanilla/node_modules/postcss/lib/result.js +42 -0
- package/templates/vanilla/node_modules/postcss/lib/root.d.ts +87 -0
- package/templates/vanilla/node_modules/postcss/lib/root.js +61 -0
- package/templates/vanilla/node_modules/postcss/lib/rule.d.ts +126 -0
- package/templates/vanilla/node_modules/postcss/lib/rule.js +27 -0
- package/templates/vanilla/node_modules/postcss/lib/stringifier.d.ts +46 -0
- package/templates/vanilla/node_modules/postcss/lib/stringifier.js +353 -0
- package/templates/vanilla/node_modules/postcss/lib/stringify.d.ts +9 -0
- package/templates/vanilla/node_modules/postcss/lib/stringify.js +11 -0
- package/templates/vanilla/node_modules/postcss/lib/symbols.js +5 -0
- package/templates/vanilla/node_modules/postcss/lib/terminal-highlight.js +70 -0
- package/templates/vanilla/node_modules/postcss/lib/tokenize.js +266 -0
- package/templates/vanilla/node_modules/postcss/lib/warn-once.js +13 -0
- package/templates/vanilla/node_modules/postcss/lib/warning.d.ts +147 -0
- package/templates/vanilla/node_modules/postcss/lib/warning.js +37 -0
- package/templates/vanilla/node_modules/postcss/package.json +88 -0
- package/templates/vanilla/node_modules/rollup/LICENSE.md +695 -0
- package/templates/vanilla/node_modules/rollup/README.md +125 -0
- package/templates/vanilla/node_modules/rollup/dist/bin/rollup +1715 -0
- package/templates/vanilla/node_modules/rollup/dist/es/getLogFilter.js +64 -0
- package/templates/vanilla/node_modules/rollup/dist/es/package.json +1 -0
- package/templates/vanilla/node_modules/rollup/dist/es/rollup.js +17 -0
- package/templates/vanilla/node_modules/rollup/dist/es/shared/node-entry.js +27273 -0
- package/templates/vanilla/node_modules/rollup/dist/es/shared/watch.js +4857 -0
- package/templates/vanilla/node_modules/rollup/dist/getLogFilter.d.ts +5 -0
- package/templates/vanilla/node_modules/rollup/dist/getLogFilter.js +69 -0
- package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.d.ts +20 -0
- package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.js +29 -0
- package/templates/vanilla/node_modules/rollup/dist/rollup.d.ts +1012 -0
- package/templates/vanilla/node_modules/rollup/dist/rollup.js +31 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/fsevents-importer.js +37 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/index.js +4571 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/loadConfigFile.js +546 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/rollup.js +27351 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/watch-cli.js +561 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/watch-proxy.js +87 -0
- package/templates/vanilla/node_modules/rollup/dist/shared/watch.js +316 -0
- package/templates/vanilla/node_modules/rollup/package.json +181 -0
- package/templates/vanilla/node_modules/source-map-js/LICENSE +28 -0
- package/templates/vanilla/node_modules/source-map-js/README.md +765 -0
- package/templates/vanilla/node_modules/source-map-js/lib/array-set.js +121 -0
- package/templates/vanilla/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/templates/vanilla/node_modules/source-map-js/lib/base64.js +67 -0
- package/templates/vanilla/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/templates/vanilla/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/templates/vanilla/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
- package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/templates/vanilla/node_modules/source-map-js/lib/source-node.d.ts +1 -0
- package/templates/vanilla/node_modules/source-map-js/lib/source-node.js +413 -0
- package/templates/vanilla/node_modules/source-map-js/lib/util.js +594 -0
- package/templates/vanilla/node_modules/source-map-js/package.json +71 -0
- package/templates/vanilla/node_modules/source-map-js/source-map.d.ts +104 -0
- package/templates/vanilla/node_modules/source-map-js/source-map.js +8 -0
- package/templates/vanilla/node_modules/vite/LICENSE.md +3396 -0
- package/templates/vanilla/node_modules/vite/README.md +20 -0
- package/templates/vanilla/node_modules/vite/bin/openChrome.applescript +95 -0
- package/templates/vanilla/node_modules/vite/bin/vite.js +61 -0
- package/templates/vanilla/node_modules/vite/client.d.ts +281 -0
- package/templates/vanilla/node_modules/vite/dist/client/client.mjs +725 -0
- package/templates/vanilla/node_modules/vite/dist/client/client.mjs.map +1 -0
- package/templates/vanilla/node_modules/vite/dist/client/env.mjs +30 -0
- package/templates/vanilla/node_modules/vite/dist/client/env.mjs.map +1 -0
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-7ec6f216.js +914 -0
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-827b23df.js +66713 -0
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-c423598f.js +561 -0
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js +7930 -0
- package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f1e8587f.js +7646 -0
- package/templates/vanilla/node_modules/vite/dist/node/cli.js +929 -0
- package/templates/vanilla/node_modules/vite/dist/node/constants.js +130 -0
- package/templates/vanilla/node_modules/vite/dist/node/index.d.ts +3548 -0
- package/templates/vanilla/node_modules/vite/dist/node/index.js +158 -0
- package/templates/vanilla/node_modules/vite/dist/node-cjs/publicUtils.cjs +4555 -0
- package/templates/vanilla/node_modules/vite/index.cjs +34 -0
- package/templates/vanilla/node_modules/vite/package.json +173 -0
- package/templates/vanilla/node_modules/vite/types/customEvent.d.ts +35 -0
- package/templates/vanilla/node_modules/vite/types/hmrPayload.d.ts +61 -0
- package/templates/vanilla/node_modules/vite/types/hot.d.ts +32 -0
- package/templates/vanilla/node_modules/vite/types/importGlob.d.ts +97 -0
- package/templates/vanilla/node_modules/vite/types/importMeta.d.ts +26 -0
- package/templates/vanilla/node_modules/vite/types/metadata.d.ts +10 -0
- package/templates/vanilla/node_modules/vite/types/package.json +4 -0
- package/templates/vanilla/package-lock.json +589 -0
- package/templates/vanilla/package.json +17 -0
- package/templates/vanilla/src/components/App.js +60 -0
- package/templates/vanilla/src/components/Card.js +21 -0
- package/templates/vanilla/src/components/Hero.js +15 -0
- package/templates/vanilla/src/components/InteractiveDemo.js +59 -0
- package/templates/vanilla/src/main.js +9 -0
- package/templates/vanilla/src/style/main.css +172 -0
- package/templates/vanilla/vite.config.js +8 -0
- package/templates/web3/.env.example +15 -0
- package/templates/web3/.github/workflows/deploy.yml +38 -0
- package/templates/web3/README.md +33 -0
- package/templates/web3/contracts/foundry.toml +11 -0
- package/templates/web3/contracts/script/Deploy.s.sol +13 -0
- package/templates/web3/contracts/src/Counter.sol +21 -0
- package/templates/web3/index.html +13 -0
- package/templates/web3/package.json +25 -0
- package/templates/web3/scripts/chain-start.mjs +305 -0
- package/templates/web3/scripts/chain-stop.mjs +34 -0
- package/templates/web3/scripts/deploy.mjs +155 -0
- package/templates/web3/scripts/setup.mjs +42 -0
- package/templates/web3/src/components/App.js +49 -0
- package/templates/web3/src/components/CounterCard.js +111 -0
- package/templates/web3/src/main.js +54 -0
- package/templates/web3/src/style/main.css +345 -0
- package/templates/web3/vite.config.js +29 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
let Comment = require('./comment')
|
|
4
|
+
let Declaration = require('./declaration')
|
|
5
|
+
let Node = require('./node')
|
|
6
|
+
let { isClean, my } = require('./symbols')
|
|
7
|
+
|
|
8
|
+
let AtRule, parse, Root, Rule
|
|
9
|
+
|
|
10
|
+
function cleanSource(nodes) {
|
|
11
|
+
return nodes.map(i => {
|
|
12
|
+
if (i.nodes) i.nodes = cleanSource(i.nodes)
|
|
13
|
+
delete i.source
|
|
14
|
+
return i
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function markTreeDirty(node) {
|
|
19
|
+
node[isClean] = false
|
|
20
|
+
if (node.proxyOf.nodes) {
|
|
21
|
+
for (let i of node.proxyOf.nodes) {
|
|
22
|
+
markTreeDirty(i)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
class Container extends Node {
|
|
28
|
+
get first() {
|
|
29
|
+
if (!this.proxyOf.nodes) return undefined
|
|
30
|
+
return this.proxyOf.nodes[0]
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
get last() {
|
|
34
|
+
if (!this.proxyOf.nodes) return undefined
|
|
35
|
+
return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
append(...children) {
|
|
39
|
+
for (let child of children) {
|
|
40
|
+
let nodes = this.normalize(child, this.last)
|
|
41
|
+
for (let node of nodes) this.proxyOf.nodes.push(node)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
this.markDirty()
|
|
45
|
+
|
|
46
|
+
return this
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
cleanRaws(keepBetween) {
|
|
50
|
+
super.cleanRaws(keepBetween)
|
|
51
|
+
if (this.nodes) {
|
|
52
|
+
for (let node of this.nodes) node.cleanRaws(keepBetween)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
each(callback) {
|
|
57
|
+
if (!this.proxyOf.nodes) return undefined
|
|
58
|
+
let iterator = this.getIterator()
|
|
59
|
+
|
|
60
|
+
let index, result
|
|
61
|
+
while (this.indexes[iterator] < this.proxyOf.nodes.length) {
|
|
62
|
+
index = this.indexes[iterator]
|
|
63
|
+
result = callback(this.proxyOf.nodes[index], index)
|
|
64
|
+
if (result === false) break
|
|
65
|
+
|
|
66
|
+
this.indexes[iterator] += 1
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
delete this.indexes[iterator]
|
|
70
|
+
return result
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
every(condition) {
|
|
74
|
+
return this.nodes.every(condition)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
getIterator() {
|
|
78
|
+
if (!this.lastEach) this.lastEach = 0
|
|
79
|
+
if (!this.indexes) this.indexes = {}
|
|
80
|
+
|
|
81
|
+
this.lastEach += 1
|
|
82
|
+
let iterator = this.lastEach
|
|
83
|
+
this.indexes[iterator] = 0
|
|
84
|
+
|
|
85
|
+
return iterator
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
getProxyProcessor() {
|
|
89
|
+
return {
|
|
90
|
+
get(node, prop) {
|
|
91
|
+
if (prop === 'proxyOf') {
|
|
92
|
+
return node
|
|
93
|
+
} else if (!node[prop]) {
|
|
94
|
+
return node[prop]
|
|
95
|
+
} else if (
|
|
96
|
+
prop === 'each' ||
|
|
97
|
+
(typeof prop === 'string' && prop.startsWith('walk'))
|
|
98
|
+
) {
|
|
99
|
+
return (...args) => {
|
|
100
|
+
return node[prop](
|
|
101
|
+
...args.map(i => {
|
|
102
|
+
if (typeof i === 'function') {
|
|
103
|
+
return (child, index) => i(child.toProxy(), index)
|
|
104
|
+
} else {
|
|
105
|
+
return i
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
} else if (prop === 'every' || prop === 'some') {
|
|
111
|
+
return cb => {
|
|
112
|
+
return node[prop]((child, ...other) =>
|
|
113
|
+
cb(child.toProxy(), ...other)
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
} else if (prop === 'root') {
|
|
117
|
+
return () => node.root().toProxy()
|
|
118
|
+
} else if (prop === 'nodes') {
|
|
119
|
+
return node.nodes.map(i => i.toProxy())
|
|
120
|
+
} else if (prop === 'first' || prop === 'last') {
|
|
121
|
+
return node[prop].toProxy()
|
|
122
|
+
} else {
|
|
123
|
+
return node[prop]
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
set(node, prop, value) {
|
|
128
|
+
if (node[prop] === value) return true
|
|
129
|
+
node[prop] = value
|
|
130
|
+
if (prop === 'name' || prop === 'params' || prop === 'selector') {
|
|
131
|
+
node.markDirty()
|
|
132
|
+
}
|
|
133
|
+
return true
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
index(child) {
|
|
139
|
+
if (typeof child === 'number') return child
|
|
140
|
+
if (child.proxyOf) child = child.proxyOf
|
|
141
|
+
return this.proxyOf.nodes.indexOf(child)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
insertAfter(exist, add) {
|
|
145
|
+
let existIndex = this.index(exist)
|
|
146
|
+
let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()
|
|
147
|
+
existIndex = this.index(exist)
|
|
148
|
+
for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)
|
|
149
|
+
|
|
150
|
+
let index
|
|
151
|
+
for (let id in this.indexes) {
|
|
152
|
+
index = this.indexes[id]
|
|
153
|
+
if (existIndex < index) {
|
|
154
|
+
this.indexes[id] = index + nodes.length
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
this.markDirty()
|
|
159
|
+
|
|
160
|
+
return this
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
insertBefore(exist, add) {
|
|
164
|
+
let existIndex = this.index(exist)
|
|
165
|
+
let type = existIndex === 0 ? 'prepend' : false
|
|
166
|
+
let nodes = this.normalize(
|
|
167
|
+
add,
|
|
168
|
+
this.proxyOf.nodes[existIndex],
|
|
169
|
+
type
|
|
170
|
+
).reverse()
|
|
171
|
+
existIndex = this.index(exist)
|
|
172
|
+
for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)
|
|
173
|
+
|
|
174
|
+
let index
|
|
175
|
+
for (let id in this.indexes) {
|
|
176
|
+
index = this.indexes[id]
|
|
177
|
+
if (existIndex <= index) {
|
|
178
|
+
this.indexes[id] = index + nodes.length
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
this.markDirty()
|
|
183
|
+
|
|
184
|
+
return this
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
normalize(nodes, sample) {
|
|
188
|
+
if (typeof nodes === 'string') {
|
|
189
|
+
nodes = cleanSource(parse(nodes).nodes)
|
|
190
|
+
} else if (typeof nodes === 'undefined') {
|
|
191
|
+
nodes = []
|
|
192
|
+
} else if (Array.isArray(nodes)) {
|
|
193
|
+
nodes = nodes.slice(0)
|
|
194
|
+
for (let i of nodes) {
|
|
195
|
+
if (i.parent) i.parent.removeChild(i, 'ignore')
|
|
196
|
+
}
|
|
197
|
+
} else if (nodes.type === 'root' && this.type !== 'document') {
|
|
198
|
+
nodes = nodes.nodes.slice(0)
|
|
199
|
+
for (let i of nodes) {
|
|
200
|
+
if (i.parent) i.parent.removeChild(i, 'ignore')
|
|
201
|
+
}
|
|
202
|
+
} else if (nodes.type) {
|
|
203
|
+
nodes = [nodes]
|
|
204
|
+
} else if (nodes.prop) {
|
|
205
|
+
if (typeof nodes.value === 'undefined') {
|
|
206
|
+
throw new Error('Value field is missed in node creation')
|
|
207
|
+
} else if (typeof nodes.value !== 'string') {
|
|
208
|
+
nodes.value = String(nodes.value)
|
|
209
|
+
}
|
|
210
|
+
nodes = [new Declaration(nodes)]
|
|
211
|
+
} else if (nodes.selector || nodes.selectors) {
|
|
212
|
+
nodes = [new Rule(nodes)]
|
|
213
|
+
} else if (nodes.name) {
|
|
214
|
+
nodes = [new AtRule(nodes)]
|
|
215
|
+
} else if (nodes.text) {
|
|
216
|
+
nodes = [new Comment(nodes)]
|
|
217
|
+
} else {
|
|
218
|
+
throw new Error('Unknown node type in node creation')
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
let processed = nodes.map(i => {
|
|
222
|
+
/* c8 ignore next */
|
|
223
|
+
if (!i[my]) Container.rebuild(i)
|
|
224
|
+
i = i.proxyOf
|
|
225
|
+
if (i.parent) i.parent.removeChild(i)
|
|
226
|
+
if (i[isClean]) markTreeDirty(i)
|
|
227
|
+
|
|
228
|
+
if (!i.raws) i.raws = {}
|
|
229
|
+
if (typeof i.raws.before === 'undefined') {
|
|
230
|
+
if (sample && typeof sample.raws.before !== 'undefined') {
|
|
231
|
+
i.raws.before = sample.raws.before.replace(/\S/g, '')
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
i.parent = this.proxyOf
|
|
235
|
+
return i
|
|
236
|
+
})
|
|
237
|
+
|
|
238
|
+
return processed
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
prepend(...children) {
|
|
242
|
+
children = children.reverse()
|
|
243
|
+
for (let child of children) {
|
|
244
|
+
let nodes = this.normalize(child, this.first, 'prepend').reverse()
|
|
245
|
+
for (let node of nodes) this.proxyOf.nodes.unshift(node)
|
|
246
|
+
for (let id in this.indexes) {
|
|
247
|
+
this.indexes[id] = this.indexes[id] + nodes.length
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
this.markDirty()
|
|
252
|
+
|
|
253
|
+
return this
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
push(child) {
|
|
257
|
+
child.parent = this
|
|
258
|
+
this.proxyOf.nodes.push(child)
|
|
259
|
+
return this
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
removeAll() {
|
|
263
|
+
for (let node of this.proxyOf.nodes) node.parent = undefined
|
|
264
|
+
this.proxyOf.nodes = []
|
|
265
|
+
|
|
266
|
+
this.markDirty()
|
|
267
|
+
|
|
268
|
+
return this
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
removeChild(child) {
|
|
272
|
+
child = this.index(child)
|
|
273
|
+
this.proxyOf.nodes[child].parent = undefined
|
|
274
|
+
this.proxyOf.nodes.splice(child, 1)
|
|
275
|
+
|
|
276
|
+
let index
|
|
277
|
+
for (let id in this.indexes) {
|
|
278
|
+
index = this.indexes[id]
|
|
279
|
+
if (index >= child) {
|
|
280
|
+
this.indexes[id] = index - 1
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
this.markDirty()
|
|
285
|
+
|
|
286
|
+
return this
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
replaceValues(pattern, opts, callback) {
|
|
290
|
+
if (!callback) {
|
|
291
|
+
callback = opts
|
|
292
|
+
opts = {}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
this.walkDecls(decl => {
|
|
296
|
+
if (opts.props && !opts.props.includes(decl.prop)) return
|
|
297
|
+
if (opts.fast && !decl.value.includes(opts.fast)) return
|
|
298
|
+
|
|
299
|
+
decl.value = decl.value.replace(pattern, callback)
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
this.markDirty()
|
|
303
|
+
|
|
304
|
+
return this
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
some(condition) {
|
|
308
|
+
return this.nodes.some(condition)
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
walk(callback) {
|
|
312
|
+
return this.each((child, i) => {
|
|
313
|
+
let result
|
|
314
|
+
try {
|
|
315
|
+
result = callback(child, i)
|
|
316
|
+
} catch (e) {
|
|
317
|
+
throw child.addToError(e)
|
|
318
|
+
}
|
|
319
|
+
if (result !== false && child.walk) {
|
|
320
|
+
result = child.walk(callback)
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return result
|
|
324
|
+
})
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
walkAtRules(name, callback) {
|
|
328
|
+
if (!callback) {
|
|
329
|
+
callback = name
|
|
330
|
+
return this.walk((child, i) => {
|
|
331
|
+
if (child.type === 'atrule') {
|
|
332
|
+
return callback(child, i)
|
|
333
|
+
}
|
|
334
|
+
})
|
|
335
|
+
}
|
|
336
|
+
if (name instanceof RegExp) {
|
|
337
|
+
return this.walk((child, i) => {
|
|
338
|
+
if (child.type === 'atrule' && name.test(child.name)) {
|
|
339
|
+
return callback(child, i)
|
|
340
|
+
}
|
|
341
|
+
})
|
|
342
|
+
}
|
|
343
|
+
return this.walk((child, i) => {
|
|
344
|
+
if (child.type === 'atrule' && child.name === name) {
|
|
345
|
+
return callback(child, i)
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
walkComments(callback) {
|
|
351
|
+
return this.walk((child, i) => {
|
|
352
|
+
if (child.type === 'comment') {
|
|
353
|
+
return callback(child, i)
|
|
354
|
+
}
|
|
355
|
+
})
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
walkDecls(prop, callback) {
|
|
359
|
+
if (!callback) {
|
|
360
|
+
callback = prop
|
|
361
|
+
return this.walk((child, i) => {
|
|
362
|
+
if (child.type === 'decl') {
|
|
363
|
+
return callback(child, i)
|
|
364
|
+
}
|
|
365
|
+
})
|
|
366
|
+
}
|
|
367
|
+
if (prop instanceof RegExp) {
|
|
368
|
+
return this.walk((child, i) => {
|
|
369
|
+
if (child.type === 'decl' && prop.test(child.prop)) {
|
|
370
|
+
return callback(child, i)
|
|
371
|
+
}
|
|
372
|
+
})
|
|
373
|
+
}
|
|
374
|
+
return this.walk((child, i) => {
|
|
375
|
+
if (child.type === 'decl' && child.prop === prop) {
|
|
376
|
+
return callback(child, i)
|
|
377
|
+
}
|
|
378
|
+
})
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
walkRules(selector, callback) {
|
|
382
|
+
if (!callback) {
|
|
383
|
+
callback = selector
|
|
384
|
+
|
|
385
|
+
return this.walk((child, i) => {
|
|
386
|
+
if (child.type === 'rule') {
|
|
387
|
+
return callback(child, i)
|
|
388
|
+
}
|
|
389
|
+
})
|
|
390
|
+
}
|
|
391
|
+
if (selector instanceof RegExp) {
|
|
392
|
+
return this.walk((child, i) => {
|
|
393
|
+
if (child.type === 'rule' && selector.test(child.selector)) {
|
|
394
|
+
return callback(child, i)
|
|
395
|
+
}
|
|
396
|
+
})
|
|
397
|
+
}
|
|
398
|
+
return this.walk((child, i) => {
|
|
399
|
+
if (child.type === 'rule' && child.selector === selector) {
|
|
400
|
+
return callback(child, i)
|
|
401
|
+
}
|
|
402
|
+
})
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
Container.registerParse = dependant => {
|
|
407
|
+
parse = dependant
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
Container.registerRule = dependant => {
|
|
411
|
+
Rule = dependant
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
Container.registerAtRule = dependant => {
|
|
415
|
+
AtRule = dependant
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
Container.registerRoot = dependant => {
|
|
419
|
+
Root = dependant
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
module.exports = Container
|
|
423
|
+
Container.default = Container
|
|
424
|
+
|
|
425
|
+
/* c8 ignore start */
|
|
426
|
+
Container.rebuild = node => {
|
|
427
|
+
if (node.type === 'atrule') {
|
|
428
|
+
Object.setPrototypeOf(node, AtRule.prototype)
|
|
429
|
+
} else if (node.type === 'rule') {
|
|
430
|
+
Object.setPrototypeOf(node, Rule.prototype)
|
|
431
|
+
} else if (node.type === 'decl') {
|
|
432
|
+
Object.setPrototypeOf(node, Declaration.prototype)
|
|
433
|
+
} else if (node.type === 'comment') {
|
|
434
|
+
Object.setPrototypeOf(node, Comment.prototype)
|
|
435
|
+
} else if (node.type === 'root') {
|
|
436
|
+
Object.setPrototypeOf(node, Root.prototype)
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
node[my] = true
|
|
440
|
+
|
|
441
|
+
if (node.nodes) {
|
|
442
|
+
node.nodes.forEach(child => {
|
|
443
|
+
Container.rebuild(child)
|
|
444
|
+
})
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
/* c8 ignore stop */
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { FilePosition } from './input.js'
|
|
2
|
+
|
|
3
|
+
declare namespace CssSyntaxError {
|
|
4
|
+
/**
|
|
5
|
+
* A position that is part of a range.
|
|
6
|
+
*/
|
|
7
|
+
export interface RangePosition {
|
|
8
|
+
/**
|
|
9
|
+
* The column number in the input.
|
|
10
|
+
*/
|
|
11
|
+
column: number
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The line number in the input.
|
|
15
|
+
*/
|
|
16
|
+
line: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
20
|
+
export { CssSyntaxError_ as default }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The CSS parser throws this error for broken CSS.
|
|
25
|
+
*
|
|
26
|
+
* Custom parsers can throw this error for broken custom syntax using
|
|
27
|
+
* the `Node#error` method.
|
|
28
|
+
*
|
|
29
|
+
* PostCSS will use the input source map to detect the original error location.
|
|
30
|
+
* If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,
|
|
31
|
+
* PostCSS will show the original position in the Sass file.
|
|
32
|
+
*
|
|
33
|
+
* If you need the position in the PostCSS input
|
|
34
|
+
* (e.g., to debug the previous compiler), use `error.input.file`.
|
|
35
|
+
*
|
|
36
|
+
* ```js
|
|
37
|
+
* // Raising error from plugin
|
|
38
|
+
* throw node.error('Unknown variable', { plugin: 'postcss-vars' })
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ```js
|
|
42
|
+
* // Catching and checking syntax error
|
|
43
|
+
* try {
|
|
44
|
+
* postcss.parse('a{')
|
|
45
|
+
* } catch (error) {
|
|
46
|
+
* if (error.name === 'CssSyntaxError') {
|
|
47
|
+
* error //=> CssSyntaxError
|
|
48
|
+
* }
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare class CssSyntaxError_ extends Error {
|
|
53
|
+
/**
|
|
54
|
+
* Source column of the error.
|
|
55
|
+
*
|
|
56
|
+
* ```js
|
|
57
|
+
* error.column //=> 1
|
|
58
|
+
* error.input.column //=> 4
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* PostCSS will use the input source map to detect the original location.
|
|
62
|
+
* If you need the position in the PostCSS input, use `error.input.column`.
|
|
63
|
+
*/
|
|
64
|
+
column?: number
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Source column of the error's end, exclusive. Provided if the error pertains
|
|
68
|
+
* to a range.
|
|
69
|
+
*
|
|
70
|
+
* ```js
|
|
71
|
+
* error.endColumn //=> 1
|
|
72
|
+
* error.input.endColumn //=> 4
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* PostCSS will use the input source map to detect the original location.
|
|
76
|
+
* If you need the position in the PostCSS input, use `error.input.endColumn`.
|
|
77
|
+
*/
|
|
78
|
+
endColumn?: number
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Source line of the error's end, exclusive. Provided if the error pertains
|
|
82
|
+
* to a range.
|
|
83
|
+
*
|
|
84
|
+
* ```js
|
|
85
|
+
* error.endLine //=> 3
|
|
86
|
+
* error.input.endLine //=> 4
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* PostCSS will use the input source map to detect the original location.
|
|
90
|
+
* If you need the position in the PostCSS input, use `error.input.endLine`.
|
|
91
|
+
*/
|
|
92
|
+
endLine?: number
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Absolute path to the broken file.
|
|
96
|
+
*
|
|
97
|
+
* ```js
|
|
98
|
+
* error.file //=> 'a.sass'
|
|
99
|
+
* error.input.file //=> 'a.css'
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* PostCSS will use the input source map to detect the original location.
|
|
103
|
+
* If you need the position in the PostCSS input, use `error.input.file`.
|
|
104
|
+
*/
|
|
105
|
+
file?: string
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Input object with PostCSS internal information
|
|
109
|
+
* about input file. If input has source map
|
|
110
|
+
* from previous tool, PostCSS will use origin
|
|
111
|
+
* (for example, Sass) source. You can use this
|
|
112
|
+
* object to get PostCSS input source.
|
|
113
|
+
*
|
|
114
|
+
* ```js
|
|
115
|
+
* error.input.file //=> 'a.css'
|
|
116
|
+
* error.file //=> 'a.sass'
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
input?: FilePosition
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Source line of the error.
|
|
123
|
+
*
|
|
124
|
+
* ```js
|
|
125
|
+
* error.line //=> 2
|
|
126
|
+
* error.input.line //=> 4
|
|
127
|
+
* ```
|
|
128
|
+
*
|
|
129
|
+
* PostCSS will use the input source map to detect the original location.
|
|
130
|
+
* If you need the position in the PostCSS input, use `error.input.line`.
|
|
131
|
+
*/
|
|
132
|
+
line?: number
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Full error text in the GNU error format
|
|
136
|
+
* with plugin, file, line and column.
|
|
137
|
+
*
|
|
138
|
+
* ```js
|
|
139
|
+
* error.message //=> 'a.css:1:1: Unclosed block'
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
message: string
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Always equal to `'CssSyntaxError'`. You should always check error type
|
|
146
|
+
* by `error.name === 'CssSyntaxError'`
|
|
147
|
+
* instead of `error instanceof CssSyntaxError`,
|
|
148
|
+
* because npm could have several PostCSS versions.
|
|
149
|
+
*
|
|
150
|
+
* ```js
|
|
151
|
+
* if (error.name === 'CssSyntaxError') {
|
|
152
|
+
* error //=> CssSyntaxError
|
|
153
|
+
* }
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
name: 'CssSyntaxError'
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Plugin name, if error came from plugin.
|
|
160
|
+
*
|
|
161
|
+
* ```js
|
|
162
|
+
* error.plugin //=> 'postcss-vars'
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
plugin?: string
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Error message.
|
|
169
|
+
*
|
|
170
|
+
* ```js
|
|
171
|
+
* error.message //=> 'Unclosed block'
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
reason: string
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Source code of the broken file.
|
|
178
|
+
*
|
|
179
|
+
* ```js
|
|
180
|
+
* error.source //=> 'a { b {} }'
|
|
181
|
+
* error.input.source //=> 'a b { }'
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
source?: string
|
|
185
|
+
|
|
186
|
+
stack: string
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Instantiates a CSS syntax error. Can be instantiated for a single position
|
|
190
|
+
* or for a range.
|
|
191
|
+
* @param message Error message.
|
|
192
|
+
* @param lineOrStartPos If for a single position, the line number, or if for
|
|
193
|
+
* a range, the inclusive start position of the error.
|
|
194
|
+
* @param columnOrEndPos If for a single position, the column number, or if for
|
|
195
|
+
* a range, the exclusive end position of the error.
|
|
196
|
+
* @param source Source code of the broken file.
|
|
197
|
+
* @param file Absolute path to the broken file.
|
|
198
|
+
* @param plugin PostCSS plugin name, if error came from plugin.
|
|
199
|
+
*/
|
|
200
|
+
constructor(
|
|
201
|
+
message: string,
|
|
202
|
+
lineOrStartPos?: CssSyntaxError.RangePosition | number,
|
|
203
|
+
columnOrEndPos?: CssSyntaxError.RangePosition | number,
|
|
204
|
+
source?: string,
|
|
205
|
+
file?: string,
|
|
206
|
+
plugin?: string
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Returns a few lines of CSS source that caused the error.
|
|
211
|
+
*
|
|
212
|
+
* If the CSS has an input source map without `sourceContent`,
|
|
213
|
+
* this method will return an empty string.
|
|
214
|
+
*
|
|
215
|
+
* ```js
|
|
216
|
+
* error.showSourceCode() //=> " 4 | }
|
|
217
|
+
* // 5 | a {
|
|
218
|
+
* // > 6 | bad
|
|
219
|
+
* // | ^
|
|
220
|
+
* // 7 | }
|
|
221
|
+
* // 8 | b {"
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* @param color Whether arrow will be colored red by terminal
|
|
225
|
+
* color codes. By default, PostCSS will detect
|
|
226
|
+
* color support by `process.stdout.isTTY`
|
|
227
|
+
* and `process.env.NODE_DISABLE_COLORS`.
|
|
228
|
+
* @return Few lines of CSS source that caused the error.
|
|
229
|
+
*/
|
|
230
|
+
showSourceCode(color?: boolean): string
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Returns error position, message and source code of the broken part.
|
|
234
|
+
*
|
|
235
|
+
* ```js
|
|
236
|
+
* error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block
|
|
237
|
+
* // > 1 | a {
|
|
238
|
+
* // | ^"
|
|
239
|
+
* ```
|
|
240
|
+
*
|
|
241
|
+
* @return Error position, message and source code.
|
|
242
|
+
*/
|
|
243
|
+
toString(): string
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
declare class CssSyntaxError extends CssSyntaxError_ {}
|
|
247
|
+
|
|
248
|
+
export = CssSyntaxError
|