@newlogic-digital/core 2.1.1 → 3.0.0-next.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.
- package/index.js +38 -23
- package/package.json +14 -14
- package/src/prism.js +10 -10
- package/types/index.d.ts +2 -1
package/index.js
CHANGED
@@ -41,7 +41,7 @@ const posthtmlPrism = {
|
|
41
41
|
|
42
42
|
const postcssImportSupports = {
|
43
43
|
name: 'postcss-import-supports',
|
44
|
-
transform
|
44
|
+
transform(code, path) {
|
45
45
|
if (path.endsWith('.css')) {
|
46
46
|
return {
|
47
47
|
code: code.replace('@media supports', '@supports')
|
@@ -57,33 +57,39 @@ const defaultOptions = {
|
|
57
57
|
mode: null,
|
58
58
|
cert: 'localhost',
|
59
59
|
format: ['latte'],
|
60
|
+
manualChunks: {},
|
60
61
|
emails: {
|
61
62
|
outputDir: resolve(process.cwd(), 'public/email'),
|
62
63
|
appDir: resolve(process.cwd(), 'app/Templates/Emails')
|
63
64
|
},
|
64
65
|
vituum: {
|
65
66
|
pages: {
|
66
|
-
dir: './src/
|
67
|
+
dir: './src/pages'
|
67
68
|
}
|
68
69
|
},
|
69
70
|
posthtml: {
|
70
71
|
root: resolve(process.cwd(), 'src')
|
71
72
|
},
|
72
73
|
juice: {
|
73
|
-
paths: ['src/
|
74
|
+
paths: ['src/pages/email'],
|
75
|
+
postcss: {
|
76
|
+
globalData: {
|
77
|
+
files: ['./src/emails/styles/main/base/config.css']
|
78
|
+
}
|
79
|
+
}
|
74
80
|
},
|
75
81
|
tailwindcss: {},
|
76
82
|
send: {},
|
77
83
|
latte: {
|
78
|
-
renderTransformedHtml:
|
84
|
+
renderTransformedHtml: filename => dirname(filename).endsWith('email'),
|
79
85
|
globals: {
|
80
86
|
srcPath: resolve(process.cwd(), 'src'),
|
81
87
|
templatesPath: resolve(process.cwd(), 'src/templates'),
|
82
|
-
template: './src/templates/
|
88
|
+
template: './src/templates/layouts/default.latte'
|
83
89
|
},
|
84
90
|
functions: {
|
85
91
|
pages: () => {
|
86
|
-
return fs.readdirSync(resolve(process.cwd(), 'src/
|
92
|
+
return fs.readdirSync(resolve(process.cwd(), 'src/pages')).filter(file => fs.statSync(resolve(process.cwd(), 'src/pages/' + file)).isFile())
|
87
93
|
}
|
88
94
|
},
|
89
95
|
filters: {
|
@@ -126,10 +132,10 @@ const plugin = (options = {}) => {
|
|
126
132
|
return [{
|
127
133
|
name,
|
128
134
|
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`))
|
135
|
+
config(userConfig, userEnv) {
|
136
|
+
const isHttps = userConfig?.server?.https !== false
|
137
|
+
&& fs.existsSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
|
138
|
+
&& fs.existsSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`))
|
133
139
|
|
134
140
|
let defaultInput = [
|
135
141
|
'./src/styles/*.{css,pcss,scss,sass,less,styl,stylus}',
|
@@ -142,8 +148,8 @@ const plugin = (options = {}) => {
|
|
142
148
|
|
143
149
|
if (options.mode === 'development') {
|
144
150
|
defaultInput = [
|
145
|
-
'./src/
|
146
|
-
'!./src/
|
151
|
+
'./src/pages/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
|
152
|
+
'!./src/pages/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json',
|
147
153
|
'./src/styles/*.{css,pcss,scss,sass,less,styl,stylus}',
|
148
154
|
'./src/scripts/*.{js,ts,mjs}'
|
149
155
|
]
|
@@ -157,8 +163,8 @@ const plugin = (options = {}) => {
|
|
157
163
|
userEnv.mode = 'production'
|
158
164
|
|
159
165
|
defaultInput = [
|
160
|
-
'./src/
|
161
|
-
'!./src/
|
166
|
+
'./src/pages/email/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
|
167
|
+
'!./src/pages/email/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json'
|
162
168
|
]
|
163
169
|
}
|
164
170
|
|
@@ -173,17 +179,26 @@ const plugin = (options = {}) => {
|
|
173
179
|
}, userConfig.optimizeDeps ?? {})
|
174
180
|
|
175
181
|
userConfig.build = Object.assign({
|
176
|
-
target: ['
|
182
|
+
target: ['edge111', 'firefox111', 'chrome111', 'safari16'],
|
177
183
|
manifest: 'manifest.json',
|
178
184
|
emptyOutDir: false,
|
179
185
|
modulePreload: false,
|
180
186
|
assetsInlineLimit: 0,
|
181
|
-
outDir
|
182
|
-
rollupOptions: {
|
183
|
-
input: defaultInput
|
184
|
-
}
|
187
|
+
outDir
|
185
188
|
}, userConfig.build ?? {})
|
186
189
|
|
190
|
+
userConfig.build.rollupOptions = Object.assign({
|
191
|
+
input: defaultInput,
|
192
|
+
output: {
|
193
|
+
manualChunks: {
|
194
|
+
swup: ['swup'],
|
195
|
+
stimulus: ['@hotwired/stimulus'],
|
196
|
+
naja: ['naja'],
|
197
|
+
...options.manualChunks
|
198
|
+
}
|
199
|
+
}
|
200
|
+
}, userConfig.build.rollupOptions ?? {})
|
201
|
+
|
187
202
|
userConfig.server = Object.assign({
|
188
203
|
host: true,
|
189
204
|
fsServe: {
|
@@ -191,16 +206,16 @@ const plugin = (options = {}) => {
|
|
191
206
|
},
|
192
207
|
https: isHttps
|
193
208
|
? {
|
194
|
-
|
195
|
-
|
196
|
-
|
209
|
+
key: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`)),
|
210
|
+
cert: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
|
211
|
+
}
|
197
212
|
: false
|
198
213
|
}, userConfig.server ?? {})
|
199
214
|
},
|
200
215
|
writeBundle: async () => {
|
201
216
|
if (options.mode === 'emails') {
|
202
217
|
const emails = FastGlob.sync(`${resolve(process.cwd(), options.emails.outputDir)}/**`).filter(entry => !entry.endsWith('test.html'))
|
203
|
-
const emailsProd = emails.map(path => {
|
218
|
+
const emailsProd = emails.map((path) => {
|
204
219
|
return path.replace(resolve(process.cwd(), options.emails.outputDir), resolve(process.cwd(), options.emails.appDir)).replace('.html', '.latte')
|
205
220
|
})
|
206
221
|
|
package/package.json
CHANGED
@@ -1,38 +1,39 @@
|
|
1
1
|
{
|
2
2
|
"name": "@newlogic-digital/core",
|
3
3
|
"type": "module",
|
4
|
-
"version": "
|
4
|
+
"version": "3.0.0-next.1",
|
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
15
|
"@vituum/vite-plugin-posthtml": "^1.1.0",
|
15
16
|
"@vituum/vite-plugin-juice": "^1.2.0",
|
16
|
-
"@vituum/vite-plugin-latte": "^1.1
|
17
|
+
"@vituum/vite-plugin-latte": "^1.2.1",
|
17
18
|
"@vituum/vite-plugin-twig": "^1.1.0",
|
18
19
|
"@vituum/vite-plugin-tailwindcss": "^1.1.0",
|
19
20
|
"@vituum/vite-plugin-send": "^1.1.0",
|
20
|
-
"vituum": "^1.1.
|
21
|
+
"vituum": "^1.1.1",
|
21
22
|
"posthtml": "^0.16.6",
|
22
|
-
"posthtml-prism": "^2.0.
|
23
|
+
"posthtml-prism": "^2.0.1",
|
23
24
|
"prismjs": "^1.29.0",
|
24
25
|
"html-minifier-terser": "^7.2.0",
|
25
26
|
"lodash": "^4.17.21",
|
26
27
|
"fast-glob": "^3.3.2",
|
27
|
-
"fs-extra": "^11.
|
28
|
-
"picocolors": "^1.0.
|
28
|
+
"fs-extra": "^11.2.0",
|
29
|
+
"picocolors": "^1.0.1"
|
29
30
|
},
|
30
31
|
"devDependencies": {
|
31
|
-
"@types/node": "^
|
32
|
-
"eslint": "^
|
33
|
-
"
|
34
|
-
"typescript": "^5.
|
35
|
-
"vite": "^5.
|
32
|
+
"@types/node": "^22.2.0",
|
33
|
+
"eslint": "^9.9.0",
|
34
|
+
"neostandard": "^0.11.2",
|
35
|
+
"typescript": "^5.5.4",
|
36
|
+
"vite": "^5.4.0"
|
36
37
|
},
|
37
38
|
"files": [
|
38
39
|
"latte",
|
@@ -45,8 +46,7 @@
|
|
45
46
|
"./types": "./types/*"
|
46
47
|
},
|
47
48
|
"engines": {
|
48
|
-
"node": ">=
|
49
|
-
"npm": ">=8.0.0"
|
49
|
+
"node": "^18.0.0 || >=20.0.0"
|
50
50
|
},
|
51
51
|
"repository": {
|
52
52
|
"type": "git",
|
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
|