From 80458efc48123a06a3da010f2346cefd318d1ad8 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 9 Jul 2021 15:11:47 +0200 Subject: [PATCH] Use JSONC file extension for input json files --- .../{addedTypes.json => addedTypes.jsonc} | 0 ...ridingTypes.json => overridingTypes.jsonc} | 0 .../{removedTypes.json => removedTypes.jsonc} | 0 package-lock.json | 14 +++++++- package.json | 2 +- src/build.ts | 32 +++++++------------ src/build/utils/require.ts | 15 --------- 7 files changed, 26 insertions(+), 37 deletions(-) rename inputfiles/{addedTypes.json => addedTypes.jsonc} (100%) rename inputfiles/{overridingTypes.json => overridingTypes.jsonc} (100%) rename inputfiles/{removedTypes.json => removedTypes.jsonc} (100%) delete mode 100644 src/build/utils/require.ts diff --git a/inputfiles/addedTypes.json b/inputfiles/addedTypes.jsonc similarity index 100% rename from inputfiles/addedTypes.json rename to inputfiles/addedTypes.jsonc diff --git a/inputfiles/overridingTypes.json b/inputfiles/overridingTypes.jsonc similarity index 100% rename from inputfiles/overridingTypes.json rename to inputfiles/overridingTypes.jsonc diff --git a/inputfiles/removedTypes.json b/inputfiles/removedTypes.jsonc similarity index 100% rename from inputfiles/removedTypes.json rename to inputfiles/removedTypes.jsonc diff --git a/package-lock.json b/package-lock.json index 3256bb60b..3853c638e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "jsdom": "^16.6.0", - "json5": "^2.2.0", + "jsonc-parser": "^3.0.0", "node-fetch": "^2.6.1", "prettier": "^2.3.2", "print-diff": "^1.0.0", @@ -3261,6 +3261,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -8214,6 +8220,12 @@ "minimist": "^1.2.5" } }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", diff --git a/package.json b/package.json index 0ef23b783..a67b1bdb1 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "jsdom": "^16.6.0", - "json5": "^2.2.0", + "jsonc-parser": "^3.0.0", "node-fetch": "^2.6.1", "prettier": "^2.3.2", "print-diff": "^1.0.0", diff --git a/src/build.ts b/src/build.ts index be50bb42b..83e10de6a 100644 --- a/src/build.ts +++ b/src/build.ts @@ -1,19 +1,13 @@ import * as Browser from "./build/types.js"; import { promises as fs } from "fs"; -import { createRequire } from "module"; -import { fileURLToPath } from "url"; import { merge, resolveExposure, arrayToMap } from "./build/helpers.js"; import { emitWebIdl } from "./build/emitter.js"; import { convert } from "./build/widlprocess.js"; import { getExposedTypes } from "./build/expose.js"; import { getDeprecationData, getRemovalData } from "./build/bcd.js"; -import { createTryRequire } from "./build/utils/require.js"; import { getInterfaceElementMergeData } from "./build/webref/elements.js"; import { getWebidls } from "./build/webref/idl.js"; -import JSON5 from "json5"; - -const require = createRequire(import.meta.url); -const tryRequire = createTryRequire(import.meta.url); +import jsonc from "jsonc-parser"; function mergeNamesakes(filtered: Browser.WebIdl) { const targets = [ @@ -93,16 +87,16 @@ async function emitDom() { recursive: true, }); - const overriddenItems = await readInputJSON("overridingTypes.json"); - const addedItems = await readInputJSON("addedTypes.json"); + const overriddenItems = await readInputJSON("overridingTypes.jsonc"); + const addedItems = await readInputJSON("addedTypes.jsonc"); const comments = await readInputJSON("comments.json"); const deprecatedInfo = await readInputJSON("deprecatedMessage.json"); const documentationFromMDN = await readInputJSON("mdn/apiDescriptions.json"); - const removedItems = await readInputJSON("removedTypes.json"); + const removedItems = await readInputJSON("removedTypes.jsonc"); async function readInputJSON(filename: string) { const content = await fs.readFile(new URL(filename, inputFolder), "utf8"); - return JSON5.parse(content); + return jsonc.parse(content); } const widlStandardTypes = ( @@ -110,12 +104,12 @@ async function emitDom() { ).filter((i) => i) as ReturnType[]; async function convertWidl([shortName, idl]: string[]) { - const commentsMapFilePath = new URL( - `idl/${shortName}.commentmap.json`, - inputFolder - ); - const commentsMap: Record = - (await tryRequire(fileURLToPath(commentsMapFilePath))) ?? {}; + let commentsMap: Record; + try { + commentsMap = await readInputJSON(`idl/${shortName}.commentmap.json`); + } catch { + commentsMap = {}; + } commentCleanup(commentsMap); const result = convert(idl, commentsMap); return result; @@ -249,9 +243,7 @@ async function emitDom() { } } - const knownTypes = require(fileURLToPath( - new URL("knownTypes.json", inputFolder) - )); + const knownTypes = await readInputJSON("knownTypes.json"); emitFlavor(webidl, new Set(knownTypes.Window), { name: "dom", diff --git a/src/build/utils/require.ts b/src/build/utils/require.ts deleted file mode 100644 index 1baf40cc4..000000000 --- a/src/build/utils/require.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createRequire } from "module"; - -export function createTryRequire(path: string): (id: string) => any { - const require = createRequire(path); - return (id: string) => { - try { - return require(id); - } catch (err) { - if (err.code !== "MODULE_NOT_FOUND") { - throw err; - } - return; - } - }; -}