Skip to content

Commit

Permalink
[Feature] Minimize JS/TS (#58)
Browse files Browse the repository at this point in the history
* `npm install terser-webpack-plugin --save-dev`

* Update tranliterate logic. Minimizer works now.

* Removed unused parameter
  • Loading branch information
Serhii-DV authored Aug 16, 2024
1 parent 41a031a commit e525bdc
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 15 deletions.
1 change: 1 addition & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"mini-css-extract-plugin": "^2.9.0",
"prettier": "^3.3.3",
"source-map-loader": "^5.0.0",
"terser-webpack-plugin": "^5.3.10",
"ts-loader": "^9.5.1",
"typescript": "^5.5.4",
"uuid": "^10.0.0",
Expand Down
3 changes: 0 additions & 3 deletions src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,5 @@ export default {
// Submission notes text
notes:
'This draft was created via CSV upload and Bandcamp To Discogs Google Chrome extension {extension_url}\n\nRelease url: {release_url}'
},
discogsApi: {
consumerKey: 'TJGtBNerXwCzYvFCQXSD'
}
};
34 changes: 34 additions & 0 deletions src/utils/transliterate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/** @see https://stackoverflow.com/a/11404121 */
const transliterationMap = [
{ ru: "Ё", en: "YO" }, { ru: "Й", en: "I" }, { ru: "Ц", en: "TS" },
{ ru: "У", en: "U" }, { ru: "К", en: "K" }, { ru: "Е", en: "E" },
{ ru: "Н", en: "N" }, { ru: "Г", en: "G" }, { ru: "Ш", en: "SH" },
{ ru: "Щ", en: "SCH" }, { ru: "З", en: "Z" }, { ru: "Х", en: "H" },
{ ru: "Ъ", en: "'" }, { ru: "ё", en: "yo" }, { ru: "й", en: "i" },
{ ru: "ц", en: "ts" }, { ru: "у", en: "u" }, { ru: "к", en: "k" },
{ ru: "е", en: "e" }, { ru: "н", en: "n" }, { ru: "г", en: "g" },
{ ru: "ш", en: "sh" }, { ru: "щ", en: "sch" }, { ru: "з", en: "z" },
{ ru: "х", en: "h" }, { ru: "ъ", en: "'" }, { ru: "Ф", en: "F" },
{ ru: "Ы", en: "I" }, { ru: "В", en: "V" }, { ru: "А", en: "A" },
{ ru: "П", en: "P" }, { ru: "Р", en: "R" }, { ru: "О", en: "O" },
{ ru: "Л", en: "L" }, { ru: "Д", en: "D" }, { ru: "Ж", en: "ZH" },
{ ru: "Э", en: "E" }, { ru: "ф", en: "f" }, { ru: "ы", en: "i" },
{ ru: "в", en: "v" }, { ru: "а", en: "a" }, { ru: "п", en: "p" },
{ ru: "р", en: "r" }, { ru: "о", en: "o" }, { ru: "л", en: "l" },
{ ru: "д", en: "d" }, { ru: "ж", en: "zh" }, { ru: "э", en: "e" },
{ ru: "Я", en: "Ya" }, { ru: "Ч", en: "CH" }, { ru: "С", en: "S" },
{ ru: "М", en: "M" }, { ru: "И", en: "I" }, { ru: "Т", en: "T" },
{ ru: "Ь", en: "'" }, { ru: "Б", en: "B" }, { ru: "Ю", en: "YU" },
{ ru: "я", en: "ya" }, { ru: "ч", en: "ch" }, { ru: "с", en: "s" },
{ ru: "м", en: "m" }, { ru: "и", en: "i" }, { ru: "т", en: "t" },
{ ru: "ь", en: "'" }, { ru: "б", en: "b" }, { ru: "ю", en: "yu" }
];

export function transliterate(word: string): string {
return Array.from(word)
.map((char) => {
const transliteration = transliterationMap.find(entry => entry.ru === char);
return transliteration ? transliteration.en : char;
})
.join('');
}
14 changes: 2 additions & 12 deletions src/utils/utils.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { transliterate } from "./transliterate";

export function padStringLeft(
string: string,
pad: string,
Expand All @@ -15,18 +17,6 @@ export function safeFilename(value: string): string {
.toLowerCase();
}

/** @see https://stackoverflow.com/a/11404121 */
// prettier-ignore
const transliterationMap: Record<string, string> = {
"Ё": "YO", "Й": "I", "Ц": "TS", "У": "U", "К": "K", "Е": "E", "Н": "N", "Г": "G", "Ш": "SH", "Щ": "SCH", "З": "Z", "Х": "H", "Ъ": "'", "ё": "yo", "й": "i", "ц": "ts", "у": "u", "к": "k", "е": "e", "н": "n", "г": "g", "ш": "sh", "щ": "sch", "з": "z", "х": "h", "ъ": "'", "Ф": "F", "Ы": "I", "В": "V", "А": "A", "П": "P", "Р": "R", "О": "O", "Л": "L", "Д": "D", "Ж": "ZH", "Э": "E", "ф": "f", "ы": "i", "в": "v", "а": "a", "п": "p", "р": "r", "о": "o", "л": "l", "д": "d", "ж": "zh", "э": "e", "Я": "Ya", "Ч": "CH", "С": "S", "М": "M", "И": "I", "Т": "T", "Ь": "'", "Б": "B", "Ю": "YU", "я": "ya", "ч": "ch", "с": "s", "м": "m", "и": "i", "т": "t", "ь": "'", "б": "b", "ю": "yu"
};

function transliterate(word: string): string {
return Array.from(word)
.map((char) => transliterationMap[char] || char)
.join('');
}

/** @see https://flexiple.com/javascript/javascript-capitalize-first-letter/ */
export function capitalizeEachWord(str: string): string {
const words = str.split(' ');
Expand Down
3 changes: 3 additions & 0 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const JsonMinimizerPlugin = require("json-minimizer-webpack-plugin");
const fs = require('fs');
const ESLintPlugin = require('eslint-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');

module.exports = (env, argv) => {
const isProduction = env.prod === true;
Expand Down Expand Up @@ -56,9 +57,11 @@ module.exports = (env, argv) => {
],
},
optimization: {
minimize: true,
minimizer: [
new CssMinimizerPlugin(),
new JsonMinimizerPlugin(),
new TerserPlugin()
],
},
resolve: {
Expand Down

0 comments on commit e525bdc

Please sign in to comment.