@maizzle/framework 4.8.8 → 5.0.0-beta.0

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 (80) hide show
  1. package/bin/maizzle +3 -1
  2. package/package.json +64 -55
  3. package/src/commands/build.js +244 -19
  4. package/src/commands/serve.js +2 -197
  5. package/src/generators/plaintext.js +192 -91
  6. package/src/generators/render.js +128 -0
  7. package/src/index.js +45 -13
  8. package/src/{generators/posthtml → posthtml}/defaultComponentsConfig.js +6 -4
  9. package/src/{generators/posthtml → posthtml}/defaultConfig.js +1 -1
  10. package/src/posthtml/index.js +74 -0
  11. package/src/posthtml/plugins/expandLinkTag.js +36 -0
  12. package/src/server/client.js +181 -0
  13. package/src/server/index.js +383 -0
  14. package/src/server/routes/hmr.js +24 -0
  15. package/src/server/routes/index.js +38 -0
  16. package/src/server/views/error.html +83 -0
  17. package/src/server/views/index.html +24 -0
  18. package/src/server/websockets.js +27 -0
  19. package/src/transformers/addAttributes.js +30 -0
  20. package/src/transformers/attributeToStyle.js +30 -36
  21. package/src/transformers/baseUrl.js +56 -27
  22. package/src/transformers/comb.js +51 -0
  23. package/src/transformers/core.js +20 -0
  24. package/src/transformers/filters/defaultFilters.js +90 -71
  25. package/src/transformers/filters/index.js +14 -78
  26. package/src/transformers/index.js +268 -63
  27. package/src/transformers/inline.js +240 -0
  28. package/src/transformers/markdown.js +13 -14
  29. package/src/transformers/minify.js +21 -16
  30. package/src/transformers/posthtmlMso.js +13 -8
  31. package/src/transformers/prettify.js +16 -15
  32. package/src/transformers/preventWidows.js +32 -28
  33. package/src/transformers/removeAttributes.js +19 -19
  34. package/src/transformers/replaceStrings.js +30 -9
  35. package/src/transformers/safeClassNames.js +24 -24
  36. package/src/transformers/shorthandCss.js +22 -0
  37. package/src/transformers/sixHex.js +17 -17
  38. package/src/transformers/urlParameters.js +18 -16
  39. package/src/transformers/useAttributeSizes.js +65 -0
  40. package/src/utils/getConfigByFilePath.js +124 -0
  41. package/src/utils/node.js +68 -0
  42. package/src/utils/string.js +117 -0
  43. package/types/build.d.ts +117 -57
  44. package/types/components.d.ts +130 -112
  45. package/types/config.d.ts +454 -242
  46. package/types/css/inline.d.ts +234 -0
  47. package/types/css/purge.d.ts +125 -0
  48. package/types/events.d.ts +5 -105
  49. package/types/index.d.ts +148 -116
  50. package/types/markdown.d.ts +20 -18
  51. package/types/minify.d.ts +122 -120
  52. package/types/plaintext.d.ts +46 -52
  53. package/types/posthtml.d.ts +103 -136
  54. package/types/render.d.ts +0 -117
  55. package/types/urlParameters.d.ts +21 -20
  56. package/types/widowWords.d.ts +9 -7
  57. package/src/functions/plaintext.js +0 -5
  58. package/src/functions/render.js +0 -5
  59. package/src/generators/config.js +0 -52
  60. package/src/generators/output/index.js +0 -4
  61. package/src/generators/output/to-disk.js +0 -254
  62. package/src/generators/output/to-string.js +0 -73
  63. package/src/generators/postcss.js +0 -23
  64. package/src/generators/posthtml/index.js +0 -75
  65. package/src/generators/tailwindcss.js +0 -157
  66. package/src/transformers/extraAttributes.js +0 -33
  67. package/src/transformers/inlineCss.js +0 -42
  68. package/src/transformers/removeInlineBackgroundColor.js +0 -57
  69. package/src/transformers/removeInlineSizes.js +0 -45
  70. package/src/transformers/removeInlinedSelectors.js +0 -100
  71. package/src/transformers/removeUnusedCss.js +0 -48
  72. package/src/transformers/shorthandInlineCSS.js +0 -26
  73. package/src/utils/helpers.js +0 -13
  74. package/types/baseUrl.d.ts +0 -79
  75. package/types/fetch.d.ts +0 -143
  76. package/types/inlineCss.d.ts +0 -207
  77. package/types/layouts.d.ts +0 -39
  78. package/types/removeUnusedCss.d.ts +0 -115
  79. package/types/tailwind.d.ts +0 -22
  80. package/types/templates.d.ts +0 -181
