From 7ed55aecc40051e474be2021b135f5955d4aba86 Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Tue, 16 Apr 2024 14:55:07 +0200 Subject: [PATCH 01/25] Reorganize the code so it is accessible from one package --- packages/light-client/src/index.browser.ts | 7 +++++++ packages/light-client/src/index.ts | 4 ++-- packages/light-client/src/utils/api.ts | 19 +++++++++++++++++++ packages/light-client/src/utils/index.ts | 1 + packages/light-client/src/utils/logger.ts | 7 ++++++- packages/light-client/test/utils/utils.ts | 4 ++-- 6 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 packages/light-client/src/index.browser.ts create mode 100644 packages/light-client/src/utils/api.ts diff --git a/packages/light-client/src/index.browser.ts b/packages/light-client/src/index.browser.ts new file mode 100644 index 000000000000..62bbbec43d95 --- /dev/null +++ b/packages/light-client/src/index.browser.ts @@ -0,0 +1,7 @@ +export * from "./index.js"; + +// To kep the consistent interface as npm package and browser +// Use consistent names as named exports +export * as utils from "./utils/index.js"; +export * as validation from "./validation.js"; +export * as transport from "./transport/index.js"; diff --git a/packages/light-client/src/index.ts b/packages/light-client/src/index.ts index 7fe6332895af..fd6a931a17a9 100644 --- a/packages/light-client/src/index.ts +++ b/packages/light-client/src/index.ts @@ -7,7 +7,7 @@ import {isErrorAborted, sleep} from "@lodestar/utils"; import {getCurrentSlot, slotWithFutureTolerance, timeUntilNextEpoch} from "./utils/clock.js"; import {chunkifyInclusiveRange} from "./utils/chunkify.js"; import {LightclientEmitter, LightclientEvent} from "./events.js"; -import {getLcLoggerConsole, ILcLogger} from "./utils/logger.js"; +import {getConsoleLogger, ILcLogger} from "./utils/logger.js"; import {computeSyncPeriodAtEpoch, computeSyncPeriodAtSlot, computeEpochAtSlot} from "./utils/clock.js"; import {LightclientSpec} from "./spec/index.js"; import {validateLightClientBootstrap} from "./spec/validateLightClientBootstrap.js"; @@ -114,7 +114,7 @@ export class Lightclient { : genesisData.genesisValidatorsRoot; this.config = createBeaconConfig(config, this.genesisValidatorsRoot); - this.logger = logger ?? getLcLoggerConsole(); + this.logger = logger ?? getConsoleLogger(); this.transport = transport; this.runStatus = {code: RunStatusCode.uninitialized}; diff --git a/packages/light-client/src/utils/api.ts b/packages/light-client/src/utils/api.ts new file mode 100644 index 000000000000..bcc8a4d4f29c --- /dev/null +++ b/packages/light-client/src/utils/api.ts @@ -0,0 +1,19 @@ +import {getClient, Api} from "@lodestar/api"; +import {ChainForkConfig, createChainForkConfig} from "@lodestar/config"; +import {NetworkName, networksChainConfig} from "@lodestar/config/networks"; + +export function getApiFromUrl(url: string, network: NetworkName): Api { + if (!(network in networksChainConfig)) { + throw Error(`Invalid network name "${network}". Valid options are: ${Object.keys(networksChainConfig).join()}`); + } + + return getClient({urls: [url]}, {config: createChainForkConfig(networksChainConfig[network])}); +} + +export function getChainForkConfigFromNetwork(network: NetworkName): ChainForkConfig { + if (!(network in networksChainConfig)) { + throw Error(`Invalid network name "${network}". Valid options are: ${Object.keys(networksChainConfig).join()}`); + } + + return createChainForkConfig(networksChainConfig[network]); +} diff --git a/packages/light-client/src/utils/index.ts b/packages/light-client/src/utils/index.ts index 145e6fe52c9a..6c49c7ed11f9 100644 --- a/packages/light-client/src/utils/index.ts +++ b/packages/light-client/src/utils/index.ts @@ -1,3 +1,4 @@ +export * from "./api.js"; export * from "./chunkify.js"; export * from "./clock.js"; export * from "./domain.js"; diff --git a/packages/light-client/src/utils/logger.ts b/packages/light-client/src/utils/logger.ts index cb47857da165..afdbf7da7d3d 100644 --- a/packages/light-client/src/utils/logger.ts +++ b/packages/light-client/src/utils/logger.ts @@ -13,7 +13,7 @@ export type ILcLogger = { /** * With `console` module and ignoring debug logs */ -export function getLcLoggerConsole(opts?: {logDebug?: boolean}): ILcLogger { +export function getConsoleLogger(opts?: {logDebug?: boolean}): ILcLogger { return { error: console.error, warn: console.warn, @@ -21,3 +21,8 @@ export function getLcLoggerConsole(opts?: {logDebug?: boolean}): ILcLogger { debug: opts?.logDebug ? console.log : () => {}, }; } + +/** + * @deprecated - Use `getConsoleLogger` instead. + */ +export const getLcLoggerConsole = getConsoleLogger; diff --git a/packages/light-client/test/utils/utils.ts b/packages/light-client/test/utils/utils.ts index 930cabfdad11..a99004345217 100644 --- a/packages/light-client/test/utils/utils.ts +++ b/packages/light-client/test/utils/utils.ts @@ -14,7 +14,7 @@ import { import {altair, phase0, Slot, ssz, SyncPeriod, allForks} from "@lodestar/types"; import {SyncCommitteeFast} from "../../src/types.js"; import {computeSigningRoot} from "../../src/utils/domain.js"; -import {getLcLoggerConsole} from "../../src/utils/logger.js"; +import {getConsoleLogger} from "../../src/utils/logger.js"; const CURRENT_SYNC_COMMITTEE_INDEX = 22; const CURRENT_SYNC_COMMITTEE_DEPTH = 5; @@ -25,7 +25,7 @@ const CURRENT_SYNC_COMMITTEE_DEPTH = 5; * DEBUG=true vitest ... * ``` */ -export const testLogger = getLcLoggerConsole({logDebug: Boolean(process.env.DEBUG)}); +export const testLogger = getConsoleLogger({logDebug: Boolean(process.env.DEBUG)}); export const genesisValidatorsRoot = Buffer.alloc(32, 0xaa); export const SOME_HASH = Buffer.alloc(32, 0xaa); From c1e138ceb029820c6bc3dd5953739f5611c1232a Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Tue, 16 Apr 2024 14:55:51 +0200 Subject: [PATCH 02/25] Add support for browser build for lightclient --- .gitignore | 2 + package.json | 5 +- packages/light-client/README.md | 46 ++- packages/light-client/package.json | 8 +- packages/light-client/tsconfig.json | 1 + packages/light-client/vite.config.ts | 67 ++++ scripts/vitest/plugins/blsBrowserPlugin.ts | 34 ++ scripts/vitest/polyfills/bls-keygen.js | 1 + scripts/vitest/polyfills/emptyModule.js | 1 + .../polyfills/persistent-merkle-tree.js | 7 + yarn.lock | 322 +++++++++++++++++- 11 files changed, 478 insertions(+), 16 deletions(-) create mode 100644 packages/light-client/vite.config.ts create mode 100644 scripts/vitest/plugins/blsBrowserPlugin.ts create mode 100644 scripts/vitest/polyfills/bls-keygen.js create mode 100644 scripts/vitest/polyfills/emptyModule.js create mode 100644 scripts/vitest/polyfills/persistent-merkle-tree.js diff --git a/.gitignore b/.gitignore index 4f4289359a4c..775f46f6f235 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .__testdb* node_modules/ lib +dist .nyc_output/ coverage/** .DS_Store @@ -21,6 +22,7 @@ validators **/coverage **/node_modules **/lib +**/dist **/.nyc_output .tmp .vscode diff --git a/package.json b/package.json index 920d4c4db135..6c3a255ae213 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "path-browserify": "^1.0.1", "prettier": "^3.2.5", "process": "^0.11.10", + "rollup-plugin-visualizer": "^5.12.0", "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "supertest": "^6.3.3", @@ -79,6 +80,7 @@ "typescript-docs-verifier": "^2.5.0", "vite-plugin-node-polyfills": "^0.21.0", "vite-plugin-top-level-await": "^1.4.1", + "vite": "^5.2.8", "vitest": "^1.4.0", "vitest-when": "^0.3.1", "wait-port": "^1.1.0", @@ -87,7 +89,6 @@ "resolutions": { "@puppeteer/browsers": "^2.1.0", "dns-over-http-resolver": "^2.1.1", - "loupe": "^2.3.6", - "vite": "^5.0.0" + "loupe": "^2.3.6" } } diff --git a/packages/light-client/README.md b/packages/light-client/README.md index 5fdcae6a3e10..94ad6c795732 100644 --- a/packages/light-client/README.md +++ b/packages/light-client/README.md @@ -48,19 +48,22 @@ lodestar lightclient \ ## Light-Client Programmatic Example -For this example we will assume there is a running beacon node at `https://beacon-node.your-domain.com` +For this example we will assume there is a running beacon node at `https://lodestar-mainnet.chainsafe.io` ```ts -import {getClient} from "@lodestar/api"; -import {createChainForkConfig} from "@lodestar/config"; -import {networksChainConfig} from "@lodestar/config/networks"; import {Lightclient, LightclientEvent} from "@lodestar/light-client"; import {LightClientRestTransport} from "@lodestar/light-client/transport"; -import {getFinalizedSyncCheckpoint, getGenesisData, getLcLoggerConsole} from "@lodestar/light-client/utils"; - -const config = createChainForkConfig(networksChainConfig.mainnet); -const logger = getLcLoggerConsole({logDebug: Boolean(process.env.DEBUG)}); -const api = getClient({urls: ["https://beacon-node.your-domain.com"]}, {config}); +import { + getFinalizedSyncCheckpoint, + getGenesisData, + getConsoleLogger, + getApiFromUrl, + getChainForkConfigFromNetwork, +} from "@lodestar/light-client/utils"; + +const config = getChainForkConfigFromNetwork("mainnet"); +const logger = getConsoleLogger({logDebug: Boolean(process.env.DEBUG)}); +const api = getApiFromUrl({urls: ["https://lodestar-mainnet.chainsafe.io"]}, {config}); const lightclient = await Lightclient.initializeFromCheckpointRoot({ config, @@ -88,6 +91,31 @@ lightclient.emitter.on(LightclientEvent.lightClientOptimisticHeader, async (opti }); ``` +## Browser Integration + +If you want to use Lightclient in browser and facing some issues in building it with bundlers like webpack, vite. We suggest to use our distribution build. The support for single distribution build is started from `1.18.0` version. + +Directly link the dist build with the ` +``` + ## Contributors Read our [contribution documentation](https://chainsafe.github.io/lodestar/contribution/getting-started), [submit an issue](https://github.com/ChainSafe/lodestar/issues/new/choose) or talk to us on our [discord](https://discord.gg/yjyvFRP)! diff --git a/packages/light-client/package.json b/packages/light-client/package.json index dbf8a4194b65..ed943b12cc2a 100644 --- a/packages/light-client/package.json +++ b/packages/light-client/package.json @@ -45,13 +45,17 @@ "lib/**/*.js", "lib/**/*.js.map", "*.d.ts", - "*.js" + "*.js", + "dist/**/*.js", + "dist/**/*.map", + "dist/**/*.d.ts" ], "scripts": { "clean": "rm -rf lib && rm -f *.tsbuildinfo", "build": "tsc -p tsconfig.build.json", + "build:dist": "vite build", "build:watch": "yarn run build --watch", - "build:release": "yarn clean && yarn run build", + "build:release": "yarn clean && yarn run build && yarn run build:dist", "check-build": "node -e \"(async function() { await import('./lib/index.js') })()\"", "check-types": "tsc", "lint": "eslint --color --ext .ts src/ test/", diff --git a/packages/light-client/tsconfig.json b/packages/light-client/tsconfig.json index b29a7b46c4b1..cfcb3522f506 100644 --- a/packages/light-client/tsconfig.json +++ b/packages/light-client/tsconfig.json @@ -1,4 +1,5 @@ { "extends": "../../tsconfig.json", + "exclude": ["src/index.browser.ts"], "compilerOptions": {} } diff --git a/packages/light-client/vite.config.ts b/packages/light-client/vite.config.ts new file mode 100644 index 000000000000..d1253019305a --- /dev/null +++ b/packages/light-client/vite.config.ts @@ -0,0 +1,67 @@ +import {defineConfig} from "vite"; +import {nodePolyfills} from "vite-plugin-node-polyfills"; +import topLevelAwait from "vite-plugin-top-level-await"; +import {visualizer} from "rollup-plugin-visualizer"; +import {blsBrowserPlugin} from "../../scripts/vitest/plugins/blsBrowserPlugin.js"; +import pkgJSON from "./package.json"; + +const banner = + `/* ${pkgJSON.description}\n` + + " * \n" + + ` * Version: ${pkgJSON.version}\n` + + ` * Author: ${pkgJSON.author}\n` + + ` * License: ${pkgJSON.license}\n` + + ` * Web: ${pkgJSON.homepage}\n` + + "*/"; + +export default defineConfig({ + plugins: [ + topLevelAwait(), + blsBrowserPlugin(), + nodePolyfills({ + include: ["http", "https", "stream"], + globals: {Buffer: true, process: true}, + protocolImports: true, + }), + visualizer(), + ], + build: { + // "modules" refer to ['es2020', 'edge88', 'firefox78', 'chrome87', 'safari14'] + target: "modules", + outDir: "dist", + sourcemap: true, + minify: true, + manifest: "manifest.json", + ssr: false, + ssrManifest: false, + emptyOutDir: true, + lib: { + entry: "src/index.browser.ts", + formats: ["es"], + name: "lightclient", + fileName: (format) => `lightclient.${format}.min.js`, + }, + rollupOptions: { + output: { + inlineDynamicImports: true, + banner, + footer: ` + globalThis.lodestar = globalThis.lodestar === undefined ? {} : globalThis.lodestar; + globalThis.lodestar.lightclient = { + Lightclient, + LightclientEvent, + RunStatusCode, + upgradeLightClientFinalityUpdate, + upgradeLightClientOptimisticUpdate, + utils: index$1, + transport: index, + validation + }; + `, + }, + treeshake: { + preset: "recommended", + }, + }, + }, +}); diff --git a/scripts/vitest/plugins/blsBrowserPlugin.ts b/scripts/vitest/plugins/blsBrowserPlugin.ts new file mode 100644 index 000000000000..2a762b4c8b73 --- /dev/null +++ b/scripts/vitest/plugins/blsBrowserPlugin.ts @@ -0,0 +1,34 @@ +import path from "node:path"; +import {UserConfig, ConfigEnv, Plugin} from "vite"; + +const __dirname = new URL(".", import.meta.url).pathname; +const polyfillsDir = path.join(__dirname, "../polyfills"); + +const emptyModulePath = path.join(__dirname, "../polyfills/emptyModule.js"); + +export function blsBrowserPlugin(): Plugin { + return { + name: "blsBrowserPlugin", + config(_config: UserConfig, _env: ConfigEnv) { + return { + optimizeDeps: { + exclude: ["@chainsafe/bls-keygen"], + force: true, + }, + resolve: { + alias: { + "@chainsafe/bls": "@chainsafe/bls/herumi", + "@chainsafe/blst": emptyModulePath, + "@chainsafe/bls-hd-key": emptyModulePath, + "@chainsafe/bls-keygen": path.join(polyfillsDir, "bls-keygen.js"), + // "@chainsafe/persistent-merkle-tree/lib/hasher/index": emptyModulePath, + // "@chainsafe/persistent-merkle-tree": path.join(polyfillsDir, "persistent-merkle-tree.js"), + crypto: emptyModulePath, + "node:crypto": emptyModulePath, + // "@chainsafe/bls/lib/blst-native" + }, + }, + }; + }, + }; +} diff --git a/scripts/vitest/polyfills/bls-keygen.js b/scripts/vitest/polyfills/bls-keygen.js new file mode 100644 index 000000000000..779e200eb942 --- /dev/null +++ b/scripts/vitest/polyfills/bls-keygen.js @@ -0,0 +1 @@ +export function generateRandomSecretKey() {} diff --git a/scripts/vitest/polyfills/emptyModule.js b/scripts/vitest/polyfills/emptyModule.js new file mode 100644 index 000000000000..ff8b4c56321a --- /dev/null +++ b/scripts/vitest/polyfills/emptyModule.js @@ -0,0 +1 @@ +export default {}; diff --git a/scripts/vitest/polyfills/persistent-merkle-tree.js b/scripts/vitest/polyfills/persistent-merkle-tree.js new file mode 100644 index 000000000000..c7978182dcaf --- /dev/null +++ b/scripts/vitest/polyfills/persistent-merkle-tree.js @@ -0,0 +1,7 @@ +export const ProofType = { + single: "single", + treeOffset: "treeOffset", + multi: "multi", + compactMulti: "compactMulti", +}; +export function hasher() {} diff --git a/yarn.lock b/yarn.lock index 762313a687b2..45482a1d109c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -542,116 +542,231 @@ optionalDependencies: global-agent "^3.0.0" +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + "@esbuild/android-arm64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz#fb7130103835b6d43ea499c3f30cfb2b2ed58456" integrity sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA== +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + "@esbuild/android-arm@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.8.tgz#b46e4d9e984e6d6db6c4224d72c86b7757e35bcb" integrity sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA== +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + "@esbuild/android-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz#a13db9441b5a4f4e4fec4a6f8ffacfea07888db7" integrity sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A== +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + "@esbuild/darwin-arm64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz#49f5718d36541f40dd62bfdf84da9c65168a0fc2" integrity sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw== +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + "@esbuild/darwin-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz#75c5c88371eea4bfc1f9ecfd0e75104c74a481ac" integrity sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q== +"@esbuild/darwin-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + "@esbuild/freebsd-arm64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz#9d7259fea4fd2b5f7437b52b542816e89d7c8575" integrity sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw== +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + "@esbuild/freebsd-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz#abac03e1c4c7c75ee8add6d76ec592f46dbb39e3" integrity sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg== +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + "@esbuild/linux-arm64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz#c577932cf4feeaa43cb9cec27b89cbe0df7d9098" integrity sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ== +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + "@esbuild/linux-arm@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz#d6014d8b98b5cbc96b95dad3d14d75bb364fdc0f" integrity sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ== +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + "@esbuild/linux-ia32@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz#2379a0554307d19ac4a6cdc15b08f0ea28e7a40d" integrity sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ== +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + "@esbuild/linux-loong64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz#e2a5bbffe15748b49356a6cd7b2d5bf60c5a7123" integrity sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ== +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + "@esbuild/linux-mips64el@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz#1359331e6f6214f26f4b08db9b9df661c57cfa24" integrity sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q== +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + "@esbuild/linux-ppc64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz#9ba436addc1646dc89dae48c62d3e951ffe70951" integrity sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg== +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + "@esbuild/linux-riscv64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz#fbcf0c3a0b20f40b5fc31c3b7695f0769f9de66b" integrity sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg== +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + "@esbuild/linux-s390x@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz#989e8a05f7792d139d5564ffa7ff898ac6f20a4a" integrity sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg== +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + "@esbuild/linux-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz#b187295393a59323397fe5ff51e769ec4e72212b" integrity sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg== +"@esbuild/linux-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + "@esbuild/netbsd-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz#c1ec0e24ea82313cb1c7bae176bd5acd5bde7137" integrity sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw== +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + "@esbuild/openbsd-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz#0c5b696ac66c6d70cf9ee17073a581a28af9e18d" integrity sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ== +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + "@esbuild/sunos-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz#2a697e1f77926ff09fcc457d8f29916d6cd48fb1" integrity sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w== +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + "@esbuild/win32-arm64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz#ec029e62a2fca8c071842ecb1bc5c2dd20b066f1" integrity sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg== +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + "@esbuild/win32-ia32@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz#cbb9a3146bde64dc15543e48afe418c7a3214851" integrity sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw== +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + "@esbuild/win32-x64@0.19.8": version "0.19.8" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz#c8285183dbdb17008578dbacb6e22748709b4822" integrity sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA== +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2526,61 +2641,141 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz#bddf05c3387d02fac04b6b86b3a779337edfed75" + integrity sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g== + "@rollup/rollup-android-arm-eabi@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.1.tgz#0ea289f68ff248b50fea5716ca9f65f7d4dba3ae" integrity sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA== +"@rollup/rollup-android-arm64@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz#b26bd09de58704c0a45e3375b76796f6eda825e4" + integrity sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ== + "@rollup/rollup-android-arm64@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.1.tgz#27c8c67fc5de574874085a1b480ac65b3e18378e" integrity sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA== +"@rollup/rollup-darwin-arm64@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz#c5f3fd1aa285b6d33dda6e3f3ca395f8c37fd5ca" + integrity sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA== + "@rollup/rollup-darwin-arm64@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.1.tgz#c5735c042980c85495411af7183dd20294763bd8" integrity sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw== +"@rollup/rollup-darwin-x64@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz#8e4673734d7dc9d68f6d48e81246055cda0e840f" + integrity sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw== + "@rollup/rollup-darwin-x64@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.1.tgz#af844bd54abb73ca3c9cf89a31eec17861d1375d" integrity sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg== +"@rollup/rollup-linux-arm-gnueabihf@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz#53ed38eb13b58ababdb55a7f66f0538a7f85dcba" + integrity sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw== + "@rollup/rollup-linux-arm-gnueabihf@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.1.tgz#5e972f63c441eaf859551039b3f18db9b035977d" integrity sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ== +"@rollup/rollup-linux-arm-musleabihf@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz#0706ee38330e267a5c9326956820f009cfb21fcd" + integrity sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw== + +"@rollup/rollup-linux-arm64-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz#426fce7b8b242ac5abd48a10a5020f5a468c6cb4" + integrity sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA== + "@rollup/rollup-linux-arm64-gnu@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.1.tgz#f4cfbc71e3b6fdb395b28b1472414e181515c72d" integrity sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw== +"@rollup/rollup-linux-arm64-musl@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz#65bf944530d759b50d7ffd00dfbdf4125a43406f" + integrity sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw== + "@rollup/rollup-linux-arm64-musl@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.1.tgz#6a94c691830dc29bf708de7c640f494996130893" integrity sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw== +"@rollup/rollup-linux-powerpc64le-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz#494ba3b31095e9a45df9c3f646d21400fb631a95" + integrity sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw== + +"@rollup/rollup-linux-riscv64-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz#8b88ed0a40724cce04aa15374ebe5ba4092d679f" + integrity sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ== + +"@rollup/rollup-linux-s390x-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz#09c9e5ec57a0f6ec3551272c860bb9a04b96d70f" + integrity sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg== + +"@rollup/rollup-linux-x64-gnu@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz#197f27fd481ad9c861021d5cbbf21793922a631c" + integrity sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA== + "@rollup/rollup-linux-x64-gnu@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz#f07bae3f7dc532d9ea5ab36c9071db329f9a1efb" integrity sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA== +"@rollup/rollup-linux-x64-musl@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz#5cc0522f4942f2df625e9bfb6fb02c6580ffbce6" + integrity sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg== + "@rollup/rollup-linux-x64-musl@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.1.tgz#357a34fdbf410af88ce48bd802bea6462bb9a8bc" integrity sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ== +"@rollup/rollup-win32-arm64-msvc@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz#a648122389d23a7543b261fba082e65fefefe4f6" + integrity sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg== + "@rollup/rollup-win32-arm64-msvc@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.1.tgz#b6e97fd38281667e35297033393cd1101f4a31be" integrity sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ== +"@rollup/rollup-win32-ia32-msvc@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz#34727b5c7953c35fc6e1ae4f770ad3a2025f8e03" + integrity sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw== + "@rollup/rollup-win32-ia32-msvc@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.1.tgz#a95db026c640c8128bfd38546d85342f2329beaf" integrity sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw== +"@rollup/rollup-win32-x64-msvc@4.14.3": + version "4.14.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz#5b2fb4d8cd44c05deef8a7b0e6deb9ccb8939d18" + integrity sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA== + "@rollup/rollup-win32-x64-msvc@4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.1.tgz#45785b5caf83200a34a9867ba50d69560880c120" @@ -2849,6 +3044,11 @@ dependencies: "@types/node" "*" +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/estree@^1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" @@ -4324,7 +4524,6 @@ buffer@^5.2.1, buffer@^5.5.0, buffer@^5.7.1: ieee754 "^1.1.13" buffer@^6.0.3: - name buffer-polyfill version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -5795,6 +5994,35 @@ esbuild@^0.19.3: "@esbuild/win32-ia32" "0.19.8" "@esbuild/win32-x64" "0.19.8" +esbuild@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -10372,6 +10600,15 @@ postcss@^8.4.32: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.38: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -11026,6 +11263,46 @@ roarr@^2.15.3: semver-compare "^1.0.0" sprintf-js "^1.1.2" +rollup-plugin-ignore@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/rollup-plugin-ignore/-/rollup-plugin-ignore-1.0.10.tgz#0b8453ebf977fca1b4b0634062dded45288bf764" + integrity sha512-VsbnfwwaTv2Dxl2onubetX/3RnSnplNnjdix0hvF8y2YpqdzlZrjIq6zkcuVJ08XysS8zqW3gt3ORBndFDgsrg== + +rollup-plugin-visualizer@^5.12.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" + integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== + dependencies: + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" + +rollup@^4.13.0: + version "4.14.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.3.tgz#bcbb7784b35826d3164346fa6d5aac95190d8ba9" + integrity sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.14.3" + "@rollup/rollup-android-arm64" "4.14.3" + "@rollup/rollup-darwin-arm64" "4.14.3" + "@rollup/rollup-darwin-x64" "4.14.3" + "@rollup/rollup-linux-arm-gnueabihf" "4.14.3" + "@rollup/rollup-linux-arm-musleabihf" "4.14.3" + "@rollup/rollup-linux-arm64-gnu" "4.14.3" + "@rollup/rollup-linux-arm64-musl" "4.14.3" + "@rollup/rollup-linux-powerpc64le-gnu" "4.14.3" + "@rollup/rollup-linux-riscv64-gnu" "4.14.3" + "@rollup/rollup-linux-s390x-gnu" "4.14.3" + "@rollup/rollup-linux-x64-gnu" "4.14.3" + "@rollup/rollup-linux-x64-musl" "4.14.3" + "@rollup/rollup-win32-arm64-msvc" "4.14.3" + "@rollup/rollup-win32-ia32-msvc" "4.14.3" + "@rollup/rollup-win32-x64-msvc" "4.14.3" + fsevents "~2.3.2" + rollup@^4.2.0: version "4.6.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.6.1.tgz#351501c86b5b4f976dde8c5837516452b59921f8" @@ -11439,6 +11716,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + source-map-support@^0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -11452,6 +11734,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -11646,7 +11933,16 @@ strict-event-emitter-types@^2.0.0: resolved "https://registry.npmjs.org/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz" integrity sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -12709,6 +13005,17 @@ vite@^5.0.0: optionalDependencies: fsevents "~2.3.3" +vite@^5.2.8: + version "5.2.8" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" + integrity sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA== + dependencies: + esbuild "^0.20.1" + postcss "^8.4.38" + rollup "^4.13.0" + optionalDependencies: + fsevents "~2.3.3" + vitest-when@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/vitest-when/-/vitest-when-0.3.1.tgz#72db1c0a8e76fae81f8fc21c6da3c769f8e7f8bb" @@ -13226,7 +13533,16 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== From 9407a083e526adc4737f9dc484caaa503e67696f Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Wed, 17 Apr 2024 15:32:36 +0200 Subject: [PATCH 03/25] Update the build config --- .eslintrc.js | 2 +- package.json | 13 +- packages/light-client/README.md | 2 +- packages/light-client/vite.config.ts | 25 +- scripts/vitest/plugins/blsBrowserPlugin.ts | 1 - yarn.lock | 470 ++++++--------------- 6 files changed, 164 insertions(+), 349 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fdfae1a1a00d..8d10908fd82d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -194,7 +194,7 @@ module.exports = { }, overrides: [ { - files: ["**/*.config.js", "**/*.config.mjs", "**/*.config.cjs", "**/*.config.ts"], + files: ["**/*.config.js", "**/*.config.mjs", "**/*.config.cjs", "**/*.config.ts", "scripts/vitest/**/*.ts"], rules: { "@typescript-eslint/naming-convention": "off", // Allow require in CJS modules diff --git a/package.json b/package.json index 6c3a255ae213..5c3a4df447bd 100644 --- a/package.json +++ b/package.json @@ -51,8 +51,8 @@ "@types/node": "^20.11.28", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", - "@vitest/coverage-v8": "^1.4.0", - "@vitest/browser": "^1.4.0", + "@vitest/coverage-v8": "^1.5.0", + "@vitest/browser": "^1.5.0", "crypto-browserify": "^3.12.0", "dotenv": "^16.4.5", "electron": "^26.2.2", @@ -60,7 +60,7 @@ "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-vitest": "^0.3.26", + "eslint-plugin-vitest": "^0.5.3", "https-browserify": "^1.0.0", "jsdom": "^23.0.1", "lerna": "^7.3.0", @@ -80,8 +80,8 @@ "typescript-docs-verifier": "^2.5.0", "vite-plugin-node-polyfills": "^0.21.0", "vite-plugin-top-level-await": "^1.4.1", - "vite": "^5.2.8", - "vitest": "^1.4.0", + "vite": "^5.2.9", + "vitest": "^1.5.0", "vitest-when": "^0.3.1", "wait-port": "^1.1.0", "webdriverio": "^8.34.1" @@ -89,6 +89,7 @@ "resolutions": { "@puppeteer/browsers": "^2.1.0", "dns-over-http-resolver": "^2.1.1", - "loupe": "^2.3.6" + "loupe": "^2.3.6", + "vite": "^5.2.9" } } diff --git a/packages/light-client/README.md b/packages/light-client/README.md index 94ad6c795732..07de44a4b993 100644 --- a/packages/light-client/README.md +++ b/packages/light-client/README.md @@ -101,7 +101,7 @@ Directly link the dist build with the ` ``` From d803c0e9f9b7bf9e4bfebd27f01e68628ace8769 Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Wed, 17 Apr 2024 19:42:32 +0200 Subject: [PATCH 09/25] Add support for bundle test --- .../test/unit/webEsmBundle.browser.test.ts | 60 +++++++++++++++++++ scripts/vite/plugins/blsBrowserPlugin.ts | 1 + 2 files changed, 61 insertions(+) create mode 100644 packages/light-client/test/unit/webEsmBundle.browser.test.ts diff --git a/packages/light-client/test/unit/webEsmBundle.browser.test.ts b/packages/light-client/test/unit/webEsmBundle.browser.test.ts new file mode 100644 index 000000000000..4908aff19ead --- /dev/null +++ b/packages/light-client/test/unit/webEsmBundle.browser.test.ts @@ -0,0 +1,60 @@ +import {expect, describe, it, beforeEach} from "vitest"; +import "../../dist/lightclient.min.mjs"; + +describe("web bundle for lightclient", () => { + let lightclient: any; + + beforeEach(() => { + lightclient = window["lodestar"]["lightclient"]; + }); + + it("should have a global interface", () => { + expect(lightclient).toBeDefined(); + }); + + it("should have all relevant exports", () => { + expect(lightclient).toHaveProperty("Lightclient"); + expect(lightclient).toHaveProperty("LightclientEvent"); + expect(lightclient).toHaveProperty("RunStatusCode"); + expect(lightclient).toHaveProperty("upgradeLightClientFinalityUpdate"); + expect(lightclient).toHaveProperty("upgradeLightClientOptimisticUpdate"); + expect(lightclient).toHaveProperty("utils"); + expect(lightclient).toHaveProperty("transport"); + expect(lightclient).toHaveProperty("validation"); + + expect(lightclient.Lightclient).toBeTypeOf("function"); + }); + + it("should start the lightclient and sync", async () => { + const {Lightclient, LightclientEvent, transport, utils} = lightclient; + + const logger = utils.getConsoleLogger({logDebug: true}); + const config = utils.getChainForkConfigFromNetwork("mainnet"); + + // TODO: Decide to check which node to use in testing + // We have one node in CI, but that only starts with e2e tests + const api = utils.getApiFromUrl("https://lodestar-mainnet.chainsafe.io", "mainnet"); + + const lc = await Lightclient.initializeFromCheckpointRoot({ + config, + logger, + transport: new transport.LightClientRestTransport(api), + genesisData: await utils.getGenesisData(api), + checkpointRoot: await utils.getFinalizedSyncCheckpoint(api), + opts: { + allowForcedUpdates: true, + updateHeadersOnForcedUpdate: true, + }, + }); + + await expect(lc.start()).resolves.toBeUndefined(); + + await expect( + new Promise((resolve) => { + lc.emitter.on(LightclientEvent.lightClientOptimisticHeader, async (optimisticUpdate: unknown) => { + resolve(optimisticUpdate); + }); + }) + ).resolves.toBeDefined(); + }); +}); diff --git a/scripts/vite/plugins/blsBrowserPlugin.ts b/scripts/vite/plugins/blsBrowserPlugin.ts index 28c7406f47ab..8670da78413d 100644 --- a/scripts/vite/plugins/blsBrowserPlugin.ts +++ b/scripts/vite/plugins/blsBrowserPlugin.ts @@ -16,6 +16,7 @@ export function blsBrowserPlugin(): Plugin { }, resolve: { alias: { + "@chainsafe/bls/types": "@chainsafe/bls/types", "@chainsafe/bls": "@chainsafe/bls/herumi", // This is just used to generate `privateKey` which is not used in the browser. "@chainsafe/bls-keygen": path.join(polyfillsDir, "bls-keygen.js"), From cae32b21cda6ce7da84ca46987fcbbe596d1f449 Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Wed, 17 Apr 2024 19:44:20 +0200 Subject: [PATCH 10/25] Update the package json files --- packages/light-client/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/light-client/package.json b/packages/light-client/package.json index ed943b12cc2a..02cbf3b24d61 100644 --- a/packages/light-client/package.json +++ b/packages/light-client/package.json @@ -47,7 +47,10 @@ "*.d.ts", "*.js", "dist/**/*.js", + "dist/**/*.mjs", + "dist/**/*.cjs", "dist/**/*.map", + "dist/**/*.json", "dist/**/*.d.ts" ], "scripts": { From b3831a74613653c1a2a938142cff66a4eb8c5c30 Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Wed, 17 Apr 2024 19:45:50 +0200 Subject: [PATCH 11/25] Add dist build to default build task --- packages/light-client/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/light-client/package.json b/packages/light-client/package.json index 02cbf3b24d61..694ea2185148 100644 --- a/packages/light-client/package.json +++ b/packages/light-client/package.json @@ -55,7 +55,8 @@ ], "scripts": { "clean": "rm -rf lib && rm -f *.tsbuildinfo", - "build": "tsc -p tsconfig.build.json", + "build": "yarn run build:lib && yarn run build:dist", + "build:lib": "tsc -p tsconfig.build.json", "build:dist": "vite build", "build:watch": "yarn run build --watch", "build:release": "yarn clean && yarn run build && yarn run build:dist", From 38bcba024f7f094a3ce54b5d10522880876b9d29 Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Wed, 17 Apr 2024 19:51:33 +0200 Subject: [PATCH 12/25] Fix spelling in the docs --- .wordlist.txt | 4 ++++ packages/light-client/README.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.wordlist.txt b/.wordlist.txt index c94198783d29..d0dd77718c95 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -97,6 +97,7 @@ blockRoot blockchain bootnode bootnodes +bundlers chainConfig chainsafe chiado @@ -190,11 +191,14 @@ testnets todo typesafe udp +unpkg util utils validator validators +vite vitest +webpack wip xcode yaml diff --git a/packages/light-client/README.md b/packages/light-client/README.md index 309b5f91505a..14bf301aad3b 100644 --- a/packages/light-client/README.md +++ b/packages/light-client/README.md @@ -101,7 +101,7 @@ Directly link the dist build with the `