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,61 @@
1
+ 'use strict'
2
+
3
+ let Container = require('./container')
4
+
5
+ let LazyResult, Processor
6
+
7
+ class Root extends Container {
8
+ constructor(defaults) {
9
+ super(defaults)
10
+ this.type = 'root'
11
+ if (!this.nodes) this.nodes = []
12
+ }
13
+
14
+ normalize(child, sample, type) {
15
+ let nodes = super.normalize(child)
16
+
17
+ if (sample) {
18
+ if (type === 'prepend') {
19
+ if (this.nodes.length > 1) {
20
+ sample.raws.before = this.nodes[1].raws.before
21
+ } else {
22
+ delete sample.raws.before
23
+ }
24
+ } else if (this.first !== sample) {
25
+ for (let node of nodes) {
26
+ node.raws.before = sample.raws.before
27
+ }
28
+ }
29
+ }
30
+
31
+ return nodes
32
+ }
33
+
34
+ removeChild(child, ignore) {
35
+ let index = this.index(child)
36
+
37
+ if (!ignore && index === 0 && this.nodes.length > 1) {
38
+ this.nodes[1].raws.before = this.nodes[index].raws.before
39
+ }
40
+
41
+ return super.removeChild(child)
42
+ }
43
+
44
+ toResult(opts = {}) {
45
+ let lazy = new LazyResult(new Processor(), this, opts)
46
+ return lazy.stringify()
47
+ }
48
+ }
49
+
50
+ Root.registerLazyResult = dependant => {
51
+ LazyResult = dependant
52
+ }
53
+
54
+ Root.registerProcessor = dependant => {
55
+ Processor = dependant
56
+ }
57
+
58
+ module.exports = Root
59
+ Root.default = Root
60
+
61
+ Container.registerRoot(Root)
@@ -0,0 +1,126 @@
1
+ import Container, {
2
+ ContainerProps,
3
+ ContainerWithChildren
4
+ } from './container.js'
5
+
6
+ declare namespace Rule {
7
+ export interface RuleRaws extends Record<string, unknown> {
8
+ /**
9
+ * The space symbols after the last child of the node to the end of the node.
10
+ */
11
+ after?: string
12
+
13
+ /**
14
+ * The space symbols before the node. It also stores `*`
15
+ * and `_` symbols before the declaration (IE hack).
16
+ */
17
+ before?: string
18
+
19
+ /**
20
+ * The symbols between the selector and `{` for rules.
21
+ */
22
+ between?: string
23
+
24
+ /**
25
+ * Contains the text of the semicolon after this rule.
26
+ */
27
+ ownSemicolon?: string
28
+
29
+ /**
30
+ * The rule’s selector with comments.
31
+ */
32
+ selector?: {
33
+ raw: string
34
+ value: string
35
+ }
36
+
37
+ /**
38
+ * Contains `true` if the last child has an (optional) semicolon.
39
+ */
40
+ semicolon?: boolean
41
+ }
42
+
43
+ export type RuleProps = {
44
+ /** Information used to generate byte-to-byte equal node string as it was in the origin input. */
45
+ raws?: RuleRaws
46
+ } & (
47
+ | {
48
+ /** Selector or selectors of the rule. */
49
+ selector: string
50
+ selectors?: never
51
+ }
52
+ | {
53
+ selector?: never
54
+ /** Selectors of the rule represented as an array of strings. */
55
+ selectors: readonly string[]
56
+ }
57
+ ) & ContainerProps
58
+
59
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
60
+ export { Rule_ as default }
61
+ }
62
+
63
+ /**
64
+ * Represents a CSS rule: a selector followed by a declaration block.
65
+ *
66
+ * ```js
67
+ * Once (root, { Rule }) {
68
+ * let a = new Rule({ selector: 'a' })
69
+ * a.append(…)
70
+ * root.append(a)
71
+ * }
72
+ * ```
73
+ *
74
+ * ```js
75
+ * const root = postcss.parse('a{}')
76
+ * const rule = root.first
77
+ * rule.type //=> 'rule'
78
+ * rule.toString() //=> 'a{}'
79
+ * ```
80
+ */
81
+ declare class Rule_ extends Container {
82
+ nodes: NonNullable<Container['nodes']>
83
+ parent: ContainerWithChildren | undefined
84
+ raws: Rule.RuleRaws
85
+ type: 'rule'
86
+ /**
87
+ * The rule’s full selector represented as a string.
88
+ *
89
+ * ```js
90
+ * const root = postcss.parse('a, b { }')
91
+ * const rule = root.first
92
+ * rule.selector //=> 'a, b'
93
+ * ```
94
+ */
95
+ get selector(): string
96
+
97
+ set selector(value: string)
98
+ /**
99
+ * An array containing the rule’s individual selectors.
100
+ * Groups of selectors are split at commas.
101
+ *
102
+ * ```js
103
+ * const root = postcss.parse('a, b { }')
104
+ * const rule = root.first
105
+ *
106
+ * rule.selector //=> 'a, b'
107
+ * rule.selectors //=> ['a', 'b']
108
+ *
109
+ * rule.selectors = ['a', 'strong']
110
+ * rule.selector //=> 'a, strong'
111
+ * ```
112
+ */
113
+ get selectors(): string[]
114
+
115
+ set selectors(values: string[])
116
+
117
+ constructor(defaults?: Rule.RuleProps)
118
+ assign(overrides: object | Rule.RuleProps): this
119
+ clone(overrides?: Partial<Rule.RuleProps>): this
120
+ cloneAfter(overrides?: Partial<Rule.RuleProps>): this
121
+ cloneBefore(overrides?: Partial<Rule.RuleProps>): this
122
+ }
123
+
124
+ declare class Rule extends Rule_ {}
125
+
126
+ export = Rule
@@ -0,0 +1,27 @@
1
+ 'use strict'
2
+
3
+ let Container = require('./container')
4
+ let list = require('./list')
5
+
6
+ class Rule extends Container {
7
+ get selectors() {
8
+ return list.comma(this.selector)
9
+ }
10
+
11
+ set selectors(values) {
12
+ let match = this.selector ? this.selector.match(/,\s*/) : null
13
+ let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')
14
+ this.selector = values.join(sep)
15
+ }
16
+
17
+ constructor(defaults) {
18
+ super(defaults)
19
+ this.type = 'rule'
20
+ if (!this.nodes) this.nodes = []
21
+ }
22
+ }
23
+
24
+ module.exports = Rule
25
+ Rule.default = Rule
26
+
27
+ Container.registerRule(Rule)
@@ -0,0 +1,46 @@
1
+ import {
2
+ AnyNode,
3
+ AtRule,
4
+ Builder,
5
+ Comment,
6
+ Container,
7
+ Declaration,
8
+ Document,
9
+ Root,
10
+ Rule
11
+ } from './postcss.js'
12
+
13
+ declare namespace Stringifier {
14
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
15
+ export { Stringifier_ as default }
16
+ }
17
+
18
+ declare class Stringifier_ {
19
+ builder: Builder
20
+ constructor(builder: Builder)
21
+ atrule(node: AtRule, semicolon?: boolean): void
22
+ beforeAfter(node: AnyNode, detect: 'after' | 'before'): string
23
+ block(node: AnyNode, start: string): void
24
+ body(node: Container): void
25
+ comment(node: Comment): void
26
+ decl(node: Declaration, semicolon?: boolean): void
27
+ document(node: Document): void
28
+ raw(node: AnyNode, own: null | string, detect?: string): boolean | string
29
+ rawBeforeClose(root: Root): string | undefined
30
+ rawBeforeComment(root: Root, node: Comment): string | undefined
31
+ rawBeforeDecl(root: Root, node: Declaration): string | undefined
32
+ rawBeforeOpen(root: Root): string | undefined
33
+ rawBeforeRule(root: Root): string | undefined
34
+ rawColon(root: Root): string | undefined
35
+ rawEmptyBody(root: Root): string | undefined
36
+ rawIndent(root: Root): string | undefined
37
+ rawSemicolon(root: Root): boolean | undefined
38
+ rawValue(node: AnyNode, prop: string): number | string
39
+ root(node: Root): void
40
+ rule(node: Rule): void
41
+ stringify(node: AnyNode, semicolon?: boolean): void
42
+ }
43
+
44
+ declare class Stringifier extends Stringifier_ {}
45
+
46
+ export = Stringifier
@@ -0,0 +1,353 @@
1
+ 'use strict'
2
+
3
+ const DEFAULT_RAW = {
4
+ after: '\n',
5
+ beforeClose: '\n',
6
+ beforeComment: '\n',
7
+ beforeDecl: '\n',
8
+ beforeOpen: ' ',
9
+ beforeRule: '\n',
10
+ colon: ': ',
11
+ commentLeft: ' ',
12
+ commentRight: ' ',
13
+ emptyBody: '',
14
+ indent: ' ',
15
+ semicolon: false
16
+ }
17
+
18
+ function capitalize(str) {
19
+ return str[0].toUpperCase() + str.slice(1)
20
+ }
21
+
22
+ class Stringifier {
23
+ constructor(builder) {
24
+ this.builder = builder
25
+ }
26
+
27
+ atrule(node, semicolon) {
28
+ let name = '@' + node.name
29
+ let params = node.params ? this.rawValue(node, 'params') : ''
30
+
31
+ if (typeof node.raws.afterName !== 'undefined') {
32
+ name += node.raws.afterName
33
+ } else if (params) {
34
+ name += ' '
35
+ }
36
+
37
+ if (node.nodes) {
38
+ this.block(node, name + params)
39
+ } else {
40
+ let end = (node.raws.between || '') + (semicolon ? ';' : '')
41
+ this.builder(name + params + end, node)
42
+ }
43
+ }
44
+
45
+ beforeAfter(node, detect) {
46
+ let value
47
+ if (node.type === 'decl') {
48
+ value = this.raw(node, null, 'beforeDecl')
49
+ } else if (node.type === 'comment') {
50
+ value = this.raw(node, null, 'beforeComment')
51
+ } else if (detect === 'before') {
52
+ value = this.raw(node, null, 'beforeRule')
53
+ } else {
54
+ value = this.raw(node, null, 'beforeClose')
55
+ }
56
+
57
+ let buf = node.parent
58
+ let depth = 0
59
+ while (buf && buf.type !== 'root') {
60
+ depth += 1
61
+ buf = buf.parent
62
+ }
63
+
64
+ if (value.includes('\n')) {
65
+ let indent = this.raw(node, null, 'indent')
66
+ if (indent.length) {
67
+ for (let step = 0; step < depth; step++) value += indent
68
+ }
69
+ }
70
+
71
+ return value
72
+ }
73
+
74
+ block(node, start) {
75
+ let between = this.raw(node, 'between', 'beforeOpen')
76
+ this.builder(start + between + '{', node, 'start')
77
+
78
+ let after
79
+ if (node.nodes && node.nodes.length) {
80
+ this.body(node)
81
+ after = this.raw(node, 'after')
82
+ } else {
83
+ after = this.raw(node, 'after', 'emptyBody')
84
+ }
85
+
86
+ if (after) this.builder(after)
87
+ this.builder('}', node, 'end')
88
+ }
89
+
90
+ body(node) {
91
+ let last = node.nodes.length - 1
92
+ while (last > 0) {
93
+ if (node.nodes[last].type !== 'comment') break
94
+ last -= 1
95
+ }
96
+
97
+ let semicolon = this.raw(node, 'semicolon')
98
+ for (let i = 0; i < node.nodes.length; i++) {
99
+ let child = node.nodes[i]
100
+ let before = this.raw(child, 'before')
101
+ if (before) this.builder(before)
102
+ this.stringify(child, last !== i || semicolon)
103
+ }
104
+ }
105
+
106
+ comment(node) {
107
+ let left = this.raw(node, 'left', 'commentLeft')
108
+ let right = this.raw(node, 'right', 'commentRight')
109
+ this.builder('/*' + left + node.text + right + '*/', node)
110
+ }
111
+
112
+ decl(node, semicolon) {
113
+ let between = this.raw(node, 'between', 'colon')
114
+ let string = node.prop + between + this.rawValue(node, 'value')
115
+
116
+ if (node.important) {
117
+ string += node.raws.important || ' !important'
118
+ }
119
+
120
+ if (semicolon) string += ';'
121
+ this.builder(string, node)
122
+ }
123
+
124
+ document(node) {
125
+ this.body(node)
126
+ }
127
+
128
+ raw(node, own, detect) {
129
+ let value
130
+ if (!detect) detect = own
131
+
132
+ // Already had
133
+ if (own) {
134
+ value = node.raws[own]
135
+ if (typeof value !== 'undefined') return value
136
+ }
137
+
138
+ let parent = node.parent
139
+
140
+ if (detect === 'before') {
141
+ // Hack for first rule in CSS
142
+ if (!parent || (parent.type === 'root' && parent.first === node)) {
143
+ return ''
144
+ }
145
+
146
+ // `root` nodes in `document` should use only their own raws
147
+ if (parent && parent.type === 'document') {
148
+ return ''
149
+ }
150
+ }
151
+
152
+ // Floating child without parent
153
+ if (!parent) return DEFAULT_RAW[detect]
154
+
155
+ // Detect style by other nodes
156
+ let root = node.root()
157
+ if (!root.rawCache) root.rawCache = {}
158
+ if (typeof root.rawCache[detect] !== 'undefined') {
159
+ return root.rawCache[detect]
160
+ }
161
+
162
+ if (detect === 'before' || detect === 'after') {
163
+ return this.beforeAfter(node, detect)
164
+ } else {
165
+ let method = 'raw' + capitalize(detect)
166
+ if (this[method]) {
167
+ value = this[method](root, node)
168
+ } else {
169
+ root.walk(i => {
170
+ value = i.raws[own]
171
+ if (typeof value !== 'undefined') return false
172
+ })
173
+ }
174
+ }
175
+
176
+ if (typeof value === 'undefined') value = DEFAULT_RAW[detect]
177
+
178
+ root.rawCache[detect] = value
179
+ return value
180
+ }
181
+
182
+ rawBeforeClose(root) {
183
+ let value
184
+ root.walk(i => {
185
+ if (i.nodes && i.nodes.length > 0) {
186
+ if (typeof i.raws.after !== 'undefined') {
187
+ value = i.raws.after
188
+ if (value.includes('\n')) {
189
+ value = value.replace(/[^\n]+$/, '')
190
+ }
191
+ return false
192
+ }
193
+ }
194
+ })
195
+ if (value) value = value.replace(/\S/g, '')
196
+ return value
197
+ }
198
+
199
+ rawBeforeComment(root, node) {
200
+ let value
201
+ root.walkComments(i => {
202
+ if (typeof i.raws.before !== 'undefined') {
203
+ value = i.raws.before
204
+ if (value.includes('\n')) {
205
+ value = value.replace(/[^\n]+$/, '')
206
+ }
207
+ return false
208
+ }
209
+ })
210
+ if (typeof value === 'undefined') {
211
+ value = this.raw(node, null, 'beforeDecl')
212
+ } else if (value) {
213
+ value = value.replace(/\S/g, '')
214
+ }
215
+ return value
216
+ }
217
+
218
+ rawBeforeDecl(root, node) {
219
+ let value
220
+ root.walkDecls(i => {
221
+ if (typeof i.raws.before !== 'undefined') {
222
+ value = i.raws.before
223
+ if (value.includes('\n')) {
224
+ value = value.replace(/[^\n]+$/, '')
225
+ }
226
+ return false
227
+ }
228
+ })
229
+ if (typeof value === 'undefined') {
230
+ value = this.raw(node, null, 'beforeRule')
231
+ } else if (value) {
232
+ value = value.replace(/\S/g, '')
233
+ }
234
+ return value
235
+ }
236
+
237
+ rawBeforeOpen(root) {
238
+ let value
239
+ root.walk(i => {
240
+ if (i.type !== 'decl') {
241
+ value = i.raws.between
242
+ if (typeof value !== 'undefined') return false
243
+ }
244
+ })
245
+ return value
246
+ }
247
+
248
+ rawBeforeRule(root) {
249
+ let value
250
+ root.walk(i => {
251
+ if (i.nodes && (i.parent !== root || root.first !== i)) {
252
+ if (typeof i.raws.before !== 'undefined') {
253
+ value = i.raws.before
254
+ if (value.includes('\n')) {
255
+ value = value.replace(/[^\n]+$/, '')
256
+ }
257
+ return false
258
+ }
259
+ }
260
+ })
261
+ if (value) value = value.replace(/\S/g, '')
262
+ return value
263
+ }
264
+
265
+ rawColon(root) {
266
+ let value
267
+ root.walkDecls(i => {
268
+ if (typeof i.raws.between !== 'undefined') {
269
+ value = i.raws.between.replace(/[^\s:]/g, '')
270
+ return false
271
+ }
272
+ })
273
+ return value
274
+ }
275
+
276
+ rawEmptyBody(root) {
277
+ let value
278
+ root.walk(i => {
279
+ if (i.nodes && i.nodes.length === 0) {
280
+ value = i.raws.after
281
+ if (typeof value !== 'undefined') return false
282
+ }
283
+ })
284
+ return value
285
+ }
286
+
287
+ rawIndent(root) {
288
+ if (root.raws.indent) return root.raws.indent
289
+ let value
290
+ root.walk(i => {
291
+ let p = i.parent
292
+ if (p && p !== root && p.parent && p.parent === root) {
293
+ if (typeof i.raws.before !== 'undefined') {
294
+ let parts = i.raws.before.split('\n')
295
+ value = parts[parts.length - 1]
296
+ value = value.replace(/\S/g, '')
297
+ return false
298
+ }
299
+ }
300
+ })
301
+ return value
302
+ }
303
+
304
+ rawSemicolon(root) {
305
+ let value
306
+ root.walk(i => {
307
+ if (i.nodes && i.nodes.length && i.last.type === 'decl') {
308
+ value = i.raws.semicolon
309
+ if (typeof value !== 'undefined') return false
310
+ }
311
+ })
312
+ return value
313
+ }
314
+
315
+ rawValue(node, prop) {
316
+ let value = node[prop]
317
+ let raw = node.raws[prop]
318
+ if (raw && raw.value === value) {
319
+ return raw.raw
320
+ }
321
+
322
+ return value
323
+ }
324
+
325
+ root(node) {
326
+ this.body(node)
327
+ if (node.raws.after) this.builder(node.raws.after)
328
+ }
329
+
330
+ rule(node) {
331
+ this.block(node, this.rawValue(node, 'selector'))
332
+ if (node.raws.ownSemicolon) {
333
+ this.builder(node.raws.ownSemicolon, node, 'end')
334
+ }
335
+ }
336
+
337
+ stringify(node, semicolon) {
338
+ /* c8 ignore start */
339
+ if (!this[node.type]) {
340
+ throw new Error(
341
+ 'Unknown AST node type ' +
342
+ node.type +
343
+ '. ' +
344
+ 'Maybe you need to change PostCSS stringifier.'
345
+ )
346
+ }
347
+ /* c8 ignore stop */
348
+ this[node.type](node, semicolon)
349
+ }
350
+ }
351
+
352
+ module.exports = Stringifier
353
+ Stringifier.default = Stringifier
@@ -0,0 +1,9 @@
1
+ import { Stringifier } from './postcss.js'
2
+
3
+ interface Stringify extends Stringifier {
4
+ default: Stringify
5
+ }
6
+
7
+ declare const stringify: Stringify
8
+
9
+ export = stringify
@@ -0,0 +1,11 @@
1
+ 'use strict'
2
+
3
+ let Stringifier = require('./stringifier')
4
+
5
+ function stringify(node, builder) {
6
+ let str = new Stringifier(builder)
7
+ str.stringify(node)
8
+ }
9
+
10
+ module.exports = stringify
11
+ stringify.default = stringify
@@ -0,0 +1,5 @@
1
+ 'use strict'
2
+
3
+ module.exports.isClean = Symbol('isClean')
4
+
5
+ module.exports.my = Symbol('my')
@@ -0,0 +1,70 @@
1
+ 'use strict'
2
+
3
+ let pico = require('picocolors')
4
+
5
+ let tokenizer = require('./tokenize')
6
+
7
+ let Input
8
+
9
+ function registerInput(dependant) {
10
+ Input = dependant
11
+ }
12
+
13
+ const HIGHLIGHT_THEME = {
14
+ ';': pico.yellow,
15
+ ':': pico.yellow,
16
+ '(': pico.cyan,
17
+ ')': pico.cyan,
18
+ '[': pico.yellow,
19
+ ']': pico.yellow,
20
+ '{': pico.yellow,
21
+ '}': pico.yellow,
22
+ 'at-word': pico.cyan,
23
+ 'brackets': pico.cyan,
24
+ 'call': pico.cyan,
25
+ 'class': pico.yellow,
26
+ 'comment': pico.gray,
27
+ 'hash': pico.magenta,
28
+ 'string': pico.green
29
+ }
30
+
31
+ function getTokenType([type, value], processor) {
32
+ if (type === 'word') {
33
+ if (value[0] === '.') {
34
+ return 'class'
35
+ }
36
+ if (value[0] === '#') {
37
+ return 'hash'
38
+ }
39
+ }
40
+
41
+ if (!processor.endOfFile()) {
42
+ let next = processor.nextToken()
43
+ processor.back(next)
44
+ if (next[0] === 'brackets' || next[0] === '(') return 'call'
45
+ }
46
+
47
+ return type
48
+ }
49
+
50
+ function terminalHighlight(css) {
51
+ let processor = tokenizer(new Input(css), { ignoreErrors: true })
52
+ let result = ''
53
+ while (!processor.endOfFile()) {
54
+ let token = processor.nextToken()
55
+ let color = HIGHLIGHT_THEME[getTokenType(token, processor)]
56
+ if (color) {
57
+ result += token[1]
58
+ .split(/\r?\n/)
59
+ .map(i => color(i))
60
+ .join('\n')
61
+ } else {
62
+ result += token[1]
63
+ }
64
+ }
65
+ return result
66
+ }
67
+
68
+ terminalHighlight.registerInput = registerInput
69
+
70
+ module.exports = terminalHighlight