diff --git a/.changeset/mean-ants-pretend.md b/.changeset/mean-ants-pretend.md new file mode 100644 index 0000000..a703ed8 --- /dev/null +++ b/.changeset/mean-ants-pretend.md @@ -0,0 +1,13 @@ +--- +'@joyid/ethereum-provider': patch +'@joyid/bitcoin': patch +'@joyid/miniapp': patch +'@joyid/common': patch +'@joyid/ethers': patch +'@joyid/nostr': patch +'@joyid/wagmi': patch +'@joyid/ckb': patch +'@joyid/evm': patch +--- + +Use unicorn rules as linter rule diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 847bb95..0000000 --- a/eslint.config.js +++ /dev/null @@ -1,64 +0,0 @@ -import loveConfig from 'eslint-config-love' -import prettierConfig from 'eslint-plugin-prettier/recommended' - -import tseslint from 'typescript-eslint' - -export default tseslint.config( - loveConfig, - prettierConfig, - { - ignores: [ - 'dist/', - 'coverage/', - 'public/', - 'pnpm-lock.yaml', - 'pnpm-workspace.yaml', - 'packages/bitcoin/dist/**/*', - 'packages/ckb/dist/**/*', - 'packages/evm/dist/**/*', - 'packages/common/dist/**/*', - 'packages/ethereum-provider/dist/**/*', - 'packages/ethers/dist/**/*', - 'packages/nostr/dist/**/*', - 'packages/rainbowkit/dist/**/*', - 'packages/wagmi/dist/**/*', - 'packages/miniapp/dist/**/*', - 'examples/bitcoin-demo/dist/**/*', - 'examples/ckb-demo/dist/**/*', - 'examples/evm-demo/dist/**/*', - 'examples/rainbowkit-demo/dist/**/*', - 'examples/wagmi-demo/dist/**/*', - ], - }, - { - // languageOptions: { - // parserOptions: { - // project: true, - // }, - // }, - rules: { - 'no-return-await': 'off', - '@typescript-eslint/return-await': ['error', 'in-try-catch'], - '@typescript-eslint/no-misused-promises': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - }, - }, - { - files: ['examples/**/*'], - rules: { - 'no-return-await': 'off', - '@typescript-eslint/return-await': ['error', 'in-try-catch'], - '@typescript-eslint/no-misused-promises': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/triple-slash-reference': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/consistent-type-imports': 'off', - '@typescript-eslint/strict-boolean-expressions': 'off', - '@typescript-eslint/no-floating-promises': 'off', - '@typescript-eslint/prefer-nullish-coalescing': 'off', - }, - } -) diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..93ca0ce --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,20 @@ +import unjs from 'eslint-config-unjs' +import prettierConfig from 'eslint-plugin-prettier/recommended' + +export default unjs( + { + ignores: ['**/.nuxt', 'dist/**', '**/dist'], + }, + { + rules: { + 'unicorn/no-null': 'off', + 'unicorn/number-literal-case': 'off', + 'unicorn/prefer-optional-catch-binding': 'off', + 'unicorn/catch-error-name': 'off', + 'unicorn/filename-case': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + 'unicorn/expiring-todo-comments': 'off', + }, + }, + prettierConfig +) diff --git a/examples/bitcoin-demo/src/env/index.ts b/examples/bitcoin-demo/src/env/index.ts index be79c9a..b1683c7 100644 --- a/examples/bitcoin-demo/src/env/index.ts +++ b/examples/bitcoin-demo/src/env/index.ts @@ -9,4 +9,4 @@ export const BTC_SERVICE_URL: string = export const BTC_SERVER_TOKEN: string = import.meta.env.VITE_APP_BTC_SERVER_TOKEN ?? '' -export const MIN_UTXO_AMOUNT = 10000 +export const MIN_UTXO_AMOUNT = 10_000 diff --git a/examples/bitcoin-demo/src/hooks/localStorage.ts b/examples/bitcoin-demo/src/hooks/localStorage.ts index 42055b9..3d59e10 100644 --- a/examples/bitcoin-demo/src/hooks/localStorage.ts +++ b/examples/bitcoin-demo/src/hooks/localStorage.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/ban-ts-comment */ import { createEffect } from 'solid-js' import { createStore, diff --git a/examples/bitcoin-demo/src/hooks/useSendSuccessToast.tsx b/examples/bitcoin-demo/src/hooks/useSendSuccessToast.tsx index fa2c8e4..4393a8c 100644 --- a/examples/bitcoin-demo/src/hooks/useSendSuccessToast.tsx +++ b/examples/bitcoin-demo/src/hooks/useSendSuccessToast.tsx @@ -55,7 +55,7 @@ export const useSendSuccessToast = () => { }, { position: 'bottom-center', - duration: 10000, + duration: 10_000, unmountDelay: 0, } ) diff --git a/examples/bitcoin-demo/src/index.tsx b/examples/bitcoin-demo/src/index.tsx index d85ee9b..4dc6e9d 100644 --- a/examples/bitcoin-demo/src/index.tsx +++ b/examples/bitcoin-demo/src/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ /* @refresh reload */ import './global.css' @@ -7,7 +6,7 @@ import { Router } from '@solidjs/router' import App from './app' -const root = document.getElementById('root') +const root = document.querySelector('#root') if (import.meta.env.DEV && !(root instanceof HTMLElement)) { throw new Error( diff --git a/examples/bitcoin-demo/src/pages/home.tsx b/examples/bitcoin-demo/src/pages/home.tsx index e0ca906..16223bd 100644 --- a/examples/bitcoin-demo/src/pages/home.tsx +++ b/examples/bitcoin-demo/src/pages/home.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { type Component, Match, Show, Switch, onMount } from 'solid-js' import { writeClipboard } from '@solid-primitives/clipboard' import { A, Navigate, useLocation } from '@solidjs/router' diff --git a/examples/bitcoin-demo/src/pages/root.tsx b/examples/bitcoin-demo/src/pages/root.tsx index 5e91589..9109643 100644 --- a/examples/bitcoin-demo/src/pages/root.tsx +++ b/examples/bitcoin-demo/src/pages/root.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { type Component, Show, createSignal } from 'solid-js' import { Navigate, useNavigate } from '@solidjs/router' import { useAuthData } from '../hooks/localStorage' diff --git a/examples/bitcoin-demo/src/pages/send.tsx b/examples/bitcoin-demo/src/pages/send.tsx index 8d1b62d..b11b2be 100644 --- a/examples/bitcoin-demo/src/pages/send.tsx +++ b/examples/bitcoin-demo/src/pages/send.tsx @@ -44,7 +44,7 @@ export const SendBtc: Component = () => { tos: [ { address: toAddress(), - value: parseInt((Number(toAmount()) * 1e8).toString(), 10), + value: Number.parseInt((Number(toAmount()) * 1e8).toString(), 10), }, ], feeRate: 1, diff --git a/examples/bitcoin-demo/vite.config.ts b/examples/bitcoin-demo/vite.config.ts index dfeb59d..721a61c 100644 --- a/examples/bitcoin-demo/vite.config.ts +++ b/examples/bitcoin-demo/vite.config.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ import { defineConfig } from 'vite' import solidPlugin from 'vite-plugin-solid' import wasm from 'vite-plugin-wasm' @@ -7,12 +6,7 @@ import topLevelAwait from 'vite-plugin-top-level-await' import { nodePolyfills } from 'vite-plugin-node-polyfills' export default defineConfig({ - plugins: [ - wasm(), - topLevelAwait(), - solidPlugin(), - nodePolyfills() - ], + plugins: [wasm(), topLevelAwait(), solidPlugin(), nodePolyfills()], server: { port: 3000, }, diff --git a/examples/ckb-demo/src/i18n/index.ts b/examples/ckb-demo/src/i18n/index.ts index 25413b8..c54edea 100644 --- a/examples/ckb-demo/src/i18n/index.ts +++ b/examples/ckb-demo/src/i18n/index.ts @@ -13,4 +13,4 @@ i18n.use(initReactI18next).init({ cache: localStorage, }) -export default i18n +export { default } from 'i18next' diff --git a/examples/ckb-demo/src/main.tsx b/examples/ckb-demo/src/main.tsx index faf68e3..8453128 100644 --- a/examples/ckb-demo/src/main.tsx +++ b/examples/ckb-demo/src/main.tsx @@ -36,7 +36,7 @@ export const App: React.FC = () => { ) } -createRoot(document.getElementById('root')!).render( +createRoot(document.querySelector('#root')!).render( diff --git a/examples/ckb-demo/src/pages/SignCkbRawTx/index.tsx b/examples/ckb-demo/src/pages/SignCkbRawTx/index.tsx index eac90e0..734b9a0 100644 --- a/examples/ckb-demo/src/pages/SignCkbRawTx/index.tsx +++ b/examples/ckb-demo/src/pages/SignCkbRawTx/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ import { useState } from 'react' import { Button, VStack, Input, Text, Link, useToast } from '@chakra-ui/react' import { Navigate, useNavigate } from 'react-router-dom' @@ -26,7 +25,7 @@ import { RoutePath } from '../../route/path' import { CKB_INDEXER_URL, CKB_RPC_URL, COTA_AGGREGATOR_URL } from '../../env' const info: InscriptionInfo = { - maxSupply: BigInt(2100_0000), + maxSupply: BigInt(21_000_000), mintLimit: BigInt(1000), xudtHash: '', mintStatus: 0, diff --git a/examples/ckb-demo/src/pages/SignMessage/index.tsx b/examples/ckb-demo/src/pages/SignMessage/index.tsx index 882c39a..d17ad25 100644 --- a/examples/ckb-demo/src/pages/SignMessage/index.tsx +++ b/examples/ckb-demo/src/pages/SignMessage/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ import { useState } from 'react' import { Button, Textarea, VStack, useToast, Box } from '@chakra-ui/react' import { diff --git a/examples/evm-demo/src/chains/index.ts b/examples/evm-demo/src/chains/index.ts index f6da701..117da3c 100644 --- a/examples/evm-demo/src/chains/index.ts +++ b/examples/evm-demo/src/chains/index.ts @@ -11,6 +11,7 @@ export interface Chain { export const EthSepolia: Chain = chainList[0] +// eslint-disable-next-line unicorn/no-array-reduce export const Chains = chainList.reduce>((prev, acc) => { prev[acc.name] = acc return prev diff --git a/examples/evm-demo/src/hooks/localStorage.ts b/examples/evm-demo/src/hooks/localStorage.ts index 66d2307..3de035d 100644 --- a/examples/evm-demo/src/hooks/localStorage.ts +++ b/examples/evm-demo/src/hooks/localStorage.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/ban-ts-comment */ import { createEffect } from 'solid-js' import { createStore, diff --git a/examples/evm-demo/src/hooks/provider.tsx b/examples/evm-demo/src/hooks/provider.tsx index 1533ea8..7d84bc8 100644 --- a/examples/evm-demo/src/hooks/provider.tsx +++ b/examples/evm-demo/src/hooks/provider.tsx @@ -4,12 +4,11 @@ import { createMemo } from 'solid-js' export const SepoliaNetwork = { name: 'Ethereum Sepolia', - chainId: 11155111, + chainId: 11_155_111, } export const useProvider = () => { const { authData } = useAuthData() - // eslint-disable-next-line solid/reactivity return createMemo(() => authData.name ? new providers.JsonRpcBatchProvider(authData.rpcURL, { diff --git a/examples/evm-demo/src/hooks/useSendSuccessToast.tsx b/examples/evm-demo/src/hooks/useSendSuccessToast.tsx index 213dc70..a74fc00 100644 --- a/examples/evm-demo/src/hooks/useSendSuccessToast.tsx +++ b/examples/evm-demo/src/hooks/useSendSuccessToast.tsx @@ -57,7 +57,7 @@ export const useSendSuccessToast = () => { }, { position: 'bottom-center', - duration: 10000, + duration: 10_000, unmountDelay: 0, } ) diff --git a/examples/evm-demo/src/index.tsx b/examples/evm-demo/src/index.tsx index b944a8d..d25b2c7 100644 --- a/examples/evm-demo/src/index.tsx +++ b/examples/evm-demo/src/index.tsx @@ -6,7 +6,7 @@ import { Router } from '@solidjs/router' import App from './app' -const root = document.getElementById('root') +const root = document.querySelector('#root') if (import.meta.env.DEV && !(root instanceof HTMLElement)) { throw new Error( @@ -20,6 +20,6 @@ render( ), - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + root! ) diff --git a/examples/evm-demo/src/pages/home.tsx b/examples/evm-demo/src/pages/home.tsx index 9ea7886..fbf4352 100644 --- a/examples/evm-demo/src/pages/home.tsx +++ b/examples/evm-demo/src/pages/home.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { type Component, For, diff --git a/examples/evm-demo/src/pages/send-erc20.tsx b/examples/evm-demo/src/pages/send-erc20.tsx index 9074d2d..783c57d 100644 --- a/examples/evm-demo/src/pages/send-erc20.tsx +++ b/examples/evm-demo/src/pages/send-erc20.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { Navigate, useLocation, useNavigate } from '@solidjs/router' import toast from 'solid-toast' import { type Component, Show, createSignal, onMount } from 'solid-js' diff --git a/examples/evm-demo/src/pages/send.tsx b/examples/evm-demo/src/pages/send.tsx index 63e182d..089ce8b 100644 --- a/examples/evm-demo/src/pages/send.tsx +++ b/examples/evm-demo/src/pages/send.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { Navigate, useLocation, useNavigate } from '@solidjs/router' import toast from 'solid-toast' import { type Component, Show, createSignal, onMount } from 'solid-js' diff --git a/examples/evm-demo/src/pages/sign-typed-data.tsx b/examples/evm-demo/src/pages/sign-typed-data.tsx index aae862a..e83b546 100644 --- a/examples/evm-demo/src/pages/sign-typed-data.tsx +++ b/examples/evm-demo/src/pages/sign-typed-data.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { Navigate, useLocation, useNavigate } from '@solidjs/router' import { type Component, Show, createSignal } from 'solid-js' import toast from 'solid-toast' diff --git a/examples/rainbowkit-demo/src/main.tsx b/examples/rainbowkit-demo/src/main.tsx index d8e4987..473f02b 100644 --- a/examples/rainbowkit-demo/src/main.tsx +++ b/examples/rainbowkit-demo/src/main.tsx @@ -1,3 +1,4 @@ +/* eslint-disable unicorn/prefer-query-selector */ import React from 'react' import ReactDOM from 'react-dom/client' import App from './App.tsx' diff --git a/examples/wagmi-demo/src/main.tsx b/examples/wagmi-demo/src/main.tsx index 52e49c2..326588d 100644 --- a/examples/wagmi-demo/src/main.tsx +++ b/examples/wagmi-demo/src/main.tsx @@ -1,3 +1,4 @@ +/* eslint-disable unicorn/prefer-query-selector */ import React from 'react' import ReactDOM from 'react-dom/client' import { App } from './App.tsx' diff --git a/package.json b/package.json index dcaf02c..abeaf1f 100644 --- a/package.json +++ b/package.json @@ -34,19 +34,15 @@ "devDependencies": { "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.5", - "@eslint/js": "^9.4.0", - "@types/eslint__js": "^8.42.3", "eslint": "9.4.0", - "eslint-config-love": "52.0.0", "eslint-config-prettier": "9.1.0", + "eslint-config-unjs": "0.3.2", "eslint-plugin-import": "2.29.1", "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-promise": "6.2.0", "prettier": "3.3.1", "simple-git-hooks": "^2.11.1", "tsup": "^7.2.0", "typescript": "^5.2.2", - "typescript-eslint": "^7.12.0", "vite": "5.2.12", "vitest": "1.6.0" }, diff --git a/packages/bitcoin/src/index.ts b/packages/bitcoin/src/index.ts index 38cb253..6bb64a5 100644 --- a/packages/bitcoin/src/index.ts +++ b/packages/bitcoin/src/index.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ - import { createBlockDialog, openPopup as p, @@ -25,8 +23,6 @@ import { export const openPopup = p -export type { BtcConfig } - const JOYID_STORAGE_KEY = 'joyid:bitcoin::account' export const buildSignPsbtURL = ( @@ -58,9 +54,9 @@ export const buildSignPsbtsURL = ( const getRequestNetwork = ( requestAddressType: BtcConfig['requestAddressType'] ): RequestNetwork => - requestAddressType !== null - ? (`btc-${requestAddressType}` as RequestNetwork) - : 'btc-auto' + requestAddressType == null + ? 'btc-auto' + : (`btc-${requestAddressType}` as RequestNetwork) export const buildConnectUrl = ( { requestAddressType, ...config }: BtcConfig & { redirectURL: string }, @@ -136,9 +132,8 @@ export const requestAccounts = async (): Promise => { } export const getAccounts = (): string[] => - connectedAccount.address != null - ? [connectedAccount.address] - : safeExec(() => { + connectedAccount.address == null + ? safeExec(() => { const json = localStorage.getItem(JOYID_STORAGE_KEY) if (json) { const account = JSON.parse(json) @@ -148,6 +143,7 @@ export const getAccounts = (): string[] => } return [] }) ?? [] + : [connectedAccount.address] export const getPublicKey = (): string | null => { if (connectedAccount.pubkey) { @@ -341,3 +337,5 @@ export const signPsbtCallback = (uri?: string): WithState & { tx: string } => { tx, } } + +export { type BtcConfig } from '@joyid/common' diff --git a/packages/bitcoin/tsup.config.ts b/packages/bitcoin/tsup.config.ts index e6edf4d..2eda374 100644 --- a/packages/bitcoin/tsup.config.ts +++ b/packages/bitcoin/tsup.config.ts @@ -7,6 +7,6 @@ import config from '../../tsup-base.config' export default defineConfig({ ...config, name, - external: [...Object.keys(dependencies)], + external: Object.keys(dependencies), platform: 'browser', }) diff --git a/packages/ckb/src/constants.ts b/packages/ckb/src/constants.ts index 840ab86..a8a1df1 100644 --- a/packages/ckb/src/constants.ts +++ b/packages/ckb/src/constants.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/consistent-type-assertions */ import { type CellDep, type Script } from '@joyid/common' const TestnetInfo = { diff --git a/packages/ckb/src/index.ts b/packages/ckb/src/index.ts index e475458..fcfa32c 100644 --- a/packages/ckb/src/index.ts +++ b/packages/ckb/src/index.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ - import { type CKBTransaction, createBlockDialog, @@ -15,10 +13,6 @@ import { type CkbTransactionRequest, type CotaNFTTransactionRequest, type SignCotaNFTRequest, - type AuthRequest, - type AuthResponse, - type SignMessageRequest, - type SignMessageResponse, type SignCkbTxResponseData, type AuthResponseData, type SignMessageResponseData, @@ -26,8 +20,6 @@ import { bufferToHex, append0x, remove0x, - type CredentialKeyType, - SigningAlg, } from '@joyid/common' import { addressToScript, @@ -35,39 +27,8 @@ import { serializeScript, } from '@nervosnetwork/ckb-sdk-utils' import { Aggregator } from './aggregator' -import { - getJoyIDCellDep, - getJoyIDLockScript, - getCotaTypeScript, - getCotaCellDep, -} from './constants' -export * from './verify' - -export { - openPopup, - Aggregator, - getJoyIDCellDep, - getJoyIDLockScript, - getCotaTypeScript, - getCotaCellDep, - SigningAlg, -} -export type { - CkbDappConfig, - PopupConfigOptions as PopupConifg, - SignMessageResponseData as SignChallengeResponseData, - AuthResponseData as ConnectResponseData, - SignCotaNFTRequest, - CotaNFTTransactionRequest, - CKBTransaction, - AuthRequest, - AuthResponse, - SignCkbTxRequest, - SignMessageResponse, - SignMessageRequest, - CredentialKeyType, -} +export * from './verify' const appendPrefix = (tokenKey?: string): string | undefined => { if (!tokenKey) { @@ -140,7 +101,7 @@ export const signChallenge = async ( } const res = await signMessageWithPopup({ challenge: - typeof challenge !== 'string' ? bufferToHex(challenge) : challenge, + typeof challenge === 'string' ? challenge : bufferToHex(challenge), isData, address: signerAddress, redirectURL: location.href, @@ -295,3 +256,29 @@ export const getSubkeyUnlock = async ( await aggregator.generateSubkeyUnlockSmt(req) return unlockEntry } + +export { + type AuthRequest, + type AuthResponse, + type SignMessageResponse, + type SignMessageRequest, + type CredentialKeyType, + SigningAlg, + type CkbDappConfig, + openPopup, + type PopupConfigOptions as PopupConifg, + type AuthResponseData as ConnectResponseData, + type SignMessageResponseData as SignChallengeResponseData, + type CotaNFTTransactionRequest, + type SignCotaNFTRequest, + type SignCkbTxRequest, + type CKBTransaction, +} from '@joyid/common' +export { + getJoyIDCellDep, + getCotaTypeScript, + getJoyIDLockScript, + getCotaCellDep, +} from './constants' + +export { Aggregator } from './aggregator' diff --git a/packages/ckb/src/types.ts b/packages/ckb/src/types.ts index 44a3b81..fd6dbeb 100644 --- a/packages/ckb/src/types.ts +++ b/packages/ckb/src/types.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-empty-interface */ export type Hex = string export type Byte = string | number export type Byte2 = string | number diff --git a/packages/ckb/src/utils.ts b/packages/ckb/src/utils.ts index c00c5c2..56a0436 100644 --- a/packages/ckb/src/utils.ts +++ b/packages/ckb/src/utils.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ +/* eslint-disable unicorn/prefer-string-slice */ /** * Web crypto use IEEE P1363 ECDSA signature format * ref: https://stackoverflow.com/questions/39554165/ecdsa-signatures-between-node-js-and-webcrypto-appear-to-be-incompatible @@ -8,13 +8,13 @@ export function derToIEEE(sig: ArrayBuffer): Uint8Array { const signature = Array.from(new Uint8Array(sig), (x) => `00${x.toString(16)}`.slice(-2) ).join('') - const rLength = parseInt(signature.substr(6, 2), 16) * 2 + const rLength = Number.parseInt(signature.substr(6, 2), 16) * 2 let r = signature.substr(8, rLength) let s = signature.substr(12 + rLength) r = r.length > 64 ? r.substr(-64) : r.padStart(64, '0') s = s.length > 64 ? s.substr(-64) : s.padStart(64, '0') const p1363Sig = `${r}${s}` return new Uint8Array( - p1363Sig.match(/[\da-f]{2}/gi)!.map((h) => parseInt(h, 16)) + p1363Sig.match(/[\da-f]{2}/gi)!.map((h) => Number.parseInt(h, 16)) ) } diff --git a/packages/ckb/src/verify.spec.ts b/packages/ckb/src/verify.spec.ts index 7252a6d..d599a4d 100644 --- a/packages/ckb/src/verify.spec.ts +++ b/packages/ckb/src/verify.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { describe, it, expect } from 'vitest' import { type SignMessageResponseData, diff --git a/packages/ckb/src/verify.ts b/packages/ckb/src/verify.ts index c87d988..78c42ac 100644 --- a/packages/ckb/src/verify.ts +++ b/packages/ckb/src/verify.ts @@ -71,8 +71,6 @@ export const verifySessionKeySignature = async ( } } -export type { SigningAlg, CredentialKeyType } - export const verifyNativeKeySignature = async ({ message, signature, @@ -169,3 +167,5 @@ export const verifyCredential = async ( return false } } + +export { type SigningAlg, type CredentialKeyType } from '@joyid/common' diff --git a/packages/ckb/tsup.config.ts b/packages/ckb/tsup.config.ts index 5aed995..7edbd0b 100644 --- a/packages/ckb/tsup.config.ts +++ b/packages/ckb/tsup.config.ts @@ -7,6 +7,6 @@ import config from '../../tsup-base.config' export default defineConfig({ ...config, name, - external: [...Object.keys(dependencies)], + external: Object.keys(dependencies), platform: 'neutral', }) diff --git a/packages/common/src/sdk/block-dialog.ts b/packages/common/src/sdk/block-dialog.ts index adf3052..c634d06 100644 --- a/packages/common/src/sdk/block-dialog.ts +++ b/packages/common/src/sdk/block-dialog.ts @@ -1,3 +1,6 @@ +/* eslint-disable unicorn/prefer-dom-node-remove */ +/* eslint-disable unicorn/prefer-query-selector */ +/* eslint-disable unicorn/prefer-dom-node-append */ const styleId = 'joyid-block-dialog-style' const approveId = 'joyid-block-dialog-approve' diff --git a/packages/common/src/sdk/errors.ts b/packages/common/src/sdk/errors.ts index 60cac63..742d18d 100644 --- a/packages/common/src/sdk/errors.ts +++ b/packages/common/src/sdk/errors.ts @@ -1,5 +1,3 @@ -/* eslint-disable n/handle-callback-err */ - export class GenericError extends Error { constructor( public error: string, diff --git a/packages/common/src/sdk/popup.ts b/packages/common/src/sdk/popup.ts index 5442fef..6d9a6a0 100644 --- a/packages/common/src/sdk/popup.ts +++ b/packages/common/src/sdk/popup.ts @@ -1,6 +1,4 @@ /* eslint-disable prefer-const */ - -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ import type { AuthResponseData, DappRequestType, diff --git a/packages/common/src/types/nostr.ts b/packages/common/src/types/nostr.ts index 5c2c06b..d5a2537 100644 --- a/packages/common/src/types/nostr.ts +++ b/packages/common/src/types/nostr.ts @@ -26,12 +26,12 @@ export enum EventKind { Report = 1984, ZapRequest = 9734, Zap = 9735, - RelayList = 10002, - ClientAuth = 22242, - HttpAuth = 27235, - ProfileBadge = 30008, - BadgeDefinition = 30009, - Article = 30023, + RelayList = 10_002, + ClientAuth = 22_242, + HttpAuth = 27_235, + ProfileBadge = 30_008, + BadgeDefinition = 30_009, + Article = 30_023, } export interface EventTemplate { diff --git a/packages/common/src/utils/buffer.ts b/packages/common/src/utils/buffer.ts index 8e00d7e..a2af480 100644 --- a/packages/common/src/utils/buffer.ts +++ b/packages/common/src/utils/buffer.ts @@ -1,3 +1,6 @@ +/* eslint-disable unicorn/no-for-loop */ +/* eslint-disable unicorn/prefer-code-point */ +/* eslint-disable unicorn/text-encoding-identifier-case */ /** * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or @@ -57,7 +60,8 @@ export function bufferToBase64URLString(buffer: ArrayBuffer): string { export function hexToArrayBuffer(input: string): ArrayBuffer { const view = new Uint8Array(input.length / 2) for (let i = 0; i < input.length; i += 2) { - view[i / 2] = parseInt(input.substring(i, i + 2), 16) + // eslint-disable-next-line unicorn/prefer-string-slice + view[i / 2] = Number.parseInt(input.substring(i, i + 2), 16) } return view.buffer @@ -102,7 +106,8 @@ export function append0x(hex: string): string { export function hexToString(hex: string): string { let str = '' for (let i = 0; i < hex.length; i += 2) - str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)) + // eslint-disable-next-line unicorn/prefer-string-slice + str += String.fromCharCode(Number.parseInt(hex.substr(i, 2), 16)) return str } diff --git a/packages/common/src/utils/errors.ts b/packages/common/src/utils/errors.ts index 94e79ba..15b9ff0 100644 --- a/packages/common/src/utils/errors.ts +++ b/packages/common/src/utils/errors.ts @@ -14,11 +14,7 @@ export class DappError extends Error { rawError: unknown = undefined ) { super(message) - if (message === DappErrorName.UserRejected) { - this.name = message - } else { - this.name = name - } + this.name = message === DappErrorName.UserRejected ? message : name this.rawError = rawError } } diff --git a/packages/common/src/utils/qss.ts b/packages/common/src/utils/qss.ts index aa4816a..a557501 100644 --- a/packages/common/src/utils/qss.ts +++ b/packages/common/src/utils/qss.ts @@ -1,9 +1,4 @@ -/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ -/* eslint-disable @typescript-eslint/ban-ts-comment */ -/* eslint-disable @typescript-eslint/explicit-function-return-type */ -/* eslint-disable no-void */ - +/* eslint-disable unicorn/prefer-spread */ // @ts-nocheck // qss has been slightly modified and inlined here for our use cases (and compression's sake). We've included it as a hard dependency for MIT license attribution. @@ -48,6 +43,7 @@ export function decode(str) { while ((tmp = arr.shift())) { tmp = tmp.split('=') k = tmp.shift() + // eslint-disable-next-line unicorn/prefer-ternary, unicorn/no-negated-condition if (out[k] !== void 0) { out[k] = [].concat(out[k], toValue(tmp.shift())) } else { diff --git a/packages/common/src/utils/search-params.ts b/packages/common/src/utils/search-params.ts index 86538f0..3752e32 100644 --- a/packages/common/src/utils/search-params.ts +++ b/packages/common/src/utils/search-params.ts @@ -1,6 +1,7 @@ -/* eslint-disable @typescript-eslint/explicit-function-return-type */ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ -/* eslint-disable @typescript-eslint/no-dynamic-delete */ +/* eslint-disable unicorn/no-array-callback-reference */ +/* eslint-disable unicorn/no-typeof-undefined */ +/* eslint-disable unicorn/no-array-for-each */ +/* eslint-disable unicorn/prefer-string-slice */ import { DappError, DappErrorName } from './errors' import { decode, encode } from './qss' diff --git a/packages/common/tsup.config.ts b/packages/common/tsup.config.ts index e6edf4d..2eda374 100644 --- a/packages/common/tsup.config.ts +++ b/packages/common/tsup.config.ts @@ -7,6 +7,6 @@ import config from '../../tsup-base.config' export default defineConfig({ ...config, name, - external: [...Object.keys(dependencies)], + external: Object.keys(dependencies), platform: 'browser', }) diff --git a/packages/ethereum-provider/src/index.ts b/packages/ethereum-provider/src/index.ts index e7f4e01..2bb2aa8 100644 --- a/packages/ethereum-provider/src/index.ts +++ b/packages/ethereum-provider/src/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ import { type EIP1193RequestFn, type EIP1474Methods, @@ -140,10 +139,12 @@ export class EthereumProvider extends EventEmitter { this.account = account return [account] as any } - case 'eth_accounts': + case 'eth_accounts': { return [this.account] as any - case 'eth_chainId': + } + case 'eth_chainId': { return this.chainId + } case 'eth_sign': { throw new Error('eth_sign is not supported, use personal_sign instead') } diff --git a/packages/ethers/src/index.ts b/packages/ethers/src/index.ts index 8456ed7..05a184c 100644 --- a/packages/ethers/src/index.ts +++ b/packages/ethers/src/index.ts @@ -5,17 +5,13 @@ import { type TypedDataField, } from 'ethers' import { - connect, type EvmConfig, type TransactionRequest, signTransaction, - type PopupConifg, - type SignConfig, signMessage, initConfig, getConfig, getConnectedAddress, - signTypedData, } from '@joyid/evm' import { type Bytes, @@ -24,10 +20,6 @@ import { type ConnectionInfo, } from 'ethers/lib.esm/utils' -export type { EvmConfig, TransactionRequest, PopupConifg, SignConfig } - -export { connect, initConfig, getConnectedAddress, signTypedData } - export class JoyIDSigner extends Signer { private readonly _address: string @@ -47,7 +39,7 @@ export class JoyIDSigner extends Signer { } async getAddress(): Promise { - return Promise.resolve(getAddress(this._address)) + return getAddress(this._address) } async signTransaction(tx: TransactionRequest): Promise { @@ -97,3 +89,14 @@ export class JoyIDProvider extends providers.JsonRpcProvider { throw new Error('No connected address') } } + +export { + connect, + type PopupConifg, + signTypedData, + type SignConfig, + type EvmConfig, + type TransactionRequest, + initConfig, + getConnectedAddress, +} from '@joyid/evm' diff --git a/packages/evm/src/index.ts b/packages/evm/src/index.ts index 1de6570..b13c709 100644 --- a/packages/evm/src/index.ts +++ b/packages/evm/src/index.ts @@ -27,9 +27,12 @@ import { safeExec, } from '@joyid/common' -export type { EvmConfig, TransactionRequest, PopupConfigOptions as PopupConifg } - -export { safeExec } from '@joyid/common' +export { + safeExec, + type EvmConfig, + type PopupConfigOptions as PopupConifg, + type TransactionRequest, +} from '@joyid/common' const JOYID_STORAGE_KEY = 'joyid:ethereum::address' @@ -82,7 +85,7 @@ export const buildSignMessageUrl = ( ...internalConfig, ...config, requestNetwork: 'ethereum', - challenge: typeof message !== 'string' ? bufferToHex(message) : message, + challenge: typeof message === 'string' ? message : bufferToHex(message), isData, }, type @@ -194,7 +197,7 @@ export const signMessage = async ( const res = await signMessageWithPopup({ requestNetwork: 'ethereum', - challenge: typeof message !== 'string' ? bufferToHex(message) : message, + challenge: typeof message === 'string' ? message : bufferToHex(message), isData, address: signerAddress, redirectURL: location.href, @@ -220,7 +223,7 @@ export const signMessageWithRedirect = ( signWithRedirect({ requestNetwork: 'ethereum', - challenge: typeof message !== 'string' ? bufferToHex(message) : message, + challenge: typeof message === 'string' ? message : bufferToHex(message), isData, address: signerAddress, redirectURL, diff --git a/packages/evm/tsup.config.ts b/packages/evm/tsup.config.ts index e145ba3..3c7b442 100644 --- a/packages/evm/tsup.config.ts +++ b/packages/evm/tsup.config.ts @@ -8,6 +8,6 @@ export default defineConfig({ ...config, name, entry: ['src/index.ts', 'src/aa.ts', 'src/web2login.ts'], - external: [...Object.keys(dependencies)], + external: Object.keys(dependencies), platform: 'browser', }) diff --git a/packages/miniapp/src/index.ts b/packages/miniapp/src/index.ts index 29e28d9..d0cd36a 100644 --- a/packages/miniapp/src/index.ts +++ b/packages/miniapp/src/index.ts @@ -1,15 +1,16 @@ -/* eslint-disable no-param-reassign */ import type { - TransactionRequest, MiniAppSignEvmTxRequest, MiniAppSignTypedDataRequest, MiniAppBaseRequest, MiniAppAuthRequest, MiniAppSignMessageRequest, } from '@joyid/common' -import { EvmConfig, encodeSearch, internalConfig, bufferToHex } from '@joyid/common' - -export type { EvmConfig, TransactionRequest } +import { + EvmConfig, + encodeSearch, + internalConfig, + bufferToHex, +} from '@joyid/common' export const initConfig = (config?: EvmConfig) => { Object.assign(internalConfig, config) @@ -60,7 +61,7 @@ export const buildSignMessageUrl = ( ...internalConfig, ...config, requestNetwork: 'ethereum', - challenge: typeof message !== 'string' ? bufferToHex(message) : message, + challenge: typeof message === 'string' ? message : bufferToHex(message), isData, }, '/sign-mini-app-msg' @@ -76,7 +77,9 @@ export const buildSignTxURL = (config: MiniAppSignEvmTxRequest): string => '/sign-mini-app-evm' ) -export const buildSignTypedDataUrl = (config: MiniAppSignTypedDataRequest): string => +export const buildSignTypedDataUrl = ( + config: MiniAppSignTypedDataRequest +): string => buildJoyIDURL( { ...internalConfig, @@ -84,3 +87,5 @@ export const buildSignTypedDataUrl = (config: MiniAppSignTypedDataRequest): stri }, '/sign-mini-app-typed-data' ) + +export { type TransactionRequest, type EvmConfig } from '@joyid/common' diff --git a/packages/miniapp/tsup.config.ts b/packages/miniapp/tsup.config.ts index afaaaf7..f1ab499 100644 --- a/packages/miniapp/tsup.config.ts +++ b/packages/miniapp/tsup.config.ts @@ -8,6 +8,6 @@ export default defineConfig({ ...config, name, entry: ['src/index.ts'], - external: [...Object.keys(dependencies)], + external: Object.keys(dependencies), platform: 'browser', }) diff --git a/packages/nostr/src/event.ts b/packages/nostr/src/event.ts index 534e850..1a54bb4 100644 --- a/packages/nostr/src/event.ts +++ b/packages/nostr/src/event.ts @@ -19,12 +19,12 @@ export enum EventKind { Report = 1984, ZapRequest = 9734, Zap = 9735, - RelayList = 10002, - ClientAuth = 22242, - HttpAuth = 27235, - ProfileBadge = 30008, - BadgeDefinition = 30009, - Article = 30023, + RelayList = 10_002, + ClientAuth = 22_242, + HttpAuth = 27_235, + ProfileBadge = 30_008, + BadgeDefinition = 30_009, + Article = 30_023, } export interface EventTemplate { diff --git a/packages/nostr/src/index.ts b/packages/nostr/src/index.ts index 9a14c52..4c68411 100644 --- a/packages/nostr/src/index.ts +++ b/packages/nostr/src/index.ts @@ -17,7 +17,7 @@ type UnsignedEvent = EventTemplate & { pubkey?: string } -export type { UnsignedEvent, Event } +export type { UnsignedEvent } export const initConfig = (config?: NostrConfig): DappConfig => { Object.assign(internalDappConfig, config) @@ -26,8 +26,6 @@ export const initConfig = (config?: NostrConfig): DappConfig => { export const getConfig = (): NostrConfig => internalDappConfig -export { openPopup } - const buildSignEventUrl = (event: UnsignedEvent): string => { const { joyidAppURL: __, @@ -69,7 +67,6 @@ async function signEvent(event: UnsignedEvent): Promise> { throw new Error('Please call getPublicKey() first or pass event.pubkey') } - // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions event.pubkey = pubkey || undefined popup.location.href = buildSignEventUrl(event) @@ -164,3 +161,6 @@ export const nostr = { decrypt, }, } + +export { type Event } from './event' +export { openPopup } from '@joyid/common' diff --git a/packages/nostr/tsup.config.ts b/packages/nostr/tsup.config.ts index e6edf4d..2eda374 100644 --- a/packages/nostr/tsup.config.ts +++ b/packages/nostr/tsup.config.ts @@ -7,6 +7,6 @@ import config from '../../tsup-base.config' export default defineConfig({ ...config, name, - external: [...Object.keys(dependencies)], + external: Object.keys(dependencies), platform: 'browser', }) diff --git a/packages/wagmi/src/index.ts b/packages/wagmi/src/index.ts index d0fb12d..4d925eb 100644 --- a/packages/wagmi/src/index.ts +++ b/packages/wagmi/src/index.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/strict-boolean-expressions */ - import { createConnector, ChainNotConfiguredError, @@ -22,12 +20,10 @@ export function joyidConnector( ): CreateConnectorFn { type Provider = EthereumProvider - // eslint-disable-next-line @typescript-eslint/consistent-type-definitions type Properties = { onConnect: (connectInfo: ProviderConnectInfo) => void } - // eslint-disable-next-line @typescript-eslint/consistent-type-definitions type StorageItem = { 'joyid.disconnected': true } @@ -48,7 +44,6 @@ export function joyidConnector( }, async getProvider() { if (!_provider) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument _provider = new EthereumProvider(config.chains as any, joyidConfig) } return _provider @@ -175,7 +170,7 @@ export function joyidConnector( ) { throw new UserRejectedRequestError(error) } - // eslint-disable-next-line @typescript-eslint/only-throw-error + throw error } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac89aca..29982bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,30 +14,21 @@ importers: '@changesets/cli': specifier: ^2.27.5 version: 2.27.5 - '@eslint/js': - specifier: ^9.4.0 - version: 9.4.0 - '@types/eslint__js': - specifier: ^8.42.3 - version: 8.42.3 eslint: specifier: 9.4.0 version: 9.4.0 - eslint-config-love: - specifier: 52.0.0 - version: 52.0.0(@typescript-eslint/parser@7.12.0)(eslint@9.4.0)(typescript@5.2.2) eslint-config-prettier: specifier: 9.1.0 version: 9.1.0(eslint@9.4.0) + eslint-config-unjs: + specifier: 0.3.2 + version: 0.3.2(eslint@9.4.0)(typescript@5.2.2) eslint-plugin-import: specifier: 2.29.1 version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@9.4.0) eslint-plugin-prettier: specifier: 5.1.3 version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.4.0)(prettier@3.3.1) - eslint-plugin-promise: - specifier: 6.2.0 - version: 6.2.0(eslint@9.4.0) prettier: specifier: 3.3.1 version: 3.3.1 @@ -50,9 +41,6 @@ importers: typescript: specifier: ^5.2.2 version: 5.2.2 - typescript-eslint: - specifier: ^7.12.0 - version: 7.12.0(eslint@9.4.0)(typescript@5.2.2) vite: specifier: 5.2.12 version: 5.2.12 @@ -107,7 +95,7 @@ importers: devDependencies: '@esbuild-plugins/node-globals-polyfill': specifier: ^0.2.3 - version: 0.2.3(esbuild@0.20.2) + version: 0.2.3(esbuild@0.21.5) autoprefixer: specifier: ^10.4.14 version: 10.4.14(postcss@8.4.38) @@ -3923,12 +3911,12 @@ packages: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false - /@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.20.2): + /@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.21.5): resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} peerDependencies: esbuild: '*' dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 dev: true /@esbuild/aix-ppc64@0.20.2: @@ -3940,6 +3928,15 @@ packages: dev: true optional: true + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -3958,6 +3955,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -3976,6 +3982,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -3994,6 +4009,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -4012,6 +4036,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -4030,6 +4063,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -4048,6 +4090,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -4066,6 +4117,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -4084,6 +4144,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -4102,6 +4171,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -4120,6 +4198,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -4138,6 +4225,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -4156,6 +4252,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -4174,6 +4279,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -4192,6 +4306,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -4210,6 +4333,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -4228,6 +4360,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -4246,6 +4387,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -4264,6 +4414,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -4282,6 +4441,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -4300,6 +4468,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -4318,6 +4495,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -4336,6 +4522,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6505,19 +6700,6 @@ packages: '@types/bn.js': 5.1.5 dev: true - /@types/eslint@8.56.10: - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: true - - /@types/eslint__js@8.42.3: - resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} - dependencies: - '@types/eslint': 8.56.10 - dev: true - /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -6535,10 +6717,6 @@ packages: dependencies: '@types/istanbul-lib-report': 3.0.3 - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true @@ -6559,6 +6737,12 @@ packages: resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} dev: false + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true @@ -6620,6 +6804,10 @@ packages: /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: true + /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -8170,6 +8358,11 @@ packages: dependencies: node-gyp-build: 4.8.1 + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: true @@ -8285,6 +8478,18 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true @@ -8331,6 +8536,11 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: true + /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: @@ -8366,6 +8576,13 @@ packages: - utf-8-validate dev: false + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -9075,14 +9292,6 @@ packages: resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} engines: {node: '>=10.0.0'} - /enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -9258,6 +9467,37 @@ packages: '@esbuild/win32-x64': 0.20.2 dev: true + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -9277,44 +9517,32 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-compat-utils@0.5.1(eslint@9.4.0): - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} + /eslint-config-prettier@9.1.0(eslint@9.4.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true peerDependencies: - eslint: '>=6.0.0' + eslint: '>=7.0.0' dependencies: eslint: 9.4.0 - semver: 7.6.2 dev: true - /eslint-config-love@52.0.0(@typescript-eslint/parser@7.12.0)(eslint@9.4.0)(typescript@5.2.2): - resolution: {integrity: sha512-4H2+FtgWOKZkvGUKoPz7x7hHxgHr1+P2N2D96JzQ6wrePQsoMEvkTB9fHmItpmq2aIawufkfQczKmQTIZUq69w==} + /eslint-config-unjs@0.3.2(eslint@9.4.0)(typescript@5.2.2): + resolution: {integrity: sha512-Cr8oSPyPIDdupAj3eZcBYMLXNcpYQKnqnli/rfEzw/q9YtdsFVQbr7sYXsfNh8AsR2TvI6prtlcvNrgVR12/Nw==} peerDependencies: - eslint: ^8.0.1 + eslint: '*' typescript: '*' dependencies: + '@eslint/js': 9.4.0 eslint: 9.4.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@9.4.0) - eslint-plugin-n: 17.8.1(eslint@9.4.0) - eslint-plugin-promise: 6.2.0(eslint@9.4.0) + eslint-plugin-markdown: 5.0.0(eslint@9.4.0) + eslint-plugin-unicorn: 53.0.0(eslint@9.4.0) + globals: 15.4.0 typescript: 5.2.2 typescript-eslint: 7.12.0(eslint@9.4.0)(typescript@5.2.2) transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-prettier@9.1.0(eslint@9.4.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 9.4.0 - dev: true - /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -9354,18 +9582,6 @@ packages: - supports-color dev: true - /eslint-plugin-es-x@7.7.0(eslint@9.4.0): - resolution: {integrity: sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - '@eslint-community/regexpp': 4.10.0 - eslint: 9.4.0 - eslint-compat-utils: 0.5.1(eslint@9.4.0) - dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0)(eslint@9.4.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} @@ -9401,21 +9617,16 @@ packages: - supports-color dev: true - /eslint-plugin-n@17.8.1(eslint@9.4.0): - resolution: {integrity: sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==} + /eslint-plugin-markdown@5.0.0(eslint@9.4.0): + resolution: {integrity: sha512-kY2u9yDhzvfZ0kmRTsvgm3mTnvZgTSGIIPeHg3yesSx4R5CTCnITUjCPhzCD1MUhNcqHU5Tr6lzx+02EclVPbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=8.23.0' + eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) - enhanced-resolve: 5.17.0 eslint: 9.4.0 - eslint-plugin-es-x: 7.7.0(eslint@9.4.0) - get-tsconfig: 4.7.2 - globals: 15.4.0 - ignore: 5.3.1 - minimatch: 9.0.4 - semver: 7.6.2 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color dev: true /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.4.0)(prettier@3.3.1): @@ -9439,15 +9650,6 @@ packages: synckit: 0.8.8 dev: true - /eslint-plugin-promise@6.2.0(eslint@9.4.0): - resolution: {integrity: sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - dependencies: - eslint: 9.4.0 - dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -9483,6 +9685,33 @@ packages: - typescript dev: true + /eslint-plugin-unicorn@53.0.0(eslint@9.4.0): + resolution: {integrity: sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=8.56.0' + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0) + '@eslint/eslintrc': 3.1.0 + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.37.1 + eslint: 9.4.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.2 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -10185,12 +10414,6 @@ packages: get-intrinsic: 1.2.4 dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -10552,6 +10775,17 @@ packages: /iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -10594,6 +10828,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -10610,6 +10851,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + /is-directory@0.3.1: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} @@ -10648,6 +10893,10 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + /is-html@2.0.0: resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} engines: {node: '>=8'} @@ -11069,6 +11318,12 @@ packages: engines: {node: '>=4'} hasBin: true + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -11399,6 +11654,22 @@ packages: inherits: 2.0.4 safe-buffer: 5.2.1 + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: @@ -11731,6 +12002,15 @@ packages: /micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -12316,6 +12596,17 @@ packages: pbkdf2: 3.1.2 safe-buffer: 5.2.1 + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -12463,6 +12754,11 @@ packages: mlly: 1.7.1 pathe: 1.1.2 + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -13143,6 +13439,11 @@ packages: dependencies: '@babel/runtime': 7.24.7 + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -13163,6 +13464,13 @@ packages: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -13193,10 +13501,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -13958,11 +14262,6 @@ packages: transitivePeerDependencies: - ts-node - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - /temp@0.8.4: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} @@ -14364,6 +14663,12 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} diff --git a/tsconfig.json b/tsconfig.json index ba079d5..c831362 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -55,7 +55,8 @@ ], "include": [ "packages/**/*", + "examples/**/*", "tsup-base.config.ts", - "eslint.config.js" + "eslint.config.mjs" ] }