@newlogic-digital/core 3.0.0-next.2 → 3.0.0-next.4

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.
Files changed (3) hide show
  1. package/index.js +31 -75
  2. package/package.json +12 -12
  3. package/types/index.d.ts +1 -1
package/index.js CHANGED
@@ -1,45 +1,18 @@
1
1
  import fs from 'node:fs'
2
2
  import os from 'node:os'
3
- import { dirname, resolve, join, relative } from 'node:path'
4
- import postHtml from 'posthtml'
3
+ import { resolve, join } from 'node:path'
5
4
  import vituum from 'vituum'
6
- import posthtml from '@vituum/vite-plugin-posthtml'
7
5
  import latte from '@vituum/vite-plugin-latte'
8
6
  import twig from '@vituum/vite-plugin-twig'
9
7
  import juice from '@vituum/vite-plugin-juice'
10
8
  import send from '@vituum/vite-plugin-send'
11
9
  import tailwindcss from '@vituum/vite-plugin-tailwindcss'
12
10
  import { getPackageInfo, merge } from 'vituum/utils/common.js'
13
- import highlight from './src/prism.js'
14
11
  import twigOptions from './src/twig.js'
15
- import FastGlob from 'fast-glob'
16
- import fse from 'fs-extra'
17
- import pc from 'picocolors'
18
12
  import browserslistToEsbuild from 'browserslist-to-esbuild'
19
13
 
20
14
  const { name } = getPackageInfo(import.meta.url)
21
15
 
