@maizzle/framework 3.7.2 → 4.0.0-alpha.10
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.
- package/.github/workflows/nodejs.yml +28 -29
- package/bin/maizzle +3 -0
- package/package.json +91 -84
- package/src/commands/build.js +32 -0
- package/src/commands/serve.js +156 -0
- package/src/functions/plaintext.js +5 -0
- package/src/functions/render.js +5 -0
- package/src/generators/output/to-disk.js +120 -79
- package/src/generators/output/to-string.js +7 -8
- package/src/generators/plaintext.js +49 -52
- package/src/generators/postcss.js +29 -0
- package/src/generators/posthtml.js +66 -60
- package/src/generators/tailwindcss.js +116 -84
- package/src/index.js +14 -160
- package/src/transformers/{attribute-to-style.js → attributeToStyle.js} +0 -0
- package/src/transformers/baseUrl.js +69 -0
- package/src/transformers/{extra-attributes.js → extraAttributes.js} +0 -0
- package/src/transformers/filters/defaultFilters.js +126 -0
- package/src/transformers/filters/index.js +55 -0
- package/src/transformers/index.js +63 -57
- package/src/transformers/{inline.js → inlineCss.js} +1 -14
- package/src/transformers/minify.js +1 -1
- package/src/transformers/{posthtml-mso.js → posthtmlMso.js} +0 -0
- package/src/transformers/prettify.js +16 -9
- package/src/transformers/{prevent-widows.js → preventWidows.js} +0 -0
- package/src/transformers/{remove-attributes.js → removeAttributes.js} +1 -1
- package/src/transformers/{remove-inline-bgcolor.js → removeInlineBackgroundColor.js} +1 -1
- package/src/transformers/{remove-inline-sizes.js → removeInlineSizes.js} +0 -0
- package/src/transformers/removeInlinedSelectors.js +70 -0
- package/src/transformers/removeUnusedCss.js +40 -0
- package/src/transformers/{replace-strings.js → replaceStrings.js} +0 -0
- package/src/transformers/{safe-class-names.js → safeClassNames.js} +8 -2
- package/src/transformers/shorthandInlineCSS.js +19 -0
- package/src/transformers/sixHex.js +33 -0
- package/src/transformers/{url-params.js → urlParameters.js} +0 -0
- package/src/utils/helpers.js +2 -8
- package/test/expected/posthtml/component.html +13 -0
- package/test/expected/{inheritance.html → posthtml/extend-template.html} +2 -2
- package/test/expected/posthtml/fetch.html +5 -0
- package/test/expected/posthtml/layout.html +3 -0
- package/test/expected/transformers/atimport-in-style.html +15 -0
- package/test/expected/transformers/base-url.html +99 -0
- package/test/expected/transformers/filters.html +81 -0
- package/test/expected/transformers/preserve-transform-css.html +36 -0
- package/test/expected/useConfig.html +9 -0
- package/test/fixtures/basic.html +9 -9
- package/test/fixtures/posthtml/component.html +19 -0
- package/test/fixtures/{inheritance.html → posthtml/extend-template.html} +7 -7
- package/test/fixtures/posthtml/fetch.html +9 -0
- package/test/fixtures/posthtml/layout.html +11 -0
- package/test/fixtures/transformers/atimport-in-style.html +11 -0
- package/test/fixtures/transformers/base-url.html +101 -0
- package/test/fixtures/transformers/filters.html +87 -0
- package/test/fixtures/transformers/preserve-transform-css.html +25 -0
- package/test/fixtures/useConfig.html +9 -0
- package/test/stubs/components/component.html +5 -0
- package/test/stubs/data.json +14 -0
- package/test/stubs/layouts/basic.html +1 -0
- package/test/stubs/{layout.html → layouts/full.html} +0 -0
- package/test/stubs/{layout-basic.html → layouts/template.html} +5 -5
- package/test/stubs/post.css +6 -0
- package/test/stubs/tailwind/content-source.html +1 -0
- package/test/stubs/tailwind/tailwind.css +3 -0
- package/test/stubs/template.html +10 -10
- package/test/stubs/templates/1.html +1 -1
- package/test/stubs/templates/2.test +1 -0
- package/test/test-config.js +19 -19
- package/test/test-misc.js +8 -8
- package/test/test-postcss.js +8 -0
- package/test/test-posthtml.js +72 -0
- package/test/test-tailwindcss.js +117 -0
- package/test/test-todisk.js +142 -49
- package/test/test-tostring.js +148 -124
- package/test/test-transformers.js +510 -320
- package/xo.config.js +22 -19
- package/src/transformers/base-image-url.js +0 -9
- package/src/transformers/remove-unused-css.js +0 -20
- package/src/transformers/six-hex.js +0 -10
- package/src/transformers/transform.js +0 -24
- package/test/expected/transformers/base-image-url.html +0 -7
- package/test/fixtures/transformers/base-image-url.html +0 -7
- package/test/stubs/templates/2.html +0 -1
- package/test/stubs/templates/3.mzl +0 -1
- package/test/test-tailwind.js +0 -73
package/test/test-tostring.js
CHANGED
|
@@ -1,124 +1,148 @@
|
|
|
1
|
-
const test = require('ava')
|
|
2
|
-
const Maizzle = require('../src')
|
|
3
|
-
|
|
4
|
-
const path = require('path')
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
1
|
+
const test = require('ava')
|
|
2
|
+
const Maizzle = require('../src')
|
|
3
|
+
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const fs = require('fs')
|
|
6
|
+
|
|
7
|
+
const readFile = (dir, filename) => fs.promises
|
|
8
|
+
.readFile(path.join(__dirname, dir, `${filename}.html`), 'utf8')
|
|
9
|
+
.then(html => html.trim())
|
|
10
|
+
|
|
11
|
+
const fixture = file => readFile('fixtures', file)
|
|
12
|
+
const expected = file => readFile('expected', file)
|
|
13
|
+
|
|
14
|
+
const renderString = (string, options = {}) => Maizzle.render(string, options).then(({html}) => html)
|
|
15
|
+
|
|
16
|
+
test('compiles HTML string if no options are passed', async t => {
|
|
17
|
+
const source = await fixture('basic')
|
|
18
|
+
|
|
19
|
+
const html = await renderString(source)
|
|
20
|
+
|
|
21
|
+
t.is(html, source)
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
test('uses environment config file(s) if available', async t => {
|
|
25
|
+
const source = await fixture('useConfig')
|
|
26
|
+
|
|
27
|
+
const html = await renderString(source, {maizzle: {env: 'maizzle-ci'}})
|
|
28
|
+
|
|
29
|
+
t.is(html, await expected('useConfig'))
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
test('throws if first argument is not an HTML string', async t => {
|
|
33
|
+
await t.throwsAsync(async () => {
|
|
34
|
+
await renderString()
|
|
35
|
+
}, {instanceOf: TypeError, message: 'first argument must be an HTML string, received undefined'})
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
test('throws if first argument is an empty string', async t => {
|
|
39
|
+
await t.throwsAsync(async () => {
|
|
40
|
+
await renderString('')
|
|
41
|
+
}, {instanceOf: RangeError, message: 'received empty string'})
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
test('runs the `beforeRender` event', async t => {
|
|
45
|
+
const html = await renderString(`<div>{{ page.foo }}</div>`, {
|
|
46
|
+
beforeRender(html, config) {
|
|
47
|
+
config.foo = 'bar'
|
|
48
|
+
|
|
49
|
+
return html
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
t.is(html, `<div>bar</div>`)
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
test('runs the `afterRender` event', async t => {
|
|
57
|
+
const result = await renderString(`<div>foo</div>`, {
|
|
58
|
+
afterRender(html, config) {
|
|
59
|
+
config.replaceStrings = {
|
|
60
|
+
foo: 'baz'
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return html
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
t.is(result, `<div>baz</div>`)
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
test('runs the `afterTransformers` event', async t => {
|
|
71
|
+
const result = await renderString(`<div>foo</div>`, {
|
|
72
|
+
maizzle: {
|
|
73
|
+
title: 'bar'
|
|
74
|
+
},
|
|
75
|
+
afterTransformers(html, config) {
|
|
76
|
+
return html.replace('foo', config.title)
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
t.is(result, `<div>bar</div>`)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
test('locals work when defined in all supported places', async t => {
|
|
84
|
+
const result = await renderString(`{{ page.one }}, {{ two }}, {{ three }}`, {
|
|
85
|
+
maizzle: {
|
|
86
|
+
one: 1,
|
|
87
|
+
build: {
|
|
88
|
+
posthtml: {
|
|
89
|
+
expressions: {
|
|
90
|
+
locals: {
|
|
91
|
+
two: 2
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
locals: {
|
|
97
|
+
three: 3
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
t.is(result, `1, 2, 3`)
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
test('prevents overwriting page object', async t => {
|
|
106
|
+
const result = await renderString(`{{ page.one }}, {{ two }}, {{ three }}`, {
|
|
107
|
+
maizzle: {
|
|
108
|
+
one: 1,
|
|
109
|
+
build: {
|
|
110
|
+
posthtml: {
|
|
111
|
+
expressions: {
|
|
112
|
+
locals: {
|
|
113
|
+
page: {
|
|
114
|
+
two: 2
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
locals: {
|
|
121
|
+
page: {
|
|
122
|
+
three: 3
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
t.is(result, `1, undefined, undefined`)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
test('preserves css in marked style tags (tailwindcss)', async t => {
|
|
132
|
+
const source = await fixture('transformers/preserve-transform-css')
|
|
133
|
+
const html = await renderString(source, {
|
|
134
|
+
// So that we don't compile twice
|
|
135
|
+
tailwind: {
|
|
136
|
+
compiled: ''
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
t.is(html, await expected('transformers/preserve-transform-css'))
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
test('@import css files in marked style tags', async t => {
|
|
144
|
+
const source = await fixture('transformers/atimport-in-style')
|
|
145
|
+
const html = await renderString(source)
|
|
146
|
+
|
|
147
|
+
t.is(html, await expected('transformers/atimport-in-style'))
|
|
148
|
+
})
|