@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 CHANGED
@@ -41,7 +41,7 @@ const posthtmlPrism = {
41
41
 
42
42
  const postcssImportSupports = {
43
43
  name: 'postcss-import-supports',
44
- transform (code, path) {
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/views'
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/views/email']
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: (filename) => dirname(filename).endsWith('email'),
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/Layout/Main.latte'
88
+ template: './src/templates/layouts/default.latte'
83
89
  },
84
90
  functions: {
85
91
  pages: () => {
86
- return fs.readdirSync(resolve(process.cwd(), 'src/views')).filter(file => fs.statSync(resolve(process.cwd(), 'src/views/' + file)).isFile())
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 (userConfig, userEnv) {
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/views/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
146
- '!./src/views/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json',
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/views/email/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
161
- '!./src/views/email/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json'
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: ['edge89', 'firefox89', 'chrome89', 'safari15'],
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
- key: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`)),
195
- cert: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
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": "2.1.1",
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.0",
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.0",
21
+ "vituum": "^1.1.1",
21
22
  "posthtml": "^0.16.6",
22
- "posthtml-prism": "^2.0.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.1.1",
28
- "picocolors": "^1.0.0"
28
+ "fs-extra": "^11.2.0",
29
+ "picocolors": "^1.0.1"
29
30
  },
30
31
  "devDependencies": {
31
- "@types/node": "^20.9.1",
32
- "eslint": "^8.53.0",
33
- "eslint-config-standard": "^17.1.0",
34
- "typescript": "^5.2.2",
35
- "vite": "^5.0.0"
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": ">=16.0.0",
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/types').UserConfig,
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