@quasar/icongenie 2.5.3 → 3.0.0

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 (55) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.cjs +50 -0
  3. package/bin/{icongenie → icongenie.js} +11 -11
  4. package/lib/cmd/generate.js +26 -21
  5. package/lib/cmd/help.js +3 -1
  6. package/lib/cmd/profile.js +19 -15
  7. package/lib/cmd/verify.js +16 -13
  8. package/lib/generators/icns.js +5 -4
  9. package/lib/generators/ico.js +5 -4
  10. package/lib/generators/index.js +13 -6
  11. package/lib/generators/png.js +3 -2
  12. package/lib/generators/splashscreen.js +3 -2
  13. package/lib/generators/svg.js +6 -5
  14. package/lib/modes/index.js +8 -5
  15. package/lib/modes/quasar-app-v1/bex.js +2 -1
  16. package/lib/modes/quasar-app-v1/capacitor.js +11 -10
  17. package/lib/modes/quasar-app-v1/cordova.js +14 -13
  18. package/lib/modes/quasar-app-v1/electron.js +2 -1
  19. package/lib/modes/quasar-app-v1/index.js +16 -8
  20. package/lib/modes/quasar-app-v1/pwa.js +6 -5
  21. package/lib/modes/quasar-app-v1/spa.js +2 -1
  22. package/lib/modes/quasar-app-v1/ssr.js +3 -2
  23. package/lib/modes/quasar-app-v2/bex.js +2 -1
  24. package/lib/modes/quasar-app-v2/capacitor.js +11 -10
  25. package/lib/modes/quasar-app-v2/cordova.js +14 -13
  26. package/lib/modes/quasar-app-v2/electron.js +2 -1
  27. package/lib/modes/quasar-app-v2/index.js +16 -8
  28. package/lib/modes/quasar-app-v2/pwa.js +6 -5
  29. package/lib/modes/quasar-app-v2/spa.js +2 -1
  30. package/lib/modes/quasar-app-v2/ssr.js +3 -2
  31. package/lib/mount/index.js +5 -4
  32. package/lib/mount/mount-cordova.js +38 -30
  33. package/lib/mount/mount-tag.js +3 -2
  34. package/lib/runner/generate.js +37 -36
  35. package/lib/runner/profile.js +12 -11
  36. package/lib/runner/verify.js +23 -22
  37. package/lib/utils/app-paths.js +18 -18
  38. package/lib/utils/default-params.js +2 -1
  39. package/lib/utils/filter-argv-params.js +4 -3
  40. package/lib/utils/get-assets-files.js +6 -5
  41. package/lib/utils/get-compression.js +6 -6
  42. package/lib/utils/get-file-size.js +5 -4
  43. package/lib/utils/get-files-options.js +7 -6
  44. package/lib/utils/get-png-size.js +8 -7
  45. package/lib/utils/get-profile-content.js +9 -5
  46. package/lib/utils/get-profile-files.js +10 -9
  47. package/lib/utils/get-square-icon.js +5 -4
  48. package/lib/utils/logger.js +8 -7
  49. package/lib/utils/merge-objects.js +5 -4
  50. package/lib/utils/node-version-check.js +6 -6
  51. package/lib/utils/package-json.js +6 -0
  52. package/lib/utils/parse-argv.js +43 -45
  53. package/lib/utils/spawn-sync.js +6 -5
  54. package/lib/utils/validate-profile-object.js +12 -8
  55. package/package.json +24 -14
@@ -1,37 +1,38 @@
1
- const { existsSync } = require('fs')
2
- const { ensureFileSync } = require('fs-extra')
3
- const { green, gray } = require('kolorist')
4
1
 
5
- const { appDir, resolveDir } = require('../utils/app-paths')
6
- const { log, warn } = require('../utils/logger')
2
+ import { existsSync } from 'node:fs'
3
+ import { ensureFileSync } from 'fs-extra'
4
+ import { green, gray } from 'kolorist'
7
5
 
