UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

1 lines 4.68 kB
{"version":3,"sources":["../../../../../../src/lib/utils/application-commands/compute-differences/localizations.ts"],"names":[],"mappings":";;;;;;AAGO,UAAU,kBAAmB,CAAA;AAAA,EACnC,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,6BAAA;AAAA,EACA;AACD,CAMG,EAAA;AACF,EAAI,IAAA,CAAC,iCAAiC,6BAA+B,EAAA;AACpE,IAAM,MAAA;AAAA,MACL,GAAK,EAAA,aAAA;AAAA,MACL,QAAU,EAAA,oBAAA;AAAA,MACV,QAAU,EAAA;AAAA,KACX;AAAA,GACD,MAAA,IAAW,6BAAiC,IAAA,CAAC,6BAA+B,EAAA;AAC3E,IAAM,MAAA;AAAA,MACL,GAAK,EAAA,aAAA;AAAA,MACL,QAAU,EAAA,oBAAA;AAAA,MACV,QAAU,EAAA;AAAA,KACX;AAAA,GACD,MAAA,IAAW,iCAAiC,6BAA+B,EAAA;AAC1E,IAAO,OAAA,gCAAA,CAAiC,6BAA+B,EAAA,6BAAA,EAA+B,aAAa,CAAA;AAAA;AAErH;AA5BiB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AA8BjB,UAAU,gCAAA,CACT,WACA,EAAA,WAAA,EACA,OAC+B,EAAA;AAC/B,EAAA,MAAM,wBAAwB,IAAI,GAAA,CAAI,MAAO,CAAA,OAAA,CAAQ,WAAW,CAAC,CAAA;AAEjE,EAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACvD,IAAM,MAAA,qBAAA,GAAwB,qBAAsB,CAAA,GAAA,CAAI,GAAG,CAAA;AAC3D,IAAA,qBAAA,CAAsB,OAAO,GAAG,CAAA;AAEhC,IAAM,MAAA,gBAAA,GAAmB,OAAO,qBAA0B,KAAA,WAAA;AAC1D,IAAA,MAAM,aAAa,KAAU,KAAA,IAAA;AAG7B,IAAI,IAAA,gBAAA,IAAoB,CAAC,UAAY,EAAA;AACpC,MAAM,MAAA;AAAA,QACL,GAAK,EAAA,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,QACtB,QAAU,EAAA,yBAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACX;AAAA,KACD,MAAA,IAES,CAAC,gBAAA,IAAoB,UAAY,EAAA;AACzC,MAAM,MAAA;AAAA,QACL,GAAK,EAAA,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,QACtB,QAAU,EAAA,qBAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACX;AAAA,KACD,MAAA,IAGS,0BAA0B,KAAO,EAAA;AACzC,MAAM,MAAA;AAAA,QACL,GAAK,EAAA,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,QACtB,QAAA,EAAU,OAAO,qBAAqB,CAAA;AAAA,QACtC,QAAA,EAAU,OAAO,KAAK;AAAA,OACvB;AAAA;AACD;AAID,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,qBAAuB,EAAA;AACjD,IAAA,IAAI,KAAO,EAAA;AACV,MAAM,MAAA;AAAA,QACL,GAAK,EAAA,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,QACtB,QAAU,EAAA,KAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACX;AAAA;AACD;AAEF;AAnDU,MAAA,CAAA,gCAAA,EAAA,kCAAA,CAAA","file":"localizations.cjs","sourcesContent":["import type { LocalizationMap } from 'discord-api-types/v10';\nimport type { CommandDifference } from './_shared';\n\nexport function* checkLocalizations({\n\tlocaleMapName,\n\tlocalePresentMessage,\n\tlocaleMissingMessage,\n\toriginalLocalizedDescriptions,\n\texpectedLocalizedDescriptions\n}: {\n\tlocaleMapName: string;\n\tlocalePresentMessage: string;\n\tlocaleMissingMessage: string;\n\toriginalLocalizedDescriptions?: LocalizationMap | null;\n\texpectedLocalizedDescriptions?: LocalizationMap | null;\n}) {\n\tif (!originalLocalizedDescriptions && expectedLocalizedDescriptions) {\n\t\tyield {\n\t\t\tkey: localeMapName,\n\t\t\toriginal: localeMissingMessage,\n\t\t\texpected: localePresentMessage\n\t\t};\n\t} else if (originalLocalizedDescriptions && !expectedLocalizedDescriptions) {\n\t\tyield {\n\t\t\tkey: localeMapName,\n\t\t\toriginal: localePresentMessage,\n\t\t\texpected: localeMissingMessage\n\t\t};\n\t} else if (originalLocalizedDescriptions && expectedLocalizedDescriptions) {\n\t\tyield* reportLocalizationMapDifferences(originalLocalizedDescriptions, expectedLocalizedDescriptions, localeMapName);\n\t}\n}\n\nfunction* reportLocalizationMapDifferences(\n\toriginalMap: LocalizationMap,\n\texpectedMap: LocalizationMap,\n\tmapName: string\n): Generator<CommandDifference> {\n\tconst originalLocalizations = new Map(Object.entries(originalMap));\n\n\tfor (const [key, value] of Object.entries(expectedMap)) {\n\t\tconst possiblyExistingEntry = originalLocalizations.get(key) as string | undefined;\n\t\toriginalLocalizations.delete(key);\n\n\t\tconst wasMissingBefore = typeof possiblyExistingEntry === 'undefined';\n\t\tconst isResetNow = value === null;\n\n\t\t// Was missing before and now is present\n\t\tif (wasMissingBefore && !isResetNow) {\n\t\t\tyield {\n\t\t\t\tkey: `${mapName}.${key}`,\n\t\t\t\toriginal: 'no localization present',\n\t\t\t\texpected: value\n\t\t\t};\n\t\t}\n\t\t// Was present before and now is reset\n\t\telse if (!wasMissingBefore && isResetNow) {\n\t\t\tyield {\n\t\t\t\tkey: `${mapName}.${key}`,\n\t\t\t\toriginal: possiblyExistingEntry,\n\t\t\t\texpected: 'no localization present'\n\t\t\t};\n\t\t}\n\t\t// Not equal\n\t\t// eslint-disable-next-line no-negated-condition\n\t\telse if (possiblyExistingEntry !== value) {\n\t\t\tyield {\n\t\t\t\tkey: `${mapName}.${key}`,\n\t\t\t\toriginal: String(possiblyExistingEntry),\n\t\t\t\texpected: String(value)\n\t\t\t};\n\t\t}\n\t}\n\n\t// Report any remaining localizations\n\tfor (const [key, value] of originalLocalizations) {\n\t\tif (value) {\n\t\t\tyield {\n\t\t\t\tkey: `${mapName}.${key}`,\n\t\t\t\toriginal: value,\n\t\t\t\texpected: 'no localization present'\n\t\t\t};\n\t\t}\n\t}\n}\n"]}