22
- const posthtmlPrism = {
23
- name: '@newlogic-digital/vite-plugin-posthtml-prism',
24
- enforce: 'post',
25
- transformIndexHtml: {
26
- order: 'post',
27
- handler: async (html, { filename }) => {
28
- filename = filename.replace('?raw', '')
29
-
30
- if (!filename.replace('.html', '').endsWith('ui.json')) {
31
- return
32
- }
33
-
34
- const plugins = [highlight({ inline: false })]
35
-
36
- const result = await postHtml(plugins).process(html)
37
-
38
- return result.html
39
- }
40
- }
41
- }
42
-
43
16
  const postcssImportSupports = {
44
17
  name: 'postcss-import-supports',
45
18
  transform(code, path) {
@@ -59,30 +32,22 @@ const defaultOptions = {
59
32
  cert: 'localhost',
60
33
  format: ['latte'],
61
34
  manualChunks: {},
62
- emails: {
63
- outputDir: resolve(process.cwd(), 'public/email'),
64
- appDir: resolve(process.cwd(), 'app/Templates/Emails')
65
- },
66
35
  vituum: {
67
36
  pages: {
68
37
  dir: './src/pages'
69
38
  }
70
39
  },
71
- posthtml: {
72
- root: resolve(process.cwd(), 'src')
73
- },
74
40
  juice: {
75
41
  paths: ['src/pages/email'],
76
42
  postcss: {
77
43
  globalData: {
78
- files: ['./src/emails/styles/main/base/config.css']
44
+ files: ['./src/styles/emails/theme/config.css']
79
45
  }
80
46
  }
81
47
  },
82
48
  tailwindcss: {},
83
49
  send: {},
84
50
  latte: {
85
- renderTransformedHtml: filename => dirname(filename).endsWith('email'),
86
51
  globals: {
87
52
  srcPath: resolve(process.cwd(), 'src'),
88
53
  templatesPath: resolve(process.cwd(), 'src/templates'),
@@ -96,8 +61,7 @@ const defaultOptions = {
96
61
  filters: {
97
62
  json: resolve(process.cwd(), 'node_modules/@newlogic-digital/core/latte/JsonFilter.js'),
98
63
  code: 'node_modules/@newlogic-digital/core/latte/CodeFilter.php'
99
- },
100
- ignoredPaths: ['**/views/email/**/!(*.test).latte', '**/emails/!(*.test).latte']
64
+ }
101
65
  },
102
66
  twig: twigOptions
103
67
  }
@@ -122,11 +86,9 @@ const plugin = (options = {}) => {
122
86
  const plugins = [
123
87
  vituum(options.vituum),
124
88
  tailwindcss(options.tailwindcss),
125
- posthtml(options.posthtml),
126
89
  ...templatesPlugins,
127
90
  juice(options.juice),
128
91
  send(options.send),
129
- posthtmlPrism,
130
92
  postcssImportSupports
131
93
  ]
132
94
 
@@ -160,15 +122,6 @@ const plugin = (options = {}) => {
160
122
  userConfig.publicDir = userConfig.publicDir ?? false
161
123
  }
162
124
 
163
- if (options.mode === 'emails') {
164
- userEnv.mode = 'production'
165
-
166
- defaultInput = [
167
- './src/pages/email/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
168
- '!./src/pages/email/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json'
169
- ]
170
- }
171
-
172
125
  const outDir = resolve(userConfig.root ?? process.cwd(), 'public')
173
126
 
174
127
  if (userConfig.build && !userConfig.build.outDir) {
@@ -181,24 +134,41 @@ const plugin = (options = {}) => {
181
134
 
182
135
  userConfig.build = Object.assign({
183
136
  target: browserslistToEsbuild(),
184
- manifest: 'manifest.json',
137
+ manifest: (options.mode === 'emails') ? false : 'manifest.json',
185
138
  emptyOutDir: false,
186
139
  modulePreload: false,
187
140
  assetsInlineLimit: 0,
188
141
  outDir
189
142
  }, userConfig.build ?? {})
190
143
 
191
- userConfig.build.rollupOptions = Object.assign({
192
- input: defaultInput,
193
- output: {
194
- manualChunks: {
195
- swup: ['swup'],
196
- stimulus: ['@hotwired/stimulus'],
197
- naja: ['naja'],
198
- ...options.manualChunks
144
+ if (options.mode === 'emails') {
145
+ userEnv.mode = 'production'
146
+
147
+ defaultInput = [
148
+ './src/pages/email/**/*.{json,latte,twig,liquid,njk,hbs,pug,html}',
149
+ './src/styles/emails/*.{css,pcss,scss,sass,less,styl,stylus}',
150
+ '!./src/pages/email/**/*.{latte,twig,liquid,njk,hbs,pug,html}.json'
151
+ ]
152
+
153
+ userConfig.build.rollupOptions = Object.assign({
154
+ input: defaultInput,
155
+ output: {
156
+ assetFileNames: 'assets/email/[name].[ext]'
157
+ }
158
+ }, userConfig.build.rollupOptions ?? {})
159
+ } else {
160
+ userConfig.build.rollupOptions = Object.assign({
161
+ input: defaultInput,
162
+ output: {
163
+ manualChunks: {
164
+ swup: ['swup'],
165
+ stimulus: ['@hotwired/stimulus'],
166
+ naja: ['naja'],
167
+ ...options.manualChunks
168
+ }
199
169
  }
200
- }
201
- }, userConfig.build.rollupOptions ?? {})
170
+ }, userConfig.build.rollupOptions ?? {})
171
+ }
202
172
 
203
173
  userConfig.server = Object.assign({
204
174
  host: true,
@@ -212,20 +182,6 @@ const plugin = (options = {}) => {
212
182
  }
213
183
  : false
214
184
  }, userConfig.server ?? {})
215
- },
216
- writeBundle: async () => {
217
- if (options.mode === 'emails') {
218
- const emails = FastGlob.sync(`${resolve(process.cwd(), options.emails.outputDir)}/**`).filter(entry => !entry.endsWith('test.html'))
219
- const emailsProd = emails.map((path) => {
220
- return path.replace(resolve(process.cwd(), options.emails.outputDir), resolve(process.cwd(), options.emails.appDir)).replace('.html', '.latte')
221
- })
222
-
223
- await Promise.all(emails.map((file, i) =>
224
- fse.move(file, emailsProd[i], { overwrite: true })
225
- ))
226
-
227
- console.info(`${pc.cyan('@newlogic-digital/core')} ${pc.green(`all email files were moved to ${relative(process.cwd(), options.emails.appDir)}`)}`)
228
- }
229
185
  }
230
186
  }, ...plugins]
231
187
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@newlogic-digital/core",
3
3
  "type": "module",
4
- "version": "3.0.0-next.2",
4
+ "version": "3.0.0-next.4",
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",
@@ -12,30 +12,30 @@
12
12
  "publish-next": "npm publish --tag next"
13
13
  },
14
14
  "dependencies": {
15
- "@vituum/vite-plugin-juice": "^1.2.0",
15
+ "@vituum/vite-plugin-juice": "^1.3.0",
16
16
  "@vituum/vite-plugin-latte": "^1.2.1",
17
17
  "@vituum/vite-plugin-posthtml": "^1.1.0",
18
18
  "@vituum/vite-plugin-send": "^1.1.0",
19
- "@vituum/vite-plugin-tailwindcss": "^1.1.0",
19
+ "@vituum/vite-plugin-tailwindcss": "^1.2.0",
20
20
  "@vituum/vite-plugin-twig": "^1.1.0",
21
21
  "fast-glob": "^3.3.2",
22
22
  "fs-extra": "^11.2.0",
23
23
  "html-minifier-terser": "^7.2.0",
24
24
  "lodash": "^4.17.21",
25
- "picocolors": "^1.0.1",
25
+ "picocolors": "^1.1.0",
26
26
  "posthtml": "^0.16.6",
27
27
  "posthtml-prism": "^2.0.1",
28
28
  "prismjs": "^1.29.0",
29
- "vituum": "^1.1.1"
29
+ "vituum": "^1.1.1",
30
+ "browserslist": "^4.24.0",
31
+ "browserslist-to-esbuild": "^2.1.1"
30
32
  },
31
33
  "devDependencies": {
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"
34
+ "@types/node": "^22.7.5",
35
+ "eslint": "^9.12.0",
36
+ "neostandard": "^0.11.6",
37
+ "typescript": "^5.6.2",
38
+ "vite": "^5.4.8"
39
39
  },
40
40
  "files": [
41
41
  "latte",
package/types/index.d.ts CHANGED
@@ -4,7 +4,7 @@ interface Emails {
4
4
  }
5
5
 
6
6
  export interface PluginUserConfig {
7
- mode?: 'development' | 'production' | 'emails'
7
+ mode?: 'development' | 'production' | 'emails' | string
8
8
  format?: string[]
9
9
  cert?: string
10
10
  manualChunks?: import('rollup').ManualChunksOption