diff --git a/.vscode/settings.json b/.vscode/settings.json index 93c9586ed..2c04c2995 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -192,6 +192,7 @@ "searchtanks", "SHAREDEXP", "SKLLD", + "sluggify", "smoothstep", "Smri", "Specularity", diff --git a/packages/core/src/blitzkit/index.ts b/packages/core/src/blitzkit/index.ts index c5c879837..fdae4b28d 100644 --- a/packages/core/src/blitzkit/index.ts +++ b/packages/core/src/blitzkit/index.ts @@ -1,49 +1,50 @@ -export * from './assertSecret'; -export * from './asset'; -export * from './availableProvisions'; -export * from './averageDefinitions'; +export * from "./assertSecret"; +export * from "./asset"; +export * from "./availableProvisions"; +export * from "./averageDefinitions"; // export * from './camouflageDefinitions'; // export * from './checkConsumableProvisionInclusivity'; -export * from './coefficient'; -export * from './consumableDefinitions'; +export * from "./coefficient"; +export * from "./consumableDefinitions"; // export * from './context'; -export * from './createDefaultSkills'; -export * from './degressiveStat'; -export * from './discoveredIdDefinitions'; -export * from './emblemURL'; -export * from './equipmentDefinitions'; -export * from './eventManager'; -export * from './gameDefinitions'; -export * from './getArchivedLatestSeasonNumber'; +export * from "./createDefaultSkills"; +export * from "./degressiveStat"; +export * from "./discoveredIdDefinitions"; +export * from "./emblemURL"; +export * from "./equipmentDefinitions"; +export * from "./eventManager"; +export * from "./gameDefinitions"; +export * from "./getArchivedLatestSeasonNumber"; +export * from "./sluggify"; // export * from './getArchivedRatingInfo'; -export * from './getArchivedRatingLeaderboard'; +export * from "./getArchivedRatingLeaderboard"; // export * from './getArchivedRatingMidnightLeaderboard'; -export * from './getTimeDaysAgo'; -export * from './isExplosive'; -export * from './mapDefinitions'; -export * from './modelDefinitions'; -export * from './normalizeBoundingBox'; +export * from "./getTimeDaysAgo"; +export * from "./isExplosive"; +export * from "./mapDefinitions"; +export * from "./modelDefinitions"; +export * from "./normalizeBoundingBox"; // export * from './parseBkni'; // export * from './patientFetch'; -export * from './patientFetchJSON'; -export * from './progressiveStat'; -export * from './provisionDefinitions'; -export * from './resolveDpm'; -export * from './resolvePenetrationCoefficient'; -export * from './reviews'; -export * from './skillDefinitions'; -export * from './sum'; -export * from './tankDefinitions'; -export * from './tankIcon'; -export * from './tankNames'; -export * from './unionBoundingBox'; -export * from './uniqueGuns'; -export * from './unwrapBlitzkitResponse'; -export * from './votes'; +export * from "./patientFetchJSON"; +export * from "./progressiveStat"; +export * from "./provisionDefinitions"; +export * from "./resolveDpm"; +export * from "./resolvePenetrationCoefficient"; +export * from "./reviews"; +export * from "./skillDefinitions"; +export * from "./sum"; +export * from "./tankDefinitions"; +export * from "./tankIcon"; +export * from "./tankNames"; +export * from "./unionBoundingBox"; +export * from "./uniqueGuns"; +export * from "./unwrapBlitzkitResponse"; +export * from "./votes"; // export * from './withCORSProxy'; -export * from './createDefaultProvisions'; -export * from './gallery'; -export * from './metaSortTank'; -export * from './popularTanks'; -export * from './romanize'; -export * from './youtubers'; +export * from "./createDefaultProvisions"; +export * from "./gallery"; +export * from "./metaSortTank"; +export * from "./popularTanks"; +export * from "./romanize"; +export * from "./youtubers"; diff --git a/packages/core/src/blitzkit/sluggify.ts b/packages/core/src/blitzkit/sluggify.ts new file mode 100644 index 000000000..edd67e883 --- /dev/null +++ b/packages/core/src/blitzkit/sluggify.ts @@ -0,0 +1,16 @@ +import { slugify } from "transliteration"; + +const nonAlphanumericRegex = /[^a-z0-9]/g; +const multipleDashesRegex = /--+/g; +const trailingDashRegex = /-$/g; +const leadingDashRegex = /^-/g; + +export function sluggify(value: string) { + let slug = slugify(value); + slug = slug.replaceAll(nonAlphanumericRegex, "-"); + slug = slug.replaceAll(multipleDashesRegex, "-"); + slug = slug.replaceAll(trailingDashRegex, ""); + slug = slug.replaceAll(leadingDashRegex, ""); + + return slug; +} diff --git a/packages/scripts/src/buildAssets/definitions.ts b/packages/scripts/src/buildAssets/definitions.ts index f7c1afa3a..b2b10160d 100644 --- a/packages/scripts/src/buildAssets/definitions.ts +++ b/packages/scripts/src/buildAssets/definitions.ts @@ -22,6 +22,7 @@ import { ResearchCost, ShellType, SkillDefinitions, + sluggify, TankClass, TankDefinitions, TankPrice, @@ -36,7 +37,6 @@ import locales from "@blitzkit/i18n/locales.json"; import { readFile } from "fs/promises"; import { parse as parsePath } from "path"; import type { Vector3Tuple } from "three"; -import { slugify } from "transliteration"; import { parse as parseYaml } from "yaml"; import { AssetUploader } from "../core/github/assetUploader"; import { vfs } from "./constants"; @@ -765,7 +765,7 @@ export async function definitions() { getString(tank.userString) ).locales.en; - let slug = slugify(name); + let slug = sluggify(name); idToNation[tankId] = nation;