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,550 @@
1
+ 'use strict'
2
+
3
+ let Container = require('./container')
4
+ let Document = require('./document')
5
+ let MapGenerator = require('./map-generator')
6
+ let parse = require('./parse')
7
+ let Result = require('./result')
8
+ let Root = require('./root')
9
+ let stringify = require('./stringify')
10
+ let { isClean, my } = require('./symbols')
11
+ let warnOnce = require('./warn-once')
12
+
13
+ const TYPE_TO_CLASS_NAME = {
14
+ atrule: 'AtRule',
15
+ comment: 'Comment',
16
+ decl: 'Declaration',
17
+ document: 'Document',
18
+ root: 'Root',
19
+ rule: 'Rule'
20
+ }
21
+
22
+ const PLUGIN_PROPS = {
23
+ AtRule: true,
24
+ AtRuleExit: true,
25
+ Comment: true,
26
+ CommentExit: true,
27
+ Declaration: true,
28
+ DeclarationExit: true,
29
+ Document: true,
30
+ DocumentExit: true,
31
+ Once: true,
32
+ OnceExit: true,
33
+ postcssPlugin: true,
34
+ prepare: true,
35
+ Root: true,
36
+ RootExit: true,
37
+ Rule: true,
38
+ RuleExit: true
39
+ }
40
+
41
+ const NOT_VISITORS = {
42
+ Once: true,
43
+ postcssPlugin: true,
44
+ prepare: true
45
+ }
46
+
47
+ const CHILDREN = 0
48
+
49
+ function isPromise(obj) {
50
+ return typeof obj === 'object' && typeof obj.then === 'function'
51
+ }
52
+
53
+ function getEvents(node) {
54
+ let key = false
55
+ let type = TYPE_TO_CLASS_NAME[node.type]
56
+ if (node.type === 'decl') {
57
+ key = node.prop.toLowerCase()
58
+ } else if (node.type === 'atrule') {
59
+ key = node.name.toLowerCase()
60
+ }
61
+
62
+ if (key && node.append) {
63
+ return [
64
+ type,
65
+ type + '-' + key,
66
+ CHILDREN,
67
+ type + 'Exit',
68
+ type + 'Exit-' + key
69
+ ]
70
+ } else if (key) {
71
+ return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]
72
+ } else if (node.append) {
73
+ return [type, CHILDREN, type + 'Exit']
74
+ } else {
75
+ return [type, type + 'Exit']
76
+ }
77
+ }
78
+
79
+ function toStack(node) {
80
+ let events
81
+ if (node.type === 'document') {
82
+ events = ['Document', CHILDREN, 'DocumentExit']
83
+ } else if (node.type === 'root') {
84
+ events = ['Root', CHILDREN, 'RootExit']
85
+ } else {
86
+ events = getEvents(node)
87
+ }
88
+
89
+ return {
90
+ eventIndex: 0,
91
+ events,
92
+ iterator: 0,
93
+ node,
94
+ visitorIndex: 0,
95
+ visitors: []
96
+ }
97
+ }
98
+
99
+ function cleanMarks(node) {
100
+ node[isClean] = false
101
+ if (node.nodes) node.nodes.forEach(i => cleanMarks(i))
102
+ return node
103
+ }
104
+
105
+ let postcss = {}
106
+
107
+ class LazyResult {
108
+ get content() {
109
+ return this.stringify().content
110
+ }
111
+
112
+ get css() {
113
+ return this.stringify().css
114
+ }
115
+
116
+ get map() {
117
+ return this.stringify().map
118
+ }
119
+
120
+ get messages() {
121
+ return this.sync().messages
122
+ }
123
+
124
+ get opts() {
125
+ return this.result.opts
126
+ }
127
+
128
+ get processor() {
129
+ return this.result.processor
130
+ }
131
+
132
+ get root() {
133
+ return this.sync().root
134
+ }
135
+
136
+ get [Symbol.toStringTag]() {
137
+ return 'LazyResult'
138
+ }
139
+
140
+ constructor(processor, css, opts) {
141
+ this.stringified = false
142
+ this.processed = false
143
+
144
+ let root
145
+ if (
146
+ typeof css === 'object' &&
147
+ css !== null &&
148
+ (css.type === 'root' || css.type === 'document')
149
+ ) {
150
+ root = cleanMarks(css)
151
+ } else if (css instanceof LazyResult || css instanceof Result) {
152
+ root = cleanMarks(css.root)
153
+ if (css.map) {
154
+ if (typeof opts.map === 'undefined') opts.map = {}
155
+ if (!opts.map.inline) opts.map.inline = false
156
+ opts.map.prev = css.map
157
+ }
158
+ } else {
159
+ let parser = parse
160
+ if (opts.syntax) parser = opts.syntax.parse
161
+ if (opts.parser) parser = opts.parser
162
+ if (parser.parse) parser = parser.parse
163
+
164
+ try {
165
+ root = parser(css, opts)
166
+ } catch (error) {
167
+ this.processed = true
168
+ this.error = error
169
+ }
170
+
171
+ if (root && !root[my]) {
172
+ /* c8 ignore next 2 */
173
+ Container.rebuild(root)
174
+ }
175
+ }
176
+
177
+ this.result = new Result(processor, root, opts)
178
+ this.helpers = { ...postcss, postcss, result: this.result }
179
+ this.plugins = this.processor.plugins.map(plugin => {
180
+ if (typeof plugin === 'object' && plugin.prepare) {
181
+ return { ...plugin, ...plugin.prepare(this.result) }
182
+ } else {
183
+ return plugin
184
+ }
185
+ })
186
+ }
187
+
188
+ async() {
189
+ if (this.error) return Promise.reject(this.error)
190
+ if (this.processed) return Promise.resolve(this.result)
191
+ if (!this.processing) {
192
+ this.processing = this.runAsync()
193
+ }
194
+ return this.processing
195
+ }
196
+
197
+ catch(onRejected) {
198
+ return this.async().catch(onRejected)
199
+ }
200
+
201
+ finally(onFinally) {
202
+ return this.async().then(onFinally, onFinally)
203
+ }
204
+
205
+ getAsyncError() {
206
+ throw new Error('Use process(css).then(cb) to work with async plugins')
207
+ }
208
+
209
+ handleError(error, node) {
210
+ let plugin = this.result.lastPlugin
211
+ try {
212
+ if (node) node.addToError(error)
213
+ this.error = error
214
+ if (error.name === 'CssSyntaxError' && !error.plugin) {
215
+ error.plugin = plugin.postcssPlugin
216
+ error.setMessage()
217
+ } else if (plugin.postcssVersion) {
218
+ if (process.env.NODE_ENV !== 'production') {
219
+ let pluginName = plugin.postcssPlugin
220
+ let pluginVer = plugin.postcssVersion
221
+ let runtimeVer = this.result.processor.version
222
+ let a = pluginVer.split('.')
223
+ let b = runtimeVer.split('.')
224
+
225
+ if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
226
+ // eslint-disable-next-line no-console
227
+ console.error(
228
+ 'Unknown error from PostCSS plugin. Your current PostCSS ' +
229
+ 'version is ' +
230
+ runtimeVer +
231
+ ', but ' +
232
+ pluginName +
233
+ ' uses ' +
234
+ pluginVer +
235
+ '. Perhaps this is the source of the error below.'
236
+ )
237
+ }
238
+ }
239
+ }
240
+ } catch (err) {
241
+ /* c8 ignore next 3 */
242
+ // eslint-disable-next-line no-console
243
+ if (console && console.error) console.error(err)
244
+ }
245
+ return error
246
+ }
247
+
248
+ prepareVisitors() {
249
+ this.listeners = {}
250
+ let add = (plugin, type, cb) => {
251
+ if (!this.listeners[type]) this.listeners[type] = []
252
+ this.listeners[type].push([plugin, cb])
253
+ }
254
+ for (let plugin of this.plugins) {
255
+ if (typeof plugin === 'object') {
256
+ for (let event in plugin) {
257
+ if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {
258
+ throw new Error(
259
+ `Unknown event ${event} in ${plugin.postcssPlugin}. ` +
260
+ `Try to update PostCSS (${this.processor.version} now).`
261
+ )
262
+ }
263
+ if (!NOT_VISITORS[event]) {
264
+ if (typeof plugin[event] === 'object') {
265
+ for (let filter in plugin[event]) {
266
+ if (filter === '*') {
267
+ add(plugin, event, plugin[event][filter])
268
+ } else {
269
+ add(
270
+ plugin,
271
+ event + '-' + filter.toLowerCase(),
272
+ plugin[event][filter]
273
+ )
274
+ }
275
+ }
276
+ } else if (typeof plugin[event] === 'function') {
277
+ add(plugin, event, plugin[event])
278
+ }
279
+ }
280
+ }
281
+ }
282
+ }
283
+ this.hasListener = Object.keys(this.listeners).length > 0
284
+ }
285
+
286
+ async runAsync() {
287
+ this.plugin = 0
288
+ for (let i = 0; i < this.plugins.length; i++) {
289
+ let plugin = this.plugins[i]
290
+ let promise = this.runOnRoot(plugin)
291
+ if (isPromise(promise)) {
292
+ try {
293
+ await promise
294
+ } catch (error) {
295
+ throw this.handleError(error)
296
+ }
297
+ }
298
+ }
299
+
300
+ this.prepareVisitors()
301
+ if (this.hasListener) {
302
+ let root = this.result.root
303
+ while (!root[isClean]) {
304
+ root[isClean] = true
305
+ let stack = [toStack(root)]
306
+ while (stack.length > 0) {
307
+ let promise = this.visitTick(stack)
308
+ if (isPromise(promise)) {
309
+ try {
310
+ await promise
311
+ } catch (e) {
312
+ let node = stack[stack.length - 1].node
313
+ throw this.handleError(e, node)
314
+ }
315
+ }
316
+ }
317
+ }
318
+
319
+ if (this.listeners.OnceExit) {
320
+ for (let [plugin, visitor] of this.listeners.OnceExit) {
321
+ this.result.lastPlugin = plugin
322
+ try {
323
+ if (root.type === 'document') {
324
+ let roots = root.nodes.map(subRoot =>
325
+ visitor(subRoot, this.helpers)
326
+ )
327
+
328
+ await Promise.all(roots)
329
+ } else {
330
+ await visitor(root, this.helpers)
331
+ }
332
+ } catch (e) {
333
+ throw this.handleError(e)
334
+ }
335
+ }
336
+ }
337
+ }
338
+
339
+ this.processed = true
340
+ return this.stringify()
341
+ }
342
+
343
+ runOnRoot(plugin) {
344
+ this.result.lastPlugin = plugin
345
+ try {
346
+ if (typeof plugin === 'object' && plugin.Once) {
347
+ if (this.result.root.type === 'document') {
348
+ let roots = this.result.root.nodes.map(root =>
349
+ plugin.Once(root, this.helpers)
350
+ )
351
+
352
+ if (isPromise(roots[0])) {
353
+ return Promise.all(roots)
354
+ }
355
+
356
+ return roots
357
+ }
358
+
359
+ return plugin.Once(this.result.root, this.helpers)
360
+ } else if (typeof plugin === 'function') {
361
+ return plugin(this.result.root, this.result)
362
+ }
363
+ } catch (error) {
364
+ throw this.handleError(error)
365
+ }
366
+ }
367
+
368
+ stringify() {
369
+ if (this.error) throw this.error
370
+ if (this.stringified) return this.result
371
+ this.stringified = true
372
+
373
+ this.sync()
374
+
375
+ let opts = this.result.opts
376
+ let str = stringify
377
+ if (opts.syntax) str = opts.syntax.stringify
378
+ if (opts.stringifier) str = opts.stringifier
379
+ if (str.stringify) str = str.stringify
380
+
381
+ let map = new MapGenerator(str, this.result.root, this.result.opts)
382
+ let data = map.generate()
383
+ this.result.css = data[0]
384
+ this.result.map = data[1]
385
+
386
+ return this.result
387
+ }
388
+
389
+ sync() {
390
+ if (this.error) throw this.error
391
+ if (this.processed) return this.result
392
+ this.processed = true
393
+
394
+ if (this.processing) {
395
+ throw this.getAsyncError()
396
+ }
397
+
398
+ for (let plugin of this.plugins) {
399
+ let promise = this.runOnRoot(plugin)
400
+ if (isPromise(promise)) {
401
+ throw this.getAsyncError()
402
+ }
403
+ }
404
+
405
+ this.prepareVisitors()
406
+ if (this.hasListener) {
407
+ let root = this.result.root
408
+ while (!root[isClean]) {
409
+ root[isClean] = true
410
+ this.walkSync(root)
411
+ }
412
+ if (this.listeners.OnceExit) {
413
+ if (root.type === 'document') {
414
+ for (let subRoot of root.nodes) {
415
+ this.visitSync(this.listeners.OnceExit, subRoot)
416
+ }
417
+ } else {
418
+ this.visitSync(this.listeners.OnceExit, root)
419
+ }
420
+ }
421
+ }
422
+
423
+ return this.result
424
+ }
425
+
426
+ then(onFulfilled, onRejected) {
427
+ if (process.env.NODE_ENV !== 'production') {
428
+ if (!('from' in this.opts)) {
429
+ warnOnce(
430
+ 'Without `from` option PostCSS could generate wrong source map ' +
431
+ 'and will not find Browserslist config. Set it to CSS file path ' +
432
+ 'or to `undefined` to prevent this warning.'
433
+ )
434
+ }
435
+ }
436
+ return this.async().then(onFulfilled, onRejected)
437
+ }
438
+
439
+ toString() {
440
+ return this.css
441
+ }
442
+
443
+ visitSync(visitors, node) {
444
+ for (let [plugin, visitor] of visitors) {
445
+ this.result.lastPlugin = plugin
446
+ let promise
447
+ try {
448
+ promise = visitor(node, this.helpers)
449
+ } catch (e) {
450
+ throw this.handleError(e, node.proxyOf)
451
+ }
452
+ if (node.type !== 'root' && node.type !== 'document' && !node.parent) {
453
+ return true
454
+ }
455
+ if (isPromise(promise)) {
456
+ throw this.getAsyncError()
457
+ }
458
+ }
459
+ }
460
+
461
+ visitTick(stack) {
462
+ let visit = stack[stack.length - 1]
463
+ let { node, visitors } = visit
464
+
465
+ if (node.type !== 'root' && node.type !== 'document' && !node.parent) {
466
+ stack.pop()
467
+ return
468
+ }
469
+
470
+ if (visitors.length > 0 && visit.visitorIndex < visitors.length) {
471
+ let [plugin, visitor] = visitors[visit.visitorIndex]
472
+ visit.visitorIndex += 1
473
+ if (visit.visitorIndex === visitors.length) {
474
+ visit.visitors = []
475
+ visit.visitorIndex = 0
476
+ }
477
+ this.result.lastPlugin = plugin
478
+ try {
479
+ return visitor(node.toProxy(), this.helpers)
480
+ } catch (e) {
481
+ throw this.handleError(e, node)
482
+ }
483
+ }
484
+
485
+ if (visit.iterator !== 0) {
486
+ let iterator = visit.iterator
487
+ let child
488
+ while ((child = node.nodes[node.indexes[iterator]])) {
489
+ node.indexes[iterator] += 1
490
+ if (!child[isClean]) {
491
+ child[isClean] = true
492
+ stack.push(toStack(child))
493
+ return
494
+ }
495
+ }
496
+ visit.iterator = 0
497
+ delete node.indexes[iterator]
498
+ }
499
+
500
+ let events = visit.events
501
+ while (visit.eventIndex < events.length) {
502
+ let event = events[visit.eventIndex]
503
+ visit.eventIndex += 1
504
+ if (event === CHILDREN) {
505
+ if (node.nodes && node.nodes.length) {
506
+ node[isClean] = true
507
+ visit.iterator = node.getIterator()
508
+ }
509
+ return
510
+ } else if (this.listeners[event]) {
511
+ visit.visitors = this.listeners[event]
512
+ return
513
+ }
514
+ }
515
+ stack.pop()
516
+ }
517
+
518
+ walkSync(node) {
519
+ node[isClean] = true
520
+ let events = getEvents(node)
521
+ for (let event of events) {
522
+ if (event === CHILDREN) {
523
+ if (node.nodes) {
524
+ node.each(child => {
525
+ if (!child[isClean]) this.walkSync(child)
526
+ })
527
+ }
528
+ } else {
529
+ let visitors = this.listeners[event]
530
+ if (visitors) {
531
+ if (this.visitSync(visitors, node.toProxy())) return
532
+ }
533
+ }
534
+ }
535
+ }
536
+
537
+ warnings() {
538
+ return this.sync().warnings()
539
+ }
540
+ }
541
+
542
+ LazyResult.registerPostcss = dependant => {
543
+ postcss = dependant
544
+ }
545
+
546
+ module.exports = LazyResult
547
+ LazyResult.default = LazyResult
548
+
549
+ Root.registerLazyResult(LazyResult)
550
+ Document.registerLazyResult(LazyResult)
@@ -0,0 +1,60 @@
1
+ declare namespace list {
2
+ type List = {
3
+ /**
4
+ * Safely splits comma-separated values (such as those for `transition-*`
5
+ * and `background` properties).
6
+ *
7
+ * ```js
8
+ * Once (root, { list }) {
9
+ * list.comma('black, linear-gradient(white, black)')
10
+ * //=> ['black', 'linear-gradient(white, black)']
11
+ * }
12
+ * ```
13
+ *
14
+ * @param str Comma-separated values.
15
+ * @return Split values.
16
+ */
17
+ comma(str: string): string[]
18
+
19
+ default: List
20
+
21
+ /**
22
+ * Safely splits space-separated values (such as those for `background`,
23
+ * `border-radius`, and other shorthand properties).
24
+ *
25
+ * ```js
26
+ * Once (root, { list }) {
27
+ * list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']
28
+ * }
29
+ * ```
30
+ *
31
+ * @param str Space-separated values.
32
+ * @return Split values.
33
+ */
34
+ space(str: string): string[]
35
+
36
+ /**
37
+ * Safely splits values.
38
+ *
39
+ * ```js
40
+ * Once (root, { list }) {
41
+ * list.split('1px calc(10% + 1px)', [' ', '\n', '\t']) //=> ['1px', 'calc(10% + 1px)']
42
+ * }
43
+ * ```
44
+ *
45
+ * @param string separated values.
46
+ * @param separators array of separators.
47
+ * @param last boolean indicator.
48
+ * @return Split values.
49
+ */
50
+ split(
51
+ string: string,
52
+ separators: readonly string[],
53
+ last: boolean
54
+ ): string[]
55
+ }
56
+ }
57
+
58
+ declare const list: list.List
59
+
60
+ export = list
@@ -0,0 +1,58 @@
1
+ 'use strict'
2
+
3
+ let list = {
4
+ comma(string) {
5
+ return list.split(string, [','], true)
6
+ },
7
+
8
+ space(string) {
9
+ let spaces = [' ', '\n', '\t']
10
+ return list.split(string, spaces)
11
+ },
12
+
13
+ split(string, separators, last) {
14
+ let array = []
15
+ let current = ''
16
+ let split = false
17
+
18
+ let func = 0
19
+ let inQuote = false
20
+ let prevQuote = ''
21
+ let escape = false
22
+
23
+ for (let letter of string) {
24
+ if (escape) {
25
+ escape = false
26
+ } else if (letter === '\\') {
27
+ escape = true
28
+ } else if (inQuote) {
29
+ if (letter === prevQuote) {
30
+ inQuote = false
31
+ }
32
+ } else if (letter === '"' || letter === "'") {
33
+ inQuote = true
34
+ prevQuote = letter
35
+ } else if (letter === '(') {
36
+ func += 1
37
+ } else if (letter === ')') {
38
+ if (func > 0) func -= 1
39
+ } else if (func === 0) {
40
+ if (separators.includes(letter)) split = true
41
+ }
42
+
43
+ if (split) {
44
+ if (current !== '') array.push(current.trim())
45
+ current = ''
46
+ split = false
47
+ } else {
48
+ current += letter
49
+ }
50
+ }
51
+
52
+ if (last || current !== '') array.push(current.trim())
53
+ return array
54
+ }
55
+ }
56
+
57
+ module.exports = list
58
+ list.default = list