@newlogic-digital/core 2.1.2 → 3.0.0-next.2
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/index.js +35 -20
- package/package.json +21 -18
- package/src/prism.js +10 -10
- package/types/index.d.ts +2 -1
package/index.js
CHANGED
@@ -15,6 +15,7 @@ import twigOptions from './src/twig.js'
|
|
15
15
|
import FastGlob from 'fast-glob'
|
16
16
|
import fse from 'fs-extra'
|
17
17
|
import pc from 'picocolors'
|
18
|
+
import browserslistToEsbuild from 'browserslist-to-esbuild'
|
18
19
|
|
19
20
|
const { name } = getPackageInfo(import.meta.url)
|
20
21
|
|
@@ -41,7 +42,7 @@ const posthtmlPrism = {
|
|
41
42
|
|
42
43
|
const postcssImportSupports = {
|
43
44
|
name: 'postcss-import-supports',
|
44
|
-
transform
|
45
|
+
transform(code, path) {
|
45
46
|
if (path.endsWith('.css')) {
|
46
47
|
return {
|
47
48
|
code: code.replace('@media supports', '@supports')
|
@@ -57,33 +58,39 @@ const defaultOptions = {
|
|
57
58
|
mode: null,
|
58
59
|
cert: 'localhost',
|
59
60
|
format: ['latte'],
|
61
|
+
manualChunks: {},
|
60
62
|
emails: {
|
61
63
|
outputDir: resolve(process.cwd(), 'public/email'),
|
62
64
|
appDir: resolve(process.cwd(), 'app/Templates/Emails')
|
63
65
|
},
|
64
66
|
vituum: {
|
65
67
|
pages: {
|
66
|
-
dir: './src/
|
68
|
+
dir: './src/pages'
|
67
69
|
}
|
68
70
|
},
|
69
71
|
posthtml: {
|
70
72
|
root: resolve(process.cwd(), 'src')
|
71
73
|
},
|
72
74
|
juice: {
|
73
|
-
paths: ['src/
|
75
|
+
paths: ['src/pages/email'],
|
76
|
+
postcss: {
|
77
|
+
globalData: {
|
78
|
+
files: ['./src/emails/styles/main/base/config.css']
|
79
|
+
}
|
80
|
+
}
|
74
81
|
},
|
75
82
|
tailwindcss: {},
|
76
83
|
send: {},
|
77
84
|
latte: {
|
78
|
-
renderTransformedHtml:
|
85
|
+
renderTransformedHtml: filename => dirname(filename).endsWith('email'),
|
79
86
|
globals: {
|
80
87
|
srcPath: resolve(process.cwd(), 'src'),
|
81
88
|
templatesPath: resolve(process.cwd(), 'src/templates'),
|
82
|
-
template: './src/templates/
|
89
|
+
template: './src/templates/layouts/default.latte'
|
83
90
|
},
|
84
91
|
functions: {
|
85
92
|
pages: () => {
|
86
|
-
return fs.readdirSync(resolve(process.cwd(), 'src/
|
93
|
+
return fs.readdirSync(resolve(process.cwd(), 'src/pages')).filter(file => fs.statSync(resolve(process.cwd(), 'src/pages/' + file)).isFile())
|
87
94
|
}
|
88
95
|
},
|
89
96
|
filters: {
|
@@ -126,10 +133,10 @@ const plugin = (options = {}) => {
|
|
126
133
|
return [{
|
127
134
|
name,
|
128
135
|
enforce: 'pre',
|
129
|
-
config
|
130
|
-
const isHttps = userConfig?.server?.https !== false
|
131
|
-
fs.existsSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
|
132
|
-
fs.existsSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`))
|
136
|
+
config(userConfig, userEnv) {
|
137
|
+
const isHttps = userConfig?.server?.https !== false
|
138
|
+
&& fs.existsSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
|
139
|
+
&& fs.existsSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`))
|
133
140
|
|
134
141
|
let defaultInput = [
|
135
142
|
'./src/styles/*.{css,pcss,scss,sass,less,styl,stylus}',
|
@@ -142,8 +149,8 @@ const plugin = (options = {}) => {
|
|
142
149
|
|
143
150
|
if (options.mode === 'development') {
|
144
151
|
defaultInput = [
|
145
|
-
'./src/
|
146
|
-
'!./src/
|
152
|
+
'./src/pages/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
|
153
|
+
'!./src/pages/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json',
|
147
154
|
'./src/styles/*.{css,pcss,scss,sass,less,styl,stylus}',
|
148
155
|
'./src/scripts/*.{js,ts,mjs}'
|
149
156
|
]
|
@@ -157,8 +164,8 @@ const plugin = (options = {}) => {
|
|
157
164
|
userEnv.mode = 'production'
|
158
165
|
|
159
166
|
defaultInput = [
|
160
|
-
'./src/
|
161
|
-
'!./src/
|
167
|
+
'./src/pages/email/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
|
168
|
+
'!./src/pages/email/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json'
|
162
169
|
]
|
163
170
|
}
|
164
171
|
|
@@ -173,7 +180,7 @@ const plugin = (options = {}) => {
|
|
173
180
|
}, userConfig.optimizeDeps ?? {})
|
174
181
|
|
175
182
|
userConfig.build = Object.assign({
|
176
|
-
target:
|
183
|
+
target: browserslistToEsbuild(),
|
177
184
|
manifest: 'manifest.json',
|
178
185
|
emptyOutDir: false,
|
179
186
|
modulePreload: false,
|
@@ -182,7 +189,15 @@ const plugin = (options = {}) => {
|
|
182
189
|
}, userConfig.build ?? {})
|
183
190
|
|
184
191
|
userConfig.build.rollupOptions = Object.assign({
|
185
|
-
input: defaultInput
|
192
|
+
input: defaultInput,
|
193
|
+
output: {
|
194
|
+
manualChunks: {
|
195
|
+
swup: ['swup'],
|
196
|
+
stimulus: ['@hotwired/stimulus'],
|
197
|
+
naja: ['naja'],
|
198
|
+
...options.manualChunks
|
199
|
+
}
|
200
|
+
}
|
186
201
|
}, userConfig.build.rollupOptions ?? {})
|
187
202
|
|
188
203
|
userConfig.server = Object.assign({
|
@@ -192,16 +207,16 @@ const plugin = (options = {}) => {
|
|
192
207
|
},
|
193
208
|
https: isHttps
|
194
209
|
? {
|
195
|
-
|
196
|
-
|
197
|
-
|
210
|
+
key: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`)),
|
211
|
+
cert: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
|
212
|
+
}
|
198
213
|
: false
|
199
214
|
}, userConfig.server ?? {})
|
200
215
|
},
|
201
216
|
writeBundle: async () => {
|
202
217
|
if (options.mode === 'emails') {
|
203
218
|
const emails = FastGlob.sync(`${resolve(process.cwd(), options.emails.outputDir)}/**`).filter(entry => !entry.endsWith('test.html'))
|
204
|
-
const emailsProd = emails.map(path => {
|
219
|
+
const emailsProd = emails.map((path) => {
|
205
220
|
return path.replace(resolve(process.cwd(), options.emails.outputDir), resolve(process.cwd(), options.emails.appDir)).replace('.html', '.latte')
|
206
221
|
})
|
207
222
|
|
package/package.json
CHANGED
@@ -1,38 +1,41 @@
|
|
1
1
|
{
|
2
2
|
"name": "@newlogic-digital/core",
|
3
3
|
"type": "module",
|
4
|
-
"version": "
|
4
|
+
"version": "3.0.0-next.2",
|
5
5
|
"main": "index.js",
|
6
6
|
"author": "New Logic Studio s.r.o.",
|
7
7
|
"description": "Set of tools that can be used to create modern web applications",
|
8
8
|
"license": "MIT",
|
9
9
|
"scripts": {
|
10
10
|
"tsc": "tsc",
|
11
|
-
"eslint": "eslint '**/*.js' --fix"
|
11
|
+
"eslint": "eslint '**/*.js' --fix",
|
12
|
+
"publish-next": "npm publish --tag next"
|
12
13
|
},
|
13
14
|
"dependencies": {
|
14
|
-
"@vituum/vite-plugin-posthtml": "^1.1.0",
|
15
15
|
"@vituum/vite-plugin-juice": "^1.2.0",
|
16
|
-
"@vituum/vite-plugin-latte": "^1.1
|
17
|
-
"@vituum/vite-plugin-
|
18
|
-
"@vituum/vite-plugin-tailwindcss": "^1.1.0",
|
16
|
+
"@vituum/vite-plugin-latte": "^1.2.1",
|
17
|
+
"@vituum/vite-plugin-posthtml": "^1.1.0",
|
19
18
|
"@vituum/vite-plugin-send": "^1.1.0",
|
20
|
-
"vituum": "^1.1.0",
|
21
|
-
"
|
22
|
-
"posthtml-prism": "^2.0.0",
|
23
|
-
"prismjs": "^1.29.0",
|
24
|
-
"html-minifier-terser": "^7.2.0",
|
25
|
-
"lodash": "^4.17.21",
|
19
|
+
"@vituum/vite-plugin-tailwindcss": "^1.1.0",
|
20
|
+
"@vituum/vite-plugin-twig": "^1.1.0",
|
26
21
|
"fast-glob": "^3.3.2",
|
27
22
|
"fs-extra": "^11.2.0",
|
28
|
-
"
|
23
|
+
"html-minifier-terser": "^7.2.0",
|
24
|
+
"lodash": "^4.17.21",
|
25
|
+
"picocolors": "^1.0.1",
|
26
|
+
"posthtml": "^0.16.6",
|
27
|
+
"posthtml-prism": "^2.0.1",
|
28
|
+
"prismjs": "^1.29.0",
|
29
|
+
"vituum": "^1.1.1"
|
29
30
|
},
|
30
31
|
"devDependencies": {
|
31
|
-
"@types/node": "^
|
32
|
-
"
|
33
|
-
"
|
34
|
-
"
|
35
|
-
"
|
32
|
+
"@types/node": "^22.2.0",
|
33
|
+
"browserslist": "^4.23.3",
|
34
|
+
"browserslist-to-esbuild": "^2.1.1",
|
35
|
+
"eslint": "^9.9.0",
|
36
|
+
"neostandard": "^0.11.2",
|
37
|
+
"typescript": "^5.5.4",
|
38
|
+
"vite": "^5.4.0"
|
36
39
|
},
|
37
40
|
"files": [
|
38
41
|
"latte",
|
package/src/prism.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import Prism from 'prismjs'
|
2
|
-
import {render} from 'posthtml-render'
|
2
|
+
import { render } from 'posthtml-render'
|
3
3
|
import loadLanguages from 'prismjs/components/index.js'
|
4
4
|
import NormalizeWhitespace from 'prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js'
|
5
5
|
|
@@ -7,22 +7,22 @@ const Normalize = new NormalizeWhitespace({
|
|
7
7
|
'remove-trailing': true,
|
8
8
|
'remove-indent': true,
|
9
9
|
'left-trim': true,
|
10
|
-
'right-trim': true
|
11
|
-
})
|
10
|
+
'right-trim': true
|
11
|
+
})
|
12
12
|
|
13
|
-
const createPrismPlugin = options => {
|
14
|
-
return tree => {
|
15
|
-
const highlightCodeTags = node => tree.match.call(node, {tag: 'code'}, highlightNode)
|
13
|
+
const createPrismPlugin = (options) => {
|
14
|
+
return (tree) => {
|
15
|
+
const highlightCodeTags = node => tree.match.call(node, { tag: 'code' }, highlightNode)
|
16
16
|
|
17
17
|
if (options.inline) {
|
18
18
|
highlightCodeTags(tree)
|
19
19
|
} else {
|
20
|
-
tree.match({tag: 'pre'}, highlightCodeTags)
|
20
|
+
tree.match({ tag: 'pre' }, highlightCodeTags)
|
21
21
|
}
|
22
22
|
}
|
23
23
|
}
|
24
24
|
|
25
|
-
const highlightNode = node => {
|
25
|
+
const highlightNode = (node) => {
|
26
26
|
const attrs = node.attrs || {}
|
27
27
|
const classList = `${attrs.class || ''}`.trimStart()
|
28
28
|
|
@@ -74,13 +74,13 @@ const mapStringOrNode = (stringOrNode, lang = null) => {
|
|
74
74
|
return stringOrNode
|
75
75
|
}
|
76
76
|
|
77
|
-
const getExplicitLanguage = classList => {
|
77
|
+
const getExplicitLanguage = (classList) => {
|
78
78
|
const matches = classList.match(/(?:lang|language)-(\w*)/)
|
79
79
|
|
80
80
|
return matches === null ? null : matches[1]
|
81
81
|
}
|
82
82
|
|
83
|
-
const plugin = options => {
|
83
|
+
const plugin = (options) => {
|
84
84
|
options = options || {}
|
85
85
|
options.inline = options.inline || false
|
86
86
|
|
package/types/index.d.ts
CHANGED
@@ -7,8 +7,9 @@ export interface PluginUserConfig {
|
|
7
7
|
mode?: 'development' | 'production' | 'emails'
|
8
8
|
format?: string[]
|
9
9
|
cert?: string
|
10
|
+
manualChunks?: import('rollup').ManualChunksOption
|
10
11
|
emails?: Emails
|
11
|
-
vituum?: import('vituum
|
12
|
+
vituum?: import('vituum').UserConfig,
|
12
13
|
posthtml?: import('@vituum/vite-plugin-posthtml/types').PluginUserConfig
|
13
14
|
juice?: import('@vituum/vite-plugin-juice/types').PluginUserConfig
|
14
15
|
send?: import('@vituum/vite-plugin-send/types').PluginUserConfig
|