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,449 @@
1
+ 'use strict'
2
+
3
+ let CssSyntaxError = require('./css-syntax-error')
4
+ let Stringifier = require('./stringifier')
5
+ let stringify = require('./stringify')
6
+ let { isClean, my } = require('./symbols')
7
+
8
+ function cloneNode(obj, parent) {
9
+ let cloned = new obj.constructor()
10
+
11
+ for (let i in obj) {
12
+ if (!Object.prototype.hasOwnProperty.call(obj, i)) {
13
+ /* c8 ignore next 2 */
14
+ continue
15
+ }
16
+ if (i === 'proxyCache') continue
17
+ let value = obj[i]
18
+ let type = typeof value
19
+
20
+ if (i === 'parent' && type === 'object') {
21
+ if (parent) cloned[i] = parent
22
+ } else if (i === 'source') {
23
+ cloned[i] = value
24
+ } else if (Array.isArray(value)) {
25
+ cloned[i] = value.map(j => cloneNode(j, cloned))
26
+ } else {
27
+ if (type === 'object' && value !== null) value = cloneNode(value)
28
+ cloned[i] = value
29
+ }
30
+ }
31
+
32
+ return cloned
33
+ }
34
+
35
+ function sourceOffset(inputCSS, position) {
36
+ // Not all custom syntaxes support `offset` in `source.start` and `source.end`
37
+ if (position && typeof position.offset !== 'undefined') {
38
+ return position.offset
39
+ }
40
+
41
+ let column = 1
42
+ let line = 1
43
+ let offset = 0
44
+
45
+ for (let i = 0; i < inputCSS.length; i++) {
46
+ if (line === position.line && column === position.column) {
47
+ offset = i
48
+ break
49
+ }
50
+
51
+ if (inputCSS[i] === '\n') {
52
+ column = 1
53
+ line += 1
54
+ } else {
55
+ column += 1
56
+ }
57
+ }
58
+
59
+ return offset
60
+ }
61
+
62
+ class Node {
63
+ get proxyOf() {
64
+ return this
65
+ }
66
+
67
+ constructor(defaults = {}) {
68
+ this.raws = {}
69
+ this[isClean] = false
70
+ this[my] = true
71
+
72
+ for (let name in defaults) {
73
+ if (name === 'nodes') {
74
+ this.nodes = []
75
+ for (let node of defaults[name]) {
76
+ if (typeof node.clone === 'function') {
77
+ this.append(node.clone())
78
+ } else {
79
+ this.append(node)
80
+ }
81
+ }
82
+ } else {
83
+ this[name] = defaults[name]
84
+ }
85
+ }
86
+ }
87
+
88
+ addToError(error) {
89
+ error.postcssNode = this
90
+ if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {
91
+ let s = this.source
92
+ error.stack = error.stack.replace(
93
+ /\n\s{4}at /,
94
+ `$&${s.input.from}:${s.start.line}:${s.start.column}$&`
95
+ )
96
+ }
97
+ return error
98
+ }
99
+
100
+ after(add) {
101
+ this.parent.insertAfter(this, add)
102
+ return this
103
+ }
104
+
105
+ assign(overrides = {}) {
106
+ for (let name in overrides) {
107
+ this[name] = overrides[name]
108
+ }
109
+ return this
110
+ }
111
+
112
+ before(add) {
113
+ this.parent.insertBefore(this, add)
114
+ return this
115
+ }
116
+
117
+ cleanRaws(keepBetween) {
118
+ delete this.raws.before
119
+ delete this.raws.after
120
+ if (!keepBetween) delete this.raws.between
121
+ }
122
+
123
+ clone(overrides = {}) {
124
+ let cloned = cloneNode(this)
125
+ for (let name in overrides) {
126
+ cloned[name] = overrides[name]
127
+ }
128
+ return cloned
129
+ }
130
+
131
+ cloneAfter(overrides = {}) {
132
+ let cloned = this.clone(overrides)
133
+ this.parent.insertAfter(this, cloned)
134
+ return cloned
135
+ }
136
+
137
+ cloneBefore(overrides = {}) {
138
+ let cloned = this.clone(overrides)
139
+ this.parent.insertBefore(this, cloned)
140
+ return cloned
141
+ }
142
+
143
+ error(message, opts = {}) {
144
+ if (this.source) {
145
+ let { end, start } = this.rangeBy(opts)
146
+ return this.source.input.error(
147
+ message,
148
+ { column: start.column, line: start.line },
149
+ { column: end.column, line: end.line },
150
+ opts
151
+ )
152
+ }
153
+ return new CssSyntaxError(message)
154
+ }
155
+
156
+ getProxyProcessor() {
157
+ return {
158
+ get(node, prop) {
159
+ if (prop === 'proxyOf') {
160
+ return node
161
+ } else if (prop === 'root') {
162
+ return () => node.root().toProxy()
163
+ } else {
164
+ return node[prop]
165
+ }
166
+ },
167
+
168
+ set(node, prop, value) {
169
+ if (node[prop] === value) return true
170
+ node[prop] = value
171
+ if (
172
+ prop === 'prop' ||
173
+ prop === 'value' ||
174
+ prop === 'name' ||
175
+ prop === 'params' ||
176
+ prop === 'important' ||
177
+ /* c8 ignore next */
178
+ prop === 'text'
179
+ ) {
180
+ node.markDirty()
181
+ }
182
+ return true
183
+ }
184
+ }
185
+ }
186
+
187
+ /* c8 ignore next 3 */
188
+ markClean() {
189
+ this[isClean] = true
190
+ }
191
+
192
+ markDirty() {
193
+ if (this[isClean]) {
194
+ this[isClean] = false
195
+ let next = this
196
+ while ((next = next.parent)) {
197
+ next[isClean] = false
198
+ }
199
+ }
200
+ }
201
+
202
+ next() {
203
+ if (!this.parent) return undefined
204
+ let index = this.parent.index(this)
205
+ return this.parent.nodes[index + 1]
206
+ }
207
+
208
+ positionBy(opts = {}) {
209
+ let pos = this.source.start
210
+ if (opts.index) {
211
+ pos = this.positionInside(opts.index)
212
+ } else if (opts.word) {
213
+ let inputString =
214
+ 'document' in this.source.input
215
+ ? this.source.input.document
216
+ : this.source.input.css
217
+ let stringRepresentation = inputString.slice(
218
+ sourceOffset(inputString, this.source.start),
219
+ sourceOffset(inputString, this.source.end)
220
+ )
221
+ let index = stringRepresentation.indexOf(opts.word)
222
+ if (index !== -1) pos = this.positionInside(index)
223
+ }
224
+ return pos
225
+ }
226
+
227
+ positionInside(index) {
228
+ let column = this.source.start.column
229
+ let line = this.source.start.line
230
+ let inputString =
231
+ 'document' in this.source.input
232
+ ? this.source.input.document
233
+ : this.source.input.css
234
+ let offset = sourceOffset(inputString, this.source.start)
235
+ let end = offset + index
236
+
237
+ for (let i = offset; i < end; i++) {
238
+ if (inputString[i] === '\n') {
239
+ column = 1
240
+ line += 1
241
+ } else {
242
+ column += 1
243
+ }
244
+ }
245
+
246
+ return { column, line, offset: end }
247
+ }
248
+
249
+ prev() {
250
+ if (!this.parent) return undefined
251
+ let index = this.parent.index(this)
252
+ return this.parent.nodes[index - 1]
253
+ }
254
+
255
+ rangeBy(opts = {}) {
256
+ let inputString =
257
+ 'document' in this.source.input
258
+ ? this.source.input.document
259
+ : this.source.input.css
260
+ let start = {
261
+ column: this.source.start.column,
262
+ line: this.source.start.line,
263
+ offset: sourceOffset(inputString, this.source.start)
264
+ }
265
+ let end = this.source.end
266
+ ? {
267
+ column: this.source.end.column + 1,
268
+ line: this.source.end.line,
269
+ offset:
270
+ typeof this.source.end.offset === 'number'
271
+ ? // `source.end.offset` is exclusive, so we don't need to add 1
272
+ this.source.end.offset
273
+ : // Since line/column in this.source.end is inclusive,
274
+ // the `sourceOffset(... , this.source.end)` returns an inclusive offset.
275
+ // So, we add 1 to convert it to exclusive.
276
+ sourceOffset(inputString, this.source.end) + 1
277
+ }
278
+ : {
279
+ column: start.column + 1,
280
+ line: start.line,
281
+ offset: start.offset + 1
282
+ }
283
+
284
+ if (opts.word) {
285
+ let stringRepresentation = inputString.slice(
286
+ sourceOffset(inputString, this.source.start),
287
+ sourceOffset(inputString, this.source.end)
288
+ )
289
+ let index = stringRepresentation.indexOf(opts.word)
290
+ if (index !== -1) {
291
+ start = this.positionInside(index)
292
+ end = this.positionInside(index + opts.word.length)
293
+ }
294
+ } else {
295
+ if (opts.start) {
296
+ start = {
297
+ column: opts.start.column,
298
+ line: opts.start.line,
299
+ offset: sourceOffset(inputString, opts.start)
300
+ }
301
+ } else if (opts.index) {
302
+ start = this.positionInside(opts.index)
303
+ }
304
+
305
+ if (opts.end) {
306
+ end = {
307
+ column: opts.end.column,
308
+ line: opts.end.line,
309
+ offset: sourceOffset(inputString, opts.end)
310
+ }
311
+ } else if (typeof opts.endIndex === 'number') {
312
+ end = this.positionInside(opts.endIndex)
313
+ } else if (opts.index) {
314
+ end = this.positionInside(opts.index + 1)
315
+ }
316
+ }
317
+
318
+ if (
319
+ end.line < start.line ||
320
+ (end.line === start.line && end.column <= start.column)
321
+ ) {
322
+ end = {
323
+ column: start.column + 1,
324
+ line: start.line,
325
+ offset: start.offset + 1
326
+ }
327
+ }
328
+
329
+ return { end, start }
330
+ }
331
+
332
+ raw(prop, defaultType) {
333
+ let str = new Stringifier()
334
+ return str.raw(this, prop, defaultType)
335
+ }
336
+
337
+ remove() {
338
+ if (this.parent) {
339
+ this.parent.removeChild(this)
340
+ }
341
+ this.parent = undefined
342
+ return this
343
+ }
344
+
345
+ replaceWith(...nodes) {
346
+ if (this.parent) {
347
+ let bookmark = this
348
+ let foundSelf = false
349
+ for (let node of nodes) {
350
+ if (node === this) {
351
+ foundSelf = true
352
+ } else if (foundSelf) {
353
+ this.parent.insertAfter(bookmark, node)
354
+ bookmark = node
355
+ } else {
356
+ this.parent.insertBefore(bookmark, node)
357
+ }
358
+ }
359
+
360
+ if (!foundSelf) {
361
+ this.remove()
362
+ }
363
+ }
364
+
365
+ return this
366
+ }
367
+
368
+ root() {
369
+ let result = this
370
+ while (result.parent && result.parent.type !== 'document') {
371
+ result = result.parent
372
+ }
373
+ return result
374
+ }
375
+
376
+ toJSON(_, inputs) {
377
+ let fixed = {}
378
+ let emitInputs = inputs == null
379
+ inputs = inputs || new Map()
380
+ let inputsNextIndex = 0
381
+
382
+ for (let name in this) {
383
+ if (!Object.prototype.hasOwnProperty.call(this, name)) {
384
+ /* c8 ignore next 2 */
385
+ continue
386
+ }
387
+ if (name === 'parent' || name === 'proxyCache') continue
388
+ let value = this[name]
389
+
390
+ if (Array.isArray(value)) {
391
+ fixed[name] = value.map(i => {
392
+ if (typeof i === 'object' && i.toJSON) {
393
+ return i.toJSON(null, inputs)
394
+ } else {
395
+ return i
396
+ }
397
+ })
398
+ } else if (typeof value === 'object' && value.toJSON) {
399
+ fixed[name] = value.toJSON(null, inputs)
400
+ } else if (name === 'source') {
401
+ if (value == null) continue
402
+ let inputId = inputs.get(value.input)
403
+ if (inputId == null) {
404
+ inputId = inputsNextIndex
405
+ inputs.set(value.input, inputsNextIndex)
406
+ inputsNextIndex++
407
+ }
408
+ fixed[name] = {
409
+ end: value.end,
410
+ inputId,
411
+ start: value.start
412
+ }
413
+ } else {
414
+ fixed[name] = value
415
+ }
416
+ }
417
+
418
+ if (emitInputs) {
419
+ fixed.inputs = [...inputs.keys()].map(input => input.toJSON())
420
+ }
421
+
422
+ return fixed
423
+ }
424
+
425
+ toProxy() {
426
+ if (!this.proxyCache) {
427
+ this.proxyCache = new Proxy(this, this.getProxyProcessor())
428
+ }
429
+ return this.proxyCache
430
+ }
431
+
432
+ toString(stringifier = stringify) {
433
+ if (stringifier.stringify) stringifier = stringifier.stringify
434
+ let result = ''
435
+ stringifier(this, i => {
436
+ result += i
437
+ })
438
+ return result
439
+ }
440
+
441
+ warn(result, text, opts = {}) {
442
+ let data = { node: this }
443
+ for (let i in opts) data[i] = opts[i]
444
+ return result.warn(text, data)
445
+ }
446
+ }
447
+
448
+ module.exports = Node
449
+ Node.default = Node
@@ -0,0 +1,9 @@
1
+ import { Parser } from './postcss.js'
2
+
3
+ interface Parse extends Parser {
4
+ default: Parse
5
+ }
6
+
7
+ declare const parse: Parse
8
+
9
+ export = parse
@@ -0,0 +1,42 @@
1
+ 'use strict'
2
+
3
+ let Container = require('./container')
4
+ let Input = require('./input')
5
+ let Parser = require('./parser')
6
+
7
+ function parse(css, opts) {
8
+ let input = new Input(css, opts)
9
+ let parser = new Parser(input)
10
+ try {
11
+ parser.parse()
12
+ } catch (e) {
13
+ if (process.env.NODE_ENV !== 'production') {
14
+ if (e.name === 'CssSyntaxError' && opts && opts.from) {
15
+ if (/\.scss$/i.test(opts.from)) {
16
+ e.message +=
17
+ '\nYou tried to parse SCSS with ' +
18
+ 'the standard CSS parser; ' +
19
+ 'try again with the postcss-scss parser'
20
+ } else if (/\.sass/i.test(opts.from)) {
21
+ e.message +=
22
+ '\nYou tried to parse Sass with ' +
23
+ 'the standard CSS parser; ' +
24
+ 'try again with the postcss-sass parser'
25
+ } else if (/\.less$/i.test(opts.from)) {
26
+ e.message +=
27
+ '\nYou tried to parse Less with ' +
28
+ 'the standard CSS parser; ' +
29
+ 'try again with the postcss-less parser'
30
+ }
31
+ }
32
+ }
33
+ throw e
34
+ }
35
+
36
+ return parser.root
37
+ }
38
+
39
+ module.exports = parse
40
+ parse.default = parse
41
+
42
+ Container.registerParse(parse)