From 60018a4dea9b88253007e7c200274528de1a1620 Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Wed, 10 Dec 2025 10:59:46 +0000 Subject: [PATCH 1/5] feat: schema v3 iteration This is a first attempt at the new version of the schema. The major change here is that we'd go from having an array of many replacements, to one entry per source module with many replacements. For example: ```ts { "type": "module", "moduleName": "chalk", "replacements": [ { "type": "native", "engines": [ { "engine": "node", "minVersion": "X.Y.Z" } ], "url": { "type": "node", "id": "styleText" }, "description": "The `styleText` built-in provides [...]" } ] } ``` --- manifest-schema.json | 311 ++++++++++++++++++++++++------------- package-lock.json | 226 +++++++++++++++++++++------ package.json | 7 +- scripts/generate-schema.js | 2 +- src/main.ts | 8 +- src/types.ts | 38 +++-- 6 files changed, 423 insertions(+), 169 deletions(-) diff --git a/manifest-schema.json b/manifest-schema.json index 25a3f70..6ecfaf1 100644 --- a/manifest-schema.json +++ b/manifest-schema.json @@ -2,117 +2,218 @@ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { - "moduleReplacements": { + "replacements": { "type": "array", "items": { - "anyOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "documented" - }, - "moduleName": { - "type": "string" - }, - "category": { - "type": "string" - }, - "docPath": { - "type": "string" - } - }, - "required": [ - "docPath", - "moduleName", - "type" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "native" - }, - "moduleName": { - "type": "string" - }, - "category": { - "type": "string" - }, - "mdnPath": { - "type": "string" - }, - "nodeVersion": { - "type": "string" - }, - "replacement": { - "type": "string" - } - }, - "required": [ - "mdnPath", - "moduleName", - "nodeVersion", - "replacement", - "type" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "simple" - }, - "moduleName": { - "type": "string" - }, - "category": { - "type": "string" - }, - "replacement": { - "type": "string" - } - }, - "required": [ - "moduleName", - "replacement", - "type" - ], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "none" - }, - "moduleName": { - "type": "string" - }, - "category": { - "type": "string" - } - }, - "required": [ - "moduleName", - "type" - ], - "additionalProperties": false - } - ] + "$ref": "#/definitions/ModuleReplacement" } } }, "required": [ - "moduleReplacements" + "replacements" ], "additionalProperties": false, - "definitions": {} + "definitions": { + "ModuleReplacement": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "module" + }, + "moduleName": { + "type": "string" + }, + "replacements": { + "type": "array", + "items": { + "$ref": "#/definitions/ModuleReplacementDescriptor" + } + } + }, + "required": [ + "type", + "moduleName", + "replacements" + ], + "additionalProperties": false + }, + "ModuleReplacementDescriptor": { + "anyOf": [ + { + "$ref": "#/definitions/DocumentedModuleReplacement" + }, + { + "$ref": "#/definitions/NativeModuleReplacement" + }, + { + "$ref": "#/definitions/SimpleModuleReplacement" + }, + { + "$ref": "#/definitions/NoModuleReplacement" + } + ] + }, + "DocumentedModuleReplacement": { + "type": "object", + "properties": { + "engines": { + "type": "array", + "items": { + "$ref": "#/definitions/EngineConstraint" + } + }, + "preferred": { + "type": "boolean" + }, + "type": { + "type": "string", + "const": "documented" + }, + "url": { + "$ref": "#/definitions/KnownUrl" + }, + "replacementModule": { + "type": "string" + } + }, + "required": [ + "engines", + "replacementModule", + "type", + "url" + ], + "additionalProperties": false + }, + "EngineConstraint": { + "type": "object", + "properties": { + "engine": { + "type": "string" + }, + "minVersion": { + "type": "string" + }, + "maxVersion": { + "type": "string" + } + }, + "required": [ + "engine" + ], + "additionalProperties": false + }, + "KnownUrl": { + "anyOf": [ + { + "$ref": "#/definitions/KnownUrlDescriptor" + }, + { + "type": "string" + } + ] + }, + "KnownUrlDescriptor": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "mdn", + "node", + "e18e" + ] + }, + "id": { + "type": "string" + } + }, + "required": [ + "type", + "id" + ], + "additionalProperties": false + }, + "NativeModuleReplacement": { + "type": "object", + "properties": { + "engines": { + "type": "array", + "items": { + "$ref": "#/definitions/EngineConstraint" + } + }, + "preferred": { + "type": "boolean" + }, + "type": { + "type": "string", + "const": "native" + }, + "url": { + "$ref": "#/definitions/KnownUrl" + }, + "description": { + "type": "string" + } + }, + "required": [ + "description", + "engines", + "type", + "url" + ], + "additionalProperties": false + }, + "SimpleModuleReplacement": { + "type": "object", + "properties": { + "engines": { + "type": "array", + "items": { + "$ref": "#/definitions/EngineConstraint" + } + }, + "preferred": { + "type": "boolean" + }, + "type": { + "type": "string", + "const": "simple" + }, + "description": { + "type": "string" + } + }, + "required": [ + "description", + "engines", + "type" + ], + "additionalProperties": false + }, + "NoModuleReplacement": { + "type": "object", + "properties": { + "engines": { + "type": "array", + "items": { + "$ref": "#/definitions/EngineConstraint" + } + }, + "preferred": { + "type": "boolean" + }, + "type": { + "type": "string", + "const": "none" + } + }, + "required": [ + "engines", + "type" + ], + "additionalProperties": false + } + } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5e40b0c..05b7a19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,36 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { - "@types/node": "^20.14.9", + "@types/node": "^24.10.2", "ajv": "^8.16.0", "prettier": "^3.2.4", - "ts-json-schema-generator": "^2.3.0", + "ts-json-schema-generator": "^2.4.0", "tshy": "^1.11.0", - "typescript": "^5.3.3" + "typescript": "^5.9.3", + "web-features": "^3.11.0" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" } }, "node_modules/@isaacs/cliui": { @@ -51,13 +75,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "24.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz", + "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.16.0" } }, "node_modules/ajv": { @@ -207,19 +231,21 @@ "dev": true }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -260,12 +286,13 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -378,7 +405,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jackspeak": { "version": "3.4.0", @@ -473,11 +501,19 @@ "node": ">=0.10.0" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -590,10 +626,11 @@ } }, "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -603,6 +640,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -615,6 +653,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -761,19 +800,20 @@ } }, "node_modules/ts-json-schema-generator": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz", - "integrity": "sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-2.4.0.tgz", + "integrity": "sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.15", - "commander": "^12.0.0", - "glob": "^10.3.12", + "commander": "^13.1.0", + "glob": "^11.0.1", "json5": "^2.2.3", "normalize-path": "^3.0.0", - "safe-stable-stringify": "^2.4.3", - "tslib": "^2.6.2", - "typescript": "^5.4.5" + "safe-stable-stringify": "^2.5.0", + "tslib": "^2.8.1", + "typescript": "^5.8.2" }, "bin": { "ts-json-schema-generator": "bin/ts-json-schema-generator.js" @@ -782,17 +822,87 @@ "node": ">=18.0.0" } }, - "node_modules/ts-json-schema-generator/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "node_modules/ts-json-schema-generator/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14.17" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-json-schema-generator/node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-json-schema-generator/node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/ts-json-schema-generator/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-json-schema-generator/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tshy": { @@ -818,17 +928,33 @@ "node": "16 >=16.17 || 18 >=18.15.0 || >=20.6.1" } }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, - "node_modules/typescript": { + "node_modules/tshy/node_modules/typescript": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -838,9 +964,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, @@ -859,11 +985,19 @@ "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", "dev": true }, + "node_modules/web-features": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/web-features/-/web-features-3.11.0.tgz", + "integrity": "sha512-bItyNQnMoj16BxqyJL9qiK+sAzpUr2fauqUKmngz9YmDvdObTOiNMslIzsecijTZV8JWtIMxnmyNppc4X0daZQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, diff --git a/package.json b/package.json index bcb7ea4..b5423ba 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,13 @@ }, "homepage": "https://github.com/es-tooling/module-replacements#readme", "devDependencies": { - "@types/node": "^20.14.9", + "@types/node": "^24.10.2", "ajv": "^8.16.0", "prettier": "^3.2.4", - "ts-json-schema-generator": "^2.3.0", + "ts-json-schema-generator": "^2.4.0", "tshy": "^1.11.0", - "typescript": "^5.3.3" + "typescript": "^5.9.3", + "web-features": "^3.11.0" }, "exports": { ".": { diff --git a/scripts/generate-schema.js b/scripts/generate-schema.js index 77da530..017b5a2 100644 --- a/scripts/generate-schema.js +++ b/scripts/generate-schema.js @@ -15,6 +15,6 @@ const generator = tsj.createGenerator({ topRef: false }); -const schema = generator.createSchema(); +const schema = generator.createSchema('ManifestModule'); await writeFile(schemaPath, JSON.stringify(schema, null, 2)); diff --git a/src/main.ts b/src/main.ts index e5ff9c1..d8aeab5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -17,9 +17,9 @@ export * from './types.js'; export {nativeReplacements, microUtilsReplacements, preferredReplacements}; export const all: ManifestModule = { - moduleReplacements: [ - ...nativeReplacements.moduleReplacements, - ...microUtilsReplacements.moduleReplacements, - ...preferredReplacements.moduleReplacements + replacements: [ + ...nativeReplacements.replacements, + ...microUtilsReplacements.replacements, + ...preferredReplacements.replacements ] }; diff --git a/src/types.ts b/src/types.ts index 7a4c463..9cff341 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,36 +1,54 @@ +export interface EngineConstraint { + engine: string; + minVersion?: string; + maxVersion?: string; +} + interface ModuleReplacementLike { - type: string; - moduleName: string; - category?: string; + engines: EngineConstraint[]; + preferred?: boolean; +} + +export interface KnownUrlDescriptor { + type: 'mdn' | 'node' | 'e18e'; + id: string; } +export type KnownUrl = KnownUrlDescriptor | string; + export interface DocumentedModuleReplacement extends ModuleReplacementLike { type: 'documented'; - docPath: string; + url: KnownUrl; + replacementModule: string; } export interface NativeModuleReplacement extends ModuleReplacementLike { type: 'native'; - mdnPath: string; - nodeVersion: string; - replacement: string; + url: KnownUrl; + description: string; } export interface SimpleModuleReplacement extends ModuleReplacementLike { type: 'simple'; - replacement: string; + description: string; } export interface NoModuleReplacement extends ModuleReplacementLike { type: 'none'; } -export type ModuleReplacement = +export type ModuleReplacementDescriptor = | DocumentedModuleReplacement | NativeModuleReplacement | SimpleModuleReplacement | NoModuleReplacement; +export interface ModuleReplacement { + type: 'module'; + moduleName: string; + replacements: ModuleReplacementDescriptor[]; +} + export interface ManifestModule { - moduleReplacements: ModuleReplacement[]; + replacements: ModuleReplacement[]; } From 60eb11f9a7ef576e7d69294a13d3b8f4d09caa46 Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Wed, 10 Dec 2025 12:58:18 +0000 Subject: [PATCH 2/5] chore: migrate micro/native manifests --- manifest-schema.json | 22 +- manifests/micro-utilities.json | 382 ++-- manifests/native.json | 3406 +++++++++++++++++++++++--------- src/types.ts | 4 +- 4 files changed, 2771 insertions(+), 1043 deletions(-) diff --git a/manifest-schema.json b/manifest-schema.json index 6ecfaf1..6f1f84d 100644 --- a/manifest-schema.json +++ b/manifest-schema.json @@ -78,10 +78,9 @@ } }, "required": [ - "engines", - "replacementModule", "type", - "url" + "url", + "replacementModule" ], "additionalProperties": false }, @@ -158,10 +157,9 @@ } }, "required": [ - "description", - "engines", "type", - "url" + "url", + "description" ], "additionalProperties": false }, @@ -183,12 +181,14 @@ }, "description": { "type": "string" + }, + "url": { + "$ref": "#/definitions/KnownUrl" } }, "required": [ - "description", - "engines", - "type" + "type", + "description" ], "additionalProperties": false }, @@ -207,10 +207,12 @@ "type": { "type": "string", "const": "none" + }, + "url": { + "$ref": "#/definitions/KnownUrl" } }, "required": [ - "engines", "type" ], "additionalProperties": false diff --git a/manifests/micro-utilities.json b/manifests/micro-utilities.json index 6df5749..051dec2 100644 --- a/manifests/micro-utilities.json +++ b/manifests/micro-utilities.json @@ -1,232 +1,384 @@ { - "moduleReplacements": [ + "replacements": [ { - "type": "simple", + "type": "module", "moduleName": "arr-diff", - "replacement": "Use a.filter((item) => !b.includes(item))", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use a.filter((item) => !b.includes(item))" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "array-last", - "replacement": "Use arr.at(-1) or arr[arr.length - 1]", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use arr.at(-1) or arr[arr.length - 1]" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "array-union", - "replacement": "Use [...new Set([...a, ...b])]", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use [...new Set([...a, ...b])]" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "array-uniq", - "replacement": "Use [...new Set(arr)]", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use [...new Set(arr)]" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "array-unique", - "replacement": "Use [...new Set(arr)]", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use [...new Set(arr)]" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "arrify", - "replacement": "Use (v == null ? [] : Array.isArray(v) ? v : [v])", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use (v == null ? [] : Array.isArray(v) ? v : [v])" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "call-bind", - "replacement": "Use Function.call.bind(v)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Function.call.bind(v)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "clone-regexp", - "replacement": "Use new RegExp(regexpToCopy)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use new RegExp(regexpToCopy)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "es-get-iterator", - "replacement": "Use v[Symbol.iterator]?.()", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use v[Symbol.iterator]?.()" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "es-set-tostringtag", - "replacement": "Use Object.defineProperty(target, Symbol.toStringTag, { value, configurable: true })", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Object.defineProperty(target, Symbol.toStringTag, { value, configurable: true })" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "filter-obj", - "replacement": "Use Object.fromEntries(Object.entries(obj).filter(fn))", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Object.fromEntries(Object.entries(obj).filter(fn))" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "has-flag", - "replacement": "Use process.argv.includes('--flag')", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use process.argv.includes('--flag')" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-array-buffer", - "replacement": "Use v instanceof ArrayBuffer, or if cross-realm, use Object.prototype.toString.call(v) === \"[object ArrayBuffer]\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use v instanceof ArrayBuffer, or if cross-realm, use Object.prototype.toString.call(v) === \"[object ArrayBuffer]\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-boolean-object", - "replacement": "Use Object.prototype.toString.call(v) === \"[object Boolean]\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Object.prototype.toString.call(v) === \"[object Boolean]\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-ci", - "replacement": "Use Boolean(process.env.CI)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Boolean(process.env.CI)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-date-object", - "replacement": "Use v instanceof Date, or if cross-realm, use Object.prototype.toString.call(v) === \"[object Date]\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use v instanceof Date, or if cross-realm, use Object.prototype.toString.call(v) === \"[object Date]\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-even", - "replacement": "Use (n % 2) === 0", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use (n % 2) === 0" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-finite", - "replacement": "Use Number.isFinite(v)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Number.isFinite(v)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-negative", - "replacement": "Use (n) => n < 0", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use (n) => n < 0" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-negative-zero", - "replacement": "Use Object.is(v, -0)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Object.is(v, -0)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-npm", - "replacement": "Use process.env.npm_config_user_agent?.startsWith(\"npm\")", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use process.env.npm_config_user_agent?.startsWith(\"npm\")" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-number", - "replacement": "Use typeof v === \"number\" || (typeof v === \"string\" && Number.isFinite(+v))", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use typeof v === \"number\" || (typeof v === \"string\" && Number.isFinite(+v))" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-number-object", - "replacement": "Use Object.prototype.toString.call(v) === \"[object Number]\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use Object.prototype.toString.call(v) === \"[object Number]\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-odd", - "replacement": "Use (n % 2) === 1", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use (n % 2) === 1" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-plain-object", - "replacement": "Use v && typeof v === \"object\" && (Object.getPrototypeOf(v) === null || Object.getPrototypeOf(v) === Object.prototype)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use v && typeof v === \"object\" && (Object.getPrototypeOf(v) === null || Object.getPrototypeOf(v) === Object.prototype)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-primitive", - "replacement": "Use v === null || (typeof v !== \"function\" && typeof v !== \"object\")", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use v === null || (typeof v !== \"function\" && typeof v !== \"object\")" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-regexp", - "replacement": "Use v instanceof RegExp, or if cross-realm, use Object.prototype.toString.call(v) === \"[object RegExp]\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use v instanceof RegExp, or if cross-realm, use Object.prototype.toString.call(v) === \"[object RegExp]\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-string", - "replacement": "Use typeof str === \"string\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use typeof str === \"string\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-travis", - "replacement": "Use (\"TRAVIS\" in process.env)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use (\"TRAVIS\" in process.env)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-whitespace", - "replacement": "Use str.trim() === \"\" or /^\\s*$/.test(str)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use str.trim() === \"\" or /^\\s*$/.test(str)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "is-windows", - "replacement": "Use process.platform === \"win32\"", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use process.platform === \"win32\"" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "kind-of", - "replacement": "Use typeof v, or Object.prototype.toString.call(v) to get the internal [[Class]]", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use typeof v, or Object.prototype.toString.call(v) to get the internal [[Class]]" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "lower-case", - "replacement": "Use str.toLocaleLowerCase() or str.toLowerCase()", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use str.toLocaleLowerCase() or str.toLowerCase()" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "repeat-string", - "replacement": "Use str.repeat(n)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use str.repeat(n)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "slash", - "replacement": "Use path.startsWith('\\\\?\\') ? path : path.replace(/\\/g, '/')", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use path.startsWith('\\\\?\\') ? path : path.replace(/\\/g, '/')" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "split-lines", - "replacement": "Use str.split(/\\r?\\n/)", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use str.split(/\\r?\\n/)" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "uniq", - "replacement": "Use [...new Set(arr)]", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use [...new Set(arr)]" + } + ] }, { - "type": "simple", + "type": "module", "moduleName": "upper-case", - "replacement": "Use str.toLocaleUpperCase() or str.toUpperCase()", - "category": "micro-utilities" + "replacements": [ + { + "type": "simple", + "description": "Use str.toLocaleUpperCase() or str.toUpperCase()" + } + ] } ] } diff --git a/manifests/native.json b/manifests/native.json index 138e9b6..c349806 100644 --- a/manifests/native.json +++ b/manifests/native.json @@ -1,1052 +1,2624 @@ { - "moduleReplacements": [ + "replacements": [ { - "type": "native", + "type": "module", "moduleName": "array-buffer-byte-length", - "nodeVersion": "0.10.0", - "replacement": "ArrayBuffer.prototype.byteLength", - "mdnPath": "Global_Objects/ArrayBuffer/byteLength", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength" + }, + "description": "ArrayBuffer.prototype.byteLength" + } + ] + }, + { + "type": "module", "moduleName": "array-every", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.every", - "mdnPath": "Global_Objects/Array/every", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/every" + }, + "description": "Array.prototype.every" + } + ] + }, + { + "type": "module", "moduleName": "array-includes", - "nodeVersion": "6.0.0", - "replacement": "Array.prototype.includes", - "mdnPath": "Global_Objects/Array/includes", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "6.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/includes" + }, + "description": "Array.prototype.includes" + } + ] + }, + { + "type": "module", "moduleName": "array-map", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.map", - "mdnPath": "Global_Objects/Array/map", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/map" + }, + "description": "Array.prototype.map" + } + ] + }, + { + "type": "module", "moduleName": "array.from", - "nodeVersion": "4.0.0", - "replacement": "Array.from", - "mdnPath": "Global_Objects/Array/from", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/from" + }, + "description": "Array.from" + } + ] + }, + { + "type": "module", "moduleName": "array.of", - "nodeVersion": "4.0.0", - "replacement": "Array.of", - "mdnPath": "Global_Objects/Array/of", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/of" + }, + "description": "Array.of" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.at", - "nodeVersion": "16.6.0", - "replacement": "Array.prototype.at", - "mdnPath": "Global_Objects/Array/at", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "16.6.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/at" + }, + "description": "Array.prototype.at" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.concat", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.concat", - "mdnPath": "Global_Objects/Array/concat", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/concat" + }, + "description": "Array.prototype.concat" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.copywithin", - "nodeVersion": "4.0.0", - "replacement": "Array.prototype.copyWithin", - "mdnPath": "Global_Objects/Array/copyWithin", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/copyWithin" + }, + "description": "Array.prototype.copyWithin" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.entries", - "nodeVersion": "0.12.0", - "replacement": "Array.prototype.entries", - "mdnPath": "Global_Objects/Array/entries", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/entries" + }, + "description": "Array.prototype.entries" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.every", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.every", - "mdnPath": "Global_Objects/Array/every", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/every" + }, + "description": "Array.prototype.every" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.filter", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.filter", - "mdnPath": "Global_Objects/Array/filter", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/filter" + }, + "description": "Array.prototype.filter" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.find", - "nodeVersion": "4.0.0", - "replacement": "Array.prototype.find", - "mdnPath": "Global_Objects/Array/find", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/find" + }, + "description": "Array.prototype.find" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.findindex", - "nodeVersion": "4.0.0", - "replacement": "Array.prototype.findIndex", - "mdnPath": "Global_Objects/Array/findIndex", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/findIndex" + }, + "description": "Array.prototype.findIndex" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.flat", - "nodeVersion": "11.0.0", - "replacement": "Array.prototype.flat", - "mdnPath": "Global_Objects/Array/flat", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "11.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/flat" + }, + "description": "Array.prototype.flat" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.flatmap", - "nodeVersion": "11.0.0", - "replacement": "Array.prototype.flatMap", - "mdnPath": "Global_Objects/Array/flatMap", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "11.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/flatMap" + }, + "description": "Array.prototype.flatMap" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.foreach", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.forEach", - "mdnPath": "Global_Objects/Array/forEach", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/forEach" + }, + "description": "Array.prototype.forEach" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.indexof", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.indexOf", - "mdnPath": "Global_Objects/Array/indexOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/indexOf" + }, + "description": "Array.prototype.indexOf" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.join", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.join", - "mdnPath": "Global_Objects/Array/join", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/join" + }, + "description": "Array.prototype.join" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.keys", - "nodeVersion": "0.12.0", - "replacement": "Array.prototype.keys", - "mdnPath": "Global_Objects/Array/keys", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/keys" + }, + "description": "Array.prototype.keys" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.lastindexof", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.lastIndexOf", - "mdnPath": "Global_Objects/Array/lastIndexOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf" + }, + "description": "Array.prototype.lastIndexOf" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.map", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.map", - "mdnPath": "Global_Objects/Array/map", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/map" + }, + "description": "Array.prototype.map" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.push", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.push", - "mdnPath": "Global_Objects/Array/push", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/push" + }, + "description": "Array.prototype.push" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.reduce", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.reduce", - "mdnPath": "Global_Objects/Array/reduce", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/reduce" + }, + "description": "Array.prototype.reduce" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.reduceright", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.reduceRight", - "mdnPath": "Global_Objects/Array/reduceRight", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/reduceRight" + }, + "description": "Array.prototype.reduceRight" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.slice", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.slice", - "mdnPath": "Global_Objects/Array/slice", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/slice" + }, + "description": "Array.prototype.slice" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.some", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.some", - "mdnPath": "Global_Objects/Array/some", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/some" + }, + "description": "Array.prototype.some" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.splice", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.splice", - "mdnPath": "Global_Objects/Array/splice", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/splice" + }, + "description": "Array.prototype.splice" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.unshift", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.unshift", - "mdnPath": "Global_Objects/Array/unshift", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/unshift" + }, + "description": "Array.prototype.unshift" + } + ] + }, + { + "type": "module", "moduleName": "array.prototype.values", - "nodeVersion": "10.9.0", - "replacement": "Array.prototype.values", - "mdnPath": "Global_Objects/Array/values", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "10.9.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/values" + }, + "description": "Array.prototype.values" + } + ] + }, + { + "type": "module", "moduleName": "arraybuffer.prototype.slice", - "nodeVersion": "0.12.0", - "replacement": "ArrayBuffer.prototype.slice", - "mdnPath": "Global_Objects/ArrayBuffer/slice", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice" + }, + "description": "ArrayBuffer.prototype.slice" + } + ] + }, + { + "type": "module", "moduleName": "concat-map", - "nodeVersion": "11.0.0", - "replacement": "Array.prototype.flatMap", - "mdnPath": "Global_Objects/Array/flatMap", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "11.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/flatMap" + }, + "description": "Array.prototype.flatMap" + } + ] + }, + { + "type": "module", "moduleName": "data-view-buffer", - "nodeVersion": "0.10.0", - "replacement": "DataView.prototype.buffer", - "mdnPath": "Global_Objects/DataView/buffer", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/DataView/buffer" + }, + "description": "DataView.prototype.buffer" + } + ] + }, + { + "type": "module", "moduleName": "data-view-byte-length", - "nodeVersion": "0.10.0", - "replacement": "DataView.prototype.byteLength", - "mdnPath": "Global_Objects/DataView/byteLength", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/DataView/byteLength" + }, + "description": "DataView.prototype.byteLength" + } + ] + }, + { + "type": "module", "moduleName": "data-view-byte-offset", - "nodeVersion": "0.10.0", - "replacement": "DataView.prototype.byteOffset", - "mdnPath": "Global_Objects/DataView/byteOffset", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/DataView/byteOffset" + }, + "description": "DataView.prototype.byteOffset" + } + ] + }, + { + "type": "module", "moduleName": "date", - "nodeVersion": "0.10.0", - "replacement": "Date", - "mdnPath": "Global_Objects/Date", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Date" + }, + "description": "Date" + } + ] + }, + { + "type": "module", "moduleName": "defaults", - "nodeVersion": "4.0.0", - "replacement": "Object.assign, or if deep clones are needed, use structuredClone", - "mdnPath": "Global_Objects/Object/assign", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "description": "Object.assign, or if deep clones are needed, use structuredClone" + } + ] + }, + { + "type": "module", "moduleName": "define-accessor-property", - "nodeVersion": "0.10.0", - "replacement": "Object.defineProperty", - "mdnPath": "Global_Objects/Object/defineProperty", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/defineProperty" + }, + "description": "Object.defineProperty" + } + ] + }, + { + "type": "module", "moduleName": "define-data-property", - "nodeVersion": "0.10.0", - "replacement": "Object.defineProperty", - "mdnPath": "Global_Objects/Object/defineProperty", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/defineProperty" + }, + "description": "Object.defineProperty" + } + ] + }, + { + "type": "module", "moduleName": "define-properties", - "nodeVersion": "0.10.0", - "replacement": "Object.defineProperties", - "mdnPath": "Global_Objects/Object/defineProperties", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/defineProperties" + }, + "description": "Object.defineProperties" + } + ] + }, + { + "type": "module", "moduleName": "error-cause", - "nodeVersion": "16.9.0", - "replacement": "Use errors `.cause` property and second `Error` constructors argument to define it", - "mdnPath": "Global_Objects/Error/cause", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "16.9.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Error/cause" + }, + "description": "Use errors `.cause` property and second `Error` constructors argument to define it" + } + ] + }, + { + "type": "module", "moduleName": "es-aggregate-error", - "nodeVersion": "15.0.0", - "replacement": "AggregateError", - "mdnPath": "Global_Objects/AggregateError", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "15.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/AggregateError" + }, + "description": "AggregateError" + } + ] + }, + { + "type": "module", "moduleName": "es-create-array-iterator", - "nodeVersion": "0.12.0", - "replacement": "Array.prototype.{ entries, keys, values, [Symbol.iterator] }", - "mdnPath": "Global_Objects/Array/entries", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/entries" + }, + "description": "Array.prototype.{ entries, keys, values, [Symbol.iterator] }" + } + ] + }, + { + "type": "module", "moduleName": "es-define-property", - "nodeVersion": "0.10.0", - "replacement": "Object.defineProperty", - "mdnPath": "Global_Objects/Object/defineProperty", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/defineProperty" + }, + "description": "Object.defineProperty" + } + ] + }, + { + "type": "module", "moduleName": "es-errors", - "nodeVersion": "0.10.0", - "replacement": "Error / EvalError / RangeError / ReferenceError / SyntaxError / TypeError / URIError", - "mdnPath": "Global_Objects/Error", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Error" + }, + "description": "Error / EvalError / RangeError / ReferenceError / SyntaxError / TypeError / URIError" + } + ] + }, + { + "type": "module", "moduleName": "es-shim-unscopables", - "nodeVersion": "0.12.0", - "replacement": "Array.prototype[Symbol.unscopables]", - "mdnPath": "Global_Objects/Array/@@unscopables", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/@@unscopables" + }, + "description": "Array.prototype[Symbol.unscopables]" + } + ] + }, + { + "type": "module", "moduleName": "es-string-html-methods", - "nodeVersion": "0.10.0", - "replacement": "String.prototype.{ anchor, big, blink, bold, fixed, fontcolor, fontsize, italics, link, small, strike, sub, sup }", - "mdnPath": "Global_Objects/String#html_wrapper_methods", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String#html_wrapper_methods" + }, + "description": "String.prototype.{ anchor, big, blink, bold, fixed, fontcolor, fontsize, italics, link, small, strike, sub, sup }" + } + ] + }, + { + "type": "module", "moduleName": "extend-shallow", - "nodeVersion": "4.0.0", - "replacement": "Object.assign, or if deep clones are needed, use structuredClone", - "mdnPath": "Global_Objects/Object/assign", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "description": "Object.assign, or if deep clones are needed, use structuredClone" + } + ] + }, + { + "type": "module", "moduleName": "filter-array", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.filter", - "mdnPath": "Global_Objects/Array/filter", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/filter" + }, + "description": "Array.prototype.filter" + } + ] + }, + { + "type": "module", "moduleName": "for-each", - "nodeVersion": "0.12.0", - "replacement": "for...of (using \"Object.entries\" if dealing with objects)", - "mdnPath": "Statements/for...of", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Statements/for...of" + }, + "description": "for...of (using \"Object.entries\" if dealing with objects)" + } + ] + }, + { + "type": "module", "moduleName": "function-bind", - "nodeVersion": "0.10.0", - "replacement": "Function.prototype.bind", - "mdnPath": "Global_Objects/Function/bind", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Function/bind" + }, + "description": "Function.prototype.bind" + } + ] + }, + { + "type": "module", "moduleName": "function.prototype.name", - "nodeVersion": "0.10.0", - "replacement": "Use functions `.name` property", - "mdnPath": "Global_Objects/Function/name", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Function/name" + }, + "description": "Use functions `.name` property" + } + ] + }, + { + "type": "module", "moduleName": "functions-have-names", - "nodeVersion": "0.10.0", - "replacement": "Always `true`", - "mdnPath": "Global_Objects/Function/name", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Function/name" + }, + "description": "Always `true`" + } + ] + }, + { + "type": "module", "moduleName": "get-symbol-description", - "nodeVersion": "11.0.0", - "replacement": "Symbol.prototype.description", - "mdnPath": "Global_Objects/Symbol/description", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "11.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Symbol/description" + }, + "description": "Symbol.prototype.description" + } + ] + }, + { + "type": "module", "moduleName": "global", - "nodeVersion": "12.0.0", - "replacement": "globalThis", - "mdnPath": "Global_Objects/globalThis", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "12.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/globalThis" + }, + "description": "globalThis" + } + ] + }, + { + "type": "module", "moduleName": "globalthis", - "nodeVersion": "12.0.0", - "replacement": "globalThis", - "mdnPath": "Global_Objects/globalThis", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "12.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/globalThis" + }, + "description": "globalThis" + } + ] + }, + { + "type": "module", "moduleName": "gopd", - "nodeVersion": "0.10.0", - "replacement": "Object.getOwnPropertyDescriptor", - "mdnPath": "Global_Objects/Object/getOwnPropertyDescriptor", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor" + }, + "description": "Object.getOwnPropertyDescriptor" + } + ] + }, + { + "type": "module", "moduleName": "has", - "nodeVersion": "0.10.0", - "replacement": "Object.prototype.hasOwnProperty.call(obj, prop) (or in later versions of node, \"Object.hasOwn(obj, prop)\")", - "mdnPath": "Global_Objects/Object/hasOwnProperty", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty" + }, + "description": "Object.prototype.hasOwnProperty.call(obj, prop) (or in later versions of node, \"Object.hasOwn(obj, prop)\")" + } + ] + }, + { + "type": "module", "moduleName": "has-own-prop", - "nodeVersion": "0.10.0", - "replacement": "Object.prototype.hasOwnProperty.call(obj, prop) (or in later versions of node, \"Object.hasOwn(obj, prop)\")", - "mdnPath": "Global_Objects/Object/hasOwnProperty", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty" + }, + "description": "Object.prototype.hasOwnProperty.call(obj, prop) (or in later versions of node, \"Object.hasOwn(obj, prop)\")" + } + ] + }, + { + "type": "module", "moduleName": "has-proto", - "nodeVersion": "0.10.0", - "replacement": "Always `true`", - "mdnPath": "Operators/Object_initializer#prototype_setter", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Operators/Object_initializer#prototype_setter" + }, + "description": "Always `true`" + } + ] + }, + { + "type": "module", "moduleName": "has-symbols", - "nodeVersion": "0.12.0", - "replacement": "Always `true`", - "mdnPath": "Global_Objects/Symbol", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Symbol" + }, + "description": "Always `true`" + } + ] + }, + { + "type": "module", "moduleName": "has-tostringtag", - "nodeVersion": "6.0.0", - "replacement": "Always `true`", - "mdnPath": "Global_Objects/Symbol/toStringTag", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "6.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag" + }, + "description": "Always `true`" + } + ] + }, + { + "type": "module", "moduleName": "hasown", - "nodeVersion": "0.10.0", - "replacement": "Object.prototype.hasOwnProperty.call(obj, prop) (or in later versions of node, \"Object.hasOwn(obj, prop)\")", - "mdnPath": "Global_Objects/Object/hasOwnProperty", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty" + }, + "description": "Object.prototype.hasOwnProperty.call(obj, prop) (or in later versions of node, \"Object.hasOwn(obj, prop)\")" + } + ] + }, + { + "type": "module", "moduleName": "index-of", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.indexOf", - "mdnPath": "Global_Objects/Array/indexOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/indexOf" + }, + "description": "Array.prototype.indexOf" + } + ] + }, + { + "type": "module", "moduleName": "inherits", - "nodeVersion": "6.0.0", - "replacement": "Use native class syntax", - "mdnPath": "Classes/extends", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "6.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Classes/extends" + }, + "description": "Use native class syntax" + } + ] + }, + { + "type": "module", "moduleName": "is-nan", - "nodeVersion": "0.10.0", - "replacement": "Number.isNaN", - "mdnPath": "Global_Objects/Number/isNaN", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/isNaN" + }, + "description": "Number.isNaN" + } + ] + }, + { + "type": "module", "moduleName": "iterate-iterator", - "nodeVersion": "0.12.0", - "replacement": "for...of", - "mdnPath": "Statements/for...of", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Statements/for...of" + }, + "description": "for...of" + } + ] + }, + { + "type": "module", "moduleName": "iterate-value", - "nodeVersion": "0.12.0", - "replacement": "for...of", - "mdnPath": "Statements/for...of", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.12.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Statements/for...of" + }, + "description": "for...of" + } + ] + }, + { + "type": "module", "moduleName": "last-index-of", - "nodeVersion": "0.10.0", - "replacement": "Array.prototype.lastIndexOf", - "mdnPath": "Global_Objects/Array/lastIndexOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf" + }, + "description": "Array.prototype.lastIndexOf" + } + ] + }, + { + "type": "module", "moduleName": "left-pad", - "nodeVersion": "8.0.0", - "replacement": "String.prototype.padStart", - "mdnPath": "Global_Objects/String/padStart", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "8.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/padStart" + }, + "description": "String.prototype.padStart" + } + ] + }, + { + "type": "module", "moduleName": "math.acosh", - "nodeVersion": "0.10.0", - "replacement": "Math.acosh", - "mdnPath": "Global_Objects/Math/acosh", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/acosh" + }, + "description": "Math.acosh" + } + ] + }, + { + "type": "module", "moduleName": "math.atanh", - "nodeVersion": "0.10.0", - "replacement": "Math.atanh", - "mdnPath": "Global_Objects/Math/atanh", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/atanh" + }, + "description": "Math.atanh" + } + ] + }, + { + "type": "module", "moduleName": "math.cbrt", - "nodeVersion": "0.10.0", - "replacement": "Math.cbrt", - "mdnPath": "Global_Objects/Math/cbrt", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/cbrt" + }, + "description": "Math.cbrt" + } + ] + }, + { + "type": "module", "moduleName": "math.clz32", - "nodeVersion": "0.10.0", - "replacement": "Math.clz32", - "mdnPath": "Global_Objects/Math/clz32", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/clz32" + }, + "description": "Math.clz32" + } + ] + }, + { + "type": "module", "moduleName": "math.f16round", - "nodeVersion": "0.10.0", - "replacement": "Math.f16round", - "mdnPath": "Global_Objects/Math/f16round", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/f16round" + }, + "description": "Math.f16round" + } + ] + }, + { + "type": "module", "moduleName": "math.fround", - "nodeVersion": "0.10.0", - "replacement": "Math.fround", - "mdnPath": "Global_Objects/Math/fround", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/fround" + }, + "description": "Math.fround" + } + ] + }, + { + "type": "module", "moduleName": "math.imul", - "nodeVersion": "0.10.0", - "replacement": "Math.imul", - "mdnPath": "Global_Objects/Math/imul", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/imul" + }, + "description": "Math.imul" + } + ] + }, + { + "type": "module", "moduleName": "math.log10", - "nodeVersion": "0.10.0", - "replacement": "Math.log10", - "mdnPath": "Global_Objects/Math/log10", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/log10" + }, + "description": "Math.log10" + } + ] + }, + { + "type": "module", "moduleName": "math.log1p", - "nodeVersion": "0.10.0", - "replacement": "Math.log1p", - "mdnPath": "Global_Objects/Math/log1p", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/log1p" + }, + "description": "Math.log1p" + } + ] + }, + { + "type": "module", "moduleName": "math.sign", - "nodeVersion": "0.10.0", - "replacement": "Math.sign", - "mdnPath": "Global_Objects/Math/sign", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Math/sign" + }, + "description": "Math.sign" + } + ] + }, + { + "type": "module", "moduleName": "node.extend", - "nodeVersion": "4.0.0", - "replacement": "Object.assign, or if deep clones are needed, use structuredClone", - "mdnPath": "Global_Objects/Object/assign", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "description": "Object.assign, or if deep clones are needed, use structuredClone" + } + ] + }, + { + "type": "module", "moduleName": "number.isfinite", - "nodeVersion": "0.10.0", - "replacement": "Number.isFinite", - "mdnPath": "Global_Objects/Number/isFinite", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/isFinite" + }, + "description": "Number.isFinite" + } + ] + }, + { + "type": "module", "moduleName": "number.isinteger", - "nodeVersion": "0.10.0", - "replacement": "Number.isInteger", - "mdnPath": "Global_Objects/Number/isInteger", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/isInteger" + }, + "description": "Number.isInteger" + } + ] + }, + { + "type": "module", "moduleName": "number.isnan", - "nodeVersion": "0.10.0", - "replacement": "Number.isNaN", - "mdnPath": "Global_Objects/Number/isNaN", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/isNaN" + }, + "description": "Number.isNaN" + } + ] + }, + { + "type": "module", "moduleName": "number.issafeinteger", - "nodeVersion": "0.10.0", - "replacement": "Number.isSafeInteger", - "mdnPath": "Global_Objects/Number/isSafeInteger", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger" + }, + "description": "Number.isSafeInteger" + } + ] + }, + { + "type": "module", "moduleName": "number.parsefloat", - "nodeVersion": "0.10.0", - "replacement": "Number.parseFloat", - "mdnPath": "Global_Objects/Number/parseFloat", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/parseFloat" + }, + "description": "Number.parseFloat" + } + ] + }, + { + "type": "module", "moduleName": "number.parseint", - "nodeVersion": "0.10.0", - "replacement": "Number.parseInt", - "mdnPath": "Global_Objects/Number/parseInt", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/parseInt" + }, + "description": "Number.parseInt" + } + ] + }, + { + "type": "module", "moduleName": "number.prototype.toexponential", - "nodeVersion": "0.10.0", - "replacement": "Number.prototype.toExponential", - "mdnPath": "Global_Objects/Number/toExponential", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Number/toExponential" + }, + "description": "Number.prototype.toExponential" + } + ] + }, + { + "type": "module", "moduleName": "object-assign", - "nodeVersion": "4.0.0", - "replacement": "Object.assign", - "mdnPath": "Global_Objects/Object/assign", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "description": "Object.assign" + } + ] + }, + { + "type": "module", "moduleName": "object-is", - "nodeVersion": "0.10.0", - "replacement": "Object.is", - "mdnPath": "Global_Objects/Object/is", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/is" + }, + "description": "Object.is" + } + ] + }, + { + "type": "module", "moduleName": "object-keys", - "nodeVersion": "0.10.0", - "replacement": "Object.keys(obj)", - "mdnPath": "Global_Objects/Object/keys", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/keys" + }, + "description": "Object.keys(obj)" + } + ] + }, + { + "type": "module", "moduleName": "object.assign", - "nodeVersion": "4.0.0", - "replacement": "Object.assign", - "mdnPath": "Global_Objects/Object/assign", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "description": "Object.assign" + } + ] + }, + { + "type": "module", "moduleName": "object.defineproperties", - "nodeVersion": "0.10.0", - "replacement": "Object.defineProperties", - "mdnPath": "Global_Objects/Object/defineProperties", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/defineProperties" + }, + "description": "Object.defineProperties" + } + ] + }, + { + "type": "module", "moduleName": "object.entries", - "nodeVersion": "7.0.0", - "replacement": "Object.entries", - "mdnPath": "Global_Objects/Object/entries", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "7.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/entries" + }, + "description": "Object.entries" + } + ] + }, + { + "type": "module", "moduleName": "object.fromentries", - "nodeVersion": "12.0.0", - "replacement": "Object.fromEntries", - "mdnPath": "Global_Objects/Object/fromEntries", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "12.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/fromEntries" + }, + "description": "Object.fromEntries" + } + ] + }, + { + "type": "module", "moduleName": "object.getownpropertydescriptors", - "nodeVersion": "7.0.0", - "replacement": "Object.getOwnPropertyDescriptors", - "mdnPath": "Global_Objects/Object/getOwnPropertyDescriptors", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "7.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors" + }, + "description": "Object.getOwnPropertyDescriptors" + } + ] + }, + { + "type": "module", "moduleName": "object.getprototypeof", - "nodeVersion": "0.10.0", - "replacement": "Object.getPrototypeOf", - "mdnPath": "Global_Objects/Object/getPrototypeOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf" + }, + "description": "Object.getPrototypeOf" + } + ] + }, + { + "type": "module", "moduleName": "object.hasown", - "nodeVersion": "16.9.0", - "replacement": "Object.hasOwn", - "mdnPath": "Global_Objects/Object/hasOwn", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "16.9.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/hasOwn" + }, + "description": "Object.hasOwn" + } + ] + }, + { + "type": "module", "moduleName": "object.keys", - "nodeVersion": "0.10.0", - "replacement": "Object.keys(obj)", - "mdnPath": "Global_Objects/Object/keys", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/keys" + }, + "description": "Object.keys(obj)" + } + ] + }, + { + "type": "module", "moduleName": "object.values", - "nodeVersion": "7.0.0", - "replacement": "Object.values", - "mdnPath": "Global_Objects/Object/values", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "7.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/values" + }, + "description": "Object.values" + } + ] + }, + { + "type": "module", "moduleName": "pad-left", - "nodeVersion": "8.0.0", - "replacement": "String.prototype.padStart", - "mdnPath": "Global_Objects/String/padStart", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "8.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/padStart" + }, + "description": "String.prototype.padStart" + } + ] + }, + { + "type": "module", "moduleName": "parseint", - "nodeVersion": "0.10.0", - "replacement": "parseInt", - "mdnPath": "Global_Objects/parseInt", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/parseInt" + }, + "description": "parseInt" + } + ] + }, + { + "type": "module", "moduleName": "promise.allsettled", - "nodeVersion": "12.9.0", - "replacement": "Promise.allSettled", - "mdnPath": "Global_Objects/Promise/allSettled", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "12.9.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Promise/allSettled" + }, + "description": "Promise.allSettled" + } + ] + }, + { + "type": "module", "moduleName": "promise.any", - "nodeVersion": "15.0.0", - "replacement": "Promise.any", - "mdnPath": "Global_Objects/Promise/any", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "15.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Promise/any" + }, + "description": "Promise.any" + } + ] + }, + { + "type": "module", "moduleName": "promise.prototype.finally", - "nodeVersion": "10.0.0", - "replacement": "Promise.prototype.finally", - "mdnPath": "Global_Objects/Promise/finally", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "10.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Promise/finally" + }, + "description": "Promise.prototype.finally" + } + ] + }, + { + "type": "module", "moduleName": "reflect.getprototypeof", - "nodeVersion": "6.0.0", - "replacement": "Reflect.getPrototypeOf", - "mdnPath": "Global_Objects/Reflect/getPrototypeOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "6.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf" + }, + "description": "Reflect.getPrototypeOf" + } + ] + }, + { + "type": "module", "moduleName": "reflect.ownkeys", - "nodeVersion": "6.0.0", - "replacement": "Reflect.ownKeys", - "mdnPath": "Global_Objects/Reflect/ownKeys", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "6.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys" + }, + "description": "Reflect.ownKeys" + } + ] + }, + { + "type": "module", "moduleName": "regexp.prototype.flags", - "nodeVersion": "6.0.0", - "replacement": "RegExp.prototype.flags (e.g. \"/foo/g.flags\")", - "mdnPath": "Global_Objects/RegExp/flags", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "6.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/RegExp/flags" + }, + "description": "RegExp.prototype.flags (e.g. \"/foo/g.flags\")" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.at", - "nodeVersion": "16.6.0", - "replacement": "String.prototype.at", - "mdnPath": "Global_Objects/String/at", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "16.6.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/at" + }, + "description": "String.prototype.at" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.lastindexof", - "nodeVersion": "0.10.0", - "replacement": "String.prototype.lastIndexOf", - "mdnPath": "Global_Objects/String/lastIndexOf", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/lastIndexOf" + }, + "description": "String.prototype.lastIndexOf" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.matchall", - "nodeVersion": "12.0.0", - "replacement": "String.prototype.matchAll", - "mdnPath": "Global_Objects/String/matchAll", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "12.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/matchAll" + }, + "description": "String.prototype.matchAll" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.padend", - "nodeVersion": "8.0.0", - "replacement": "String.prototype.padEnd", - "mdnPath": "Global_Objects/String/padEnd", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "8.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/padEnd" + }, + "description": "String.prototype.padEnd" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.padleft", - "nodeVersion": "8.0.0", - "replacement": "String.prototype.padStart", - "mdnPath": "Global_Objects/String/padStart", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "8.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/padStart" + }, + "description": "String.prototype.padStart" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.padright", - "nodeVersion": "8.0.0", - "replacement": "String.prototype.padEnd", - "mdnPath": "Global_Objects/String/padEnd", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "8.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/padEnd" + }, + "description": "String.prototype.padEnd" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.padstart", - "nodeVersion": "8.0.0", - "replacement": "String.prototype.padStart", - "mdnPath": "Global_Objects/String/padStart", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "8.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/padStart" + }, + "description": "String.prototype.padStart" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.replaceall", - "nodeVersion": "15.0.0", - "replacement": "String.prototype.replaceAll", - "mdnPath": "Global_Objects/String/replaceAll", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "15.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/replaceAll" + }, + "description": "String.prototype.replaceAll" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.split", - "nodeVersion": "0.10.0", - "replacement": "String.prototype.split", - "mdnPath": "Global_Objects/String/split", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/split" + }, + "description": "String.prototype.split" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.substr", - "nodeVersion": "0.10.0", - "replacement": "String.prototype.substr", - "mdnPath": "Global_Objects/String/substr", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/substr" + }, + "description": "String.prototype.substr" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.trim", - "nodeVersion": "0.10.0", - "replacement": "String.prototype.trim", - "mdnPath": "Global_Objects/String/trim", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/trim" + }, + "description": "String.prototype.trim" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.trimend", - "nodeVersion": "10.0.0", - "replacement": "String.prototype.trimEnd", - "mdnPath": "Global_Objects/String/trimEnd", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "10.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/trimEnd" + }, + "description": "String.prototype.trimEnd" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.trimleft", - "nodeVersion": "10.0.0", - "replacement": "String.prototype.trimLeft", - "mdnPath": "Global_Objects/String/trimLeft", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "10.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/trimLeft" + }, + "description": "String.prototype.trimLeft" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.trimright", - "nodeVersion": "10.0.0", - "replacement": "String.prototype.trimRight", - "mdnPath": "Global_Objects/String/trimRight", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "10.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/trimRight" + }, + "description": "String.prototype.trimRight" + } + ] + }, + { + "type": "module", "moduleName": "string.prototype.trimstart", - "nodeVersion": "10.0.0", - "replacement": "String.prototype.trimStart", - "mdnPath": "Global_Objects/String/trimStart", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "10.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/trimStart" + }, + "description": "String.prototype.trimStart" + } + ] + }, + { + "type": "module", "moduleName": "string.raw", - "nodeVersion": "4.0.0", - "replacement": "String.raw", - "mdnPath": "Global_Objects/String/raw", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/String/raw" + }, + "description": "String.raw" + } + ] + }, + { + "type": "module", "moduleName": "symbol.prototype.description", - "nodeVersion": "11.0.0", - "replacement": "Symbol.prototype.description", - "mdnPath": "Global_Objects/Symbol/description", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "11.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Symbol/description" + }, + "description": "Symbol.prototype.description" + } + ] + }, + { + "type": "module", "moduleName": "typed-array-buffer", - "nodeVersion": "0.10.0", - "replacement": "%TypedArray%.prototype.buffer", - "mdnPath": "Global_Objects/TypedArray/buffer", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/TypedArray/buffer" + }, + "description": "%TypedArray%.prototype.buffer" + } + ] + }, + { + "type": "module", "moduleName": "typed-array-byte-length", - "nodeVersion": "0.10.0", - "replacement": "%TypedArray%.prototype.byteLength", - "mdnPath": "Global_Objects/TypedArray/byteLength", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/TypedArray/byteLength" + }, + "description": "%TypedArray%.prototype.byteLength" + } + ] + }, + { + "type": "module", "moduleName": "typed-array-byte-offset", - "nodeVersion": "0.10.0", - "replacement": "%TypedArray%.prototype.byteOffset", - "mdnPath": "Global_Objects/TypedArray/byteOffset", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/TypedArray/byteOffset" + }, + "description": "%TypedArray%.prototype.byteOffset" + } + ] + }, + { + "type": "module", "moduleName": "typed-array-length", - "nodeVersion": "0.10.0", - "replacement": "%TypedArray%.prototype.length", - "mdnPath": "Global_Objects/TypedArray/length", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "0.10.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/TypedArray/length" + }, + "description": "%TypedArray%.prototype.length" + } + ] + }, + { + "type": "module", "moduleName": "typedarray.prototype.slice", - "nodeVersion": "4.0.0", - "replacement": "%TypedArray%.prototype.slice", - "mdnPath": "Global_Objects/TypedArray/slice", - "category": "native" - }, - { - "type": "native", + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/TypedArray/slice" + }, + "description": "%TypedArray%.prototype.slice" + } + ] + }, + { + "type": "module", "moduleName": "xtend", - "nodeVersion": "4.0.0", - "replacement": "Object.assign, or if deep clones are needed, use structuredClone", - "mdnPath": "Global_Objects/Object/assign", - "category": "native" + "replacements": [ + { + "type": "native", + "engines": [ + { + "engine": "node", + "minVersion": "4.0.0" + } + ], + "url": { + "type": "mdn", + "id": "Web/JavaScript/Reference/Global_Objects/Object/assign" + }, + "description": "Object.assign, or if deep clones are needed, use structuredClone" + } + ] } ] -} +} \ No newline at end of file diff --git a/src/types.ts b/src/types.ts index 9cff341..2a1c963 100644 --- a/src/types.ts +++ b/src/types.ts @@ -5,7 +5,7 @@ export interface EngineConstraint { } interface ModuleReplacementLike { - engines: EngineConstraint[]; + engines?: EngineConstraint[]; preferred?: boolean; } @@ -31,10 +31,12 @@ export interface NativeModuleReplacement extends ModuleReplacementLike { export interface SimpleModuleReplacement extends ModuleReplacementLike { type: 'simple'; description: string; + url?: KnownUrl; } export interface NoModuleReplacement extends ModuleReplacementLike { type: 'none'; + url?: KnownUrl; } export type ModuleReplacementDescriptor = From 72d9ffa99bf673ee5104b027afb52b76cd71f8ad Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:37:38 +0000 Subject: [PATCH 3/5] wip: migrate most of the manifest json --- manifests/native.json | 2 +- manifests/preferred.json | 10645 ++++++++++++++++++++++++++++++------- 2 files changed, 8657 insertions(+), 1990 deletions(-) diff --git a/manifests/native.json b/manifests/native.json index c349806..e32d41e 100644 --- a/manifests/native.json +++ b/manifests/native.json @@ -2621,4 +2621,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/manifests/preferred.json b/manifests/preferred.json index eaa7abc..200bb35 100644 --- a/manifests/preferred.json +++ b/manifests/preferred.json @@ -1,2392 +1,9059 @@ { - "moduleReplacements": [ + "replacements": [ { - "type": "documented", + "type": "module", "moduleName": "@jsdevtools/ez-spawn", - "docPath": "ez-spawn", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "ez-spawn" + }, + "replacementModule": "tinyexec" + } + ] + }, + { + "type": "module", "moduleName": "axios", - "docPath": "axios", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "mdn", + "id": "Web/API/Fetch_API" + }, + "description": "Use native fetch" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "axios" + }, + "replacementModule": "ky" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "axios" + }, + "replacementModule": "ofetch" + } + ] + }, + { + "type": "module", "moduleName": "bluebird", - "docPath": "bluebird-q", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "bluebird-q" + }, + "description": "Use native Promise" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "bluebird-q" + }, + "description": "Use native NativeBird" + } + ] + }, + { + "type": "module", "moduleName": "body-parser", - "docPath": "body-parser", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "body-parser" + }, + "replacementModule": "milliparsec" + } + ] + }, + { + "type": "module", "moduleName": "buf-compare", - "docPath": "buf-compare", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "buf-compare" + }, + "description": "Use native Buffer.compare" + } + ] + }, + { + "type": "module", "moduleName": "buffer-equal", - "docPath": "buffer-equal", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "buffer-equal" + }, + "description": "Use native Buffer#equals" + } + ] + }, + { + "type": "module", "moduleName": "buffer-equals", - "docPath": "buffer-equals", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "buffer-equals" + }, + "description": "Use native Buffer#equals" + } + ] + }, + { + "type": "module", "moduleName": "builtin-modules", - "docPath": "builtin-modules", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "module.html#modulebuiltinmodules" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "chalk", - "docPath": "chalk", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "util.html#utilstyletextformat-text-options" + }, + "description": "Use native styleText" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "chalk" + }, + "replacementModule": "picocolors" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "chalk" + }, + "replacementModule": "ansis" + } + ] + }, + { + "type": "module", "moduleName": "cli-color", - "docPath": "chalk", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "util.html#utilstyletextformat-text-options" + }, + "description": "Use native styleText" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "chalk" + }, + "replacementModule": "picocolors" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "chalk" + }, + "replacementModule": "ansis" + } + ] + }, + { + "type": "module", "moduleName": "core-util-is", - "docPath": "core-util-is", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "util.html#utiltypes" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "cpx", - "docPath": "cpx", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "cpx" + }, + "replacementModule": "cpx2" + } + ] + }, + { + "type": "module", "moduleName": "crypto-js", - "docPath": "crypto-js", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "crypto.html" + }, + "description": "Use native node:crypto" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "mdn", + "id": "Web_Crypto_API" + }, + "description": "Use native Web" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "crypto-js" + }, + "replacementModule": "Bun" + } + ] + }, + { + "type": "module", "moduleName": "deep-equal", - "docPath": "deep-equal", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "deep-equal" + }, + "replacementModule": "dequal" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "deep-equal" + }, + "replacementModule": "fast-deep-equal" + } + ] + }, + { + "type": "module", "moduleName": "depcheck", - "docPath": "depcheck", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "depcheck" + }, + "replacementModule": "knip" + } + ] + }, + { + "type": "module", "moduleName": "dot-prop", - "docPath": "dot-prop", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "dlv" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "object-path" + } + ] + }, + { + "type": "module", "moduleName": "dotenv", - "docPath": "dotenv", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "dotenv" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "emoji-regex", - "docPath": "emoji-regex", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "emoji-regex" + }, + "replacementModule": "emoji-regex-xs" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "emoji-regex" + }, + "description": "Use native Unicode" + } + ] + }, + { + "type": "module", "moduleName": "eslint-plugin-es", - "docPath": "eslint-plugin-es", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "eslint-plugin-es" + }, + "replacementModule": "eslint-plugin-es-x" + } + ] + }, + { + "type": "module", "moduleName": "eslint-plugin-eslint-comments", - "docPath": "eslint-plugin-eslint-comments", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "eslint-plugin-eslint-comments" + }, + "replacementModule": "@eslint-community/eslint-plugin-eslint-comments" + } + ] + }, + { + "type": "module", "moduleName": "eslint-plugin-import", - "docPath": "eslint-plugin-import", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "eslint-plugin-import" + }, + "replacementModule": "eslint-plugin-import-x" + } + ] + }, + { + "type": "module", "moduleName": "eslint-plugin-node", - "docPath": "eslint-plugin-node", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "eslint-plugin-node" + }, + "description": "Use native eslint-plugin-n" + } + ] + }, + { + "type": "module", "moduleName": "eslint-plugin-react", - "docPath": "eslint-plugin-react", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "eslint-plugin-react" + }, + "replacementModule": "@eslint-react/eslint-plugin" + } + ] + }, + { + "type": "module", "moduleName": "eslint-plugin-vitest", - "docPath": "eslint-plugin-vitest", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "eslint-plugin-vitest" + }, + "replacementModule": "@vitest/eslint-plugin" + } + ] + }, + { + "type": "module", "moduleName": "execa", - "docPath": "execa", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "execa" + }, + "replacementModule": "tinyexec" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "execa" + }, + "replacementModule": "nanoexec" + }, + { + "type": "native", + "engines": [ + { + "engine": "bun", + "minVersion": "0.0.0" + } + ], + "url": "https://bun.com/docs/runtime/shell", + "description": "Use native `$` in Bun" + } + ] + }, + { + "type": "module", "moduleName": "ez-spawn", - "docPath": "ez-spawn", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "ez-spawn" + }, + "replacementModule": "tinyexec" + } + ] + }, + { + "type": "module", "moduleName": "ezspawn", - "docPath": "process-exec", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "process-exec" + }, + "replacementModule": "process-exec" + } + ] + }, + { + "type": "module", "moduleName": "faker", - "docPath": "faker", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "faker" + }, + "replacementModule": "@faker-js/faker" + } + ] + }, + { + "type": "module", "moduleName": "fast-glob", - "docPath": "fast-glob", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "fast-glob" + }, + "replacementModule": "tinyglobby" + } + ] + }, + { + "type": "module", "moduleName": "find-cache-dir", - "docPath": "find-cache-dir", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-cache-dir" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "find-cache-directory", - "docPath": "find-cache-directory", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-cache-directory" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "find-file-up", - "docPath": "find-file-up", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-file-up" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "find-pkg", - "docPath": "find-pkg", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-pkg" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "find-up", - "docPath": "find-up", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-up" + }, + "replacementModule": "empathic" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-up" + }, + "replacementModule": "pkg-types" + } + ] + }, + { + "type": "module", "moduleName": "fs-extra", - "docPath": "fs-extra", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fspromisescpsrc-dest-options" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "get-value", - "docPath": "dot-prop", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "dlv" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "object-path" + } + ] + }, + { + "type": "module", "moduleName": "glob", - "docPath": "glob", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "glob" + }, + "replacementModule": "tinyglobby" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fspromisesglobpattern-options" + }, + "description": "Use native fs.glob" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "glob" + }, + "replacementModule": "fdir" + } + ] + }, + { + "type": "module", "moduleName": "globby", - "docPath": "globby", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "globby" + }, + "description": "Use native tinyglobby" + } + ] + }, + { + "type": "module", "moduleName": "grapheme-splitter", - "docPath": "grapheme", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "grapheme" + }, + "replacementModule": "grapheme" + } + ] + }, + { + "type": "module", "moduleName": "graphemer", - "docPath": "graphemer", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "graphemer" + }, + "description": "Use native Intl.Segmenter" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "graphemer" + }, + "replacementModule": "unicode-segmenter" + } + ] + }, + { + "type": "module", "moduleName": "invariant", - "docPath": "invariant", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "invariant" + }, + "replacementModule": "tiny-invariant" + } + ] + }, + { + "type": "module", "moduleName": "is-builtin-module", - "docPath": "is-builtin-module", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "module.html#moduleisbuiltinmodulename" + }, + "description": "Use native Node" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "module.html#modulebuiltinmodules" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "jquery", - "docPath": "jquery", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "jquery" + }, + "description": "Use native features" + } + ] + }, + { + "type": "module", "moduleName": "js-yaml", - "docPath": "js-yaml", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "js-yaml" + }, + "replacementModule": "yaml" + }, + { + "type": "native", + "engines": [ + { + "engine": "bun", + "minVersion": "0.0.0" + } + ], + "url": { + "type": "e18e", + "id": "js-yaml" + }, + "description": "Use native YAML from Bun" + } + ] + }, + { + "type": "module", "moduleName": "jsx-ast-utils", - "docPath": "jsx-ast-utils", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "jsx-ast-utils" + }, + "replacementModule": "jsx-ast-utils-x" + } + ] + }, + { + "type": "module", "moduleName": "lint-staged", - "docPath": "lint-staged", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lint-staged" + }, + "replacementModule": "nano-staged" + } + ] + }, + { + "type": "module", "moduleName": "lodash", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash-amd", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash-compat", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash-es", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash-fp", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash-node", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.add", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.after", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.ary", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.assign", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.assignin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.assigninwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.assignwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.at", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.attempt", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.before", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.bind", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.bindall", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.bindkey", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.callback", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.camelcase", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.capitalize", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.castarray", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.ceil", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.chunk", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.clamp", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.clone", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.clonedeep", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.clonedeepwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.clonewith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.compact", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.compose", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.concat", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.cond", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.conforms", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.conformsto", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.constant", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.contains", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.countby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.create", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.createcallback", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.curry", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.curryright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.debounce", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.deburr", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.defaults", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.defaultsdeep", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.defaultto", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.defer", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.delay", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.difference", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.differenceby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.differencewith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.divide", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.drop", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.dropright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.droprightwhile", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.dropwhile", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.endswith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.eq", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.escape", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.escaperegexp", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.every", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.fill", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.filter", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.find", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.findindex", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.findkey", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.findlast", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.findlastindex", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.findlastkey", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.findwhere", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.first", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flatmap", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flatmapdeep", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flatmapdepth", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flatten", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flattendeep", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flattendepth", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flip", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.floor", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flow", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.flowright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.foreach", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.foreachright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.forin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.forinright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.forown", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.forownright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.frompairs", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.functions", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.functionsin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.get", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.groupby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.gt", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.gte", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.has", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.hasin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.head", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.identity", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.includes", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.indexby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.indexof", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.initial", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.inrange", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.intersection", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.intersectionby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.intersectionwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.invert", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.invertby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.invoke", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.invokemap", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isarguments", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isarray", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isarraybuffer", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isarraylike", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isarraylikeobject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isboolean", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isbuffer", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isdate", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.iselement", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isempty", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isequal", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isequalwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.iserror", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isfinite", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isfunction", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isinteger", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.islength", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.ismap", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.ismatch", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.ismatchwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isnan", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isnative", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isnil", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isnull", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isnumber", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isobject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isobjectlike", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isplainobject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isregexp", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.issafeinteger", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isset", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isstring", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.issymbol", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.istypedarray", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isundefined", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isweakmap", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.isweakset", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.iteratee", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.join", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.kebabcase", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.keyby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.keys", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.keysin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.last", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.lastindexof", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.lowercase", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.lowerfirst", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.lt", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.lte", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.map", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.mapkeys", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.mapvalues", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.matches", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.matchesproperty", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.max", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.maxby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.mean", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.meanby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.memoize", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.merge", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.mergewith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.method", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.methodof", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.min", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.minby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.mixin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.modargs", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.multiply", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.negate", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.noop", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.now", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.nth", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.ntharg", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.omit", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.omitby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.once", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.orderby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.over", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.overargs", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.overevery", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.oversome", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pad", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.padend", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.padleft", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.padright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.padstart", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pairs", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.parseint", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.partial", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.partialright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.partition", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pick", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pickby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pluck", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.property", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.propertyof", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pull", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pullall", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pullallwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.pullat", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.random", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.range", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.rangeright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.rearg", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reduce", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reduceright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reescape", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reevaluate", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reinterpolate", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.remove", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.repeat", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.replace", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.rest", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.restparam", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.result", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.reverse", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.round", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sample", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.samplesize", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.set", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.setwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.shuffle", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.size", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.slice", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.snakecase", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.some", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortbyall", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortbyorder", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortedindex", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortedindexby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortedindexof", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortedlastindex", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortedlastindexby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sortedlastindexof", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sorteduniq", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sorteduniqby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.split", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.spread", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.startcase", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.startswith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.stubarray", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.stubfalse", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.stubobject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.stubstring", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.stubtrue", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.subtract", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sum", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.sumby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.support", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tail", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.take", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.takeright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.takerightwhile", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.takewhile", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.template", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.templatesettings", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.throttle", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.times", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.toarray", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tofinite", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tointeger", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tolength", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tolower", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tonumber", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.topairs", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.topairsin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.topath", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.toplainobject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tosafeinteger", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.tostring", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.toupper", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.transform", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.trim", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.trimend", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.trimleft", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.trimright", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.trimstart", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.trunc", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.truncate", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unary", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unescape", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.union", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unionby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unionwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.uniqby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.uniqueid", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.uniqwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unset", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unzip", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.unzipwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.update", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.updatewith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.uppercase", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.upperfirst", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.values", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.valuesin", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.where", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.without", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.words", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.wrap", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.xor", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.xorby", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.xorwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.zip", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.zipobject", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.zipobjectdeep", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "lodash.zipwith", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "make-dir", - "docPath": "mkdirp", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fsmkdirpath-options-callback" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "materialize-css", - "docPath": "materialize-css", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "materialize-css" + }, + "replacementModule": "@materializecss/materialize" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "materialize-css" + }, + "replacementModule": "@material/web" + } + ] + }, + { + "type": "module", "moduleName": "md5", - "docPath": "md5", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "md5" + }, + "description": "Use native crypto" + } + ] + }, + { + "type": "module", "moduleName": "mkdirp", - "docPath": "mkdirp", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fsmkdirpath-options-callback" + }, + "description": "Use native Node" + } + ] + }, + { + "type": "module", "moduleName": "moment", - "docPath": "moment", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "moment" + }, + "replacementModule": "dayjs" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "moment" + }, + "replacementModule": "date-fns" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "moment" + }, + "replacementModule": "luxon" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "moment" + }, + "description": "Use native Date" + } + ] + }, + { + "type": "module", "moduleName": "npm-run-all", - "docPath": "npm-run-all", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "npm-run-all" + }, + "replacementModule": "npm-run-all2" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "npm-run-all" + }, + "replacementModule": "concurrently" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "npm-run-all" + }, + "replacementModule": "wireit" + } + ] + }, + { + "type": "module", "moduleName": "object-hash", - "docPath": "object-hash", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "object-hash" + }, + "replacementModule": "ohash" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "object-hash" + }, + "description": "Use native SubtleCrypto" + }, + { + "type": "native", + "engines": [ + { + "engine": "bun", + "minVersion": "0.0.0" + } + ], + "url": { + "type": "e18e", + "id": "object-hash" + }, + "description": "Use native CryptoHasher in bun" + } + ] + }, + { + "type": "module", "moduleName": "object-path", - "docPath": "dot-prop", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "dlv" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "object-path" + } + ] + }, + { + "type": "module", "moduleName": "ora", - "docPath": "ora", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "ora" + }, + "replacementModule": "nanospinner" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "ora" + }, + "replacementModule": "picospinner" + } + ] + }, + { + "type": "module", "moduleName": "package-up", - "docPath": "find-up", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-up" + }, + "replacementModule": "empathic" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-up" + }, + "replacementModule": "pkg-types" + } + ] + }, + { + "type": "module", "moduleName": "path-exists", - "docPath": "path-exists", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "path-exists" + }, + "description": "Use native Node" + }, + { + "type": "documented", + "engines": [ + { + "engine": "bun", + "minVersion": "0.0.0" + } + ], + "url": { + "type": "e18e", + "id": "path-exists" + }, + "replacementModule": "Use Bun.file(path).exists()" + } + ] + }, + { + "type": "module", "moduleName": "pkg-dir", - "docPath": "pkg-dir", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "pkg-dir" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "pkg-up", - "docPath": "find-up", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-up" + }, + "replacementModule": "empathic" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "find-up" + }, + "replacementModule": "pkg-types" + } + ] + }, + { + "type": "module", "moduleName": "q", - "docPath": "bluebird-q", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "bluebird-q" + }, + "description": "Use native Promise" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "bluebird-q" + }, + "replacementModule": "nativebird" + } + ] + }, + { + "type": "module", "moduleName": "qs", - "docPath": "qs", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "mdn", + "id": "URLSearchParams" + }, + "description": "Use native URLSearchParams" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "qs" + }, + "replacementModule": "fast-querystring" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "qs" + }, + "replacementModule": "picoquery" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "qs" + }, + "replacementModule": "neoqs" + } + ] + }, + { + "type": "module", "moduleName": "read-package-up", - "docPath": "read-package-up", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "read-package-up" + }, + "replacementModule": "pkg-types" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "read-package-up" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "read-pkg", - "docPath": "read-pkg", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "read-pkg" + }, + "replacementModule": "pkg-types" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "read-pkg" + }, + "description": "Use native node:fs" + } + ] + }, + { + "type": "module", "moduleName": "read-pkg-up", - "docPath": "read-pkg-up", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "read-pkg-up" + }, + "replacementModule": "pkg-types" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "read-pkg-up" + }, + "replacementModule": "empathic" + } + ] + }, + { + "type": "module", "moduleName": "readable-stream", - "docPath": "readable-stream", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "stream.html" + }, + "description": "Use native Node" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "webstreams.html" + }, + "description": "Use native Streams" + } + ] + }, + { + "type": "module", "moduleName": "rimraf", - "docPath": "rimraf", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fspromisesrmpath-options" + }, + "description": "Use native Node" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fsrmdirpath-options-callback" + }, + "description": "Use native Node" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "rimraf" + }, + "replacementModule": "premove" + } + ] + }, + { + "type": "module", "moduleName": "set-value", - "docPath": "dot-prop", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "dlv" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "dot-prop" + }, + "replacementModule": "object-path" + } + ] + }, + { + "type": "module", "moduleName": "shortid", - "docPath": "shortid", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "shortid" + }, + "replacementModule": "nanoid" + } + ] + }, + { + "type": "module", "moduleName": "sort-object", - "docPath": "sort-object", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "e18e", + "id": "sort-object" + }, + "description": "Use native Object.keys methods" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "sort-object" + }, + "replacementModule": "sort-object-keys" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "sort-object" + }, + "replacementModule": "sortobject" + } + ] + }, + { + "type": "module", "moduleName": "string-width", - "docPath": "string-width", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "string-width" + }, + "replacementModule": "fast-string-width" + }, + { + "type": "native", + "engines": [ + { + "engine": "bun", + "minVersion": "0.0.0" + } + ], + "url": { + "type": "e18e", + "id": "string-width" + }, + "description": "Use native stringWidth in Bun" + } + ] + }, + { + "type": "module", "moduleName": "strip-ansi", - "docPath": "strip-ansi", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "util.html#utilstripvtcontrolcharactersstr" + }, + "description": "Use native Node" + }, + { + "type": "native", + "engines": [ + { + "engine": "bun", + "minVersion": "0.0.0" + } + ], + "url": { + "type": "e18e", + "id": "strip-ansi" + }, + "description": "Use native stripANSI in Bun" + } + ] + }, + { + "type": "module", "moduleName": "tempy", - "docPath": "tempy", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "fs.html#fsmkdtempprefix-options-callback" + }, + "description": "Use native Node" + }, + { + "type": "native", + "engines": [ + { + "engine": "deno", + "minVersion": "0.0.0" + } + ], + "url": { + "type": "e18e", + "id": "tempy" + }, + "replacementModule": "Use Deno.makeTempFile or Deno.makeTempDir in Deno" + } + ] + }, + { + "type": "module", "moduleName": "traverse", - "docPath": "traverse", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "traverse" + }, + "replacementModule": "neotraverse" + } + ] + }, + { + "type": "module", "moduleName": "underscore", - "docPath": "lodash-underscore", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "none", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + } + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "lodash-underscore" + }, + "replacementModule": "es-toolkit" + } + ] + }, + { + "type": "module", "moduleName": "uri-js", - "docPath": "uri-js", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "url.html#class-url" + }, + "description": "Use native URL" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "uri-js" + }, + "replacementModule": "uri-js-replace" + }, + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "uri-js" + }, + "replacementModule": "fast-uri" + } + ] + }, + { + "type": "module", "moduleName": "utf8", - "docPath": "utf8", - "category": "preferred" - }, - { - "type": "documented", + "replacements": [ + { + "type": "native", + "engines": [], + "url": { + "type": "mdn", + "id": "TextEncoder" + }, + "description": "Use native TextEncoder" + }, + { + "type": "native", + "engines": [], + "url": { + "type": "node", + "id": "buffer.html" + }, + "description": "Use native Buffer" + } + ] + }, + { + "type": "module", "moduleName": "xmldom", - "docPath": "xmldom", - "category": "preferred" + "replacements": [ + { + "type": "documented", + "engines": [], + "url": { + "type": "e18e", + "id": "xmldom" + }, + "replacementModule": "@xmldom/xmldom" + } + ] } ] } From aa4d05610250595e7c83fc5e9101ba2e6d87f5f4 Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Thu, 11 Dec 2025 10:05:36 +0000 Subject: [PATCH 4/5] chore: populate engines from web features --- manifest-schema.json | 3 + manifests/preferred.json | 399 ++++++++++++++++++++++++++++++++-- package.json | 3 +- scripts/update-engines-web.ts | 132 +++++++++++ src/types.ts | 1 + 5 files changed, 519 insertions(+), 19 deletions(-) create mode 100644 scripts/update-engines-web.ts diff --git a/manifest-schema.json b/manifest-schema.json index 6f1f84d..39394c8 100644 --- a/manifest-schema.json +++ b/manifest-schema.json @@ -154,6 +154,9 @@ }, "description": { "type": "string" + }, + "webFeatureId": { + "type": "string" } }, "required": [ diff --git a/manifests/preferred.json b/manifests/preferred.json index 200bb35..13af5bf 100644 --- a/manifests/preferred.json +++ b/manifests/preferred.json @@ -21,7 +21,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "fetch", + "engines": [ + { + "engine": "chrome", + "minVersion": "42" + }, + { + "engine": "chrome_android", + "minVersion": "42" + }, + { + "engine": "edge", + "minVersion": "14" + }, + { + "engine": "firefox", + "minVersion": "39" + }, + { + "engine": "firefox_android", + "minVersion": "39" + }, + { + "engine": "safari", + "minVersion": "10.1" + }, + { + "engine": "safari_ios", + "minVersion": "10.3" + } + ], "url": { "type": "mdn", "id": "Web/API/Fetch_API" @@ -54,7 +84,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "promise", + "engines": [ + { + "engine": "chrome", + "minVersion": "32" + }, + { + "engine": "chrome_android", + "minVersion": "32" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "29" + }, + { + "engine": "firefox_android", + "minVersion": "29" + }, + { + "engine": "safari", + "minVersion": "8" + }, + { + "engine": "safari_ios", + "minVersion": "8" + } + ], "url": { "type": "e18e", "id": "bluebird-q" @@ -62,13 +122,14 @@ "description": "Use native Promise" }, { - "type": "native", + "type": "documented", "engines": [], "url": { "type": "e18e", "id": "bluebird-q" }, - "description": "Use native NativeBird" + "description": "Use NativeBird", + "replacementModule": "nativebird" } ] }, @@ -258,7 +319,37 @@ }, { "type": "native", - "engines": [], + "webFeatureId": "web-cryptography", + "engines": [ + { + "engine": "chrome", + "minVersion": "37" + }, + { + "engine": "chrome_android", + "minVersion": "37" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "34" + }, + { + "engine": "firefox_android", + "minVersion": "34" + }, + { + "engine": "safari", + "minVersion": "11" + }, + { + "engine": "safari_ios", + "minVersion": "11" + } + ], "url": { "type": "mdn", "id": "Web_Crypto_API" @@ -428,13 +519,14 @@ "moduleName": "eslint-plugin-node", "replacements": [ { - "type": "native", + "type": "documented", "engines": [], "url": { "type": "e18e", "id": "eslint-plugin-node" }, - "description": "Use native eslint-plugin-n" + "description": "Use eslint-plugin-n", + "replacementModule": "eslint-plugin-n" } ] }, @@ -724,13 +816,14 @@ "moduleName": "globby", "replacements": [ { - "type": "native", + "type": "documented", "engines": [], "url": { "type": "e18e", "id": "globby" }, - "description": "Use native tinyglobby" + "description": "Use tinyglobby", + "replacementModule": "tinyglobby" } ] }, @@ -755,7 +848,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "intl-segmenter", + "engines": [ + { + "engine": "chrome", + "minVersion": "87" + }, + { + "engine": "chrome_android", + "minVersion": "87" + }, + { + "engine": "edge", + "minVersion": "87" + }, + { + "engine": "firefox", + "minVersion": "125" + }, + { + "engine": "firefox_android", + "minVersion": "125" + }, + { + "engine": "safari", + "minVersion": "14.1" + }, + { + "engine": "safari_ios", + "minVersion": "14.5" + } + ], "url": { "type": "e18e", "id": "graphemer" @@ -8371,7 +8494,37 @@ }, { "type": "native", - "engines": [], + "webFeatureId": "date", + "engines": [ + { + "engine": "chrome", + "minVersion": "1" + }, + { + "engine": "chrome_android", + "minVersion": "18" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "1" + }, + { + "engine": "firefox_android", + "minVersion": "4" + }, + { + "engine": "safari", + "minVersion": "1" + }, + { + "engine": "safari_ios", + "minVersion": "1" + } + ], "url": { "type": "e18e", "id": "moment" @@ -8428,7 +8581,37 @@ }, { "type": "native", - "engines": [], + "webFeatureId": "web-cryptography", + "engines": [ + { + "engine": "chrome", + "minVersion": "37" + }, + { + "engine": "chrome_android", + "minVersion": "37" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "34" + }, + { + "engine": "firefox_android", + "minVersion": "34" + }, + { + "engine": "safari", + "minVersion": "11" + }, + { + "engine": "safari_ios", + "minVersion": "11" + } + ], "url": { "type": "e18e", "id": "object-hash" @@ -8597,7 +8780,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "promise", + "engines": [ + { + "engine": "chrome", + "minVersion": "32" + }, + { + "engine": "chrome_android", + "minVersion": "32" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "29" + }, + { + "engine": "firefox_android", + "minVersion": "29" + }, + { + "engine": "safari", + "minVersion": "8" + }, + { + "engine": "safari_ios", + "minVersion": "8" + } + ], "url": { "type": "e18e", "id": "bluebird-q" @@ -8621,7 +8834,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "url", + "engines": [ + { + "engine": "chrome", + "minVersion": "32" + }, + { + "engine": "chrome_android", + "minVersion": "32" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "19" + }, + { + "engine": "firefox_android", + "minVersion": "19" + }, + { + "engine": "safari", + "minVersion": "7" + }, + { + "engine": "safari_ios", + "minVersion": "7" + } + ], "url": { "type": "mdn", "id": "URLSearchParams" @@ -8744,7 +8987,37 @@ }, { "type": "native", - "engines": [], + "webFeatureId": "streams", + "engines": [ + { + "engine": "chrome", + "minVersion": "67" + }, + { + "engine": "chrome_android", + "minVersion": "67" + }, + { + "engine": "edge", + "minVersion": "79" + }, + { + "engine": "firefox", + "minVersion": "102" + }, + { + "engine": "firefox_android", + "minVersion": "102" + }, + { + "engine": "safari", + "minVersion": "14.1" + }, + { + "engine": "safari_ios", + "minVersion": "14.5" + } + ], "url": { "type": "node", "id": "webstreams.html" @@ -8831,7 +9104,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "object-object", + "engines": [ + { + "engine": "chrome", + "minVersion": "1" + }, + { + "engine": "chrome_android", + "minVersion": "18" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "1" + }, + { + "engine": "firefox_android", + "minVersion": "4" + }, + { + "engine": "safari", + "minVersion": "1" + }, + { + "engine": "safari_ios", + "minVersion": "1" + } + ], "url": { "type": "e18e", "id": "sort-object" @@ -8989,7 +9292,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "url", + "engines": [ + { + "engine": "chrome", + "minVersion": "32" + }, + { + "engine": "chrome_android", + "minVersion": "32" + }, + { + "engine": "edge", + "minVersion": "12" + }, + { + "engine": "firefox", + "minVersion": "19" + }, + { + "engine": "firefox_android", + "minVersion": "19" + }, + { + "engine": "safari", + "minVersion": "7" + }, + { + "engine": "safari_ios", + "minVersion": "7" + } + ], "url": { "type": "node", "id": "url.html#class-url" @@ -9022,7 +9355,37 @@ "replacements": [ { "type": "native", - "engines": [], + "webFeatureId": "text-encoding", + "engines": [ + { + "engine": "chrome", + "minVersion": "38" + }, + { + "engine": "chrome_android", + "minVersion": "38" + }, + { + "engine": "edge", + "minVersion": "79" + }, + { + "engine": "firefox", + "minVersion": "19" + }, + { + "engine": "firefox_android", + "minVersion": "19" + }, + { + "engine": "safari", + "minVersion": "10.1" + }, + { + "engine": "safari_ios", + "minVersion": "10.3" + } + ], "url": { "type": "mdn", "id": "TextEncoder" diff --git a/package.json b/package.json index b5423ba..7dee60f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "generate-schema": "node scripts/generate-schema.js", "prepare": "tshy && npm run build:update-manifest-paths", "test:validate": "node scripts/validate-modules.js", - "sort-manifests": "node scripts/sort-manifests.js" + "sort-manifests": "node scripts/sort-manifests.js", + "update-engines:web": "node scripts/update-engines-web.ts" }, "tshy": { "exports": { diff --git a/scripts/update-engines-web.ts b/scripts/update-engines-web.ts new file mode 100644 index 0000000..f1e9b0d --- /dev/null +++ b/scripts/update-engines-web.ts @@ -0,0 +1,132 @@ +import {readdir, readFile, writeFile} from 'node:fs/promises'; +import {fileURLToPath} from 'node:url'; +import * as path from 'node:path'; +import {features} from 'web-features'; +import type { + ManifestModule, + ModuleReplacementDescriptor, + NativeModuleReplacement, + EngineConstraint +} from '../src/types.js'; + +const scriptDir = fileURLToPath(new URL('.', import.meta.url)); +const manifestsDir = path.resolve(scriptDir, '../manifests'); + +type Support = Extract<(typeof features)[string], {kind: 'feature'}>['status']['support']; + +/** + * Extract engine constraints from web-features support data + */ +function extractEngines(support: Support): EngineConstraint[] { + const engines: EngineConstraint[] = []; + + for (const [engineName, version] of Object.entries(support)) { + if (version === false || !version) { + continue; + } + + if (typeof version === 'string' && version.includes('≤')) { + continue; + } + + engines.push({ + engine: engineName, + minVersion: String(version) + }); + } + + return engines; +} + +/** + * Update engines for a single replacement based on its webFeatureId + */ +function updateReplacementEngines( + replacement: ModuleReplacementDescriptor +): ModuleReplacementDescriptor { + if (replacement.type !== 'native' || !replacement.webFeatureId) { + return replacement; + } + + const {webFeatureId} = replacement; + const feature = features[webFeatureId]; + + if (!feature) { + console.warn(`Warning: Web feature '${webFeatureId}' not found`); + return replacement; + } + + if (feature.kind !== 'feature') { + console.warn( + `Warning: Web feature '${webFeatureId}' is not of kind 'feature'` + ); + return replacement; + } + + const support = feature.status.support; + const engines = extractEngines(support); + + if (engines.length === 0) { + console.warn( + `Warning: No compatible engines found for web feature '${webFeatureId}'` + ); + return replacement; + } + + if (engines.every((e) => replacement.engines?.some((re) => re.engine === e.engine && re.minVersion === e.minVersion))) { + return replacement; + } + + console.log( + ` Updated engines for webFeatureId '${webFeatureId}': ${engines.map((e) => `${e.engine}@${e.minVersion}`).join(', ')}` + ); + + return { + ...replacement, + engines + }; +} + +/** + * Main function to update all manifests + */ +async function main() { + console.log('Updating engines from web-features data...\n'); + + const manifestFiles = await readdir(manifestsDir); + + for (const manifestName of manifestFiles) { + if (!manifestName.endsWith('.json')) { + continue; + } + + console.log(`Processing ${manifestName}...`); + + const manifestPath = path.join(manifestsDir, manifestName); + const manifestContent = await readFile(manifestPath, {encoding: 'utf8'}); + const manifest: ManifestModule = JSON.parse(manifestContent); + + const updatedManifest = { + ...manifest, + replacements: manifest.replacements.map((module) => ({ + ...module, + replacements: module.replacements.map(updateReplacementEngines) + })) + }; + + await writeFile( + manifestPath, + JSON.stringify(updatedManifest, null, 2) + '\n', + {encoding: 'utf8'} + ); + + console.log(` ✓ Updated ${manifestName}\n`); + } + + console.log('Done!'); +} + +main().catch((error) => { + console.error('Error:', error); + process.exit(1); +}); diff --git a/src/types.ts b/src/types.ts index 2a1c963..cfffd0d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -26,6 +26,7 @@ export interface NativeModuleReplacement extends ModuleReplacementLike { type: 'native'; url: KnownUrl; description: string; + webFeatureId?: string; } export interface SimpleModuleReplacement extends ModuleReplacementLike { From a0565f95bb3f13a54aa7c7ecc209c15201230a7a Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Fri, 12 Dec 2025 08:12:52 +0000 Subject: [PATCH 5/5] feat: add runtime engine sync --- manifest-schema.json | 15 ++ manifests/preferred.json | 394 +++++++++++++++++++++++++++-- package.json | 3 +- scripts/update-engines-runtimes.ts | 222 ++++++++++++++++ src/types.ts | 4 + 5 files changed, 617 insertions(+), 21 deletions(-) create mode 100644 scripts/update-engines-runtimes.ts diff --git a/manifest-schema.json b/manifest-schema.json index 39394c8..569be88 100644 --- a/manifest-schema.json +++ b/manifest-schema.json @@ -157,6 +157,21 @@ }, "webFeatureId": { "type": "string" + }, + "nodeFeatureId": { + "type": "object", + "properties": { + "moduleName": { + "type": "string" + }, + "exportName": { + "type": "string" + } + }, + "required": [ + "moduleName" + ], + "additionalProperties": false } }, "required": [ diff --git a/manifests/preferred.json b/manifests/preferred.json index 13af5bf..79c0e46 100644 --- a/manifests/preferred.json +++ b/manifests/preferred.json @@ -154,7 +154,28 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:buffer", + "exportName": "Buffer" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "vercel", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "e18e", "id": "buf-compare" @@ -169,7 +190,28 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:buffer", + "exportName": "Buffer" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "vercel", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "e18e", "id": "buffer-equal" @@ -184,7 +226,28 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:buffer", + "exportName": "Buffer" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "vercel", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "e18e", "id": "buffer-equals" @@ -199,7 +262,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:module", + "exportName": "builtinModules" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "module.html#modulebuiltinmodules" @@ -214,7 +294,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:util", + "exportName": "styleText" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "util.html#utilstyletextformat-text-options" @@ -247,7 +344,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:util", + "exportName": "styleText" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "util.html#utilstyletextformat-text-options" @@ -280,7 +394,28 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:util", + "exportName": "types" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "vercel", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "util.html#utiltypes" @@ -310,7 +445,23 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:crypto" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "crypto.html" @@ -745,7 +896,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:fs", + "exportName": "cp" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "fs.html#fspromisescpsrc-dest-options" @@ -793,7 +961,16 @@ }, { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:fs", + "exportName": "glob" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "fs.html#fspromisesglobpattern-options" @@ -917,7 +1094,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:module", + "exportName": "isBuiltin" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "module.html#moduleisbuiltinmodulename" @@ -926,7 +1120,24 @@ }, { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:module", + "exportName": "builtinModules" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "module.html#modulebuiltinmodules" @@ -8437,7 +8648,23 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:crypto" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "e18e", "id": "md5" @@ -8712,7 +8939,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:fs/promises", + "exportName": "access" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "e18e", "id": "path-exists" @@ -8978,7 +9222,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:stream", + "exportName": "Readable" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "stream.html" @@ -9032,7 +9293,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:fs/promises", + "exportName": "rm" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "fs.html#fspromisesrmpath-options" @@ -9041,7 +9319,24 @@ }, { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:fs", + "exportName": "rmdir" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "fs.html#fsrmdirpath-options-callback" @@ -9196,7 +9491,28 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:util", + "exportName": "stripVTControlCharacters" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "vercel", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "util.html#utilstripvtcontrolcharactersstr" @@ -9225,7 +9541,24 @@ "replacements": [ { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:fs", + "exportName": "mkdtemp" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "fs.html#fsmkdtempprefix-options-callback" @@ -9394,7 +9727,28 @@ }, { "type": "native", - "engines": [], + "nodeFeatureId": { + "moduleName": "node:buffer", + "exportName": "Buffer" + }, + "engines": [ + { + "engine": "cloudflare", + "minVersion": "24.9.0" + }, + { + "engine": "deno", + "minVersion": "24.9.0" + }, + { + "engine": "vercel", + "minVersion": "24.9.0" + }, + { + "engine": "netlify", + "minVersion": "24.9.0" + } + ], "url": { "type": "node", "id": "buffer.html" diff --git a/package.json b/package.json index 7dee60f..93c4309 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "prepare": "tshy && npm run build:update-manifest-paths", "test:validate": "node scripts/validate-modules.js", "sort-manifests": "node scripts/sort-manifests.js", - "update-engines:web": "node scripts/update-engines-web.ts" + "update-engines:web": "node scripts/update-engines-web.ts", + "update-engines:runtimes": "node scripts/update-engines-runtimes.ts" }, "tshy": { "exports": { diff --git a/scripts/update-engines-runtimes.ts b/scripts/update-engines-runtimes.ts new file mode 100644 index 0000000..931930b --- /dev/null +++ b/scripts/update-engines-runtimes.ts @@ -0,0 +1,222 @@ +import {readdir, readFile, writeFile} from 'node:fs/promises'; +import {fileURLToPath} from 'node:url'; +import * as path from 'node:path'; +import type { + ManifestModule, + ModuleReplacementDescriptor, + EngineConstraint +} from '../src/types.js'; + +const scriptDir = fileURLToPath(new URL('.', import.meta.url)); +const manifestsDir = path.resolve(scriptDir, '../manifests'); + +const RUNTIME_URLS = { + cloudflare: 'https://platform-node-compat.pi0.workers.dev/?json', + deno: 'https://platform-node-compat.deno.dev/?json', + vercel: 'https://platform-node-compat.vercel.app/?json', + netlify: 'https://platform-node-compat.netlify.app/?json' +} as const; + +type RuntimeName = keyof typeof RUNTIME_URLS; + +interface RuntimeData { + _url: string; + version: string; + builtinModules: { + [moduleName: string]: + | false + | { + exports: string[]; + missingExports: string[]; + }; + }; +} + +/** + * Fetch runtime compatibility data from all runtime URLs + */ +async function fetchRuntimeData(): Promise> { + const runtimeData = new Map(); + + for (const [name, url] of Object.entries(RUNTIME_URLS)) { + try { + console.log(`Fetching ${name} data from ${url}...`); + const response = await fetch(url); + if (!response.ok) { + console.warn(`Warning: Failed to fetch ${name} data: ${response.statusText}`); + continue; + } + const data = (await response.json()) as RuntimeData; + runtimeData.set(name as RuntimeName, data); + console.log(` ✓ Fetched ${name} (version ${data.version})`); + } catch (error) { + console.warn(`Warning: Error fetching ${name} data:`, error); + } + } + + return runtimeData; +} + +/** + * Check if a runtime supports a specific node feature + */ +function isFeatureSupported( + runtimeData: RuntimeData, + moduleName: string, + exportName?: string +): boolean { + const moduleSupport = runtimeData.builtinModules[moduleName]; + + if (moduleSupport === false || moduleSupport === undefined) { + return false; + } + + if (!exportName) { + return true; + } + + const {exports, missingExports} = moduleSupport; + + if (missingExports.includes(exportName)) { + return false; + } + + if (exports.includes(exportName)) { + return true; + } + + return false; +} + +/** + * Extract runtime constraints from runtime compatibility data + */ +function extractRuntimeEngines( + allRuntimeData: Map, + moduleName: string, + exportName?: string +): EngineConstraint[] { + const engines: EngineConstraint[] = []; + + for (const [runtimeName, runtimeData] of allRuntimeData) { + if (isFeatureSupported(runtimeData, moduleName, exportName)) { + engines.push({ + engine: runtimeName, + minVersion: runtimeData.version + }); + } + } + + return engines; +} + +/** + * Update engines for a single replacement based on its nodeFeatureId + */ +function updateReplacementEngines( + replacement: ModuleReplacementDescriptor, + allRuntimeData: Map +): ModuleReplacementDescriptor { + if (replacement.type !== 'native' || !replacement.nodeFeatureId) { + return replacement; + } + + const {moduleName, exportName} = replacement.nodeFeatureId; + const runtimeEngines = extractRuntimeEngines(allRuntimeData, moduleName, exportName); + + if (runtimeEngines.length === 0) { + console.warn( + `Warning: No runtime support found for ${moduleName}${exportName ? `.${exportName}` : ''}` + ); + return replacement; + } + + // Check if engines have changed + const existingRuntimeEngines = replacement.engines?.filter((e) => + Object.keys(RUNTIME_URLS).includes(e.engine) + ) ?? []; + + const enginesChanged = + existingRuntimeEngines.length !== runtimeEngines.length || + !runtimeEngines.every((newEngine) => + existingRuntimeEngines.some( + (existing) => + existing.engine === newEngine.engine && + existing.minVersion === newEngine.minVersion + ) + ); + + if (!enginesChanged) { + return replacement; + } + + const nonRuntimeEngines = replacement.engines?.filter( + (e) => !Object.keys(RUNTIME_URLS).includes(e.engine) + ) ?? []; + + const updatedEngines = [...nonRuntimeEngines, ...runtimeEngines]; + + console.log( + ` Updated engines for ${moduleName}${exportName ? `.${exportName}` : ''}: ${runtimeEngines.map((e) => `${e.engine}@${e.minVersion}`).join(', ')}` + ); + + return { + ...replacement, + engines: updatedEngines + }; +} + +/** + * Main function to update all manifests + */ +async function main() { + console.log('Updating engines from runtime compatibility data...\n'); + + const allRuntimeData = await fetchRuntimeData(); + + if (allRuntimeData.size === 0) { + console.error('Error: Failed to fetch any runtime data'); + process.exit(1); + } + + console.log(''); + + const manifestFiles = await readdir(manifestsDir); + + for (const manifestName of manifestFiles) { + if (!manifestName.endsWith('.json')) { + continue; + } + + console.log(`Processing ${manifestName}...`); + + const manifestPath = path.join(manifestsDir, manifestName); + const manifestContent = await readFile(manifestPath, {encoding: 'utf8'}); + const manifest: ManifestModule = JSON.parse(manifestContent); + + const updatedManifest = { + ...manifest, + replacements: manifest.replacements.map((module) => ({ + ...module, + replacements: module.replacements.map((replacement) => + updateReplacementEngines(replacement, allRuntimeData) + ) + })) + }; + + await writeFile( + manifestPath, + JSON.stringify(updatedManifest, null, 2) + '\n', + {encoding: 'utf8'} + ); + + console.log(` ✓ Updated ${manifestName}\n`); + } + + console.log('Done!'); +} + +main().catch((error) => { + console.error('Error:', error); + process.exit(1); +}); diff --git a/src/types.ts b/src/types.ts index cfffd0d..7abbcde 100644 --- a/src/types.ts +++ b/src/types.ts @@ -27,6 +27,10 @@ export interface NativeModuleReplacement extends ModuleReplacementLike { url: KnownUrl; description: string; webFeatureId?: string; + nodeFeatureId?: { + moduleName: string; + exportName?: string; + }; } export interface SimpleModuleReplacement extends ModuleReplacementLike {