8
- const modes = require('../modes')
9
- const generators = require('../generators')
10
- const { mount } = require('../mount')
6
+ import { appDir, resolveDir } from '../utils/app-paths.js'
7
+ import { log, warn } from '../utils/logger.js'
11
8
 
12
- const getAssetsFiles = require('../utils/get-assets-files')
13
- const getFilesOptions = require('../utils/get-files-options')
14
- const parseArgv = require('../utils/parse-argv')
15
- const mergeObjects = require('../utils/merge-objects')
16
- const getProfileContent = require('../utils/get-profile-content')
17
- const getFileSize = require('../utils/get-file-size')
18
- const validateProfileObject = require('../utils/validate-profile-object')
9
+ import { modes } from '../modes/index.js'
10
+ import { generators } from '../generators/index.js'
11
+ import { mount } from '../mount/index.js'
12
+
13
+ import { getAssetsFiles } from '../utils/get-assets-files.js'
14
+ import { getFilesOptions } from '../utils/get-files-options.js'
15
+ import { parseArgv } from '../utils/parse-argv.js'
16
+ import { mergeObjects } from '../utils/merge-objects.js'
17
+ import { getProfileContent } from '../utils/get-profile-content.js'
18
+ import { getFileSize } from '../utils/get-file-size.js'
19
+ import { validateProfileObject } from '../utils/validate-profile-object.js'
19
20
 
20
21
  function printBanner (assetsOf, params) {
21
22
  console.log(` Generating files with the following options:
22
23
  ==========================
23
- Quasar project folder..... ${green(appDir)}
24
- ${green(`Quality level............. ${params.quality}/12`)}
25
- Icon source file.......... ${green(params.icon)}
26
- Icon trimming............. ${params.skipTrim ? 'no' : green('yes')}
27
- Icon padding.............. ${green(`horizontal: ${params.padding[0]}; vertical: ${params.padding[1]}`)}
28
- Background source file.... ${params.background ? green(params.background) : 'none'}
29
- Assets of................. ${green(assetsOf)}
30
- Generator filter.......... ${params.filter ? green(params.filter) : 'none'}
31
- Svg color................. ${green(params.svgColor)}
32
- Png color................. ${green(params.pngColor)}
33
- Splashscreen color........ ${green(params.splashscreenColor)}
34
- Splashscreen icon ratio... ${green(params.splashscreenIconRatio)}%
24
+ Quasar project folder..... ${ green(appDir) }
25
+ ${ green(`Quality level............. ${ params.quality }/12`) }
26
+ Icon source file.......... ${ green(params.icon) }
27
+ Icon trimming............. ${ params.skipTrim ? 'no' : green('yes') }
28
+ Icon padding.............. ${ green(`horizontal: ${ params.padding[ 0 ] }; vertical: ${ params.padding[ 1 ] }`) }
29
+ Background source file.... ${ params.background ? green(params.background) : 'none' }
30
+ Assets of................. ${ green(assetsOf) }
31
+ Generator filter.......... ${ params.filter ? green(params.filter) : 'none' }
32
+ Svg color................. ${ green(params.svgColor) }
33
+ Png color................. ${ green(params.pngColor) }
34
+ Splashscreen color........ ${ green(params.splashscreenColor) }
35
+ Splashscreen icon ratio... ${ green(params.splashscreenIconRatio) }%
35
36
  ==========================
36
37
  `)
37
38
  }
