@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
49 lines (47 loc) • 1.94 kB
JavaScript
;
//#region src/lib/utils/application-commands/compute-differences/localizations.ts
function* checkLocalizations({ localeMapName, localePresentMessage, localeMissingMessage, originalLocalizedDescriptions, expectedLocalizedDescriptions }) {
if (!originalLocalizedDescriptions && expectedLocalizedDescriptions) yield {
key: localeMapName,
original: localeMissingMessage,
expected: localePresentMessage
};
else if (originalLocalizedDescriptions && !expectedLocalizedDescriptions) yield {
key: localeMapName,
original: localePresentMessage,
expected: localeMissingMessage
};
else if (originalLocalizedDescriptions && expectedLocalizedDescriptions) yield* reportLocalizationMapDifferences(originalLocalizedDescriptions, expectedLocalizedDescriptions, localeMapName);
}
function* reportLocalizationMapDifferences(originalMap, expectedMap, mapName) {
const originalLocalizations = new Map(Object.entries(originalMap));
for (const [key, value] of Object.entries(expectedMap)) {
const possiblyExistingEntry = originalLocalizations.get(key);
originalLocalizations.delete(key);
const wasMissingBefore = typeof possiblyExistingEntry === "undefined";
const isResetNow = value === null;
if (wasMissingBefore && !isResetNow) yield {
key: `${mapName}.${key}`,
original: "no localization present",
expected: value
};
else if (!wasMissingBefore && isResetNow) yield {
key: `${mapName}.${key}`,
original: possiblyExistingEntry,
expected: "no localization present"
};
else if (possiblyExistingEntry !== value) yield {
key: `${mapName}.${key}`,
original: String(possiblyExistingEntry),
expected: String(value)
};
}
for (const [key, value] of originalLocalizations) if (value) yield {
key: `${mapName}.${key}`,
original: value,
expected: "no localization present"
};
}
//#endregion
exports.checkLocalizations = checkLocalizations;
//# sourceMappingURL=localizations.cjs.map