@node-minify/core 8.0.5-beta.0 → 8.0.6
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/README.md +2 -2
- package/dist/index.js +21 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<p align="center"><img src="/static/node-minify.
|
|
1
|
+
<p align="center"><img src="/static/node-minify.svg" width="348" alt="node-minify"></p>
|
|
2
2
|
|
|
3
3
|
<p align="center">A very light minifier Node.js module.</p>
|
|
4
4
|
|
|
@@ -28,7 +28,7 @@ minify({
|
|
|
28
28
|
compressor: uglifyJS,
|
|
29
29
|
input: 'foo.js',
|
|
30
30
|
output: 'bar.js',
|
|
31
|
-
callback: function(err, min) {}
|
|
31
|
+
callback: function (err, min) {}
|
|
32
32
|
});
|
|
33
33
|
```
|
|
34
34
|
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
|
|
25
25
|
// src/setup.ts
|
|
26
26
|
var import_path = __toESM(require("path"));
|
|
27
|
-
var
|
|
27
|
+
var import_glob = require("glob");
|
|
28
28
|
var import_utils = require("@node-minify/utils");
|
|
29
29
|
var defaultSettings = {
|
|
30
30
|
sync: false,
|
|
@@ -39,12 +39,18 @@ var setup = (inputSettings) => {
|
|
|
39
39
|
return settings;
|
|
40
40
|
}
|
|
41
41
|
checkMandatories(inputSettings);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
if (settings.input) {
|
|
43
|
+
settings = Object.assign(settings, wildcards(settings.input, settings.publicFolder));
|
|
44
|
+
}
|
|
45
|
+
if (settings.input && settings.output) {
|
|
46
|
+
settings = Object.assign(
|
|
47
|
+
settings,
|
|
48
|
+
checkOutput(settings.input, settings.output, settings.publicFolder, settings.replaceInPlace)
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
if (settings.input && settings.publicFolder) {
|
|
52
|
+
settings = Object.assign(settings, setPublicFolder(settings.input, settings.publicFolder));
|
|
53
|
+
}
|
|
48
54
|
return settings;
|
|
49
55
|
};
|
|
50
56
|
var checkOutput = (input, output, publicFolder, replaceInPlace) => {
|
|
@@ -52,11 +58,11 @@ var checkOutput = (input, output, publicFolder, replaceInPlace) => {
|
|
|
52
58
|
if (reg.test(output)) {
|
|
53
59
|
if (Array.isArray(input)) {
|
|
54
60
|
const outputMin = input.map(
|
|
55
|
-
(file) => import_utils.utils.setFileNameMin(file, output, replaceInPlace ?
|
|
61
|
+
(file) => import_utils.utils.setFileNameMin(file, output, replaceInPlace ? void 0 : publicFolder, replaceInPlace)
|
|
56
62
|
);
|
|
57
63
|
return { output: outputMin };
|
|
58
64
|
} else {
|
|
59
|
-
return { output: import_utils.utils.setFileNameMin(input, output, replaceInPlace ?
|
|
65
|
+
return { output: import_utils.utils.setFileNameMin(input, output, replaceInPlace ? void 0 : publicFolder, replaceInPlace) };
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
};
|
|
@@ -84,7 +90,7 @@ var wildcardsArray = (input, publicFolder) => {
|
|
|
84
90
|
return (publicFolder || "") + item;
|
|
85
91
|
});
|
|
86
92
|
if (isWildcardsPresent) {
|
|
87
|
-
output.input = (0,
|
|
93
|
+
output.input = (0, import_glob.globSync)(inputWithPublicFolder);
|
|
88
94
|
}
|
|
89
95
|
for (let i = 0; i < output.input.length; i++) {
|
|
90
96
|
if (output.input[i].indexOf("*") > -1) {
|
|
@@ -97,7 +103,7 @@ var wildcardsArray = (input, publicFolder) => {
|
|
|
97
103
|
var getFilesFromWildcards = (input, publicFolder) => {
|
|
98
104
|
let output = [];
|
|
99
105
|
if (input.indexOf("*") > -1) {
|
|
100
|
-
output = (0,
|
|
106
|
+
output = (0, import_glob.globSync)((publicFolder || "") + input);
|
|
101
107
|
}
|
|
102
108
|
return output;
|
|
103
109
|
};
|
|
@@ -144,7 +150,9 @@ var compress = (settings) => {
|
|
|
144
150
|
if (typeof settings.compressor !== "function") {
|
|
145
151
|
throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);
|
|
146
152
|
}
|
|
147
|
-
|
|
153
|
+
if (settings.output) {
|
|
154
|
+
createDirectory(settings.output);
|
|
155
|
+
}
|
|
148
156
|
if (Array.isArray(settings.output)) {
|
|
149
157
|
return settings.sync ? compressArrayOfFilesSync(settings) : compressArrayOfFilesAsync(settings);
|
|
150
158
|
} else {
|
|
@@ -207,7 +215,7 @@ var minify = (settings) => {
|
|
|
207
215
|
} else {
|
|
208
216
|
const minified = method(settings);
|
|
209
217
|
if (settings.callback) {
|
|
210
|
-
settings.callback(null,
|
|
218
|
+
settings.callback(null, minified);
|
|
211
219
|
}
|
|
212
220
|
resolve(minified);
|
|
213
221
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/setup.ts","../src/compress.ts","../src/compressInMemory.ts","../src/index.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport path from 'path';\nimport { sync } from 'globby';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Default settings.\n */\nconst defaultSettings = {\n sync: false,\n options: {},\n buffer: 1000 * 1024,\n callback: false\n};\n\n/**\n * Run setup.\n *\n * @param {Object} inputSettings\n * @return {Object}\n */\nconst setup = (inputSettings: object) => {\n let settings: Settings = Object.assign(utils.clone(defaultSettings), inputSettings);\n\n // In memory\n if (settings.content) {\n checkMandatoriesMemoryContent(inputSettings);\n return settings;\n }\n\n checkMandatories(inputSettings);\n\n settings = Object.assign(settings, wildcards(settings.input, settings.publicFolder));\n settings = Object.assign(\n settings,\n checkOutput(settings.input, settings.output, settings.publicFolder, settings.replaceInPlace)\n );\n settings = Object.assign(settings, setPublicFolder(settings.input, settings.publicFolder));\n\n return settings;\n};\n\n/**\n * Check the output path, searching for $1\n * if exist, returns the path remplacing $1 by file name\n *\n * @param {String|Array} input - Path file\n * @param {String} output - Path to the output file\n * @param {String} publicFolder - Path to the public folder\n * @param {Boolean} replaceInPlace - True to replace file in same folder\n * @return {Object}\n */\nconst checkOutput = (input: string | string[], output: string, publicFolder: string, replaceInPlace: boolean) => {\n const reg = new RegExp('\\\\$1');\n if (reg.test(output)) {\n if (Array.isArray(input)) {\n const outputMin = input.map(file =>\n utils.setFileNameMin(file, output, replaceInPlace ? null : publicFolder, replaceInPlace)\n );\n return { output: outputMin };\n } else {\n return { output: utils.setFileNameMin(input, output, replaceInPlace ? null : publicFolder, replaceInPlace) };\n }\n }\n};\n\n/**\n * Handle wildcards in a path, get the real path of each files.\n *\n * @param {String|Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcards = (input: string | string[], publicFolder: string) => {\n // If it's a string\n if (!Array.isArray(input)) {\n return wildcardsString(input, publicFolder);\n }\n\n return wildcardsArray(input, publicFolder);\n};\n\n/**\n * Handle wildcards in a path (string only), get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsString = (input: string, publicFolder: string) => {\n const output: { input?: string[] } = {};\n\n if (input.indexOf('*') > -1) {\n output.input = getFilesFromWildcards(input, publicFolder);\n }\n\n return output;\n};\n\n/**\n * Handle wildcards in a path (array only), get the real path of each files.\n *\n * @param {Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsArray = (input: string[], publicFolder: string) => {\n const output: { input?: string[] } = {};\n let isWildcardsPresent = false;\n\n output.input = input;\n\n // Transform all wildcards to path file\n const inputWithPublicFolder = input.map(item => {\n if (item.indexOf('*') > -1) {\n isWildcardsPresent = true;\n }\n return (publicFolder || '') + item;\n });\n\n if (isWildcardsPresent) {\n output.input = sync(inputWithPublicFolder);\n }\n\n // Remove all wildcards from array\n for (let i = 0; i < output.input.length; i++) {\n if (output.input[i].indexOf('*') > -1) {\n output.input.splice(i, 1);\n\n i--;\n }\n }\n\n return output;\n};\n\n/**\n * Get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst getFilesFromWildcards = (input: string, publicFolder: string) => {\n let output: string[] = [];\n\n if (input.indexOf('*') > -1) {\n output = sync((publicFolder || '') + input);\n }\n\n return output;\n};\n\n/**\n * Prepend the public folder to each file.\n *\n * @param {String|Array} input - Path to file(s)\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst setPublicFolder = (input: string | string[], publicFolder: string) => {\n const output: { input?: string | string[] } = {};\n\n if (typeof publicFolder !== 'string') {\n return output;\n }\n\n publicFolder = path.normalize(publicFolder);\n\n if (Array.isArray(input)) {\n output.input = input.map(item => {\n // Check if publicFolder is already in path\n if (path.normalize(item).indexOf(publicFolder) > -1) {\n return item;\n }\n return path.normalize(publicFolder + item);\n });\n return output;\n }\n\n input = path.normalize(input);\n\n // Check if publicFolder is already in path\n if (input.indexOf(publicFolder) > -1) {\n output.input = input;\n return output;\n }\n\n output.input = path.normalize(publicFolder + input);\n\n return output;\n};\n\n/**\n * Check if some settings are here.\n *\n * @param {Object} settings\n */\nconst checkMandatories = (settings: Settings) => {\n ['compressor', 'input', 'output'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if some settings are here for memory content.\n *\n * @param {Object} settings\n */\nconst checkMandatoriesMemoryContent = (settings: Settings) => {\n ['compressor', 'content'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if the setting exist.\n *\n * @param {String} setting\n * @param {Object} settings\n */\nconst mandatory = (setting: string, settings: Settings) => {\n if (!settings[setting]) {\n throw new Error(setting + ' is mandatory.');\n }\n};\n\n/**\n * Expose `setup()`.\n */\nexport { setup };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport fs from 'fs';\nimport mkdirp from 'mkdirp';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compress = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n createDirectory(settings.output);\n\n if (Array.isArray(settings.output)) {\n return settings.sync ? compressArrayOfFilesSync(settings) : compressArrayOfFilesAsync(settings);\n } else {\n return utils.compressSingleFile(settings);\n }\n};\n\n/**\n * Compress an array of files in sync.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesSync = (settings: Settings): any => {\n return (\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n return utils.runSync({ settings, content, index });\n })\n );\n};\n\n/**\n * Compress an array of files in async.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesAsync = (settings: Settings): Promise<string | void> => {\n let sequence: Promise<string | void> = Promise.resolve();\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n sequence = sequence.then(() => utils.runAsync({ settings, content, index }));\n });\n return sequence;\n};\n\n/**\n * Create folder of the target file.\n *\n * @param {String} file - Full path of the file\n */\nconst createDirectory = (file: string) => {\n if (Array.isArray(file)) {\n file = file[0];\n }\n const dir = file && file.substr(0, file.lastIndexOf('/'));\n if (!dir) {\n return;\n }\n if (!fs.statSync(dir).isDirectory()) {\n mkdirp.sync(dir);\n }\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compressInMemory = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n return utils.compressSingleFile(settings);\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compressInMemory };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { setup } from './setup';\nimport { compress } from './compress';\nimport { compressInMemory } from './compressInMemory';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run node-minify.\n *\n * @param {Object} settings - Settings from user input\n */\nconst minify = (settings: Settings) => {\n return new Promise((resolve, reject) => {\n const method: any = settings.content ? compressInMemory : compress;\n settings = setup(settings);\n if (!settings.sync) {\n method(settings)\n .then((minified: string) => {\n if (settings.callback) {\n settings.callback(null, minified);\n }\n resolve(minified);\n })\n .catch((err: Error) => {\n if (settings.callback) {\n settings.callback(err);\n }\n reject(err);\n });\n } else {\n const minified = method(settings);\n if (settings.callback) {\n settings.callback(null, typeof minified === 'string' ? minified : '');\n }\n resolve(minified);\n }\n });\n};\n\n/**\n * Expose `minify()`.\n */\nminify.default = minify;\nexport = minify;\n"],"mappings":"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","names":["path","import_utils","fs","mkdirp","import_utils"]}
|
|
1
|
+
{"version":3,"sources":["../src/setup.ts","../src/compress.ts","../src/compressInMemory.ts","../src/index.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport path from 'path';\nimport { globSync } from 'glob';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Default settings.\n */\nconst defaultSettings = {\n sync: false,\n options: {},\n buffer: 1000 * 1024,\n callback: false\n};\n\n/**\n * Run setup.\n *\n * @param {Object} inputSettings\n * @return {Object}\n */\nconst setup = (inputSettings: Settings) => {\n let settings: Settings = Object.assign(utils.clone(defaultSettings), inputSettings);\n\n // In memory\n if (settings.content) {\n checkMandatoriesMemoryContent(inputSettings);\n return settings;\n }\n\n checkMandatories(inputSettings);\n\n if (settings.input) {\n settings = Object.assign(settings, wildcards(settings.input, settings.publicFolder));\n }\n if (settings.input && settings.output) {\n settings = Object.assign(\n settings,\n checkOutput(settings.input, settings.output, settings.publicFolder, settings.replaceInPlace)\n );\n }\n if (settings.input && settings.publicFolder) {\n settings = Object.assign(settings, setPublicFolder(settings.input, settings.publicFolder));\n }\n\n return settings;\n};\n\n/**\n * Check the output path, searching for $1\n * if exist, returns the path remplacing $1 by file name\n *\n * @param {String|Array} input - Path file\n * @param {String} output - Path to the output file\n * @param {String} publicFolder - Path to the public folder\n * @param {Boolean} replaceInPlace - True to replace file in same folder\n * @return {Object}\n */\nconst checkOutput = (input: string | string[], output: string, publicFolder?: string, replaceInPlace?: boolean) => {\n const reg = new RegExp('\\\\$1');\n if (reg.test(output)) {\n if (Array.isArray(input)) {\n const outputMin = input.map(file =>\n utils.setFileNameMin(file, output, replaceInPlace ? undefined : publicFolder, replaceInPlace)\n );\n return { output: outputMin };\n } else {\n return { output: utils.setFileNameMin(input, output, replaceInPlace ? undefined : publicFolder, replaceInPlace) };\n }\n }\n};\n\n/**\n * Handle wildcards in a path, get the real path of each files.\n *\n * @param {String|Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcards = (input: string | string[], publicFolder?: string) => {\n // If it's a string\n if (!Array.isArray(input)) {\n return wildcardsString(input, publicFolder);\n }\n\n return wildcardsArray(input, publicFolder);\n};\n\n/**\n * Handle wildcards in a path (string only), get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsString = (input: string, publicFolder?: string) => {\n const output: { input?: string[] } = {};\n\n if (input.indexOf('*') > -1) {\n output.input = getFilesFromWildcards(input, publicFolder);\n }\n\n return output;\n};\n\n/**\n * Handle wildcards in a path (array only), get the real path of each files.\n *\n * @param {Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsArray = (input: string[], publicFolder?: string) => {\n const output: { input?: string[] } = {};\n let isWildcardsPresent = false;\n\n output.input = input;\n\n // Transform all wildcards to path file\n const inputWithPublicFolder = input.map(item => {\n if (item.indexOf('*') > -1) {\n isWildcardsPresent = true;\n }\n return (publicFolder || '') + item;\n });\n\n if (isWildcardsPresent) {\n output.input = globSync(inputWithPublicFolder);\n }\n\n // Remove all wildcards from array\n for (let i = 0; i < output.input.length; i++) {\n if (output.input[i].indexOf('*') > -1) {\n output.input.splice(i, 1);\n\n i--;\n }\n }\n\n return output;\n};\n\n/**\n * Get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst getFilesFromWildcards = (input: string, publicFolder?: string) => {\n let output: string[] = [];\n\n if (input.indexOf('*') > -1) {\n output = globSync((publicFolder || '') + input);\n }\n\n return output;\n};\n\n/**\n * Prepend the public folder to each file.\n *\n * @param {String|Array} input - Path to file(s)\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst setPublicFolder = (input: string | string[], publicFolder: string) => {\n const output: { input?: string | string[] } = {};\n\n if (typeof publicFolder !== 'string') {\n return output;\n }\n\n publicFolder = path.normalize(publicFolder);\n\n if (Array.isArray(input)) {\n output.input = input.map(item => {\n // Check if publicFolder is already in path\n if (path.normalize(item).indexOf(publicFolder) > -1) {\n return item;\n }\n return path.normalize(publicFolder + item);\n });\n return output;\n }\n\n input = path.normalize(input);\n\n // Check if publicFolder is already in path\n if (input.indexOf(publicFolder) > -1) {\n output.input = input;\n return output;\n }\n\n output.input = path.normalize(publicFolder + input);\n\n return output;\n};\n\n/**\n * Check if some settings are here.\n *\n * @param {Object} settings\n */\nconst checkMandatories = (settings: Settings) => {\n ['compressor', 'input', 'output'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if some settings are here for memory content.\n *\n * @param {Object} settings\n */\nconst checkMandatoriesMemoryContent = (settings: Settings) => {\n ['compressor', 'content'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if the setting exist.\n *\n * @param {String} setting\n * @param {Object} settings\n */\nconst mandatory = (setting: string, settings: { [key: string]: any }) => {\n if (!settings[setting]) {\n throw new Error(setting + ' is mandatory.');\n }\n};\n\n/**\n * Expose `setup()`.\n */\nexport { setup };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport fs from 'fs';\nimport mkdirp from 'mkdirp';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compress = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n if (settings.output) {\n createDirectory(settings.output);\n }\n\n if (Array.isArray(settings.output)) {\n return settings.sync ? compressArrayOfFilesSync(settings) : compressArrayOfFilesAsync(settings);\n } else {\n return utils.compressSingleFile(settings);\n }\n};\n\n/**\n * Compress an array of files in sync.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesSync = (settings: Settings): any => {\n return (\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n return utils.runSync({ settings, content, index });\n })\n );\n};\n\n/**\n * Compress an array of files in async.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesAsync = (settings: Settings): Promise<string | void> => {\n let sequence: Promise<string | void> = Promise.resolve();\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n sequence = sequence.then(() => utils.runAsync({ settings, content, index }));\n });\n return sequence;\n};\n\n/**\n * Create folder of the target file.\n *\n * @param {String} file - Full path of the file\n */\nconst createDirectory = (file: string) => {\n if (Array.isArray(file)) {\n file = file[0];\n }\n const dir = file && file.substr(0, file.lastIndexOf('/'));\n if (!dir) {\n return;\n }\n if (!fs.statSync(dir).isDirectory()) {\n mkdirp.sync(dir);\n }\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compressInMemory = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n return utils.compressSingleFile(settings);\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compressInMemory };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { setup } from './setup';\nimport { compress } from './compress';\nimport { compressInMemory } from './compressInMemory';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run node-minify.\n *\n * @param {Object} settings - Settings from user input\n */\nconst minify = (settings: Settings) => {\n return new Promise((resolve, reject) => {\n const method: any = settings.content ? compressInMemory : compress;\n settings = setup(settings);\n if (!settings.sync) {\n method(settings)\n .then((minified: string) => {\n if (settings.callback) {\n settings.callback(null, minified);\n }\n resolve(minified);\n })\n .catch((err: Error) => {\n if (settings.callback) {\n settings.callback(err);\n }\n reject(err);\n });\n } else {\n const minified: string = method(settings);\n if (settings.callback) {\n settings.callback(null, minified);\n }\n resolve(minified);\n }\n });\n};\n\n/**\n * Expose `minify()`.\n */\nminify.default = minify;\nexport = minify;\n"],"mappings":"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","names":["path","import_utils","fs","mkdirp","import_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -8,7 +8,7 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
8
8
|
|
|
9
9
|
// src/setup.ts
|
|
10
10
|
import path from "path";
|
|
11
|
-
import {
|
|
11
|
+
import { globSync } from "glob";
|
|
12
12
|
import { utils } from "@node-minify/utils";
|
|
13
13
|
var defaultSettings, setup, checkOutput, wildcards, wildcardsString, wildcardsArray, getFilesFromWildcards, setPublicFolder, checkMandatories, checkMandatoriesMemoryContent, mandatory;
|
|
14
14
|
var init_setup = __esm({
|
|
@@ -27,12 +27,18 @@ var init_setup = __esm({
|
|
|
27
27
|
return settings;
|
|
28
28
|
}
|
|
29
29
|
checkMandatories(inputSettings);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
if (settings.input) {
|
|
31
|
+
settings = Object.assign(settings, wildcards(settings.input, settings.publicFolder));
|
|
32
|
+
}
|
|
33
|
+
if (settings.input && settings.output) {
|
|
34
|
+
settings = Object.assign(
|
|
35
|
+
settings,
|
|
36
|
+
checkOutput(settings.input, settings.output, settings.publicFolder, settings.replaceInPlace)
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
if (settings.input && settings.publicFolder) {
|
|
40
|
+
settings = Object.assign(settings, setPublicFolder(settings.input, settings.publicFolder));
|
|
41
|
+
}
|
|
36
42
|
return settings;
|
|
37
43
|
};
|
|
38
44
|
checkOutput = (input, output, publicFolder, replaceInPlace) => {
|
|
@@ -40,11 +46,11 @@ var init_setup = __esm({
|
|
|
40
46
|
if (reg.test(output)) {
|
|
41
47
|
if (Array.isArray(input)) {
|
|
42
48
|
const outputMin = input.map(
|
|
43
|
-
(file) => utils.setFileNameMin(file, output, replaceInPlace ?
|
|
49
|
+
(file) => utils.setFileNameMin(file, output, replaceInPlace ? void 0 : publicFolder, replaceInPlace)
|
|
44
50
|
);
|
|
45
51
|
return { output: outputMin };
|
|
46
52
|
} else {
|
|
47
|
-
return { output: utils.setFileNameMin(input, output, replaceInPlace ?
|
|
53
|
+
return { output: utils.setFileNameMin(input, output, replaceInPlace ? void 0 : publicFolder, replaceInPlace) };
|
|
48
54
|
}
|
|
49
55
|
}
|
|
50
56
|
};
|
|
@@ -72,7 +78,7 @@ var init_setup = __esm({
|
|
|
72
78
|
return (publicFolder || "") + item;
|
|
73
79
|
});
|
|
74
80
|
if (isWildcardsPresent) {
|
|
75
|
-
output.input =
|
|
81
|
+
output.input = globSync(inputWithPublicFolder);
|
|
76
82
|
}
|
|
77
83
|
for (let i = 0; i < output.input.length; i++) {
|
|
78
84
|
if (output.input[i].indexOf("*") > -1) {
|
|
@@ -85,7 +91,7 @@ var init_setup = __esm({
|
|
|
85
91
|
getFilesFromWildcards = (input, publicFolder) => {
|
|
86
92
|
let output = [];
|
|
87
93
|
if (input.indexOf("*") > -1) {
|
|
88
|
-
output =
|
|
94
|
+
output = globSync((publicFolder || "") + input);
|
|
89
95
|
}
|
|
90
96
|
return output;
|
|
91
97
|
};
|
|
@@ -138,7 +144,9 @@ var init_compress = __esm({
|
|
|
138
144
|
if (typeof settings.compressor !== "function") {
|
|
139
145
|
throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);
|
|
140
146
|
}
|
|
141
|
-
|
|
147
|
+
if (settings.output) {
|
|
148
|
+
createDirectory(settings.output);
|
|
149
|
+
}
|
|
142
150
|
if (Array.isArray(settings.output)) {
|
|
143
151
|
return settings.sync ? compressArrayOfFilesSync(settings) : compressArrayOfFilesAsync(settings);
|
|
144
152
|
} else {
|
|
@@ -214,7 +222,7 @@ var require_src = __commonJS({
|
|
|
214
222
|
} else {
|
|
215
223
|
const minified = method(settings);
|
|
216
224
|
if (settings.callback) {
|
|
217
|
-
settings.callback(null,
|
|
225
|
+
settings.callback(null, minified);
|
|
218
226
|
}
|
|
219
227
|
resolve(minified);
|
|
220
228
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/setup.ts","../src/compress.ts","../src/compressInMemory.ts","../src/index.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport path from 'path';\nimport { sync } from 'globby';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Default settings.\n */\nconst defaultSettings = {\n sync: false,\n options: {},\n buffer: 1000 * 1024,\n callback: false\n};\n\n/**\n * Run setup.\n *\n * @param {Object} inputSettings\n * @return {Object}\n */\nconst setup = (inputSettings: object) => {\n let settings: Settings = Object.assign(utils.clone(defaultSettings), inputSettings);\n\n // In memory\n if (settings.content) {\n checkMandatoriesMemoryContent(inputSettings);\n return settings;\n }\n\n checkMandatories(inputSettings);\n\n settings = Object.assign(settings, wildcards(settings.input, settings.publicFolder));\n settings = Object.assign(\n settings,\n checkOutput(settings.input, settings.output, settings.publicFolder, settings.replaceInPlace)\n );\n settings = Object.assign(settings, setPublicFolder(settings.input, settings.publicFolder));\n\n return settings;\n};\n\n/**\n * Check the output path, searching for $1\n * if exist, returns the path remplacing $1 by file name\n *\n * @param {String|Array} input - Path file\n * @param {String} output - Path to the output file\n * @param {String} publicFolder - Path to the public folder\n * @param {Boolean} replaceInPlace - True to replace file in same folder\n * @return {Object}\n */\nconst checkOutput = (input: string | string[], output: string, publicFolder: string, replaceInPlace: boolean) => {\n const reg = new RegExp('\\\\$1');\n if (reg.test(output)) {\n if (Array.isArray(input)) {\n const outputMin = input.map(file =>\n utils.setFileNameMin(file, output, replaceInPlace ? null : publicFolder, replaceInPlace)\n );\n return { output: outputMin };\n } else {\n return { output: utils.setFileNameMin(input, output, replaceInPlace ? null : publicFolder, replaceInPlace) };\n }\n }\n};\n\n/**\n * Handle wildcards in a path, get the real path of each files.\n *\n * @param {String|Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcards = (input: string | string[], publicFolder: string) => {\n // If it's a string\n if (!Array.isArray(input)) {\n return wildcardsString(input, publicFolder);\n }\n\n return wildcardsArray(input, publicFolder);\n};\n\n/**\n * Handle wildcards in a path (string only), get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsString = (input: string, publicFolder: string) => {\n const output: { input?: string[] } = {};\n\n if (input.indexOf('*') > -1) {\n output.input = getFilesFromWildcards(input, publicFolder);\n }\n\n return output;\n};\n\n/**\n * Handle wildcards in a path (array only), get the real path of each files.\n *\n * @param {Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsArray = (input: string[], publicFolder: string) => {\n const output: { input?: string[] } = {};\n let isWildcardsPresent = false;\n\n output.input = input;\n\n // Transform all wildcards to path file\n const inputWithPublicFolder = input.map(item => {\n if (item.indexOf('*') > -1) {\n isWildcardsPresent = true;\n }\n return (publicFolder || '') + item;\n });\n\n if (isWildcardsPresent) {\n output.input = sync(inputWithPublicFolder);\n }\n\n // Remove all wildcards from array\n for (let i = 0; i < output.input.length; i++) {\n if (output.input[i].indexOf('*') > -1) {\n output.input.splice(i, 1);\n\n i--;\n }\n }\n\n return output;\n};\n\n/**\n * Get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst getFilesFromWildcards = (input: string, publicFolder: string) => {\n let output: string[] = [];\n\n if (input.indexOf('*') > -1) {\n output = sync((publicFolder || '') + input);\n }\n\n return output;\n};\n\n/**\n * Prepend the public folder to each file.\n *\n * @param {String|Array} input - Path to file(s)\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst setPublicFolder = (input: string | string[], publicFolder: string) => {\n const output: { input?: string | string[] } = {};\n\n if (typeof publicFolder !== 'string') {\n return output;\n }\n\n publicFolder = path.normalize(publicFolder);\n\n if (Array.isArray(input)) {\n output.input = input.map(item => {\n // Check if publicFolder is already in path\n if (path.normalize(item).indexOf(publicFolder) > -1) {\n return item;\n }\n return path.normalize(publicFolder + item);\n });\n return output;\n }\n\n input = path.normalize(input);\n\n // Check if publicFolder is already in path\n if (input.indexOf(publicFolder) > -1) {\n output.input = input;\n return output;\n }\n\n output.input = path.normalize(publicFolder + input);\n\n return output;\n};\n\n/**\n * Check if some settings are here.\n *\n * @param {Object} settings\n */\nconst checkMandatories = (settings: Settings) => {\n ['compressor', 'input', 'output'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if some settings are here for memory content.\n *\n * @param {Object} settings\n */\nconst checkMandatoriesMemoryContent = (settings: Settings) => {\n ['compressor', 'content'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if the setting exist.\n *\n * @param {String} setting\n * @param {Object} settings\n */\nconst mandatory = (setting: string, settings: Settings) => {\n if (!settings[setting]) {\n throw new Error(setting + ' is mandatory.');\n }\n};\n\n/**\n * Expose `setup()`.\n */\nexport { setup };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport fs from 'fs';\nimport mkdirp from 'mkdirp';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compress = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n createDirectory(settings.output);\n\n if (Array.isArray(settings.output)) {\n return settings.sync ? compressArrayOfFilesSync(settings) : compressArrayOfFilesAsync(settings);\n } else {\n return utils.compressSingleFile(settings);\n }\n};\n\n/**\n * Compress an array of files in sync.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesSync = (settings: Settings): any => {\n return (\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n return utils.runSync({ settings, content, index });\n })\n );\n};\n\n/**\n * Compress an array of files in async.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesAsync = (settings: Settings): Promise<string | void> => {\n let sequence: Promise<string | void> = Promise.resolve();\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n sequence = sequence.then(() => utils.runAsync({ settings, content, index }));\n });\n return sequence;\n};\n\n/**\n * Create folder of the target file.\n *\n * @param {String} file - Full path of the file\n */\nconst createDirectory = (file: string) => {\n if (Array.isArray(file)) {\n file = file[0];\n }\n const dir = file && file.substr(0, file.lastIndexOf('/'));\n if (!dir) {\n return;\n }\n if (!fs.statSync(dir).isDirectory()) {\n mkdirp.sync(dir);\n }\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compressInMemory = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n return utils.compressSingleFile(settings);\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compressInMemory };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { setup } from './setup';\nimport { compress } from './compress';\nimport { compressInMemory } from './compressInMemory';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run node-minify.\n *\n * @param {Object} settings - Settings from user input\n */\nconst minify = (settings: Settings) => {\n return new Promise((resolve, reject) => {\n const method: any = settings.content ? compressInMemory : compress;\n settings = setup(settings);\n if (!settings.sync) {\n method(settings)\n .then((minified: string) => {\n if (settings.callback) {\n settings.callback(null, minified);\n }\n resolve(minified);\n })\n .catch((err: Error) => {\n if (settings.callback) {\n settings.callback(err);\n }\n reject(err);\n });\n } else {\n const minified = method(settings);\n if (settings.callback) {\n settings.callback(null, typeof minified === 'string' ? minified : '');\n }\n resolve(minified);\n }\n });\n};\n\n/**\n * Expose `minify()`.\n */\nminify.default = minify;\nexport = minify;\n"],"mappings":"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","names":["utils","utils"]}
|
|
1
|
+
{"version":3,"sources":["../src/setup.ts","../src/compress.ts","../src/compressInMemory.ts","../src/index.ts"],"sourcesContent":["/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport path from 'path';\nimport { globSync } from 'glob';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Default settings.\n */\nconst defaultSettings = {\n sync: false,\n options: {},\n buffer: 1000 * 1024,\n callback: false\n};\n\n/**\n * Run setup.\n *\n * @param {Object} inputSettings\n * @return {Object}\n */\nconst setup = (inputSettings: Settings) => {\n let settings: Settings = Object.assign(utils.clone(defaultSettings), inputSettings);\n\n // In memory\n if (settings.content) {\n checkMandatoriesMemoryContent(inputSettings);\n return settings;\n }\n\n checkMandatories(inputSettings);\n\n if (settings.input) {\n settings = Object.assign(settings, wildcards(settings.input, settings.publicFolder));\n }\n if (settings.input && settings.output) {\n settings = Object.assign(\n settings,\n checkOutput(settings.input, settings.output, settings.publicFolder, settings.replaceInPlace)\n );\n }\n if (settings.input && settings.publicFolder) {\n settings = Object.assign(settings, setPublicFolder(settings.input, settings.publicFolder));\n }\n\n return settings;\n};\n\n/**\n * Check the output path, searching for $1\n * if exist, returns the path remplacing $1 by file name\n *\n * @param {String|Array} input - Path file\n * @param {String} output - Path to the output file\n * @param {String} publicFolder - Path to the public folder\n * @param {Boolean} replaceInPlace - True to replace file in same folder\n * @return {Object}\n */\nconst checkOutput = (input: string | string[], output: string, publicFolder?: string, replaceInPlace?: boolean) => {\n const reg = new RegExp('\\\\$1');\n if (reg.test(output)) {\n if (Array.isArray(input)) {\n const outputMin = input.map(file =>\n utils.setFileNameMin(file, output, replaceInPlace ? undefined : publicFolder, replaceInPlace)\n );\n return { output: outputMin };\n } else {\n return { output: utils.setFileNameMin(input, output, replaceInPlace ? undefined : publicFolder, replaceInPlace) };\n }\n }\n};\n\n/**\n * Handle wildcards in a path, get the real path of each files.\n *\n * @param {String|Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcards = (input: string | string[], publicFolder?: string) => {\n // If it's a string\n if (!Array.isArray(input)) {\n return wildcardsString(input, publicFolder);\n }\n\n return wildcardsArray(input, publicFolder);\n};\n\n/**\n * Handle wildcards in a path (string only), get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsString = (input: string, publicFolder?: string) => {\n const output: { input?: string[] } = {};\n\n if (input.indexOf('*') > -1) {\n output.input = getFilesFromWildcards(input, publicFolder);\n }\n\n return output;\n};\n\n/**\n * Handle wildcards in a path (array only), get the real path of each files.\n *\n * @param {Array} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst wildcardsArray = (input: string[], publicFolder?: string) => {\n const output: { input?: string[] } = {};\n let isWildcardsPresent = false;\n\n output.input = input;\n\n // Transform all wildcards to path file\n const inputWithPublicFolder = input.map(item => {\n if (item.indexOf('*') > -1) {\n isWildcardsPresent = true;\n }\n return (publicFolder || '') + item;\n });\n\n if (isWildcardsPresent) {\n output.input = globSync(inputWithPublicFolder);\n }\n\n // Remove all wildcards from array\n for (let i = 0; i < output.input.length; i++) {\n if (output.input[i].indexOf('*') > -1) {\n output.input.splice(i, 1);\n\n i--;\n }\n }\n\n return output;\n};\n\n/**\n * Get the real path of each files.\n *\n * @param {String} input - Path with wildcards\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst getFilesFromWildcards = (input: string, publicFolder?: string) => {\n let output: string[] = [];\n\n if (input.indexOf('*') > -1) {\n output = globSync((publicFolder || '') + input);\n }\n\n return output;\n};\n\n/**\n * Prepend the public folder to each file.\n *\n * @param {String|Array} input - Path to file(s)\n * @param {String} publicFolder - Path to the public folder\n * @return {Object}\n */\nconst setPublicFolder = (input: string | string[], publicFolder: string) => {\n const output: { input?: string | string[] } = {};\n\n if (typeof publicFolder !== 'string') {\n return output;\n }\n\n publicFolder = path.normalize(publicFolder);\n\n if (Array.isArray(input)) {\n output.input = input.map(item => {\n // Check if publicFolder is already in path\n if (path.normalize(item).indexOf(publicFolder) > -1) {\n return item;\n }\n return path.normalize(publicFolder + item);\n });\n return output;\n }\n\n input = path.normalize(input);\n\n // Check if publicFolder is already in path\n if (input.indexOf(publicFolder) > -1) {\n output.input = input;\n return output;\n }\n\n output.input = path.normalize(publicFolder + input);\n\n return output;\n};\n\n/**\n * Check if some settings are here.\n *\n * @param {Object} settings\n */\nconst checkMandatories = (settings: Settings) => {\n ['compressor', 'input', 'output'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if some settings are here for memory content.\n *\n * @param {Object} settings\n */\nconst checkMandatoriesMemoryContent = (settings: Settings) => {\n ['compressor', 'content'].forEach((item: string) => mandatory(item, settings));\n};\n\n/**\n * Check if the setting exist.\n *\n * @param {String} setting\n * @param {Object} settings\n */\nconst mandatory = (setting: string, settings: { [key: string]: any }) => {\n if (!settings[setting]) {\n throw new Error(setting + ' is mandatory.');\n }\n};\n\n/**\n * Expose `setup()`.\n */\nexport { setup };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport fs from 'fs';\nimport mkdirp from 'mkdirp';\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compress = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n if (settings.output) {\n createDirectory(settings.output);\n }\n\n if (Array.isArray(settings.output)) {\n return settings.sync ? compressArrayOfFilesSync(settings) : compressArrayOfFilesAsync(settings);\n } else {\n return utils.compressSingleFile(settings);\n }\n};\n\n/**\n * Compress an array of files in sync.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesSync = (settings: Settings): any => {\n return (\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n return utils.runSync({ settings, content, index });\n })\n );\n};\n\n/**\n * Compress an array of files in async.\n *\n * @param {Object} settings\n */\nconst compressArrayOfFilesAsync = (settings: Settings): Promise<string | void> => {\n let sequence: Promise<string | void> = Promise.resolve();\n Array.isArray(settings.input) &&\n settings.input.forEach((input, index) => {\n const content = utils.getContentFromFiles(input);\n sequence = sequence.then(() => utils.runAsync({ settings, content, index }));\n });\n return sequence;\n};\n\n/**\n * Create folder of the target file.\n *\n * @param {String} file - Full path of the file\n */\nconst createDirectory = (file: string) => {\n if (Array.isArray(file)) {\n file = file[0];\n }\n const dir = file && file.substr(0, file.lastIndexOf('/'));\n if (!dir) {\n return;\n }\n if (!fs.statSync(dir).isDirectory()) {\n mkdirp.sync(dir);\n }\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compress };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { utils } from '@node-minify/utils';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run compressor.\n *\n * @param {Object} settings\n */\nconst compressInMemory = (settings: Settings): Promise<string> | string => {\n if (typeof settings.compressor !== 'function') {\n throw new Error(`compressor should be a function, maybe you forgot to install the compressor`);\n }\n\n return utils.compressSingleFile(settings);\n};\n\n/**\n * Expose `compress()`.\n */\nexport { compressInMemory };\n","/*!\n * node-minify\n * Copyright(c) 2011-2023 Rodolphe Stoclin\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\nimport { setup } from './setup';\nimport { compress } from './compress';\nimport { compressInMemory } from './compressInMemory';\nimport { Settings } from '@node-minify/types';\n\n/**\n * Run node-minify.\n *\n * @param {Object} settings - Settings from user input\n */\nconst minify = (settings: Settings) => {\n return new Promise((resolve, reject) => {\n const method: any = settings.content ? compressInMemory : compress;\n settings = setup(settings);\n if (!settings.sync) {\n method(settings)\n .then((minified: string) => {\n if (settings.callback) {\n settings.callback(null, minified);\n }\n resolve(minified);\n })\n .catch((err: Error) => {\n if (settings.callback) {\n settings.callback(err);\n }\n reject(err);\n });\n } else {\n const minified: string = method(settings);\n if (settings.callback) {\n settings.callback(null, minified);\n }\n resolve(minified);\n }\n });\n};\n\n/**\n * Expose `minify()`.\n */\nminify.default = minify;\nexport = minify;\n"],"mappings":"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","names":["utils","utils"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-minify/core",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.6",
|
|
4
4
|
"description": "core of @node-minify",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compressor",
|
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
"prepublishOnly": "pnpm build"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@node-minify/utils": "8.0.
|
|
48
|
-
"
|
|
47
|
+
"@node-minify/utils": "8.0.6",
|
|
48
|
+
"glob": "9.3.5",
|
|
49
49
|
"mkdirp": "1.0.4"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@node-minify/types": "8.0.
|
|
52
|
+
"@node-minify/types": "8.0.6",
|
|
53
53
|
"@types/mkdirp": "^1.0.2"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "9fb532af458cb6416ecfb7abfb9cc0a3b9cb42e1"
|
|
56
56
|
}
|