diff --git a/build/build.mjs b/build/build.mjs index 7b4ad421d7..ff352a456a 100644 --- a/build/build.mjs +++ b/build/build.mjs @@ -7,10 +7,10 @@ import fetch from 'node-fetch'; import sharp from 'sharp'; import Progress from './progress.mjs'; -import { stringify } from './stringify.mjs'; -import { scraper } from './scraper.mjs'; -import { parser } from './parser.mjs'; -import { hashManager } from './hashManager.mjs'; +import stringify from './stringify.mjs'; +import scraper from './scraper.mjs'; +import parser from './parser.mjs'; +import hashManager from './hashManager.mjs'; import imagesCache from '../data/cache/.images.json' assert { type: 'json' }; import exportCache from '../data/cache/.export.json' assert { type: 'json' }; diff --git a/build/dedupe.mjs b/build/dedupe.mjs index 7f9796039c..2549427db2 100644 --- a/build/dedupe.mjs +++ b/build/dedupe.mjs @@ -1,11 +1,11 @@ -import { sortObject } from './sortObject.mjs'; +import sortObject from './sortObject.mjs'; /** * Simple deduplication leveraging reduce (and equality based on stringification) * @param {Iterable<*>} iter Should be an iterable object, but function will check first. * @returns {Iterable<*>} type will be whatever was originally passed in */ -export function dedupe(iter) { +export default (iter) => { return Array.isArray(iter) ? iter .reduce( @@ -16,6 +16,4 @@ export function dedupe(iter) { ) .map((o) => JSON.parse(o)) : iter; -} - -export default dedupe; +}; diff --git a/build/hashManager.mjs b/build/hashManager.mjs index 5e8d735fc3..bb0aa6f260 100644 --- a/build/hashManager.mjs +++ b/build/hashManager.mjs @@ -1,12 +1,12 @@ import fs from 'fs/promises'; -import { scraper } from './scraper.mjs'; +import scraper from './scraper.mjs'; import exportCache from '../data/cache/.export.json' assert { type: 'json' }; import locales from '../config/locales.json' assert { type: 'json' }; const exportKeyWhitelist = ['Manifest', 'DropChances', 'Patchlogs']; -export class HashManager { +class HashManager { constructor() { this.exportCache = Object.fromEntries( exportKeyWhitelist.filter((key) => key in exportCache).map((key) => [key, exportCache[key]]) @@ -53,6 +53,4 @@ export class HashManager { } } -export const hashManager = new HashManager(); - -export default hashManager; +export default new HashManager(); diff --git a/build/parser.mjs b/build/parser.mjs index bbada908e5..f7af85e05a 100644 --- a/build/parser.mjs +++ b/build/parser.mjs @@ -1,8 +1,8 @@ import _ from 'lodash'; import Progress from './progress.mjs'; -import { dedupe } from './dedupe.mjs'; -import { isTradable } from './tradable.mjs'; +import dedupe from './dedupe.mjs'; +import isTradable from './tradable.mjs'; import previousItems from '../data/json/All.json' assert { type: 'json' }; import watson from '../config/dt_map.json' assert { type: 'json' }; import bpConflicts from '../config/bpConflicts.json' assert { type: 'json' }; @@ -96,7 +96,7 @@ const dropMap = (drop) => { /** * Parse API data into a more clear or complete format. */ -export class Parser { +class Parser { /** * @typedef {Object} ParsedData * @property {Array} data @@ -1083,6 +1083,4 @@ export class Parser { } } -export const parser = new Parser(); - -export default parser; +export default new Parser(); diff --git a/build/scraper.mjs b/build/scraper.mjs index 27e8f77a7c..3b0a75ef36 100644 --- a/build/scraper.mjs +++ b/build/scraper.mjs @@ -7,7 +7,11 @@ import { load } from 'cheerio'; import { Generator as RelicGenerator } from '@wfcd/relics'; -import { ModScraper, WeaponScraper, WarframeScraper, VersionScraper } from './wikia/scrapers/index.mjs'; +import ModScraper from './wikia/scrapers/ModScraper.mjs'; +import WeaponScraper from './wikia/scrapers/WeaponScraper.mjs'; +import WarframeScraper from './wikia/scrapers/WarframeScraper.mjs'; +import VersionScraper from './wikia/scrapers/VersionScraper.mjs'; + import Progress from './progress.mjs'; import exportCache from '../data/cache/.export.json' assert { type: 'json' }; import locales from '../config/locales.json' assert { type: 'json' }; @@ -34,7 +38,7 @@ const getJSON = async (url, disableProxy) => JSON.parse(sanitize(await get(url, /** * Retrieves the base item data necessary for the parsing process */ -export class Scraper { +class Scraper { /** * Get Endpoints from Warframe's origin file * @param {boolean} [manifest] to fetch only the manifest or everything else @@ -288,6 +292,4 @@ export class Scraper { } } -export const scraper = new Scraper(); - -export default scraper; +export default new Scraper(); diff --git a/build/sortObject.mjs b/build/sortObject.mjs index 378d7d2896..8110e730c1 100644 --- a/build/sortObject.mjs +++ b/build/sortObject.mjs @@ -4,13 +4,11 @@ * @param {Record} obj object to be sorted * @returns {Record} same as {@param obj} but sorted keys */ -export function sortObject(obj) { +export default (obj) => { return Object.keys(obj) .sort() .reduce(function (result, key) { result[key] = obj[key]; return result; }, {}); -} - -export default sortObject; +}; diff --git a/build/stringify.mjs b/build/stringify.mjs index 23929faa28..f43abf98d5 100644 --- a/build/stringify.mjs +++ b/build/stringify.mjs @@ -1,4 +1,4 @@ -import { dedupe } from './dedupe.mjs'; +import dedupe from './dedupe.mjs'; /** * Pretty print JSON as it should be. @@ -11,6 +11,4 @@ const isArrayOfPrimitive = (obj) => Array.isArray(obj) && obj.every(isPrimitive) const format = (arr) => `^^^[ ${arr.map((val) => JSON.stringify(val)).join(', ')} ]`; const replacer = (key, value) => (isArrayOfPrimitive(value) ? format(value) : value); const expand = (str) => str.replace(/"\^\^\^(\[ .* ])"/g, (match, a) => a.replace(/\\"/g, '"')).replace(/\\\\"/g, "'"); -export const stringify = (obj) => expand(JSON.stringify(Array.isArray(obj) ? dedupe(obj) : obj, replacer, 2)); - -export default stringify; +export default (obj) => expand(JSON.stringify(Array.isArray(obj) ? dedupe(obj) : obj, replacer, 2)); diff --git a/build/tradable.mjs b/build/tradable.mjs index 409979d1ad..a100c4af9d 100644 --- a/build/tradable.mjs +++ b/build/tradable.mjs @@ -49,7 +49,7 @@ const untradableRegex = * @param {module:warframe-items.Item} item Item to determine tradability * @returns {boolean} */ -export function isTradable(item) { +export default (item) => { const notFiltered = !untradableTypes.includes(item.type) && !item.name.match(untradableRegex) && @@ -59,6 +59,4 @@ export function isTradable(item) { const tradableByName = !!((item.uniqueName.match(tradableRegex) || item.name.match(tradableRegex)) && notFiltered); const tradableByProp = !!(item.isAugment && notFiltered); return (tradableByType || tradableByName || tradableByProp) && tradableConditions(item); -} - -export default isTradable; +}; diff --git a/build/wikia/WikiaDataScraper.mjs b/build/wikia/WikiaDataScraper.mjs index 06304b8fce..75549133d9 100644 --- a/build/wikia/WikiaDataScraper.mjs +++ b/build/wikia/WikiaDataScraper.mjs @@ -6,9 +6,7 @@ import { promisify } from 'util'; import nodeCmd from 'node-cmd'; import fetch, { Request } from 'node-fetch'; -const { get } = nodeCmd; - -const run = promisify(get); +const run = promisify(nodeCmd.get); const blueprintUrl = 'https://warframe.fandom.com/wiki/Module:Blueprints/data?action=edit'; @@ -121,7 +119,7 @@ let blueprints; /** * Scrape Wikia data from data modules */ -export class WikiaDataScraper { +export default class WikiaDataScraper { constructor(url, luaObjectName, transformFunction) { if (Array.isArray(url)) { this.urls = url; @@ -190,5 +188,3 @@ export class WikiaDataScraper { return things; } } - -export default WikiaDataScraper; diff --git a/build/wikia/scrapers/ModScraper.mjs b/build/wikia/scrapers/ModScraper.mjs index 64a9605dec..c09ee814e4 100644 --- a/build/wikia/scrapers/ModScraper.mjs +++ b/build/wikia/scrapers/ModScraper.mjs @@ -1,10 +1,8 @@ -import { WikiaDataScraper } from '../WikiaDataScraper.mjs'; -import { transformMod } from '../transformers/index.mjs'; +import WikiaDataScraper from '../WikiaDataScraper.mjs'; +import transformMod from '../transformers/transformMod.mjs'; -export class ModScraper extends WikiaDataScraper { +export default class ModScraper extends WikiaDataScraper { constructor() { super('https://warframe.fandom.com/wiki/Module:Mods/data?action=edit', 'Mod', transformMod); } } - -export default ModScraper; diff --git a/build/wikia/scrapers/VersionScraper.mjs b/build/wikia/scrapers/VersionScraper.mjs index 81fcf5094f..3beef74ba2 100644 --- a/build/wikia/scrapers/VersionScraper.mjs +++ b/build/wikia/scrapers/VersionScraper.mjs @@ -1,10 +1,8 @@ -import { WikiaDataScraper } from '../WikiaDataScraper.mjs'; -import { transformVersion } from '../transformers/index.mjs'; +import WikiaDataScraper from '../WikiaDataScraper.mjs'; +import transformVersion from '../transformers/transformVersion.mjs'; -export class VersionScraper extends WikiaDataScraper { +export default class VersionScraper extends WikiaDataScraper { constructor() { super('https://warframe.fandom.com/wiki/Module:Version/data?action=edit', 'Version', transformVersion); } } - -export default VersionScraper; diff --git a/build/wikia/scrapers/WarframeScraper.mjs b/build/wikia/scrapers/WarframeScraper.mjs index 0b1ca86b43..ae4000540d 100644 --- a/build/wikia/scrapers/WarframeScraper.mjs +++ b/build/wikia/scrapers/WarframeScraper.mjs @@ -1,10 +1,8 @@ -import { WikiaDataScraper } from '../WikiaDataScraper.mjs'; -import { transformWarframe } from '../transformers/index.mjs'; +import WikiaDataScraper from '../WikiaDataScraper.mjs'; +import transformWarframe from '../transformers/transformWarframe.mjs'; -export class WarframeScraper extends WikiaDataScraper { +export default class WarframeScraper extends WikiaDataScraper { constructor() { super('https://warframe.fandom.com/wiki/Module:Warframes/data?action=edit', 'Warframe', transformWarframe); } } - -export default WarframeScraper; diff --git a/build/wikia/scrapers/WeaponScraper.mjs b/build/wikia/scrapers/WeaponScraper.mjs index 65c79be695..64beafc4ac 100644 --- a/build/wikia/scrapers/WeaponScraper.mjs +++ b/build/wikia/scrapers/WeaponScraper.mjs @@ -1,11 +1,11 @@ -import { WikiaDataScraper } from '../WikiaDataScraper.mjs'; -import { transformWeapon } from '../transformers/index.mjs'; +import WikiaDataScraper from '../WikiaDataScraper.mjs'; +import transformWeapon from '../transformers/transformWeapon.mjs'; const base = 'https://warframe.fandom.com/wiki/Module:Weapons/data'; const suffix = '?action=edit'; const subModules = ['archwing', 'companion', 'melee', 'misc', 'modular', 'primary', 'secondary', 'railjack']; -export class WeaponScraper extends WikiaDataScraper { +export default class WeaponScraper extends WikiaDataScraper { constructor() { super( subModules.map((subModule) => `${base}/${subModule}${suffix}`), @@ -14,5 +14,3 @@ export class WeaponScraper extends WikiaDataScraper { ); } } - -export default WeaponScraper; diff --git a/build/wikia/scrapers/index.mjs b/build/wikia/scrapers/index.mjs deleted file mode 100644 index 78bf83f0ea..0000000000 --- a/build/wikia/scrapers/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -export * from './ModScraper.mjs'; -export * from './VersionScraper.mjs'; -export * from './WarframeScraper.mjs'; -export * from './WeaponScraper.mjs'; diff --git a/build/wikia/transformers/elements.mjs b/build/wikia/transformers/elements.mjs index 26e80486e6..8c9139a654 100644 --- a/build/wikia/transformers/elements.mjs +++ b/build/wikia/transformers/elements.mjs @@ -1,4 +1,4 @@ -export const ELEMENTS = { +const ELEMENTS = { Electricity: 'electricity', Corrosive: 'corrosive', Toxin: 'toxin', diff --git a/build/wikia/transformers/index.mjs b/build/wikia/transformers/index.mjs deleted file mode 100644 index f3d96ab143..0000000000 --- a/build/wikia/transformers/index.mjs +++ /dev/null @@ -1,7 +0,0 @@ -export * from './elements.mjs'; -export * from './polarities.mjs'; -export * from './transformMod.mjs'; -export * from './transformPolarity.mjs'; -export * from './transformVersion.mjs'; -export * from './transformWarframe.mjs'; -export * from './transformWeapon.mjs'; diff --git a/build/wikia/transformers/polarities.mjs b/build/wikia/transformers/polarities.mjs index fede9c8abb..c8c20676ad 100644 --- a/build/wikia/transformers/polarities.mjs +++ b/build/wikia/transformers/polarities.mjs @@ -1,4 +1,4 @@ -export const POLARITIES = { +const POLARITIES = { Bar: 'naramon', V: 'madurai', D: 'vazarin', diff --git a/build/wikia/transformers/transformMod.mjs b/build/wikia/transformers/transformMod.mjs index ff7a930348..9451973a68 100644 --- a/build/wikia/transformers/transformMod.mjs +++ b/build/wikia/transformers/transformMod.mjs @@ -1,4 +1,4 @@ -export async function transformMod(oldMod, imageUrls) { +export default async (oldMod, imageUrls) => { let newMod; if (!oldMod || !oldMod.Name) { return undefined; @@ -19,6 +19,4 @@ export async function transformMod(oldMod, imageUrls) { console.error(error); } return newMod; -} - -export default transformMod; +}; diff --git a/build/wikia/transformers/transformPolarity.mjs b/build/wikia/transformers/transformPolarity.mjs index ec9c6d69eb..41b6662a6a 100644 --- a/build/wikia/transformers/transformPolarity.mjs +++ b/build/wikia/transformers/transformPolarity.mjs @@ -1,4 +1,4 @@ -import { POLARITIES } from './polarities.mjs'; +import POLARITIES from './polarities.mjs'; const transform = (field) => { let output; @@ -19,13 +19,11 @@ const transform = (field) => { * @param {Array} [Polarities] list of strings designating polarities on a weapon or warframe * @returns {*} */ -export function transformPolarity({ AuraPolarity, StancePolarity, Polarity, Polarities }, target) { +export default ({ AuraPolarity, StancePolarity, Polarity, Polarities }, target) => { const output = { ...target }; output.auraPolarity = transform(AuraPolarity); output.stancePolarity = transform(StancePolarity); output.polarity = transform(Polarity); output.polarities = Polarities && Polarities.length ? Polarities.map(transform) : undefined; return output; -} - -export default transformPolarity; +}; diff --git a/build/wikia/transformers/transformVersion.mjs b/build/wikia/transformers/transformVersion.mjs index 5434094d10..c788a8e0fc 100644 --- a/build/wikia/transformers/transformVersion.mjs +++ b/build/wikia/transformers/transformVersion.mjs @@ -1,4 +1,4 @@ -export async function transformVersion(oldVersion) { +export default async (oldVersion) => { let newVersion; if (!oldVersion || !oldVersion.Name) { @@ -20,6 +20,4 @@ export async function transformVersion(oldVersion) { console.error(error); } return newVersion; -} - -export default transformVersion; +}; diff --git a/build/wikia/transformers/transformWarframe.mjs b/build/wikia/transformers/transformWarframe.mjs index 1a2a7fb9b6..b3d02d40d0 100644 --- a/build/wikia/transformers/transformWarframe.mjs +++ b/build/wikia/transformers/transformWarframe.mjs @@ -1,7 +1,7 @@ import getColors from 'get-image-colors'; -import { image as _image } from 'image-downloader'; +import { image as getImage } from 'image-downloader'; -import { transformPolarity } from './transformPolarity.mjs'; +import transformPolarity from './transformPolarity.mjs'; const mapColors = async (oldFrame, imageUrl) => { if (!imageUrl) return 0; @@ -11,7 +11,7 @@ const mapColors = async (oldFrame, imageUrl) => { url: imageUrl, dest: `tmp/tmp-${oldFrame.Name}.png`, }; - const { image } = await _image(options); + const { image } = await getImage(options); const colors = await getColors(image, 'image/png'); return typeof colors !== 'undefined' ? colors[0].hex().replace('#', '0x') : 0xff0000; } catch (e) { @@ -27,7 +27,7 @@ const mapColors = async (oldFrame, imageUrl) => { * @param {Record} blueprints blueprint objects * @returns {Promise} */ -export async function transformWarframe(oldFrame, imageUrls, blueprints) { +export default async (oldFrame, imageUrls, blueprints) => { let newFrame; if (!oldFrame || !oldFrame.Name) { return undefined; @@ -61,6 +61,4 @@ export async function transformWarframe(oldFrame, imageUrls, blueprints) { console.error(error); } return newFrame; -} - -export default transformWarframe; +}; diff --git a/build/wikia/transformers/transformWeapon.mjs b/build/wikia/transformers/transformWeapon.mjs index 0a2f5547b6..80f33a70f1 100644 --- a/build/wikia/transformers/transformWeapon.mjs +++ b/build/wikia/transformers/transformWeapon.mjs @@ -1,5 +1,5 @@ -import { ELEMENTS } from './elements.mjs'; -import { transformPolarity } from './transformPolarity.mjs'; +import ELEMENTS from './elements.mjs'; +import transformPolarity from './transformPolarity.mjs'; const damageTypes = [ 'Impact', @@ -72,7 +72,7 @@ const parseSlam = ({ SlamAttack, SlamRadialDmg, SlamRadialElement, SlamRadialPro }; }; -export function transformWeapon(oldWeapon, imageUrls, blueprints) { +export default (oldWeapon, imageUrls, blueprints) => { let newWeapon; if (!oldWeapon || !oldWeapon.Name) { return undefined; @@ -171,6 +171,4 @@ export function transformWeapon(oldWeapon, imageUrls, blueprints) { } return newWeapon; -} - -export default transformWeapon; +}; diff --git a/test/index.spec.mjs b/test/index.spec.mjs index fa0aaa1f99..70fbed3ad1 100755 --- a/test/index.spec.mjs +++ b/test/index.spec.mjs @@ -2,7 +2,7 @@ import assert from 'node:assert'; import { resolve } from 'node:path'; import { createRequire } from 'module'; -import { dedupe } from '../build/dedupe.mjs'; +import dedupe from '../build/dedupe.mjs'; const require = createRequire(import.meta.url);