diff --git a/scripts/generateStats.ts b/scripts/generateStats.ts index 9f570ea10f..d082a9daed 100644 --- a/scripts/generateStats.ts +++ b/scripts/generateStats.ts @@ -9,19 +9,8 @@ import { And } from "../src/Logic/Tags/And" import Script from "./Script" import NameSuggestionIndex from "../src/Logic/Web/NameSuggestionIndex" import TagInfo from "../src/Logic/Web/TagInfo" +import { TagsFilter } from "../src/Logic/Tags/TagsFilter" -class Utilities { - static mapValues( - record: Record, - f: (t: T) => TOut - ): Record { - const newR = >{} - for (const x in record) { - newR[x] = f(record[x]) - } - return newR - } -} class GenerateStats extends Script { async createOptimizationFile(includeTags = true) { @@ -38,7 +27,7 @@ class GenerateStats extends Script { continue } - const sourcesList = [TagUtils.Tag(layer.source["osmTags"])] + const sourcesList: TagsFilter[] = [TagUtils.Tag(layer.source["osmTags"])] if (layer?.title) { sourcesList.push(...new TagRenderingConfig(layer.title).usedTags()) } @@ -120,7 +109,7 @@ class GenerateStats extends Script { const allBrands = Object.keys(data) allBrands.sort() - for (const country of allCountries) { + for (const country of Array.from(allCountries)) { const summary = >{} for (const brand of allBrands) { const count = data[brand][country] @@ -150,7 +139,7 @@ class GenerateStats extends Script { path ) } - const nsi = await NameSuggestionIndex.getNsiIndex() + const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/") const allBrandNames: string[] = Utils.Dedup( nsi.allPossible(type).map((item) => item.tags[type]) ) diff --git a/scripts/nsiLogos.ts b/scripts/nsiLogos.ts index e80f20f873..4d3904fe78 100644 --- a/scripts/nsiLogos.ts +++ b/scripts/nsiLogos.ts @@ -42,7 +42,7 @@ class NsiLogos extends Script { let path = basePath + nsiItem.id const logos = nsiWD["wikidata"][nsiItem?.tags?.[type + ":wikidata"]]?.logos - const nsi = await NameSuggestionIndex.getNsiIndex() + const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/") if (nsi.isSvg(nsiItem, type)) { path = path + ".svg" } @@ -104,7 +104,7 @@ class NsiLogos extends Script { * @param type */ async downloadFor(type: string): Promise<{ downloadCount: number; errored: number }> { - const nsi = await NameSuggestionIndex.getNsiIndex() + const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/") const items = nsi.allPossible(type) const basePath = "./public/assets/data/nsi/logos/" let downloadCount = 0 @@ -158,7 +158,7 @@ class NsiLogos extends Script { } private async generateRendering(type: string) { - const nsi = await NameSuggestionIndex.getNsiIndex() + const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/") const items = nsi.allPossible(type) const filterOptions: FilterConfigOptionJson[] = items.map((item) => { return { @@ -278,7 +278,7 @@ class NsiLogos extends Script { * @private */ private static async prune() { - const nsi = await NameSuggestionIndex.getNsiIndex() + const nsi = await NameSuggestionIndex.getNsiIndex("./assets/data/nsi/") const types = nsi.supportedTypes() const ids = new Set() for (const t of types) { diff --git a/src/Logic/Web/NameSuggestionIndex.ts b/src/Logic/Web/NameSuggestionIndex.ts index e16fefd304..104e4bb3a3 100644 --- a/src/Logic/Web/NameSuggestionIndex.ts +++ b/src/Logic/Web/NameSuggestionIndex.ts @@ -262,14 +262,15 @@ export class NameSuggestionIndexLight { if (NameSuggestionIndexLight.initedLight) { return NameSuggestionIndexLight.initedLight } + const endpoint = Constants.nsiLogosEndpoint ?? "./assets/data/nsi/" const [nsi, features] = await Promise.all( [ - "./assets/data/nsi/nsi.min.json", - "./assets/data/nsi/featureCollection.min.json" + endpoint + "nsi.min.json", + endpoint + "featureCollection.min.json" ].map((url) => Utils.downloadJsonCached(url, 1000 * 60 * 60 * 24 * 30)) ) return new NameSuggestionIndexLight( - Constants.nsiLogosEndpoint, + endpoint, nsi, features ) @@ -310,15 +311,16 @@ export default class NameSuggestionIndex extends NameSuggestionIndexLight { } - public static async getNsiIndex(): Promise { + public static async getNsiIndex(endPoint ?: string): Promise { if (NameSuggestionIndex.inited) { return NameSuggestionIndex.inited } + endPoint ??= Constants.nsiLogosEndpoint ?? "./assets/data/nsi/" const [nsi, nsiWd, features] = await Promise.all( [ - "./assets/data/nsi/nsi.min.json", - "./assets/data/nsi/wikidata.min.json", - "./assets/data/nsi/featureCollection.min.json" + endPoint + "nsi.min.json", + endPoint + "wikidata.min.json", + endPoint + "featureCollection.min.json" ].map((url) => Utils.downloadJsonCached(url, 1000 * 60 * 60 * 24 * 30)) ) return new NameSuggestionIndex(