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.
Files changed (213) hide show
  1. package/index.js +95 -0
  2. package/package.json +21 -0
  3. package/templates/vanilla/.github/workflows/deploy.yml +38 -0
  4. package/templates/vanilla/index.html +13 -0
  5. package/templates/vanilla/node_modules/.package-lock.json +207 -0
  6. package/templates/vanilla/node_modules/@esbuild/darwin-x64/README.md +3 -0
  7. package/templates/vanilla/node_modules/@esbuild/darwin-x64/bin/esbuild +0 -0
  8. package/templates/vanilla/node_modules/@esbuild/darwin-x64/package.json +17 -0
  9. package/templates/vanilla/node_modules/@monygroupcorp/microact/README.md +154 -0
  10. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js +1749 -0
  11. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.cjs.js.map +1 -0
  12. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js +1743 -0
  13. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.esm.js.map +1 -0
  14. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js +2 -0
  15. package/templates/vanilla/node_modules/@monygroupcorp/microact/dist/microact.umd.js.map +1 -0
  16. package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.html +13 -0
  17. package/templates/vanilla/node_modules/@monygroupcorp/microact/example/index.js +63 -0
  18. package/templates/vanilla/node_modules/@monygroupcorp/microact/package.json +38 -0
  19. package/templates/vanilla/node_modules/@monygroupcorp/microact/rollup.config.cjs +30 -0
  20. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Component.js +831 -0
  21. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/DOMUpdater.js +320 -0
  22. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/EventBus.js +123 -0
  23. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/Router.js +253 -0
  24. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/UpdateScheduler.js +218 -0
  25. package/templates/vanilla/node_modules/@monygroupcorp/microact/src/index.js +6 -0
  26. package/templates/vanilla/node_modules/esbuild/LICENSE.md +21 -0
  27. package/templates/vanilla/node_modules/esbuild/README.md +3 -0
  28. package/templates/vanilla/node_modules/esbuild/bin/esbuild +0 -0
  29. package/templates/vanilla/node_modules/esbuild/install.js +287 -0
  30. package/templates/vanilla/node_modules/esbuild/lib/main.d.ts +660 -0
  31. package/templates/vanilla/node_modules/esbuild/lib/main.js +2393 -0
  32. package/templates/vanilla/node_modules/esbuild/package.json +42 -0
  33. package/templates/vanilla/node_modules/nanoid/LICENSE +20 -0
  34. package/templates/vanilla/node_modules/nanoid/README.md +39 -0
  35. package/templates/vanilla/node_modules/nanoid/async/index.browser.cjs +69 -0
  36. package/templates/vanilla/node_modules/nanoid/async/index.browser.js +34 -0
  37. package/templates/vanilla/node_modules/nanoid/async/index.cjs +71 -0
  38. package/templates/vanilla/node_modules/nanoid/async/index.d.ts +56 -0
  39. package/templates/vanilla/node_modules/nanoid/async/index.js +35 -0
  40. package/templates/vanilla/node_modules/nanoid/async/index.native.js +26 -0
  41. package/templates/vanilla/node_modules/nanoid/async/package.json +12 -0
  42. package/templates/vanilla/node_modules/nanoid/bin/nanoid.cjs +55 -0
  43. package/templates/vanilla/node_modules/nanoid/index.browser.cjs +72 -0
  44. package/templates/vanilla/node_modules/nanoid/index.browser.js +34 -0
  45. package/templates/vanilla/node_modules/nanoid/index.cjs +85 -0
  46. package/templates/vanilla/node_modules/nanoid/index.d.cts +91 -0
  47. package/templates/vanilla/node_modules/nanoid/index.d.ts +91 -0
  48. package/templates/vanilla/node_modules/nanoid/index.js +45 -0
  49. package/templates/vanilla/node_modules/nanoid/nanoid.js +1 -0
  50. package/templates/vanilla/node_modules/nanoid/non-secure/index.cjs +34 -0
  51. package/templates/vanilla/node_modules/nanoid/non-secure/index.d.ts +33 -0
  52. package/templates/vanilla/node_modules/nanoid/non-secure/index.js +21 -0
  53. package/templates/vanilla/node_modules/nanoid/non-secure/package.json +6 -0
  54. package/templates/vanilla/node_modules/nanoid/package.json +89 -0
  55. package/templates/vanilla/node_modules/nanoid/url-alphabet/index.cjs +7 -0
  56. package/templates/vanilla/node_modules/nanoid/url-alphabet/index.js +3 -0
  57. package/templates/vanilla/node_modules/nanoid/url-alphabet/package.json +6 -0
  58. package/templates/vanilla/node_modules/picocolors/LICENSE +15 -0
  59. package/templates/vanilla/node_modules/picocolors/README.md +21 -0
  60. package/templates/vanilla/node_modules/picocolors/package.json +25 -0
  61. package/templates/vanilla/node_modules/picocolors/picocolors.browser.js +4 -0
  62. package/templates/vanilla/node_modules/picocolors/picocolors.d.ts +5 -0
  63. package/templates/vanilla/node_modules/picocolors/picocolors.js +75 -0
  64. package/templates/vanilla/node_modules/picocolors/types.d.ts +51 -0
  65. package/templates/vanilla/node_modules/postcss/LICENSE +20 -0
  66. package/templates/vanilla/node_modules/postcss/README.md +29 -0
  67. package/templates/vanilla/node_modules/postcss/lib/at-rule.d.ts +140 -0
  68. package/templates/vanilla/node_modules/postcss/lib/at-rule.js +25 -0
  69. package/templates/vanilla/node_modules/postcss/lib/comment.d.ts +68 -0
  70. package/templates/vanilla/node_modules/postcss/lib/comment.js +13 -0
  71. package/templates/vanilla/node_modules/postcss/lib/container.d.ts +483 -0
  72. package/templates/vanilla/node_modules/postcss/lib/container.js +447 -0
  73. package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.d.ts +248 -0
  74. package/templates/vanilla/node_modules/postcss/lib/css-syntax-error.js +133 -0
  75. package/templates/vanilla/node_modules/postcss/lib/declaration.d.ts +151 -0
  76. package/templates/vanilla/node_modules/postcss/lib/declaration.js +24 -0
  77. package/templates/vanilla/node_modules/postcss/lib/document.d.ts +69 -0
  78. package/templates/vanilla/node_modules/postcss/lib/document.js +33 -0
  79. package/templates/vanilla/node_modules/postcss/lib/fromJSON.d.ts +9 -0
  80. package/templates/vanilla/node_modules/postcss/lib/fromJSON.js +54 -0
  81. package/templates/vanilla/node_modules/postcss/lib/input.d.ts +227 -0
  82. package/templates/vanilla/node_modules/postcss/lib/input.js +265 -0
  83. package/templates/vanilla/node_modules/postcss/lib/lazy-result.d.ts +190 -0
  84. package/templates/vanilla/node_modules/postcss/lib/lazy-result.js +550 -0
  85. package/templates/vanilla/node_modules/postcss/lib/list.d.ts +60 -0
  86. package/templates/vanilla/node_modules/postcss/lib/list.js +58 -0
  87. package/templates/vanilla/node_modules/postcss/lib/map-generator.js +368 -0
  88. package/templates/vanilla/node_modules/postcss/lib/no-work-result.d.ts +46 -0
  89. package/templates/vanilla/node_modules/postcss/lib/no-work-result.js +138 -0
  90. package/templates/vanilla/node_modules/postcss/lib/node.d.ts +556 -0
  91. package/templates/vanilla/node_modules/postcss/lib/node.js +449 -0
  92. package/templates/vanilla/node_modules/postcss/lib/parse.d.ts +9 -0
  93. package/templates/vanilla/node_modules/postcss/lib/parse.js +42 -0
  94. package/templates/vanilla/node_modules/postcss/lib/parser.js +611 -0
  95. package/templates/vanilla/node_modules/postcss/lib/postcss.d.mts +69 -0
  96. package/templates/vanilla/node_modules/postcss/lib/postcss.d.ts +458 -0
  97. package/templates/vanilla/node_modules/postcss/lib/postcss.js +101 -0
  98. package/templates/vanilla/node_modules/postcss/lib/postcss.mjs +30 -0
  99. package/templates/vanilla/node_modules/postcss/lib/previous-map.d.ts +81 -0
  100. package/templates/vanilla/node_modules/postcss/lib/previous-map.js +144 -0
  101. package/templates/vanilla/node_modules/postcss/lib/processor.d.ts +115 -0
  102. package/templates/vanilla/node_modules/postcss/lib/processor.js +67 -0
  103. package/templates/vanilla/node_modules/postcss/lib/result.d.ts +205 -0
  104. package/templates/vanilla/node_modules/postcss/lib/result.js +42 -0
  105. package/templates/vanilla/node_modules/postcss/lib/root.d.ts +87 -0
  106. package/templates/vanilla/node_modules/postcss/lib/root.js +61 -0
  107. package/templates/vanilla/node_modules/postcss/lib/rule.d.ts +126 -0
  108. package/templates/vanilla/node_modules/postcss/lib/rule.js +27 -0
  109. package/templates/vanilla/node_modules/postcss/lib/stringifier.d.ts +46 -0
  110. package/templates/vanilla/node_modules/postcss/lib/stringifier.js +353 -0
  111. package/templates/vanilla/node_modules/postcss/lib/stringify.d.ts +9 -0
  112. package/templates/vanilla/node_modules/postcss/lib/stringify.js +11 -0
  113. package/templates/vanilla/node_modules/postcss/lib/symbols.js +5 -0
  114. package/templates/vanilla/node_modules/postcss/lib/terminal-highlight.js +70 -0
  115. package/templates/vanilla/node_modules/postcss/lib/tokenize.js +266 -0
  116. package/templates/vanilla/node_modules/postcss/lib/warn-once.js +13 -0
  117. package/templates/vanilla/node_modules/postcss/lib/warning.d.ts +147 -0
  118. package/templates/vanilla/node_modules/postcss/lib/warning.js +37 -0
  119. package/templates/vanilla/node_modules/postcss/package.json +88 -0
  120. package/templates/vanilla/node_modules/rollup/LICENSE.md +695 -0
  121. package/templates/vanilla/node_modules/rollup/README.md +125 -0
  122. package/templates/vanilla/node_modules/rollup/dist/bin/rollup +1715 -0
  123. package/templates/vanilla/node_modules/rollup/dist/es/getLogFilter.js +64 -0
  124. package/templates/vanilla/node_modules/rollup/dist/es/package.json +1 -0
  125. package/templates/vanilla/node_modules/rollup/dist/es/rollup.js +17 -0
  126. package/templates/vanilla/node_modules/rollup/dist/es/shared/node-entry.js +27273 -0
  127. package/templates/vanilla/node_modules/rollup/dist/es/shared/watch.js +4857 -0
  128. package/templates/vanilla/node_modules/rollup/dist/getLogFilter.d.ts +5 -0
  129. package/templates/vanilla/node_modules/rollup/dist/getLogFilter.js +69 -0
  130. package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.d.ts +20 -0
  131. package/templates/vanilla/node_modules/rollup/dist/loadConfigFile.js +29 -0
  132. package/templates/vanilla/node_modules/rollup/dist/rollup.d.ts +1012 -0
  133. package/templates/vanilla/node_modules/rollup/dist/rollup.js +31 -0
  134. package/templates/vanilla/node_modules/rollup/dist/shared/fsevents-importer.js +37 -0
  135. package/templates/vanilla/node_modules/rollup/dist/shared/index.js +4571 -0
  136. package/templates/vanilla/node_modules/rollup/dist/shared/loadConfigFile.js +546 -0
  137. package/templates/vanilla/node_modules/rollup/dist/shared/rollup.js +27351 -0
  138. package/templates/vanilla/node_modules/rollup/dist/shared/watch-cli.js +561 -0
  139. package/templates/vanilla/node_modules/rollup/dist/shared/watch-proxy.js +87 -0
  140. package/templates/vanilla/node_modules/rollup/dist/shared/watch.js +316 -0
  141. package/templates/vanilla/node_modules/rollup/package.json +181 -0
  142. package/templates/vanilla/node_modules/source-map-js/LICENSE +28 -0
  143. package/templates/vanilla/node_modules/source-map-js/README.md +765 -0
  144. package/templates/vanilla/node_modules/source-map-js/lib/array-set.js +121 -0
  145. package/templates/vanilla/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  146. package/templates/vanilla/node_modules/source-map-js/lib/base64.js +67 -0
  147. package/templates/vanilla/node_modules/source-map-js/lib/binary-search.js +111 -0
  148. package/templates/vanilla/node_modules/source-map-js/lib/mapping-list.js +79 -0
  149. package/templates/vanilla/node_modules/source-map-js/lib/quick-sort.js +132 -0
  150. package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
  151. package/templates/vanilla/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  152. package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
  153. package/templates/vanilla/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  154. package/templates/vanilla/node_modules/source-map-js/lib/source-node.d.ts +1 -0
  155. package/templates/vanilla/node_modules/source-map-js/lib/source-node.js +413 -0
  156. package/templates/vanilla/node_modules/source-map-js/lib/util.js +594 -0
  157. package/templates/vanilla/node_modules/source-map-js/package.json +71 -0
  158. package/templates/vanilla/node_modules/source-map-js/source-map.d.ts +104 -0
  159. package/templates/vanilla/node_modules/source-map-js/source-map.js +8 -0
  160. package/templates/vanilla/node_modules/vite/LICENSE.md +3396 -0
  161. package/templates/vanilla/node_modules/vite/README.md +20 -0
  162. package/templates/vanilla/node_modules/vite/bin/openChrome.applescript +95 -0
  163. package/templates/vanilla/node_modules/vite/bin/vite.js +61 -0
  164. package/templates/vanilla/node_modules/vite/client.d.ts +281 -0
  165. package/templates/vanilla/node_modules/vite/dist/client/client.mjs +725 -0
  166. package/templates/vanilla/node_modules/vite/dist/client/client.mjs.map +1 -0
  167. package/templates/vanilla/node_modules/vite/dist/client/env.mjs +30 -0
  168. package/templates/vanilla/node_modules/vite/dist/client/env.mjs.map +1 -0
  169. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-7ec6f216.js +914 -0
  170. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-827b23df.js +66713 -0
  171. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-c423598f.js +561 -0
  172. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f0c7dae0.js +7930 -0
  173. package/templates/vanilla/node_modules/vite/dist/node/chunks/dep-f1e8587f.js +7646 -0
  174. package/templates/vanilla/node_modules/vite/dist/node/cli.js +929 -0
  175. package/templates/vanilla/node_modules/vite/dist/node/constants.js +130 -0
  176. package/templates/vanilla/node_modules/vite/dist/node/index.d.ts +3548 -0
  177. package/templates/vanilla/node_modules/vite/dist/node/index.js +158 -0
  178. package/templates/vanilla/node_modules/vite/dist/node-cjs/publicUtils.cjs +4555 -0
  179. package/templates/vanilla/node_modules/vite/index.cjs +34 -0
  180. package/templates/vanilla/node_modules/vite/package.json +173 -0
  181. package/templates/vanilla/node_modules/vite/types/customEvent.d.ts +35 -0
  182. package/templates/vanilla/node_modules/vite/types/hmrPayload.d.ts +61 -0
  183. package/templates/vanilla/node_modules/vite/types/hot.d.ts +32 -0
  184. package/templates/vanilla/node_modules/vite/types/importGlob.d.ts +97 -0
  185. package/templates/vanilla/node_modules/vite/types/importMeta.d.ts +26 -0
  186. package/templates/vanilla/node_modules/vite/types/metadata.d.ts +10 -0
  187. package/templates/vanilla/node_modules/vite/types/package.json +4 -0
  188. package/templates/vanilla/package-lock.json +589 -0
  189. package/templates/vanilla/package.json +17 -0
  190. package/templates/vanilla/src/components/App.js +60 -0
  191. package/templates/vanilla/src/components/Card.js +21 -0
  192. package/templates/vanilla/src/components/Hero.js +15 -0
  193. package/templates/vanilla/src/components/InteractiveDemo.js +59 -0
  194. package/templates/vanilla/src/main.js +9 -0
  195. package/templates/vanilla/src/style/main.css +172 -0
  196. package/templates/vanilla/vite.config.js +8 -0
  197. package/templates/web3/.env.example +15 -0
  198. package/templates/web3/.github/workflows/deploy.yml +38 -0
  199. package/templates/web3/README.md +33 -0
  200. package/templates/web3/contracts/foundry.toml +11 -0
  201. package/templates/web3/contracts/script/Deploy.s.sol +13 -0
  202. package/templates/web3/contracts/src/Counter.sol +21 -0
  203. package/templates/web3/index.html +13 -0
  204. package/templates/web3/package.json +25 -0
  205. package/templates/web3/scripts/chain-start.mjs +305 -0
  206. package/templates/web3/scripts/chain-stop.mjs +34 -0
  207. package/templates/web3/scripts/deploy.mjs +155 -0
  208. package/templates/web3/scripts/setup.mjs +42 -0
  209. package/templates/web3/src/components/App.js +49 -0
  210. package/templates/web3/src/components/CounterCard.js +111 -0
  211. package/templates/web3/src/main.js +54 -0
  212. package/templates/web3/src/style/main.css +345 -0
  213. 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