@@ -42,12 +43,12 @@ function parseAssets (assets, include) {
42
43
 
43
44
  if (include) {
44
45
  const embeddedModes = include.filter(
45
- mode => existsSync(resolveDir(modes[mode].folder))
46
+ mode => existsSync(resolveDir(modes[ mode ].folder))
46
47
  )
47
48
 
48
49
  embeddedModes.forEach(mode => {
49
50
  files = files.concat(
50
- getAssetsFiles(modes[mode].assets)
51
+ getAssetsFiles(modes[ mode ].assets)
51
52
  )
52
53
  })
53
54
 
@@ -70,8 +71,8 @@ function getUniqueFiles (files) {
70
71
  const uniqueFiles = []
71
72
 
72
73
  files.forEach(file => {
73
- if (filePaths[file.absoluteName] === void 0) {
74
- filePaths[file.absoluteName] = true
74
+ if (filePaths[ file.absoluteName ] === void 0) {
75
+ filePaths[ file.absoluteName ] = true
75
76
  uniqueFiles.push(file)
76
77
  }
77
78
  })
@@ -85,11 +86,11 @@ function generateFile (file, opts) {
85
86
 
86
87
  return new Promise(resolve => {
87
88
  // use the appropriate generator to handle the file creation
88
- generators[file.generator](file, opts, () => {
89
- const size = `(${getFileSize(file.absoluteName)})`
89
+ generators[ file.generator ](file, opts, () => {
90
+ const size = `(${ getFileSize(file.absoluteName) })`
90
91
  const type = (file.generator + ':').padEnd(13, ' ')
91
92
 
92
- log(`Generated ${type} ${green(file.relativeName)} ${gray(size)}`)
93
+ log(`Generated ${ type } ${ green(file.relativeName) } ${ gray(size) }`)
93
94
  resolve()
94
95
  })
95
96
  })
@@ -121,7 +122,7 @@ async function generateFromProfile (profile) {
121
122
  .then(() => uniqueFiles.length)
122
123
  }
123
124
 
124
- module.exports = function generate (argv) {
125
+ export function generate (argv) {
125
126
  const profile = {
126
127
  params: {},
127
128
  assets: []
@@ -166,6 +167,6 @@ module.exports = function generate (argv) {
166
167
 
167
168
  return generateFromProfile(profile)
168
169
  .then(numberOfFiles => {
169
- console.log(`\n Task done - generated ${numberOfFiles} file(s)!\n`)
170
+ console.log(`\n Task done - generated ${ numberOfFiles } file(s)!\n`)
170
171
  })
171
172
  }
@@ -1,10 +1,12 @@
1
- const { resolve, dirname, basename, isAbsolute, relative } = require('path')
2
- const { writeFileSync } = require('fs')
3
- const { ensureDir } = require('fs-extra')
4
1
 
5
- const { log } = require('../utils/logger')
6
- const modes = require('../modes')
7
- const validateProfileObject = require('../utils/validate-profile-object')
2
+ import { resolve, dirname, basename, isAbsolute, relative } from 'node:path'
3
+ import { writeFileSync } from 'node:fs'
4
+ import { ensureDir } from 'fs-extra'
5
+
6
+ import { log } from '../utils/logger.js'
7
+ import { modes } from '../modes/index.js'
8
+ import { validateProfileObject } from '../utils/validate-profile-object.js'
9
+ import { appDir } from '../utils/app-paths.js'
8
10
 
9
11
  function getParams ({ include, ...props }) {
10
12
  if (include) {
@@ -18,7 +20,7 @@ function getAssets (assets) {
18
20
  let list = []
19
21
 
20
22
  assets.forEach(name => {
21
- list = list.concat(modes[name].assets)
23
+ list = list.concat(modes[ name ].assets)
22
24
  })
23
25
 
24
26
  return list
@@ -36,11 +38,11 @@ function getTargetFilepath (output) {
36
38
  ? ''
37
39
  : '.json'
38
40
 
39
- const filename = `${prefix}${name}${suffix}`
41
+ const filename = `${ prefix }${ name }${ suffix }`
40
42
  return resolve(process.cwd(), folder || '', filename)
41
43
  }
42
44
 
43
- module.exports = function profile ({ output, assets, ...params }) {
45
+ export function profile ({ output, assets, ...params }) {
44
46
  const profile = {
45
47
  params: getParams(params),
46
48
  assets: getAssets(assets)
@@ -51,7 +53,6 @@ module.exports = function profile ({ output, assets, ...params }) {
51
53
  if (profile.params.icon && isAbsolute(profile.params.icon) === false) {
52
54
  // generate icon path relative to app root
53
55
  // so it won't matter from where the profile file is run
54
- const { appDir } = require('../utils/app-paths')
55
56
  profile.params.icon = relative(appDir, profile.params.icon)
56
57
  }
57
58
 
@@ -65,5 +66,5 @@ module.exports = function profile ({ output, assets, ...params }) {
65
66
  writeFileSync(targetFile, JSON.stringify(profile, null, 2), 'utf-8')
66
67
 
67
68
  console.log(` Generated Icon Genie profile file:`)
68
- log(`${targetFile}\n`)
69
+ log(`${ targetFile }\n`)
69
70
  }
@@ -1,17 +1,18 @@
1
- const { existsSync } = require('fs')
2
- const { green, red, underline } = require('kolorist')
3
1
 
4
- const { appDir, resolveDir } = require('../utils/app-paths')
5
- const { warn } = require('../utils/logger')
2
+ import { existsSync } from 'node:fs'
3
+ import { green, red, underline } from 'kolorist'
6
4
 
7
- const modes = require('../modes')
8
- const { verifyMount } = require('../mount')
9
- const getAssetsFiles = require('../utils/get-assets-files')
10
- const getPngSize = require('../utils/get-png-size')
11
- const parseArgv = require('../utils/parse-argv')
12
- const mergeObjects = require('../utils/merge-objects')
13
- const getProfileContent = require('../utils/get-profile-content')
14
- const validateProfileObject = require('../utils/validate-profile-object')
5
+ import { appDir, resolveDir } from '../utils/app-paths.js'
6
+ import { warn } from '../utils/logger.js'
7
+
8
+ import { modes } from '../modes/index.js'
9
+ import { verifyMount } from '../mount/index.js'
10
+ import { getAssetsFiles } from '../utils/get-assets-files.js'
11
+ import { getPngSize } from '../utils/get-png-size.js'
12
+ import { parseArgv } from '../utils/parse-argv.js'
13
+ import { mergeObjects } from '../utils/merge-objects.js'
14
+ import { getProfileContent } from '../utils/get-profile-content.js'
15
+ import { validateProfileObject } from '../utils/validate-profile-object.js'
15
16
 
16
17
  function getFileStatus (file) {
17
18
  if (!existsSync(file.absoluteName)) {
@@ -26,7 +27,7 @@ function getFileStatus (file) {
26
27
  }
27
28
 
28
29
  if (width !== file.width || height !== file.height) {
29
- return red(`ERROR: incorrect resolution! ${width}x${height}`)
30
+ return red(`ERROR: incorrect resolution! ${ width }x${ height }`)
30
31
  }
31
32
  }
32
33
 
@@ -34,10 +35,10 @@ function getFileStatus (file) {
34
35
  }
35
36
 
36
37
  function printMode (modeName, files) {
37
- console.log(` ${green(underline(`Mode ${modeName.toUpperCase()}`))} \n`)
38
+ console.log(` ${ green(underline(`Mode ${ modeName.toUpperCase() }`)) } \n`)
38
39
 
39
40
  files.forEach(file => {
40
- console.log(` ${getFileStatus(file)} - ${(file.generator + ':').padEnd(13, ' ')} ${file.relativeName} ${verifyMount(file)}`)
41
+ console.log(` ${ getFileStatus(file) } - ${ (file.generator + ':').padEnd(13, ' ') } ${ file.relativeName } ${ verifyMount(file) }`)
41
42
  })
42
43
 
43
44
  console.log()
@@ -46,26 +47,26 @@ function printMode (modeName, files) {
46
47
  function printBanner (assetsOf, params) {
47
48
  console.log(` VERIFYING with the following options:
48
49
  ================
49
- Root folder..... ${green(appDir)}
50
- Assets of....... ${green(assetsOf)}
51
- Assets filter... ${!params.filter ? 'none' : green(params.filter)}
50
+ Root folder..... ${ green(appDir) }
51
+ Assets of....... ${ green(assetsOf) }
52
+ Assets filter... ${ !params.filter ? 'none' : green(params.filter) }
52
53
  ================
53
54
  `)
54
55
  }
55
56
 
56
57
  function parseAssets (assets, include) {
57
- let filesMap = []
58
+ const filesMap = []
58
59
  let assetsOf = []
59
60
 
60
61
  if (include) {
61
62
  const embeddedModes = include.filter(
62
- mode => existsSync(resolveDir(modes[mode].folder))
63
+ mode => existsSync(resolveDir(modes[ mode ].folder))
63
64
  )
64
65
 
65
66
  embeddedModes.forEach(mode => {
66
67
  filesMap.push({
67
68
  name: mode,
68
- files: getAssetsFiles(modes[mode].assets)
69
+ files: getAssetsFiles(modes[ mode ].assets)
69
70
  })
70
71
  })
71
72
 
@@ -109,7 +110,7 @@ function verifyProfile (profile) {
109
110
  })
110
111
  }
111
112
 
112
- module.exports = function verify (argv) {
113
+ export function verify (argv) {
113
114
  const profile = {
114
115
  params: {},
115
116
  assets: []
@@ -1,28 +1,28 @@
1
- const { existsSync } = require('fs')
2
- const { normalize, join, sep } = require('path')
3
1
 
4
- function getAppDir () {
5
- let dir = process.cwd()
2
+ import { existsSync } from 'node:fs'
3
+ import { normalize, join, sep } from 'node:path'
6
4
 
7
- while (dir.length && dir[dir.length - 1] !== sep) {
5
+ import { fatal } from './logger.js'
6
+
7
+ function getAppInfo () {
8
+ let appDir = process.cwd()
9
+
10
+ while (appDir.length && appDir[ appDir.length - 1 ] !== sep) {
8
11
  if (
9
- existsSync(join(dir, 'quasar.conf.js')) ||
10
- existsSync(join(dir, 'quasar.config.js'))
12
+ existsSync(join(appDir, 'quasar.config.js'))
13
+ || existsSync(join(appDir, 'quasar.config.mjs'))
14
+ || existsSync(join(appDir, 'quasar.config.ts'))
15
+ || existsSync(join(appDir, 'quasar.config.cjs'))
16
+ || existsSync(join(appDir, 'quasar.conf.js')) // legacy
11
17
  ) {
12
- return dir
18
+ return appDir
13
19
  }
14
20
 
15
- dir = normalize(join(dir, '..'))
21
+ appDir = normalize(join(appDir, '..'))
16
22
  }
17
23
 
18
- const { warn } = require('./logger')
19
-
20
- warn(`Error. This command must be executed inside a Quasar v1+ project folder.`)
21
- warn()
22
- process.exit(1)
24
+ fatal(`Error. This command must be executed inside a Quasar project folder.`)
23
25
  }
24
26
 
25
- const appDir = getAppDir()
26
-
27
- module.exports.appDir = appDir
28
- module.exports.resolveDir = dir => join(appDir, dir)
27
+ export const appDir = getAppInfo()
28
+ export const resolveDir = dir => join(appDir, dir)
@@ -1,4 +1,5 @@
1
- module.exports = {
1
+
2
+ export const defaultParams = {
2
3
  quality: 5,
3
4
  splashscreenIconRatio: 40,
4
5
 
@@ -1,12 +1,13 @@
1
- module.exports = function filterArgvParams (argv) {
1
+
2
+ export function filterArgvParams (argv) {
2
3
  const params = {}
3
4
 
4
5
  Object.keys(argv).forEach(key => {
5
6
  if (key.length > 1 && key !== 'help') {
6
7
  // kebab to camel case
7
- const prop = key.replace(/(-\w)/g, m => m[1].toUpperCase())
8
+ const prop = key.replace(/(-\w)/g, m => m[ 1 ].toUpperCase())
8
9
 
9
- params[prop] = argv[key]
10
+ params[ prop ] = argv[ key ]
10
11
  }
11
12
  })
12
13
 
@@ -1,10 +1,11 @@
1
- const { join } = require('path')
2
1
 
3
- const { appDir } = require('./app-paths')
2
+ import { join } from 'node:path'
3
+
4
+ import { appDir } from './app-paths.js'
4
5
 
5
6
  const tagRegex = /\{(.*?)\}/g
6
7
 
7
- module.exports = function getAssetsFiles (assets) {
8
+ export function getAssetsFiles (assets) {
8
9
  const list = []
9
10
 
10
11
  assets.forEach(({ sizes, ...props }) => {
@@ -17,7 +18,7 @@ module.exports = function getAssetsFiles (assets) {
17
18
  : [ size, size ]
18
19
 
19
20
  const replacer = isArray
20
- ? `${width}x${height}`
21
+ ? `${ width }x${ height }`
21
22
  : width
22
23
 
23
24
  list.push({
@@ -41,7 +42,7 @@ module.exports = function getAssetsFiles (assets) {
41
42
  }
42
43
 
43
44
  if (tag) {
44
- file.tag = tag.replace(tagRegex, (_, p) => file[p === 'size' ? 'width' : p])
45
+ file.tag = tag.replace(tagRegex, (_, p) => file[ p === 'size' ? 'width' : p ])
45
46
  }
46
47
 
47
48
  return file
@@ -1,11 +1,11 @@
1
- const { dirname } = require('path')
2
1
 
3
- const imagemin = require('imagemin')
4
- const pngquant = require('imagemin-pngquant')
2
+ import { dirname } from 'node:path'
5
3
 
6
- const { BICUBIC2, HERMITE, BEZIER, BICUBIC, BILINEAR, NEAREST_NEIGHBOR } = require('png2icons')
4
+ import imagemin from 'imagemin'
5
+ import pngquant from 'imagemin-pngquant'
6
+ import { BICUBIC2, HERMITE, BEZIER, BICUBIC, BILINEAR, NEAREST_NEIGHBOR } from 'png2icons'
7
7
 
8
- module.exports.getIcoCompression = function getIcoCompression (quality) {
8
+ export function getIcoCompression (quality) {
9
9
  switch (quality) {
10
10
  case 1:
11
11
  case 2:
@@ -28,7 +28,7 @@ module.exports.getIcoCompression = function getIcoCompression (quality) {
28
28
  }
29
29
  }
30
30
 
31
- module.exports.getPngCompression = function getPngCompression (quality) {
31
+ export function getPngCompression (quality) {
32
32
  if (quality === 12) {
33
33
  return () => {}
34
34
  }
@@ -1,6 +1,7 @@
1
- const { statSync } = require('fs')
2
1
 
3
- const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']
2
+ import { statSync } from 'node:fs'
3
+
4
+ const units = [ 'B', 'KB', 'MB', 'GB', 'TB', 'PB' ]
4
5
 
5
6
  function humanStorageSize (bytes) {
6
7
  let u = 0
@@ -10,9 +11,9 @@ function humanStorageSize (bytes) {
10
11
  ++u
11
12
  }
12
13
 
13
- return `${bytes.toFixed(1)}${units[u]}`
14
+ return `${ bytes.toFixed(1) }${ units[ u ] }`
14
15
  }
15
16
 
16
- module.exports = function getFileSize (filename) {
17
+ export function getFileSize (filename) {
17
18
  return humanStorageSize(statSync(filename).size)
18
19
  }
@@ -1,12 +1,13 @@
1
- const sharp = require('sharp')
2
1
 
3
- const { getPngCompression, getIcoCompression } = require('./get-compression')
2
+ import sharp from 'sharp'
3
+
4
+ import { getPngCompression, getIcoCompression } from './get-compression.js'
4
5
 
5
6
  function getRgbColor (color) {
6
7
  let hex = color.replace(/^#/, '')
7
8
 
8
9
  if (hex.length === 3) {
9
- hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]
10
+ hex = hex[ 0 ] + hex[ 0 ] + hex[ 1 ] + hex[ 1 ] + hex[ 2 ] + hex[ 2 ]
10
11
  }
11
12
 
12
13
  const num = parseInt(hex, 16)
@@ -19,7 +20,7 @@ function getRgbColor (color) {
19
20
  }
20
21
  }
21
22
 
22
- module.exports = async function getFilesOptions ({
23
+ export async function getFilesOptions ({
23
24
  quality,
24
25
  padding,
25
26
 
@@ -51,8 +52,8 @@ module.exports = async function getFilesOptions ({
51
52
  const computedPadding = padding
52
53
  ? (
53
54
  padding.length === 1
54
- ? { horiz: padding[0], vert: padding[0] }
55
- : { horiz: padding[0], vert: padding[1] }
55
+ ? { horiz: padding[ 0 ], vert: padding[ 0 ] }
56
+ : { horiz: padding[ 0 ], vert: padding[ 1 ] }
56
57
  )
57
58
  : { horiz: 0, vert: 0 }
58
59
 
@@ -1,5 +1,6 @@
1
- const readChunk = require('read-chunk')
2
- const isPng = require('is-png')
1
+
2
+ import { readChunkSync } from 'read-chunk'
3
+ import isPng from 'is-png'
3
4
 
4
5
  // "fried" png's - http://www.jongware.com/pngdefry.html
5
6
  const friedChunk = 'CgBI'
@@ -10,15 +11,15 @@ function getSize (buffer) {
10
11
  : [ 20, 16 ]
11
12
 
12
13
  return {
13
- height: buffer.readUInt32BE(offset[0]),
14
- width: buffer.readUInt32BE(offset[1])
14
+ height: buffer.readUInt32BE(offset[ 0 ]),
15
+ width: buffer.readUInt32BE(offset[ 1 ])
15
16
  }
16
17
  }
17
18
 
18
- module.exports = function getPngSize (file) {
19
- const buffer = readChunk.sync(file, 0, 40)
19
+ export function getPngSize (file) {
20
+ const buffer = readChunkSync(file, { startPosition: 0, length: 40 })
20
21
 
21
22
  return isPng(buffer) !== true
22
- ? { width: 0, height: 0}
23
+ ? { width: 0, height: 0 }
23
24
  : getSize(buffer)
24
25
  }
@@ -1,13 +1,17 @@
1
- const { resolve } = require('path')
2
1
 
3
- const { warn } = require('./logger')
4
- const { appDir } = require('./app-paths')
2
+ import { resolve } from 'node:path'
3
+ import { readFileSync } from 'node:fs'
5
4
 
6
- module.exports = function getProfileContent (profileFile) {
5
+ import { warn } from './logger.js'
6
+ import { appDir } from './app-paths.js'
7
+
8
+ export function getProfileContent (profileFile) {
7
9
  const file = resolve(appDir, profileFile)
8
10
 
9
11
  try {
10
- return require(file)
12
+ return JSON.parse(
13
+ readFileSync(file, 'utf-8')
14
+ )
11
15
  }
12
16
  catch (err) {
13
17
  warn(`Specified profile file has a syntax error`)
@@ -1,8 +1,9 @@
1
- const { basename } = require('path')
2
- const glob = require('fast-glob')
3
- const { lstatSync } = require('fs')
4
1
 
5
- const { warn } = require('../utils/logger')
2
+ import { basename } from 'node:path'
3
+ import glob from 'fast-glob'
4
+ import { lstatSync } from 'node:fs'
5
+
6
+ import { warn } from '../utils/logger.js'
6
7
 
7
8
  function parseFolder (folder) {
8
9
  const profileFiles = glob.sync(`icongenie-*.json`, {
@@ -14,19 +15,19 @@ function parseFolder (folder) {
14
15
  const numberOfFiles = profileFiles.length
15
16
 
16
17
  if (numberOfFiles === 0) {
17
- warn(`No icongenie-*.json files detected in "${folder}" folder!`)
18
+ warn(`No icongenie-*.json files detected in "${ folder }" folder!`)
18
19
  process.exit(1)
19
20
  }
20
21
 
21
- console.log(` Detected ${numberOfFiles} JSON profile file(s):\n`)
22
- console.log(` * ${folder}`)
22
+ console.log(` Detected ${ numberOfFiles } JSON profile file(s):\n`)
23
+ console.log(` * ${ folder }`)
23
24
 
24
25
  profileFiles.forEach((file, index) => {
25
26
  const prefix = index + 1 < profileFiles.length
26
27
  ? `├──`
27
28
  : `└──`
28
29
 
29
- console.log(` ${prefix} ${basename(file)}`)
30
+ console.log(` ${ prefix } ${ basename(file) }`)
30
31
  })
31
32
 
32
33
  console.log()
@@ -34,7 +35,7 @@ function parseFolder (folder) {
34
35
  return profileFiles
35
36
  }
36
37
 
37
- module.exports = function getProfileFiles (profileParam) {
38
+ export function getProfileFiles (profileParam) {
38
39
  return lstatSync(profileParam).isDirectory()
39
40
  ? parseFolder(profileParam)
40
41
  : [ profileParam ]
@@ -1,6 +1,7 @@
1
- const { warn } = require('../utils/logger')
2
1
 
3
- module.exports = function getSquareIcon ({
2
+ import { warn } from '../utils/logger.js'
3
+
4
+ export function getSquareIcon ({
4
5
  file,
5
6
  icon,
6
7
  size,
@@ -10,7 +11,7 @@ module.exports = function getSquareIcon ({
10
11
  const img = icon.clone()
11
12
  let width = size - 2 * horiz
12
13
  let height = size - 2 * vert
13
- let corrections = []
14
+ const corrections = []
14
15
 
15
16
  if (width <= 0) {
16
17
  width = size
@@ -25,7 +26,7 @@ module.exports = function getSquareIcon ({
25
26
  }
26
27
 
27
28
  if (corrections.length > 0) {
28
- warn(`Correction on padding for ${file.relativeName} due to padding exceeding file's dimension of ${size}x${size}px`)
29
+ warn(`Correction on padding for ${ file.relativeName } due to padding exceeding file's dimension of ${ size }x${ size }px`)
29
30
  }
30
31
 
31
32
  img.resize({
@@ -1,19 +1,20 @@
1
- const { green, red } = require('kolorist')
1
+
2
+ import { green, red } from 'kolorist'
2
3
 
3
4
  const banner = '*'
4
5
 
5
6
  const logBanner = green(banner)
6
7
  const warnBanner = red(banner)
7
8
 
8
- module.exports.log = function (msg) {
9
- console.log(msg ? ` ${logBanner} ${msg}` : '')
9
+ export function log (msg) {
10
+ console.log(msg ? ` ${ logBanner } ${ msg }` : '')
10
11
  }
11
12
 
12
- module.exports.warn = function (msg) {
13
- console.warn(msg ? ` ${warnBanner} ⚠️ ${msg}\n` : '')
13
+ export function warn (msg) {
14
+ console.warn(msg ? ` ${ warnBanner } ⚠️ ${ msg }\n` : '')
14
15
  }
15
16
 
16
- module.exports.fatal = function (msg) {
17
- console.error(msg ? ` ${warnBanner} ⚠️ ${msg}` : '')
17
+ export function fatal (msg) {
18
+ console.error(msg ? ` ${ warnBanner } ⚠️ ${ msg }` : '')
18
19
  process.exit(1)
19
20
  }
@@ -1,12 +1,13 @@
1
- module.exports = function mergeObjects () {
1
+
2
+ export function mergeObjects () {
2
3
  const base = {}
3
4
 
4
5
  for (let i = 0; i < arguments.length; i++) {
5
- const obj = arguments[i]
6
+ const obj = arguments[ i ]
6
7
 
7
8
  Object.keys(obj).forEach(key => {
8
- if (obj[key] !== void 0) {
9
- base[key] = obj[key]
9
+ if (obj[ key ] !== void 0) {
10
+ base[ key ] = obj[ key ]
10
11
  }
11
12
  })
12
13
  }