@newlogic-digital/core 2.1.2 → 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,7 +179,7 @@ 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,
@@ -182,7 +188,15 @@ const plugin = (options = {}) => {
182
188
  }, userConfig.build ?? {})
183
189
 
184
190
  userConfig.build.rollupOptions = Object.assign({
185
- input: defaultInput
191
+ input: defaultInput,
192
+ output: {
193
+ manualChunks: {
194
+ swup: ['swup'],
195
+ stimulus: ['@hotwired/stimulus'],
196
+ naja: ['naja'],
197
+ ...options.manualChunks
198
+ }
199
+ }
186
200
  }, userConfig.build.rollupOptions ?? {})
187
201
 
188
202
  userConfig.server = Object.assign({
@@ -192,16 +206,16 @@ const plugin = (options = {}) => {
192
206
  },
193
207
  https: isHttps
194
208
  ? {
195
- key: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`)),
196
- cert: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
197
- }
209
+ key: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}-key.pem`)),
210
+ cert: fs.readFileSync(join(os.homedir(), `.ssh/${options.cert}.pem`))
211
+ }
198
212
  : false
199
213
  }, userConfig.server ?? {})
200
214
  },
201
215
  writeBundle: async () => {
202
216
  if (options.mode === 'emails') {
203
217
  const emails = FastGlob.sync(`${resolve(process.cwd(), options.emails.outputDir)}/**`).filter(entry => !entry.endsWith('test.html'))
204
- const emailsProd = emails.map(path => {
218
+ const emailsProd = emails.map((path) => {
205
219
  return path.replace(resolve(process.cwd(), options.emails.outputDir), resolve(process.cwd(), options.emails.appDir)).replace('.html', '.latte')
206
220
  })
207
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.2",
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
28
  "fs-extra": "^11.2.0",
28
- "picocolors": "^1.0.0"
29
+ "picocolors": "^1.0.1"
29
30
  },
30
31
  "devDependencies": {
31
- "@types/node": "^20.11.24",
32
- "eslint": "^8.57.0",
33
- "eslint-config-standard": "^17.1.0",
34
- "typescript": "^5.3.3",
35
- "vite": "^5.1.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",
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