@@ -1,177 +1,195 @@
1
+ import type ExpressionsConfig from './expressions';
2
+ import type { Options as PostHTMLParserOptions } from 'posthtml-parser';
3
+
4
+ interface AnyObject {
5
+ [key: string]: string | AnyObject;
6
+ }
7
+
1
8
  export default interface ComponentsConfig {
2
9
  /**
3
- Root path where to look for folders containing component files.
4
-
5
- @default './'
6
- */
10
+ * Root path where to look for folders containing component files.
11
+ *
12
+ * @default './'
13
+ */
7
14
  root?: string;
8
15
 
9
16
  /**
10
- Paths where to look for component files. Must be relative to `root`.
11
-
12
- @default ['src/components', 'src/layouts', 'src/templates']
13
- */
17
+ * Paths where to look for component files. Must be relative to `root`.
18
+ *
19
+ * @default ['src/components', 'src/layouts', 'src/templates']
20
+ */
14
21
  folders?: string[];
15
22
 
16
23
  /**
17
- Prefix to use for component tags.
18
-
19
- @default 'x-'
20
- */
24
+ * Prefix to use for component tags.
25
+ *
26
+ * @default 'x-'
27
+ */
21
28
  tagPrefix?: string;
22
29
 
23
30
  /**
24
- Tag name to be used in HTML when using a component.
25
-
26
- @default 'component'
27
- */
31
+ * Tag name to be used in HTML when using a component.
32
+ *
33
+ * @default 'component'
34
+ */
28
35
  tag?: string;
29
36
 
30
37
  /**
31
- Attribute name to be used when referencing a component via its path.
32
-
33
- @default 'src'
34
- */
38
+ * Attribute name to be used when referencing a component via its path.
39
+ *
40
+ * @default 'src'
41
+ */
35
42
  attribute?: string;
36
43
 
37
44
  /**
38
- File extension that component files must use.
39
- Any other files will be ignored and not be made available as components.
40
-
41
- @default 'html'
42
- */
45
+ * File extension that component files must use.
46
+ * Any other files will be ignored and not be made available as components.
47
+ *
48
+ * @default 'html'
49
+ */
43
50
  fileExtension?: string;
44
51
 
45
52
  /**
46
- Name of the tag that will be replaced with the content that is passed to the component.
47
-
48
- @default 'content'
49
- */
53
+ * Name of the tag that will be replaced with the content that is passed to the component.
54
+ *
55
+ * @default 'yield'
56
+ */
50
57
  yield?: string;
51
58
 
52
59
  /**
53
- Name of the slot tag, where the content will be injected.
54
-
55
- @default 'slot'
60
+ * Name of the slot tag, where the content will be injected.
61
+ *
62
+ * @default 'slot'
56
63
  */
57
64
  slot?: string;
58
65
 
59
66
  /**
60
- Name of the fill tag, where the content to be injected is defined.
61
-
62
- @default 'fill'
63
- */
67
+ * Name of the fill tag, where the content to be injected is defined.
68
+ *
69
+ * @default 'fill'
70
+ */
64
71
  fill?: string;
65
72
 
66
73
  /**
67
- String to use as a separator between the slot tag and its name.
68
-
69
- @default ':'
70
- */
74
+ * String to use as a separator between the slot tag and its name.
75
+ *
76
+ * @default ':'
77
+ */
71
78
  slotSeparator?: string;
72
79
 
73
80
  /**
74
- Tag name for pushing content to a stack.
75
-
76
- @default 'push'
77
- */
81
+ * Tag name for pushing content to a stack.
82
+ *
83
+ * @default 'push'
84
+ */
78
85
  push?: string;
79
86
 
80
87
  /**
81
- Tag name for popping (rendering) content from a stack.
82
-
83
- @default 'stack'
84
- */
88
+ * Tag name for popping (rendering) content from a stack.
89
+ *
90
+ * @default 'stack'
91
+ */
85
92
  stack?: string;
86
93
 
87
94
  /**
88
- Name of the props attribute to use in the `<script>` tag of a component.
89
-
90
- @default 'props'
91
- */
95
+ * Name of the props attribute to use in the `<script>` tag of a component.
96
+ *
97
+ * @default 'props'
98
+ */
92
99
  propsScriptAttribute?: string;
93
100
 
94
101
  /**
95
- Name of the object that will be used to store the props of a component.
96
-
97
- @default 'props'
98
- */
102
+ * Name of the object that will be used to store the props of a component.
103
+ *
104
+ * @default 'props'
105
+ */
99
106
  propsContext?: string;
100
107
 
101
108
  /**
102
- Name of the attribute that will be used to pass props to a component as JSON.
103
-
104
- @default 'locals'
105
- */
109
+ * Name of the attribute that will be used to pass props to a component as JSON.
110
+ *
111
+ * @default 'locals'
112
+ */
106
113
  propsAttribute?: string;
107
114
 
108
115
  /**
109
- Name of the key to use when retrieving props passed to a slot via `$slots.slotName.props`.
110
-
111
- @default 'props'
112
- */
116
+ * Name of the key to use when retrieving props passed to a slot via `$slots.slotName.props`.
117
+ *
118
+ * @default 'props'
119
+ */
113
120
  propsSlot?: string;
114
121
 
115
122
  /**
116
- Configure [`posthtml-parser`](https://github.com/posthtml/posthtml-parser).
117
-
118
- @default {recognizeSelfClosing:true}
119
- */
120
- parserOptions?: Record<string, any>;
121
-
122
- /**
123
- Configure [`posthtml-expressions`](https://github.com/posthtml/posthtml-expressions).
124
-
125
- @default {} // custom object
126
- */
127
- expressions?: Record<any, any>;
128
-
129
- /**
130
- PostHTML plugins to apply to each parsed component.
131
-
132
- @default []
133
- */
134
- plugins?: any[];
135
-
136
- /**
137
- Extra rules for the PostHTML plugin that is used by components to parse attributes.
138
-
139
- @default {}
140
- */
141
- attrsParserRules?: Record<any, any>;
142
-
143
- /**
144
- In strict mode, an error will be thrown if a component cannot be rendered.
145
-
146
- @default true
147
- */
123
+ * Configure [`posthtml-parser`](https://github.com/posthtml/posthtml-parser).
124
+ *
125
+ * @default
126
+ * {
127
+ * recognizeNoValueAttribute: true,
128
+ * recognizeSelfClosing: true
129
+ * }
130
+ */
131
+ parserOptions?: PostHTMLParserOptions;
132
+
133
+ /**
134
+ * Configure [`posthtml-expressions`](https://github.com/posthtml/posthtml-expressions).
135
+ *
136
+ * @default
137
+ * {
138
+ * strictMode: false,
139
+ * missingLocal: '{local}',
140
+ * locals: {
141
+ * page: config, // the computed Maizzle config object
142
+ * }
143
+ * }
144
+ */
145
+ expressions?: ExpressionsConfig;
146
+
147
+ /**
148
+ * PostHTML plugins to apply to each parsed component.
149
+ *
150
+ * @default []
151
+ */
152
+ plugins?: Array<() => void>;
153
+
154
+ /**
155
+ * Extra rules for the PostHTML plugin that is used by components to parse attributes.
156
+ *
157
+ * @default {}
158
+ */
159
+ attrsParserRules?: Record<string, AnyObject>;
160
+
161
+ /**
162
+ * In strict mode, an error will be thrown if a component cannot be rendered.
163
+ *
164
+ * @default true
165
+ */
148
166
  strict?: boolean;
149
167
 
150
168
  /**
151
- Utility methods to be passed to `<script props>` in a component.
152
-
153
- @default {merge: _.mergeWith, template: _.template}
154
- */
169
+ * Utility methods to be passed to `<script props>` in a component.
170
+ *
171
+ * @default {merge: _.mergeWith, template: _.template}
172
+ */
155
173
  utilities?: Record<string, unknown>;
156
174
 
157
175
  /**
158
- Define additional attributes that should be preserved for specific HTML elements.
159
-
160
- @default {}
161
- */
176
+ * Define additional attributes that should be preserved for specific HTML elements.
177
+ *
178
+ * @default {}
179
+ */
162
180
  elementAttributes?: Record<string, void>;
163
181
 
164
182
  /**
165
- Attributes that should be preserved on all elements in components.
166
-
167
- @default ['data-*']
168
- */
183
+ * Attributes that should be preserved on all elements in components.
184
+ *
185
+ * @default ['data-*']
186
+ */
169
187
  safelistAttributes?: string[];
170
188
 
171
189
  /**
172
- Attributes that should be removed from all elements in components.
173
-
174
- @default []
175
- */
190
+ * Attributes that should be removed from all elements in components.
191
+ *
192
+ * @default []
193
+ */
176
194
  blacklistAttributes?: string[];
177
195
  }