From 325a7dc103ea6e41a32d80f8821f86da23565fd5 Mon Sep 17 00:00:00 2001 From: EugeniyKiyashko Date: Mon, 16 Sep 2024 17:36:38 +0400 Subject: [PATCH] update --- .../dx.vectormaputils.node.js | 28 ++++++++++++++++++- .../js/viz/vector_map.utils/node-cmd.js | 28 ++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/packages/devextreme/js/viz/vector_map.utils/dx.vectormaputils.node.js b/packages/devextreme/js/viz/vector_map.utils/dx.vectormaputils.node.js index 4dd2e1f485e6..6749c810080e 100644 --- a/packages/devextreme/js/viz/vector_map.utils/dx.vectormaputils.node.js +++ b/packages/devextreme/js/viz/vector_map.utils/dx.vectormaputils.node.js @@ -685,6 +685,32 @@ function normalizeJsName(value) { return value.trim().replace('-', '_').replace(' ', '_'); } +var illegalRe = /[\/\?<>\\:\*\|"]/g; +var controlRe = /[\x00-\x1f\x80-\x9f]/g; +var reservedRe = /^\.+$/; +var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; +var windowsTrailingRe = /[\. ]+$/; + +function sanitize(input, replacement) { + var sanitized = input + .replace(illegalRe, replacement) + .replace(controlRe, replacement) + .replace(reservedRe, replacement) + .replace(windowsReservedRe, replacement) + .replace(windowsTrailingRe, replacement); + + return sanitized; +} + +function sanitizedInput(input, options) { + var replacement = (options && options.replacement) || ''; + var output = sanitize(input, replacement); + if(replacement === '') { + return output; + } + return sanitize(output, ''); +} + function processFile(file, options, callback) { var name = path.basename(file, path.extname(file)); options.info('%s: started', name); @@ -700,7 +726,7 @@ function processFile(file, options, callback) { content = options.processFileContent(content, normalizeJsName(name)); } - var sanitizedInput = path.normalize(options.output); + var sanitizedInput = sanitizedInput(options.output); var outputPath = path.resolve(sanitizedInput || path.dirname(file), 'usa' + (options.isJSON ? '.json' : '.js')); fs.writeFile( diff --git a/packages/devextreme/js/viz/vector_map.utils/node-cmd.js b/packages/devextreme/js/viz/vector_map.utils/node-cmd.js index 357a1393cfe7..f11501730f6b 100644 --- a/packages/devextreme/js/viz/vector_map.utils/node-cmd.js +++ b/packages/devextreme/js/viz/vector_map.utils/node-cmd.js @@ -6,6 +6,32 @@ function normalizeJsName(value) { return value.trim().replace('-', '_').replace(' ', '_'); } +var illegalRe = /[\/\?<>\\:\*\|"]/g; +var controlRe = /[\x00-\x1f\x80-\x9f]/g; +var reservedRe = /^\.+$/; +var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; +var windowsTrailingRe = /[\. ]+$/; + +function sanitize(input, replacement) { + var sanitized = input + .replace(illegalRe, replacement) + .replace(controlRe, replacement) + .replace(reservedRe, replacement) + .replace(windowsReservedRe, replacement) + .replace(windowsTrailingRe, replacement); + + return sanitized; +} + +function sanitizedInput(input, options) { + var replacement = (options && options.replacement) || ''; + var output = sanitize(input, replacement); + if(replacement === '') { + return output; + } + return sanitize(output, ''); +} + function processFile(file, options, callback) { var name = path.basename(file, path.extname(file)); options.info('%s: started', name); @@ -21,7 +47,7 @@ function processFile(file, options, callback) { content = options.processFileContent(content, normalizeJsName(name)); } - var sanitizedInput = path.normalize(options.output); + var sanitizedInput = sanitizedInput(options.output); var outputPath = path.resolve(sanitizedInput || path.dirname(file), 'usa' + (options.isJSON ? '.json' : '.js')); fs.writeFile(