From 2f5b68920ec31f8bb201ee3db3034a903fecca60 Mon Sep 17 00:00:00 2001 From: zk Date: Sun, 17 May 2026 13:06:11 +0000 Subject: [PATCH] fix: make seeds test pass and refactor all require to import --- typescript/seeds-scripts/finders.js | 9 +-- typescript/seeds-scripts/import.js | 13 ++-- typescript/seeds-scripts/mutations.js | 8 +-- typescript/seeds-scripts/package.json | 1 + .../seeds-scripts/personal/del-added.js | 2 +- typescript/seeds-scripts/personal/en-uuid.js | 10 ++-- typescript/seeds-scripts/personal/example.js | 2 +- .../rerunners/add-level-version-folders.js | 6 +- .../rerunners/add-table-and-folders.js | 2 +- .../wikiwiki-arcaea/parse-scraped-data.js | 13 ++-- .../bms-pms/add-beatoraja-courses.js | 6 +- .../rerunners/bms-pms/add-lr2crs-file.js | 10 ++-- .../rerunners/bms-pms/apply-sieglinde.js | 8 +-- .../rerunners/ddr/add-ddr-folders.js | 2 +- .../seeds-scripts/rerunners/fix-folder-ids.js | 10 +++- .../seeds-scripts/rerunners/fix-goal-ids.js | 10 +++- .../gitadora/add-level-folders-gitadora.js | 4 +- .../iidx/add-2dxtra-to-normal-charts.js | 2 +- .../rerunners/iidx/add-2dxtra.js | 8 +-- .../iidx/add-new-primary-iidx-charts.js | 2 +- .../iidx/iidx-pe-kr/parse-iidxkr-data.js | 13 ++-- .../iidx/make-things-available-in-inf.js | 4 +- .../rerunners/iidx/mina-inf-legg.js | 2 +- .../rerunners/iidx/mina-inf-new-spl.js | 2 +- .../seeds-scripts/rerunners/iidx/mina-inf.js | 2 +- .../rerunners/iidx/update-bpi-poyashi.js | 15 +++-- .../rerunners/itg/add-folders.js | 2 +- .../rerunners/itg/parse-output.js | 8 +-- .../add-maimaidx-table-and-folders.js | 2 +- .../rerunners/popn/make-popn-folders.js | 7 +-- .../rerunners/popn/parse-duck-popn.js | 8 +-- .../rerunners/popn/parse-mdb-to-mxb.js | 12 ++-- .../rerunners/sdvx/add-sdvx-clear-tierlist.js | 9 ++- .../rerunners/sdvx/add-sdvx-konaste.js | 10 ++-- .../rerunners/stepmania/apply-zkldijson.js | 6 +- .../rerunners/toggle-table-inactive.js | 4 +- .../rerunners/usc/add-usc-converts.js | 10 ++-- .../wacca/make-folders-and-tables.js | 7 ++- .../rerunners/wacca/parse-wplus.js | 8 +-- typescript/seeds-scripts/sort-seeds.js | 18 ++++-- typescript/seeds-scripts/util.js | 59 ++++++++----------- 41 files changed, 177 insertions(+), 159 deletions(-) diff --git a/typescript/seeds-scripts/finders.js b/typescript/seeds-scripts/finders.js index c8684236b..36e18f227 100644 --- a/typescript/seeds-scripts/finders.js +++ b/typescript/seeds-scripts/finders.js @@ -1,4 +1,4 @@ -function FindChartWithPTDFVersion(collection, songID, playtype, difficulty, version) { +export function FindChartWithPTDFVersion(collection, songID, playtype, difficulty, version) { return collection.find( (chart) => chart.song.id === songID && @@ -8,11 +8,6 @@ function FindChartWithPTDFVersion(collection, songID, playtype, difficulty, vers ); } -function FindSongWithTitle(collection, title) { +export function FindSongWithTitle(collection, title) { return collection.find((e) => e.title === title || e.altTitles.includes(title)); } - -module.exports = { - FindChartWithPTDFVersion, - FindSongWithTitle, -}; diff --git a/typescript/seeds-scripts/import.js b/typescript/seeds-scripts/import.js index bc2fb76b1..8cd5b52cd 100644 --- a/typescript/seeds-scripts/import.js +++ b/typescript/seeds-scripts/import.js @@ -5,12 +5,15 @@ // This script is for importing the collections *immediately* into // any old mongo instance. -const { execSync } = require("child_process"); -const { Command } = require("commander"); -const fs = require("fs"); -const path = require("path"); +import { execSync } from "child_process"; +import { Command } from "commander"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; -const logger = require("./log"); +import { log as logger } from "./log.ts"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const program = new Command(); diff --git a/typescript/seeds-scripts/mutations.js b/typescript/seeds-scripts/mutations.js index 05e3bd233..b536944af 100644 --- a/typescript/seeds-scripts/mutations.js +++ b/typescript/seeds-scripts/mutations.js @@ -1,4 +1,4 @@ -const { EfficientInPlaceDeepmerge, MutateCollection } = require("./util"); +import { EfficientInPlaceDeepmerge, MutateCollection } from "./util.js"; function DoesMatchCriteria(element, mutation) { for (const [key, value] of Object.entries(mutation.match)) { @@ -10,7 +10,7 @@ function DoesMatchCriteria(element, mutation) { return true; } -function ApplyMutations(name, mutations) { +export function ApplyMutations(name, mutations) { MutateCollection(name, (collection) => { for (const element of collection) { for (const mutation of mutations) { @@ -23,7 +23,3 @@ function ApplyMutations(name, mutations) { return collection; }); } - -module.exports = { - ApplyMutations, -}; diff --git a/typescript/seeds-scripts/package.json b/typescript/seeds-scripts/package.json index bcf728c6e..41dac1cef 100644 --- a/typescript/seeds-scripts/package.json +++ b/typescript/seeds-scripts/package.json @@ -1,5 +1,6 @@ { "name": "tachi-seeds-scripts", + "type": "module", "version": "0.1.0-see-project-root", "private": true, "description": "Scripts for dealing with tachi-seeds.", diff --git a/typescript/seeds-scripts/personal/del-added.js b/typescript/seeds-scripts/personal/del-added.js index 68b3c50f6..35d217141 100644 --- a/typescript/seeds-scripts/personal/del-added.js +++ b/typescript/seeds-scripts/personal/del-added.js @@ -1,4 +1,4 @@ -const { IterateCollections } = require("../util"); +import { IterateCollections } from "../util.js"; IterateCollections((data, filename) => { if (!filename.startsWith("songs-") && !filename.startsWith("charts-")) { diff --git a/typescript/seeds-scripts/personal/en-uuid.js b/typescript/seeds-scripts/personal/en-uuid.js index 7b8d6af1b..33ba6f3b2 100644 --- a/typescript/seeds-scripts/personal/en-uuid.js +++ b/typescript/seeds-scripts/personal/en-uuid.js @@ -1,9 +1,11 @@ -const crypto = require("crypto"); -const fs = require("fs"); -const path = require("path"); +import crypto from "crypto"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; -const { ReadCollection, WriteCollection } = require("../util"); +import { ReadCollection, WriteCollection } from "../util.js"; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const COLLECTIONS_DIR = path.join(__dirname, "../../../db/seeds"); const NOW = Date.now(); diff --git a/typescript/seeds-scripts/personal/example.js b/typescript/seeds-scripts/personal/example.js index a5f5498b3..36dcde2b5 100644 --- a/typescript/seeds-scripts/personal/example.js +++ b/typescript/seeds-scripts/personal/example.js @@ -1,4 +1,4 @@ -const { MutateCollection } = require("../util"); +import { MutateCollection } from "../util.js"; // This is an example SINGLE-USE script. It does something quickly and ad-hoc, // that is of absolutely no interest to anyone else. diff --git a/typescript/seeds-scripts/rerunners/add-level-version-folders.js b/typescript/seeds-scripts/rerunners/add-level-version-folders.js index d243934f5..90c6e93e2 100644 --- a/typescript/seeds-scripts/rerunners/add-level-version-folders.js +++ b/typescript/seeds-scripts/rerunners/add-level-version-folders.js @@ -1,8 +1,8 @@ -const { FormatGame } = require("../../common/src"); +import { FormatGame } from "../../common/src/index.ts"; -const { CreateFolderID, MutateCollection } = require("../util"); +import { CreateFolderID, MutateCollection } from "../util.js"; -module.exports = function AddLevelVersionFolders(name, game, playtypes, version, levels) { +export default function AddLevelVersionFolders(name, game, playtypes, version, levels) { const ptFolders = {}; MutateCollection("folders.json", (folders) => { diff --git a/typescript/seeds-scripts/rerunners/add-table-and-folders.js b/typescript/seeds-scripts/rerunners/add-table-and-folders.js index 65e875611..2a24dd68f 100644 --- a/typescript/seeds-scripts/rerunners/add-table-and-folders.js +++ b/typescript/seeds-scripts/rerunners/add-table-and-folders.js @@ -1,4 +1,4 @@ -const { CreateFolderID, MutateCollection } = require("../util"); +import { CreateFolderID, MutateCollection } from "../util.js"; // Change these for whatever table you are adding. const GAME = "ddr"; diff --git a/typescript/seeds-scripts/rerunners/arcaea/wikiwiki-arcaea/parse-scraped-data.js b/typescript/seeds-scripts/rerunners/arcaea/wikiwiki-arcaea/parse-scraped-data.js index 31848e890..e2ca809c3 100644 --- a/typescript/seeds-scripts/rerunners/arcaea/wikiwiki-arcaea/parse-scraped-data.js +++ b/typescript/seeds-scripts/rerunners/arcaea/wikiwiki-arcaea/parse-scraped-data.js @@ -1,9 +1,12 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; -const { FindChartWithPTDFVersion } = require("../../../finders"); -const { ApplyMutations } = require("../../../mutations"); -const { ReadCollection } = require("../../../util"); +import { FindChartWithPTDFVersion } from "../../../finders.js"; +import { ApplyMutations } from "../../../mutations.js"; +import { ReadCollection } from "../../../util.js"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const MANUAL_TITLE_MAP = { // Zero idea diff --git a/typescript/seeds-scripts/rerunners/bms-pms/add-beatoraja-courses.js b/typescript/seeds-scripts/rerunners/bms-pms/add-beatoraja-courses.js index d5d2c9d2a..da4cdcffd 100644 --- a/typescript/seeds-scripts/rerunners/bms-pms/add-beatoraja-courses.js +++ b/typescript/seeds-scripts/rerunners/bms-pms/add-beatoraja-courses.js @@ -1,7 +1,7 @@ -const { Command } = require("commander"); -const fetch = require("node-fetch"); +import { Command } from "commander"; +import fetch from "node-fetch"; -const { MutateCollection } = require("../../util"); +import { MutateCollection } from "../../util.js"; const program = new Command(); program diff --git a/typescript/seeds-scripts/rerunners/bms-pms/add-lr2crs-file.js b/typescript/seeds-scripts/rerunners/bms-pms/add-lr2crs-file.js index 18c3a8755..79ef546b7 100644 --- a/typescript/seeds-scripts/rerunners/bms-pms/add-lr2crs-file.js +++ b/typescript/seeds-scripts/rerunners/bms-pms/add-lr2crs-file.js @@ -1,9 +1,9 @@ -const { Command } = require("commander"); -const { XMLParser } = require("fast-xml-parser"); -const fs = require("fs"); -const { GAME_PT_CONFIGS } = require("../../../common/src"); +import { Command } from "commander"; +import fs from "fs"; +import { XMLParser } from "fast-xml-parser"; -const { MutateCollection } = require("../../util"); +import { GAME_PT_CONFIGS } from "../../../common/src/index.ts"; +import { MutateCollection } from "../../util.js"; const program = new Command(); program diff --git a/typescript/seeds-scripts/rerunners/bms-pms/apply-sieglinde.js b/typescript/seeds-scripts/rerunners/bms-pms/apply-sieglinde.js index 37a3796a9..61869a603 100644 --- a/typescript/seeds-scripts/rerunners/bms-pms/apply-sieglinde.js +++ b/typescript/seeds-scripts/rerunners/bms-pms/apply-sieglinde.js @@ -1,8 +1,8 @@ -const { Command } = require("commander"); -const fs = require("fs"); -const path = require("path"); +import { Command } from "commander"; +import fs from "fs"; +import path from "path"; -const { MutateCollection } = require("../../util"); +import { MutateCollection } from "../../util.js"; const program = new Command(); program.option("-i, --input "); diff --git a/typescript/seeds-scripts/rerunners/ddr/add-ddr-folders.js b/typescript/seeds-scripts/rerunners/ddr/add-ddr-folders.js index 9eaa39aa7..7914c7471 100644 --- a/typescript/seeds-scripts/rerunners/ddr/add-ddr-folders.js +++ b/typescript/seeds-scripts/rerunners/ddr/add-ddr-folders.js @@ -1,4 +1,4 @@ -const { CreateFolderID, MutateCollection } = require("../../util"); +import { CreateFolderID, MutateCollection } from "../../util.js"; const PLAYTYPES = ["SP", "DP"]; const VERSIONS = ["world", "konaste", "a3", "a20plus", "a20", "a"]; diff --git a/typescript/seeds-scripts/rerunners/fix-folder-ids.js b/typescript/seeds-scripts/rerunners/fix-folder-ids.js index 7d8a16211..3bee0069b 100644 --- a/typescript/seeds-scripts/rerunners/fix-folder-ids.js +++ b/typescript/seeds-scripts/rerunners/fix-folder-ids.js @@ -1,5 +1,11 @@ -const logger = require("../log"); -const { CreateFolderID, MutateCollection, ReadCollection, WriteCollection } = require("../util"); +import { log as logger } from "../log.ts"; +import { + CreateFolderID, + MutateCollection, + ReadCollection, + WriteCollection, +} from "../util.js"; + const translateMap = new Map(); diff --git a/typescript/seeds-scripts/rerunners/fix-goal-ids.js b/typescript/seeds-scripts/rerunners/fix-goal-ids.js index b3a23f78d..f46d4fd0d 100644 --- a/typescript/seeds-scripts/rerunners/fix-goal-ids.js +++ b/typescript/seeds-scripts/rerunners/fix-goal-ids.js @@ -1,5 +1,11 @@ -const logger = require("../log"); -const { CreateGoalID, MutateCollection, ReadCollection, WriteCollection } = require("../util"); +import { log as logger } from "../log.ts"; +import { + CreateGoalID, + MutateCollection, + ReadCollection, + WriteCollection, +} from "../util.js"; + const translateMap = new Map(); diff --git a/typescript/seeds-scripts/rerunners/gitadora/add-level-folders-gitadora.js b/typescript/seeds-scripts/rerunners/gitadora/add-level-folders-gitadora.js index 5c7095070..0ead5aefe 100644 --- a/typescript/seeds-scripts/rerunners/gitadora/add-level-folders-gitadora.js +++ b/typescript/seeds-scripts/rerunners/gitadora/add-level-folders-gitadora.js @@ -1,6 +1,6 @@ -const { PrettyVersions } = require("tachi-common/config/versions"); +import { PrettyVersions } from "tachi-common/config/versions"; -const { CreateFolderID, MutateCollection } = require("../../util"); +import { CreateFolderID, MutateCollection } from "../../util.js"; function CreateFolder(criteria, playtype, title) { const f = { diff --git a/typescript/seeds-scripts/rerunners/iidx/add-2dxtra-to-normal-charts.js b/typescript/seeds-scripts/rerunners/iidx/add-2dxtra-to-normal-charts.js index 8452fb4a9..576878bba 100644 --- a/typescript/seeds-scripts/rerunners/iidx/add-2dxtra-to-normal-charts.js +++ b/typescript/seeds-scripts/rerunners/iidx/add-2dxtra-to-normal-charts.js @@ -1,4 +1,4 @@ -const { MutateCollection } = require("../../util"); +import { MutateCollection } from "../../util.js"; // this script will add "newVersion" to all charts that are in "baseVersion" diff --git a/typescript/seeds-scripts/rerunners/iidx/add-2dxtra.js b/typescript/seeds-scripts/rerunners/iidx/add-2dxtra.js index 350df6d96..24cbb18a8 100644 --- a/typescript/seeds-scripts/rerunners/iidx/add-2dxtra.js +++ b/typescript/seeds-scripts/rerunners/iidx/add-2dxtra.js @@ -1,8 +1,8 @@ -const { Command } = require("commander"); -const { XMLParser } = require("fast-xml-parser"); -const fs = require("fs"); +import { Command } from "commander"; +import { XMLParser } from "fast-xml-parser"; +import fs from "fs"; -const { CreateChartID, MutateCollection } = require("../../util"); +import { CreateChartID, MutateCollection } from "../../util.js"; const program = new Command(); program diff --git a/typescript/seeds-scripts/rerunners/iidx/add-new-primary-iidx-charts.js b/typescript/seeds-scripts/rerunners/iidx/add-new-primary-iidx-charts.js index 4f09e5d1e..c8bfb9e9b 100644 --- a/typescript/seeds-scripts/rerunners/iidx/add-new-primary-iidx-charts.js +++ b/typescript/seeds-scripts/rerunners/iidx/add-new-primary-iidx-charts.js @@ -1,4 +1,4 @@ -const { CreateChartID, MutateCollection } = require("../../util"); +import { CreateChartID, MutateCollection } from "../../util.js"; const inGameID = 80052; const tachiSongID = 2353; diff --git a/typescript/seeds-scripts/rerunners/iidx/iidx-pe-kr/parse-iidxkr-data.js b/typescript/seeds-scripts/rerunners/iidx/iidx-pe-kr/parse-iidxkr-data.js index 7847390fd..cd553afad 100644 --- a/typescript/seeds-scripts/rerunners/iidx/iidx-pe-kr/parse-iidxkr-data.js +++ b/typescript/seeds-scripts/rerunners/iidx/iidx-pe-kr/parse-iidxkr-data.js @@ -1,9 +1,12 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; -const { FindChartWithPTDFVersion, FindSongWithTitle } = require("../../../finders"); -const { ApplyMutations } = require("../../../mutations"); -const { ReadCollection } = require("../../../util"); +import { FindChartWithPTDFVersion, FindSongWithTitle } from "../../../finders.js"; +import { ApplyMutations } from "../../../mutations.js"; +import { ReadCollection } from "../../../util.js"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const songs = ReadCollection("songs-iidx.json"); diff --git a/typescript/seeds-scripts/rerunners/iidx/make-things-available-in-inf.js b/typescript/seeds-scripts/rerunners/iidx/make-things-available-in-inf.js index 3e1321f80..b62c28820 100644 --- a/typescript/seeds-scripts/rerunners/iidx/make-things-available-in-inf.js +++ b/typescript/seeds-scripts/rerunners/iidx/make-things-available-in-inf.js @@ -1,4 +1,4 @@ -const { MutateCollection } = require("../../util"); +import { MutateCollection } from "../../util.js"; function idMatch(idSet, inGameID) { if (Array.isArray(inGameID)) { @@ -15,7 +15,7 @@ function idMatch(idSet, inGameID) { return false; } -module.exports = (idSet) => +export default (idSet) => MutateCollection("charts-iidx.json", (charts) => { for (const chart of charts) { if ( diff --git a/typescript/seeds-scripts/rerunners/iidx/mina-inf-legg.js b/typescript/seeds-scripts/rerunners/iidx/mina-inf-legg.js index f11ca1dbb..7e46cec3f 100644 --- a/typescript/seeds-scripts/rerunners/iidx/mina-inf-legg.js +++ b/typescript/seeds-scripts/rerunners/iidx/mina-inf-legg.js @@ -1,4 +1,4 @@ -const { MutateCollection } = require("../../util"); +import { MutateCollection } from "../../util.js"; // This is the numerical ID of the song we want to add to the Infinitas table // Make sure to double check if it's using legacy charts for some stupid reason diff --git a/typescript/seeds-scripts/rerunners/iidx/mina-inf-new-spl.js b/typescript/seeds-scripts/rerunners/iidx/mina-inf-new-spl.js index 951c7dc77..8ac8fe732 100644 --- a/typescript/seeds-scripts/rerunners/iidx/mina-inf-new-spl.js +++ b/typescript/seeds-scripts/rerunners/iidx/mina-inf-new-spl.js @@ -1,4 +1,4 @@ -const { CreateChartID, MutateCollection } = require("../../util"); +import { CreateChartID, MutateCollection } from "../../util.js"; const inGameID = 25021; const tachiSongID = 1728; diff --git a/typescript/seeds-scripts/rerunners/iidx/mina-inf.js b/typescript/seeds-scripts/rerunners/iidx/mina-inf.js index 4d9b8da94..4958991e5 100644 --- a/typescript/seeds-scripts/rerunners/iidx/mina-inf.js +++ b/typescript/seeds-scripts/rerunners/iidx/mina-inf.js @@ -1,4 +1,4 @@ -const { MutateCollection } = require("../../util"); +import { MutateCollection } from "../../util.js"; // This is the numerical ID of the song we want to add to the Infinitas table // Make sure to double check if it's using legacy charts for some stupid reason diff --git a/typescript/seeds-scripts/rerunners/iidx/update-bpi-poyashi.js b/typescript/seeds-scripts/rerunners/iidx/update-bpi-poyashi.js index 5693ca0a1..28960bf94 100644 --- a/typescript/seeds-scripts/rerunners/iidx/update-bpi-poyashi.js +++ b/typescript/seeds-scripts/rerunners/iidx/update-bpi-poyashi.js @@ -1,10 +1,13 @@ -const { Command } = require("commander"); -const fs = require("fs"); -const fetch = require("node-fetch"); -const path = require("path"); +import { Command } from "commander"; +import fs from "fs"; +import path from "path"; +import fetch from "node-fetch"; +import { fileURLToPath } from "url"; -const logger = require("../../log"); -const { MutateCollection, ReadCollection } = require("../../util"); +import { log as logger } from "../../log.ts"; +import { MutateCollection, ReadCollection } from "../../util.js"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const program = new Command(); diff --git a/typescript/seeds-scripts/rerunners/itg/add-folders.js b/typescript/seeds-scripts/rerunners/itg/add-folders.js index cd7e7f80e..d050ed40d 100644 --- a/typescript/seeds-scripts/rerunners/itg/add-folders.js +++ b/typescript/seeds-scripts/rerunners/itg/add-folders.js @@ -1,4 +1,4 @@ -const { CreateFolderID, MutateCollection } = require("../../util"); +import { CreateFolderID, MutateCollection } from "../../util.js"; const folders = []; diff --git a/typescript/seeds-scripts/rerunners/itg/parse-output.js b/typescript/seeds-scripts/rerunners/itg/parse-output.js index f393b37d3..62b06a712 100644 --- a/typescript/seeds-scripts/rerunners/itg/parse-output.js +++ b/typescript/seeds-scripts/rerunners/itg/parse-output.js @@ -1,13 +1,13 @@ -const { Command } = require("commander"); -const { readFileSync } = require("fs"); +import { Command } from "commander"; +import { readFileSync } from "fs"; -const { +import { CreateChartID, GetFreshSongIDGenerator, MutateCollection, ReadCollection, WriteCollection, -} = require("../../util"); +} from "../../util.js"; const program = new Command(); program.requiredOption("-i, --input "); diff --git a/typescript/seeds-scripts/rerunners/maimaidx/add-maimaidx-table-and-folders.js b/typescript/seeds-scripts/rerunners/maimaidx/add-maimaidx-table-and-folders.js index cb002b3e4..aeec76e30 100644 --- a/typescript/seeds-scripts/rerunners/maimaidx/add-maimaidx-table-and-folders.js +++ b/typescript/seeds-scripts/rerunners/maimaidx/add-maimaidx-table-and-folders.js @@ -1,4 +1,4 @@ -const { CreateFolderID, MutateCollection } = require("../../util"); +import { CreateFolderID, MutateCollection } from "../../util.js"; // Change these for whatever table you are adding. const GAME = "maimaidx"; diff --git a/typescript/seeds-scripts/rerunners/popn/make-popn-folders.js b/typescript/seeds-scripts/rerunners/popn/make-popn-folders.js index 42d552f71..7cc3928da 100644 --- a/typescript/seeds-scripts/rerunners/popn/make-popn-folders.js +++ b/typescript/seeds-scripts/rerunners/popn/make-popn-folders.js @@ -1,12 +1,11 @@ -const { GetGamePTConfig } = require("../../../common/src"); +import { Command } from "commander"; -const { CreateFolderID, MutateCollection } = require("../../util"); +import { GetGamePTConfig } from "../../../common/src/index.ts"; +import { CreateFolderID, MutateCollection } from "../../util.js"; const tableMainFolders = []; const tableAllFolders = []; -const { Command } = require("commander"); - const program = new Command(); program.requiredOption("-v, --version "); diff --git a/typescript/seeds-scripts/rerunners/popn/parse-duck-popn.js b/typescript/seeds-scripts/rerunners/popn/parse-duck-popn.js index 384fabb89..35dc932bd 100644 --- a/typescript/seeds-scripts/rerunners/popn/parse-duck-popn.js +++ b/typescript/seeds-scripts/rerunners/popn/parse-duck-popn.js @@ -1,12 +1,12 @@ -const { Command } = require("commander"); -const fs = require("fs"); +import { Command } from "commander"; +import fs from "fs"; -const { +import { CreateChartID, GetFreshSongIDGenerator: GetFreshScoreIDGenerator, ReadCollection, WriteCollection, -} = require("../../util"); +} from "../../util.js"; const program = new Command(); program.requiredOption("-f, --file "); diff --git a/typescript/seeds-scripts/rerunners/popn/parse-mdb-to-mxb.js b/typescript/seeds-scripts/rerunners/popn/parse-mdb-to-mxb.js index 51b08f81a..c582cb411 100644 --- a/typescript/seeds-scripts/rerunners/popn/parse-mdb-to-mxb.js +++ b/typescript/seeds-scripts/rerunners/popn/parse-mdb-to-mxb.js @@ -1,9 +1,9 @@ -const { Command } = require("commander"); -const crypto = require("crypto"); -const { XMLParser } = require("fast-xml-parser"); -const fs = require("fs"); -const iconv = require("iconv-lite"); -const path = require("path"); +import { Command } from "commander"; +import crypto from "crypto"; +import { XMLParser } from "fast-xml-parser"; +import fs from "fs"; +import iconv from "iconv-lite"; +import path from "path"; const program = new Command(); program diff --git a/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-clear-tierlist.js b/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-clear-tierlist.js index 7f8567103..98f2d5574 100644 --- a/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-clear-tierlist.js +++ b/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-clear-tierlist.js @@ -1,10 +1,9 @@ /* eslint no-labels: "off", require-unicode-regexp: "off", no-irregular-whitespace: "off" */ +import { Command } from "commander"; +import { parse } from "csv-parse/sync"; +import fs from "fs"; -const { Command } = require("commander"); -const { parse } = require("csv-parse/sync"); -const fs = require("fs"); - -const { MutateCollection, ReadCollection } = require("../../util"); +import { MutateCollection, ReadCollection } from "../../util.js"; // The tier lists are available at // https://docs.google.com/spreadsheets/d/1cFltguBvPplBem-x1STHnG3k4TZzFfyNEZ-RwsQszoo/edit diff --git a/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-konaste.js b/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-konaste.js index 81af13fa0..3ece9a320 100644 --- a/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-konaste.js +++ b/typescript/seeds-scripts/rerunners/sdvx/add-sdvx-konaste.js @@ -1,9 +1,9 @@ -const { Command } = require("commander"); -const Encoding = require("encoding-japanese"); -const { XMLParser } = require("fast-xml-parser"); -const fs = require("fs"); +import { Command } from "commander"; +import Encoding from "encoding-japanese"; +import { XMLParser } from "fast-xml-parser"; +import fs from "fs"; -const { CreateChartID, ReadCollection, WriteCollection } = require("../../util"); +import { CreateChartID, ReadCollection, WriteCollection } from "../../util.js"; const VERSIONS = { 1: "booth", diff --git a/typescript/seeds-scripts/rerunners/stepmania/apply-zkldijson.js b/typescript/seeds-scripts/rerunners/stepmania/apply-zkldijson.js index a1b29c0ce..de1851525 100644 --- a/typescript/seeds-scripts/rerunners/stepmania/apply-zkldijson.js +++ b/typescript/seeds-scripts/rerunners/stepmania/apply-zkldijson.js @@ -1,7 +1,7 @@ -const { Command } = require("commander"); -const fs = require("fs"); +import { Command } from "commander"; +import fs from "fs"; -const { CreateChartID, MutateCollection, ReadCollection } = require("../../util"); +import { CreateChartID, MutateCollection, ReadCollection } from "../../util.js"; const program = new Command(); program.option("-f, --file "); diff --git a/typescript/seeds-scripts/rerunners/toggle-table-inactive.js b/typescript/seeds-scripts/rerunners/toggle-table-inactive.js index 9e45e585d..2e5c5735c 100644 --- a/typescript/seeds-scripts/rerunners/toggle-table-inactive.js +++ b/typescript/seeds-scripts/rerunners/toggle-table-inactive.js @@ -1,6 +1,6 @@ -const { Command } = require("commander"); +import { Command } from "commander"; -const { MutateCollection, ReadCollection, WriteCollection } = require("../util"); +import { MutateCollection, ReadCollection, WriteCollection } from "../util.js"; const program = new Command(); program.requiredOption("-t, --tableID "); diff --git a/typescript/seeds-scripts/rerunners/usc/add-usc-converts.js b/typescript/seeds-scripts/rerunners/usc/add-usc-converts.js index 036f40619..f2c787114 100644 --- a/typescript/seeds-scripts/rerunners/usc/add-usc-converts.js +++ b/typescript/seeds-scripts/rerunners/usc/add-usc-converts.js @@ -1,13 +1,13 @@ -const { Database } = require("bun:sqlite"); -const { Command } = require("commander"); -const fs = require("fs"); +import { Database } from "bun:sqlite"; +import { Command } from "commander"; +import fs from "fs"; -const { +import { CreateChartID, GetFreshSongIDGenerator, ReadCollection, WriteCollection, -} = require("../../util"); +} from "../../util.js"; const program = new Command(); program.requiredOption("-d, --db "); diff --git a/typescript/seeds-scripts/rerunners/wacca/make-folders-and-tables.js b/typescript/seeds-scripts/rerunners/wacca/make-folders-and-tables.js index d6c9652f1..927047360 100644 --- a/typescript/seeds-scripts/rerunners/wacca/make-folders-and-tables.js +++ b/typescript/seeds-scripts/rerunners/wacca/make-folders-and-tables.js @@ -1,7 +1,8 @@ -const { Command } = require("commander"); -const { GetGamePTConfig } = require("../../../common/src"); +import { Command } from "commander"; +import { GetGamePTConfig } from "../../../common/src/index.ts"; + +import { CreateFolderID, MutateCollection } from "../../util.js"; -const { CreateFolderID, MutateCollection } = require("../../util"); const LEVELS = [ "1", diff --git a/typescript/seeds-scripts/rerunners/wacca/parse-wplus.js b/typescript/seeds-scripts/rerunners/wacca/parse-wplus.js index dcbe5cc4d..c5c6b477f 100644 --- a/typescript/seeds-scripts/rerunners/wacca/parse-wplus.js +++ b/typescript/seeds-scripts/rerunners/wacca/parse-wplus.js @@ -1,12 +1,12 @@ -const { Command } = require("commander"); -const fs = require("fs"); +import { Command } from "commander"; +import fs from "fs"; -const { +import { CreateChartID, GetFreshSongIDGenerator, MutateCollection, ReadCollection, -} = require("../../util"); +} from "../../util.js"; const getNewSongID = GetFreshSongIDGenerator("wacca"); const waccaDiffIndex = ["NORMAL", "HARD", "EXPERT", "INFERNO"]; diff --git a/typescript/seeds-scripts/sort-seeds.js b/typescript/seeds-scripts/sort-seeds.js index 1bd0b8c1d..63ba15aa6 100644 --- a/typescript/seeds-scripts/sort-seeds.js +++ b/typescript/seeds-scripts/sort-seeds.js @@ -1,6 +1,7 @@ -const fs = require("fs"); -const path = require("path"); -const { spawnSync } = require("child_process"); +import { spawnSync } from "child_process"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; function ChartSort(a, b) { // sink all 2dxtra charts to the bottom @@ -76,6 +77,10 @@ function BMSCourseSort(a, b) { */ function SortSeeds(options = {}) { const { skipBiomeFormat = false } = options; + + const __filename = fileURLToPath(import.meta.url); + const __dirname = path.dirname(__filename); + const collectionsDir = path.join(__dirname, "../../db/seeds"); const collections = fs.readdirSync(collectionsDir).filter((name) => name.endsWith(".json")); @@ -140,8 +145,11 @@ function SortObjectKeys(object) { return newObject; } -if (require.main === module) { +const __resolvedMain = + process.argv[1] !== undefined ? path.resolve(process.argv[1]) : ""; + +if (__resolvedMain === fileURLToPath(import.meta.url)) { SortSeeds(); } -module.exports = SortSeeds; +export default SortSeeds; diff --git a/typescript/seeds-scripts/util.js b/typescript/seeds-scripts/util.js index 22419b34f..87576a661 100644 --- a/typescript/seeds-scripts/util.js +++ b/typescript/seeds-scripts/util.js @@ -1,25 +1,32 @@ -const fjsh = require("fast-json-stable-hash"); -const fs = require("fs"); -const path = require("path"); +import fjsh from "fast-json-stable-hash"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; -const { +import { CreateChartID, CreateFolderID, CreateQuestID, CreateSongID, CreateTableID, -} = require("tachi-common"); +} from "tachi-common"; -const DeterministicCollectionSort = require("./sort-seeds"); +import DeterministicCollectionSort from "./sort-seeds.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Seed JSON lives at repo root: db/seeds/ (was typescript/collections). +const COLLECTIONS_DIR = path.join(__dirname, "../../db/seeds"); /** Third argument to {@link WriteCollection} / {@link MutateCollection}: deterministic sort still runs. */ -const WRITE_COLLECTION_SKIP_BIOME = Object.freeze({ skipBiomeFormat: true }); +export const WRITE_COLLECTION_SKIP_BIOME = Object.freeze({ skipBiomeFormat: true }); /** * @param {(data: unknown, collection: string) => unknown} cb * @param {{ skipBiomeFormat?: boolean }} [writeOptions] forwarded to {@link DeterministicCollectionSort} after loop */ -function IterateCollections(cb, writeOptions) { +export function IterateCollections(cb, writeOptions) { for (const collection of fs .readdirSync(COLLECTIONS_DIR) .filter((name) => name.endsWith(".json"))) { @@ -34,10 +41,7 @@ function IterateCollections(cb, writeOptions) { DeterministicCollectionSort(writeOptions); } -// Seed JSON lives at repo root: db/seeds/ (was typescript/collections). -const COLLECTIONS_DIR = path.join(__dirname, "../../db/seeds"); - -function ReadCollection(name, throwIfNotFound = false) { +export function ReadCollection(name, throwIfNotFound = false) { const p = path.join(COLLECTIONS_DIR, name); if (!fs.existsSync(p)) { if (throwIfNotFound) { @@ -57,7 +61,7 @@ function ReadCollection(name, throwIfNotFound = false) { * @param {{ skipBiomeFormat?: boolean }} [writeOptions] pass `{ skipBiomeFormat: true }` to skip * running Biome over all of `db/seeds` after the mandatory deterministic sort pass (much faster). */ -function WriteCollection(name, data, writeOptions) { +export function WriteCollection(name, data, writeOptions) { fs.writeFileSync(path.join(COLLECTIONS_DIR, name), JSON.stringify(data, null, "\t")); DeterministicCollectionSort(writeOptions); @@ -68,7 +72,7 @@ function WriteCollection(name, data, writeOptions) { * @param {(collection: unknown) => unknown} cb * @param {{ skipBiomeFormat?: boolean }} [writeOptions] see {@link WriteCollection} */ -function MutateCollection(name, cb, writeOptions) { +export function MutateCollection(name, cb, writeOptions) { const data = cb(ReadCollection(name)); if (data === undefined) { @@ -81,21 +85,21 @@ function MutateCollection(name, cb, writeOptions) { // this api sucks, maybe dont use it // // TODO(zk): remove this and give folders actual readable names -function CreateLegacyFolderID(query, game, playtype) { +export function CreateLegacyFolderID(query, game, playtype) { return `F${fjsh.hash(Object.assign({ game, playtype }, query), "SHA256")}`; } -function CreateLegacyFolderIDFromFolder(folder) { +export function CreateLegacyFolderIDFromFolder(folder) { return CreateLegacyFolderID(folder.data, folder.game, folder.playtype); } -function CreateGoalID(charts, criteria, game) { +export function CreateGoalID(charts, criteria, game) { return `G${fjsh.hash({ charts, criteria, game }, "sha256")}`; } // quick inplace deepmerge hack // probably doesn't work for arrays, i don't care though. -function EfficientInPlaceDeepmerge(ref, apply) { +export function EfficientInPlaceDeepmerge(ref, apply) { for (const key in apply) { if (typeof apply[key] === "object" && apply[key]) { EfficientInPlaceDeepmerge(ref[key], apply[key]); @@ -105,7 +109,7 @@ function EfficientInPlaceDeepmerge(ref, apply) { } } -function GetChartCollectionGame(filename) { +export function GetChartCollectionGame(filename) { let result = filename.match(/charts-([\w-]+)\.json$/u); if (result === null) { @@ -125,28 +129,17 @@ function GetSongCollectionGameGroup(filename) { return result[1]; } -function GetFreshSongIDGenerator(gameGroup) { +export function GetFreshSongIDGenerator(gameGroup) { const existing = ReadCollection(`songs-${gameGroup}.json`); let max = existing.reduce((acc, s) => Math.max(acc, s.id ?? 0), 0); return () => ++max; } -module.exports = { +export { CreateChartID, CreateFolderID, - CreateGoalID, - CreateLegacyFolderID, - CreateLegacyFolderIDFromFolder, CreateQuestID, CreateSongID, CreateTableID, - EfficientInPlaceDeepmerge, - GetChartCollectionGame, - GetFreshSongIDGenerator, - GetSongCollectionGame: GetSongCollectionGameGroup, - IterateCollections, - MutateCollection, - ReadCollection, - WRITE_COLLECTION_SKIP_BIOME, - WriteCollection, + GetSongCollectionGameGroup as GetSongCollectionGame, };