diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 549ca28a6..0548adde9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,9 +13,6 @@ jobs: matrix: node: ['24'] runs-on: ubuntu-24.04 - env: - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_CACHE: 'remote:rw' steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v5.0.0 @@ -25,7 +22,7 @@ jobs: - name: build run: | pnpm install --frozen-lockfile - pnpm run build + pnpm build typecheck: runs-on: ubuntu-24.04 @@ -61,9 +58,6 @@ jobs: lint: runs-on: ubuntu-24.04 needs: [build] - env: - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_CACHE: 'remote:rw' steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v5.0.0 @@ -75,9 +69,8 @@ jobs: - name: lint run: | pnpm install --frozen-lockfile - pnpm run build - pnpm run format:ci - pnpm run oxc:quiet + pnpm build + pnpm check test: runs-on: ubuntu-24.04 @@ -94,7 +87,7 @@ jobs: check-latest: true cache: 'pnpm' - run: pnpm install - - run: pnpm run test:coverage + - run: pnpm test - uses: codecov/codecov-action@v5.5.4 with: files: packages/**/coverage/cobertura-coverage.xml @@ -116,4 +109,4 @@ jobs: check-latest: true cache: 'pnpm' - run: pnpm install - - run: pnpm run test:types + - run: pnpm test:types diff --git a/README.md b/README.md index 993eb3a0e..5a894ebaf 100644 --- a/README.md +++ b/README.md @@ -142,8 +142,8 @@ $ git clone git@github.com:scaleway/scaleway-lib.git $ cd scaleway-lib $ pnpm install $ # ... do your changes ... -$ pnpm run lint -$ pnpm run test +$ pnpm vp check +$ pnpm vp test ``` ### Link against another project (with `yalc`) => FAVORED @@ -182,17 +182,17 @@ $ pnpm link @scaleway/example_package ### Linting ```bash -$ pnpm run oxc -$ pnpm run oxc:fix +$ pnpm vp check +$ pnpm vp check --fix ``` ### Unit Test ```bash -$ pnpm run test # Will run all tests -$ pnpm run test --updateSnapshot # Will update all snapshots -$ pnpm run test:watch # Will watch tests and only rerun the one who are modified -$ pnpm run test:coverage # Will generate a coverage report +$ pnpm vp test # Will run all tests +$ pnpm vp test --updateSnapshot # Will update all snapshots +$ pnpm vp test # Will watch tests and only rerun the one who are modified (built-in watch mode) +$ pnpm vp test --coverage # Will generate a coverage report ``` ## Lerna @@ -211,6 +211,29 @@ $ cd packages/package_name && pnpm add new_dependency $ cd packages/package_name && pnpm remove old_dependency ``` +## Vite+ + +This project uses [Vite+](https://viteplus.dev/) as the unified development toolchain. Vite+ provides: + +- **Fast builds** with Vite and Rolldown +- **Linting and formatting** with Oxc (50-100× faster than ESLint/Prettier) +- **Type checking** with tsgo +- **Testing** with Vitest +- **Task orchestration** with built-in caching + +### Common commands + +```bash +$ pnpm vp dev # Start development server +$ pnpm vp build # Build for production +$ pnpm vp check # Lint, format, and type check +$ pnpm vp check --fix # Auto-fix linting and formatting issues +$ pnpm vp test # Run tests +$ pnpm vp test --coverage # Run tests with coverage +$ pnpm vp typecheck # Run type checking +$ pnpm vp run # Run tasks with dependency-aware execution +``` + ## Notes ### On build targets @@ -239,7 +262,7 @@ We enforce the [conventionnal commits](https://www.conventionalcommits.org) conv ### On git hooks -We have a [husky](https://github.com/typicode/husky) hook on `pre-commit` and `pre-push` which will ensure the file you committed matches the configured formating (`eslint` + `prettier`) +We have a [husky](https://github.com/typicode/husky) hook on `pre-commit` and `pre-push` which will ensure the file you committed matches the configured formating (Vite+ check) We also have one on `commit-msg` which will ensure you commit message respects our commit convention @@ -252,5 +275,5 @@ We follow the [semver](http://semver.org/) semantic. ## Contributing Guidelines - Ensure tests are still ok and code coverage have not decreased -- Follow linter rules ([tldr](#linting)). +- Follow linter rules (Vite+ check). - CI is enforced, you won't be able to merge unless pipeline is successful. diff --git a/package.json b/package.json index 3e2c9f97a..c4b39929f 100644 --- a/package.json +++ b/package.json @@ -7,24 +7,24 @@ "type": "module", "scripts": { "lint:catalog": "pnpm check-catalog-usage", - "oxc": "pnpm oxlint -c .oxlintrc.json --type-aware --type-check", - "oxc:quiet": "pnpm oxc --quiet", - "oxc:fix": "pnpm oxc --fix", - "build": "pnpm turbo build", - "typecheck": "pnpm turbo typecheck", - "typecheck:generate": "pnpm turbo typecheck:generate", - "typecheck:go": "pnpm turbo typecheck:go", - "typecheck:generate:go": "pnpm turbo typecheck:generate:go", "commit": "npx git-cz -a", - "format": "oxfmt --write .", - "format:check": "oxfmt --check .", - "format:ci": "oxfmt --check .", - "test:unit": "pnpm turbo test:unit", - "test:coverage": "pnpm test:unit -- --coverage", - "typecheck:global": "pnpm tsc --noEmit", + "dev": "pnpm -r --parallel run dev", + "build": "vp run --filter '@scaleway/*' build", + "check": "vp check", + "format": "vp fmt . --write", + "check:fix": "vp check --fix", + "test": "vp run --filter '@scaleway/*' --filter '!@scaleway/biome' --filter '!@scaleway/oxlint-config' --filter '!@scaleway/tsconfig' --filter '!@scaleway/utils' test", + "test:unit": "vp run --filter '@scaleway/*' test:unit", + "test:coverage": "vp run --filter '@scaleway/*' test:coverage", + "typecheck": "vp run --filter '@scaleway/*' typecheck", + "typecheck:global": "vp run --filter '@scaleway/*' typecheck", + "typecheck:generate": "vp run --filter '@scaleway/*' type:generate", + "typecheck:go": "pnpm typecheck", + "typecheck:generate:go": "pnpm typecheck:generate", "test:types": "tstyche", "release": "pnpm build && pnpm changeset publish", - "prepare": "husky install" + "prepare": "husky install", + "run": "pnpm run" }, "devDependencies": { "@babel/core": "catalog:", @@ -39,7 +39,6 @@ "@manypkg/cli": "catalog:", "@rudderstack/analytics-js": "catalog:", "@scaleway/changesets-renovate": "workspace:*", - "@scaleway/oxlint-config": "workspace:*", "@scaleway/tsconfig": "workspace:*", "@scaleway/use-segment": "catalog:", "@scaleway/utils": "workspace:*", @@ -66,32 +65,28 @@ "jsdom": "catalog:", "lint-staged": "catalog:", "mockdate": "catalog:", - "oxfmt": "catalog:", - "oxlint": "catalog:", - "oxlint-tsgolint": "catalog:", "read-pkg": "catalog:", "shx": "catalog:", "tstyche": "catalog:", - "turbo": "catalog:", "typescript": "catalog:", "vite": "catalog:", + "vite-plus": "catalog:", "vitest": "catalog:", "vitest-localstorage-mock": "catalog:", "wait-for-expect": "catalog:" }, "lint-staged": { "*.ts?(x)": [ - "pnpm run format", - "pnpm run oxc:fix --quiet" + "vp check --fix" ], "*.y?(a)ml": [ - "oxfmt --write ." + "vp check --fix" ], "*.json": [ - "oxfmt --write ." + "vp check --fix" ], "*.mdx": [ - "oxfmt --write ." + "vp check --fix" ], "(*package).json": [ "pnpm exec manypkg check" diff --git a/packages/changesets-renovate/package.json b/packages/changesets-renovate/package.json index aaab605c0..18989abac 100644 --- a/packages/changesets-renovate/package.json +++ b/packages/changesets-renovate/package.json @@ -35,11 +35,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/cookie-consent/package.json b/packages/cookie-consent/package.json index 38af068e2..ffc1b355c 100644 --- a/packages/cookie-consent/package.json +++ b/packages/cookie-consent/package.json @@ -34,11 +34,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx index db75076be..a77b27979 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/CookieConsentProvider.tsx @@ -43,7 +43,7 @@ const CookieConsentContext: Context = createContext< CookieContext | undefined >(undefined) -export const useCookieConsent: () => CookieContext = (): CookieContext => { +const useCookieConsent = (): CookieContext => { const context = useContext(CookieConsentContext) if (context === undefined) { throw new Error( @@ -64,9 +64,7 @@ type CookieConsentProviderProps = PropsWithChildren<{ cookiesOptions?: SerializeOptions }> -export const CookieConsentProvider: ComponentType< - CookieConsentProviderProps -> = ({ +const CookieConsentProvider: ComponentType = ({ children, isConsentRequired, essentialIntegrations, @@ -258,3 +256,6 @@ export const CookieConsentProvider: ComponentType< ) } + +export { CookieConsentProvider } +export { useCookieConsent } diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.test.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.test.tsx index 84de13621..5521579cf 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.test.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/emptyConfig.test.tsx @@ -8,9 +8,12 @@ describe('cookieConsent - useSegmentIntegrations', () => { useSegmentIntegrations({ segment: null }), ) - await waitFor(() => { - expect(result.current.integrations).toStrictEqual([]) - }) + await waitFor( + () => { + expect(result.current.integrations).toStrictEqual([]) + }, + { timeout: 1000 }, + ) expect(result.current.isLoaded).toBeTruthy() }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.test.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.test.tsx index 047f19d6d..eccfdd597 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.test.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/fetchError.test.tsx @@ -2,7 +2,7 @@ import { renderHook, waitFor } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' import { useSegmentIntegrations } from '../../useSegmentIntegrations' -globalThis.fetch = vi.fn(async () => +globalThis.fetch = vi.fn<() => Promise>(async () => Promise.resolve({ ok: false } as unknown as Response), ) @@ -17,13 +17,19 @@ describe('cookieConsent - useSegmentIntegrations', () => { }), ) - await waitFor(() => { - expect(result.current.integrations).toStrictEqual([]) - }) + await waitFor( + () => { + expect(result.current.integrations).toStrictEqual([]) + }, + { timeout: 1000 }, + ) - await waitFor(() => { - expect(globalThis.fetch).toHaveBeenCalled() - }) + await waitFor( + () => { + expect(globalThis.fetch).toHaveBeenCalled() + }, + { timeout: 1000 }, + ) expect(result.current.isLoaded).toBeTruthy() }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.test.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.test.tsx index 796bc03f2..d7888617e 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.test.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/networkError.test.tsx @@ -2,7 +2,9 @@ import { renderHook, waitFor } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' import { useSegmentIntegrations } from '../../useSegmentIntegrations' -globalThis.fetch = vi.fn(async () => Promise.reject(new Error('randomError'))) +globalThis.fetch = vi.fn<() => Promise>(async () => + Promise.reject(new Error('randomError')), +) describe('cookieConsent - useSegmentIntegrations', () => { it('should call segment and return empty array if any error occurs in the fetch', async () => { @@ -15,13 +17,19 @@ describe('cookieConsent - useSegmentIntegrations', () => { }), ) - await waitFor(() => { - expect(result.current.integrations).toStrictEqual([]) - }) + await waitFor( + () => { + expect(result.current.integrations).toStrictEqual([]) + }, + { timeout: 1000 }, + ) - await waitFor(() => { - expect(globalThis.fetch).toHaveBeenCalled() - }) + await waitFor( + () => { + expect(globalThis.fetch).toHaveBeenCalled() + }, + { timeout: 1000 }, + ) expect(result.current.isLoaded).toBeTruthy() }) }) diff --git a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.test.tsx b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.test.tsx index 61ebcd945..6936b3b02 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.test.tsx +++ b/packages/cookie-consent/src/CookieConsentProvider/__tests__/useSegmentIntegrations/working.test.tsx @@ -2,7 +2,7 @@ import { renderHook, waitFor } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' import { useSegmentIntegrations } from '../../useSegmentIntegrations' -globalThis.fetch = vi.fn(async () => +globalThis.fetch = vi.fn<() => Promise>(async () => Promise.resolve({ json: async () => Promise.resolve([ @@ -10,7 +10,7 @@ globalThis.fetch = vi.fn(async () => category: 'Analytics', creationName: 'Google Analytics', description: - 'Google Universal Analytics is the most popular analytics tool for the web. It’s free and provides a wide range of features. It’s especially good at measuring traffic sources and ad campaigns.', + 'Google Universal Analytics is the most popular analytics tool for the web. It's free and provides a wide range of features. It's especially good at measuring traffic sources and ad campaigns.', name: 'Google Universal Analytics', website: 'http://google.com/analytics', }, @@ -98,7 +98,14 @@ describe('cookieConsent - useSegmentIntegrations', () => { name: 'Amplitude (Actions)', }, ]) - }) + }, { timeout: 1000 }) + + await waitFor(() => { + expect(globalThis.fetch).toHaveBeenCalled() + }, { timeout: 1000 }) + expect(result.current.isLoaded).toBeTruthy() + }) +}) await waitFor(() => { expect(globalThis.fetch).toHaveBeenCalled() diff --git a/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts b/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts index fb892de73..befb0b0f4 100644 --- a/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts +++ b/packages/cookie-consent/src/CookieConsentProvider/useSegmentIntegrations.ts @@ -51,9 +51,7 @@ type SegmentIntegrationsHook = (config: Config) => { isLoaded: boolean } // Will return undefined if loading, empty array if no response or error, response else -export const useSegmentIntegrations: SegmentIntegrationsHook = ( - config: Config, -) => { +const useSegmentIntegrations: SegmentIntegrationsHook = (config: Config) => { const [integrations, setIntegrations] = useState( undefined, ) @@ -93,3 +91,5 @@ export const useSegmentIntegrations: SegmentIntegrationsHook = ( isLoaded: integrations !== undefined, } } + +export { useSegmentIntegrations } diff --git a/packages/fuzzy-search/package.json b/packages/fuzzy-search/package.json index 674107112..3224b0b7a 100644 --- a/packages/fuzzy-search/package.json +++ b/packages/fuzzy-search/package.json @@ -24,11 +24,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/outdated-browser/package.json b/packages/outdated-browser/package.json index de338d063..f24c36ddb 100644 --- a/packages/outdated-browser/package.json +++ b/packages/outdated-browser/package.json @@ -20,11 +20,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/oxlint-config/configs/index.json b/packages/oxlint-config/configs/index.json index c57d22e78..4f4bc8107 100644 --- a/packages/oxlint-config/configs/index.json +++ b/packages/oxlint-config/configs/index.json @@ -78,10 +78,7 @@ "eslint/no-iterator": "error", "eslint/no-loss-of-precision": "error", "eslint/no-magic-numbers": "off", - "eslint/no-mixed-operators": "error", - "eslint/no-named-export": "off", "eslint/no-new-native-nonconstructor": "error", - "eslint/no-new-symbol": "error", "eslint/no-new-wrappers": "error", "eslint/no-nonoctal-decimal-escape": "error", "eslint/no-obj-calls": "error", @@ -89,7 +86,6 @@ "eslint/no-prototype-builtins": "error", "eslint/no-redeclare": "error", "eslint/no-regex-spaces": "error", - "eslint/no-return-await": "error", "eslint/no-script-url": "error", "eslint/no-self-assign": "error", "eslint/no-self-compare": "error", @@ -121,7 +117,6 @@ "eslint/no-with": "error", "eslint/prefer-destructuring": "off", "eslint/radix": "error", - "eslint/react-in-jsx-scope": "off", "eslint/require-await": "off", "eslint/require-yield": "error", "eslint/sort-imports": [ @@ -141,7 +136,6 @@ "import/export": "error", "import/exports-last": "off", "import/group-exports": "off", - "import/import-no-namespace": "off", "import/max-dependencies": "off", "import/named": "error", "import/namespace": "off", @@ -151,12 +145,10 @@ "import/no-duplicates": "error", "import/no-named-as-default": "error", "import/no-named-as-default-member": "error", - "import/no-named-export": "off", "import/no-nodejs-modules": "error", "import/no-relative-parent-imports": "off", "import/no-self-import": "error", "import/no-unassigned-import": "error", - "import/no-unused-modules": "off", "import/prefer-default-export": "off", "import/unambiguous": "error", "oxc/bad-bitwise-operator": "error", @@ -173,7 +165,6 @@ "unicorn/escape-case": "error", "unicorn/explicit-length-check": "error", "unicorn/filename-case": "off", - "unicorn/new-for-builtins": "error", "unicorn/no-abusive-eslint-disable": "error", "unicorn/no-anonymous-default-export": "off", "unicorn/no-array-for-each": "off", @@ -184,7 +175,6 @@ "unicorn/no-console-spaces": "error", "unicorn/no-document-cookie": "off", "unicorn/no-empty-file": "error", - "unicorn/no-for-loop": "off", "unicorn/no-hex-escape": "error", "unicorn/no-instanceof-array": "error", "unicorn/no-instanceof-builtins": "error", diff --git a/packages/oxlint-config/configs/react.json b/packages/oxlint-config/configs/react.json index 8a490c832..fbfda3d41 100644 --- a/packages/oxlint-config/configs/react.json +++ b/packages/oxlint-config/configs/react.json @@ -3,14 +3,14 @@ "extends": ["./index.json"], "plugins": ["react", "jsx-a11y"], "rules": { - "react_perf/jsx-no-jsx-as-prop": "error", - "react_perf/jsx-no-new-array-as-prop": "error", - "react_perf/jsx-no-new-function-as-props": "error", - "react_perf/jsx-no-new-object-as-prop": "error", - "react-perf/jsx-no-jsx-as-prop": "off", - "react-perf/jsx-no-new-array-as-prop": "off", - "react-perf/jsx-no-new-function-as-prop": "off", - "react-perf/jsx-no-new-object-as-prop": "off", + "react-perf/jsx-no-jsx-as-prop": "error", + "react-perf/jsx-no-new-array-as-prop": "error", + "react-perf/jsx-no-new-function-as-prop": "error", + "react-perf/jsx-no-new-object-as-prop": "error", + "react_perf/jsx-no-jsx-as-prop": "off", + "react_perf/jsx-no-new-array-as-prop": "off", + "react_perf/jsx-no-new-function-as-prop": "off", + "react_perf/jsx-no-new-object-as-prop": "off", "react/button-has-type": "error", "react/display-name": "off", "react/exhaustive-deps": "error", @@ -23,13 +23,11 @@ ], "react/jsx-handler-names": "off", "react/jsx-key": "error", - "react/jsx-no-comment-text-nodes": "error", "react/jsx-no-duplicate-props": "error", "react/jsx-no-target-blank": "off", "react/jsx-no-undef": "error", "react/jsx-no-useless-fragment": "error", "react/no-children-prop": "error", - "react/no-dangerously-set-inner-html": "error", "react/no-direct-mutation-state": "error", "react/no-find-dom-node": "error", "react/no-is-mounted": "error", @@ -39,7 +37,6 @@ "react/no-string-refs": "error", "react/no-unescaped-entities": "error", "react/no-unknown-property": "error", - "react/react-in-jsx-scope": "off", "react/require-render-return": "error" }, "settings": { diff --git a/packages/random-name/package.json b/packages/random-name/package.json index 9502781c7..b29e9673d 100644 --- a/packages/random-name/package.json +++ b/packages/random-name/package.json @@ -24,11 +24,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/regex/package.json b/packages/regex/package.json index 382b21c96..9da80fb75 100644 --- a/packages/regex/package.json +++ b/packages/regex/package.json @@ -24,11 +24,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/sync-peer-deps/package.json b/packages/sync-peer-deps/package.json index 04638e1b9..f24140a81 100644 --- a/packages/sync-peer-deps/package.json +++ b/packages/sync-peer-deps/package.json @@ -24,11 +24,11 @@ } }, "scripts": { - "prebuild": "shx rm -rf dist", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", "package:check": "pnpm publint", + "check": "vp check", "typecheck": "tsgo -p tsconfig.json --noEmit" }, "dependencies": { diff --git a/packages/use-analytics/package.json b/packages/use-analytics/package.json index fcd2594fc..6d390cd47 100644 --- a/packages/use-analytics/package.json +++ b/packages/use-analytics/package.json @@ -44,12 +44,13 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", "lintpublish": "publint", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-analytics/src/analytics/segments/userMigrationsTraits.ts b/packages/use-analytics/src/analytics/segments/userMigrationsTraits.ts index d5d40b931..529d4941e 100644 --- a/packages/use-analytics/src/analytics/segments/userMigrationsTraits.ts +++ b/packages/use-analytics/src/analytics/segments/userMigrationsTraits.ts @@ -7,9 +7,7 @@ const SEGMENT_COOKIES_KEY = { USER_ID: 'ajs_user_id', } -export const userMigrationsTraits = ( - rudderAnalytics: RudderAnalytics, -): void => { +const userMigrationsTraits = (rudderAnalytics: RudderAnalytics): void => { const segmentAnonymousId = localStorage.getItem( SEGMENT_COOKIES_KEY.ANONYMOUS_ID, ) @@ -36,3 +34,5 @@ export const userMigrationsTraits = ( } } } + +export { userMigrationsTraits } diff --git a/packages/use-dataloader/package.json b/packages/use-dataloader/package.json index 8217d6c25..0d475ecfc 100644 --- a/packages/use-dataloader/package.json +++ b/packages/use-dataloader/package.json @@ -33,11 +33,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-dataloader/src/helpers.ts b/packages/use-dataloader/src/helpers.ts index 91037ce3a..4149b4121 100644 --- a/packages/use-dataloader/src/helpers.ts +++ b/packages/use-dataloader/src/helpers.ts @@ -5,7 +5,7 @@ import type { KeyType } from './types' * @param {KeyType} queryKey * @returns string */ -export const marshalQueryKey = (queryKey: KeyType): string => +const marshalQueryKey = (queryKey: KeyType): string => Array.isArray(queryKey) ? queryKey // For now, we treat null values as if they were undefined @@ -20,3 +20,5 @@ export const marshalQueryKey = (queryKey: KeyType): string => }) .join('.') : queryKey.toString() + +export { marshalQueryKey } diff --git a/packages/use-dataloader/src/types.ts b/packages/use-dataloader/src/types.ts index 9b5c1ce12..b1e49f7e8 100644 --- a/packages/use-dataloader/src/types.ts +++ b/packages/use-dataloader/src/types.ts @@ -1,22 +1,20 @@ type PrimitiveType = string | number | boolean | null | undefined | Date -export type KeyType = string | number | PrimitiveType[] +type KeyType = string | number | PrimitiveType[] -export class PromiseType extends Promise { +class PromiseType extends Promise { cancel?: () => void } -export type OnErrorFn = +type OnErrorFn = | ((err: ErrorType) => void | Promise) | undefined -export type OnSuccessFn = +type OnSuccessFn = | ((result: ResultType) => void | Promise) | undefined -export type OnCancelFn = (() => void | Promise) | undefined -export type NeedPollingType = - | boolean - | ((data?: ResultType) => boolean) +type OnCancelFn = (() => void | Promise) | undefined +type NeedPollingType = boolean | ((data?: ResultType) => boolean) -export type UseDataLoaderConfig = { +type UseDataLoaderConfig = { /** * Launch request automatically on mount * @default true @@ -55,7 +53,7 @@ export type UseDataLoaderConfig = { needPolling?: NeedPollingType } -export type UseDataLoaderResult = { +type UseDataLoaderResult = { /** * Return initialData if no data is fetched or not present in the cache otherwise return the data fetched */ @@ -98,7 +96,7 @@ export type UseDataLoaderResult = { reload: () => Promise } -export type UseInfiniteDataLoaderConfig< +type UseInfiniteDataLoaderConfig< ResultType, ErrorType extends Error, ParamsType extends Record, @@ -117,7 +115,7 @@ export type UseInfiniteDataLoaderConfig< initialData?: ResultType[] } -export type UseInfiniteDataLoaderResult = { +type UseInfiniteDataLoaderResult = { data?: ResultType[] error?: ErrorType isError: boolean @@ -130,3 +128,16 @@ export type UseInfiniteDataLoaderResult = { reload: () => Promise loadMore: () => void } + +export type { + KeyType, + PromiseType, + OnErrorFn, + OnSuccessFn, + OnCancelFn, + NeedPollingType, + UseDataLoaderConfig, + UseDataLoaderResult, + UseInfiniteDataLoaderConfig, + UseInfiniteDataLoaderResult, +} diff --git a/packages/use-growthbook/package.json b/packages/use-growthbook/package.json index 5d524d293..740ba4011 100644 --- a/packages/use-growthbook/package.json +++ b/packages/use-growthbook/package.json @@ -31,11 +31,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-i18n/package.json b/packages/use-i18n/package.json index 0ca621fce..7a56d56e2 100644 --- a/packages/use-i18n/package.json +++ b/packages/use-i18n/package.json @@ -34,11 +34,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "TZ=UTC LANG=en_US.UTF8 NODE_ENV=test vitest --run --config vite.config.ts", "test:unit": "TZ=UTC LANG=en_US.UTF8 NODE_ENV=test vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-media/package.json b/packages/use-media/package.json index 877269251..94a863ba9 100644 --- a/packages/use-media/package.json +++ b/packages/use-media/package.json @@ -33,11 +33,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-query-params/package.json b/packages/use-query-params/package.json index 0c8ea8566..cc101d717 100644 --- a/packages/use-query-params/package.json +++ b/packages/use-query-params/package.json @@ -35,11 +35,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-random-name/package.json b/packages/use-random-name/package.json index 8aa8453bc..fff0d1919 100644 --- a/packages/use-random-name/package.json +++ b/packages/use-random-name/package.json @@ -27,11 +27,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/use-storage/package.json b/packages/use-storage/package.json index 67c145517..c75db48e6 100644 --- a/packages/use-storage/package.json +++ b/packages/use-storage/package.json @@ -24,11 +24,12 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", "build:profile": "npx vite-bundle-visualizer -c vite.config.ts", + "test": "vitest --run --config vite.config.ts", "test:unit": "vitest --run --config vite.config.ts", "test:unit:coverage": "pnpm test:unit --coverage" }, diff --git a/packages/validate-icu-locales/package.json b/packages/validate-icu-locales/package.json index 841777545..f15bbcf07 100644 --- a/packages/validate-icu-locales/package.json +++ b/packages/validate-icu-locales/package.json @@ -34,7 +34,7 @@ "access": "public" }, "scripts": { - "prebuild": "shx rm -rf dist", + "check": "vp check", "typecheck": "tsgo --noEmit", "type:generate": "tsgo --declaration -p tsconfig.build.json", "build": "vite build --config vite.config.ts && pnpm run type:generate", diff --git a/packages/validate-icu-locales/src/__tests__/locales/en-no-default.ts b/packages/validate-icu-locales/src/__tests__/locales/en-no-default.ts index edf5acbbe..a7e0207ef 100644 --- a/packages/validate-icu-locales/src/__tests__/locales/en-no-default.ts +++ b/packages/validate-icu-locales/src/__tests__/locales/en-no-default.ts @@ -1,4 +1,4 @@ -export const toto = { +const toto = { 'units.days.label': '{count, plural, =0 {Day} =1 {Day} other {Days}}', 'units.hours.label': '{count, plural, =0 {Hour} =1 {Hour} other {Hours}}', // error on this one missing bracket @@ -7,3 +7,5 @@ export const toto = { '{count, plural, =0 {Minute} =1 {Minute} other {Minutes', 'units.months.label': '{count, plural, =0 {Month} =1 {Month} other {Months}}', } as const + +export { toto } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fbb6ad93..f0dc424bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,15 +156,9 @@ catalogs: module-from-string: specifier: 3.3.1 version: 3.3.1 - oxfmt: - specifier: 0.42.0 - version: 0.42.0 oxlint: specifier: 1.56.0 version: 1.56.0 - oxlint-tsgolint: - specifier: 0.17.4 - version: 0.17.4 query-string: specifier: 9.3.1 version: 9.3.1 @@ -189,15 +183,15 @@ catalogs: tstyche: specifier: 6.2.0 version: 6.2.0 - turbo: - specifier: 2.8.21 - version: 2.8.21 typescript: specifier: 6.0.2 version: 6.0.2 use-deep-compare-effect: specifier: 1.8.1 version: 1.8.1 + vite-plus: + specifier: 0.1.15 + version: 0.1.15 vitest-localstorage-mock: specifier: 0.1.2 version: 0.1.2 @@ -252,9 +246,6 @@ importers: '@scaleway/changesets-renovate': specifier: workspace:* version: link:packages/changesets-renovate - '@scaleway/oxlint-config': - specifier: workspace:* - version: link:packages/oxlint-config '@scaleway/tsconfig': specifier: workspace:* version: link:packages/tsconfig @@ -333,15 +324,6 @@ importers: mockdate: specifier: 'catalog:' version: 3.0.5 - oxfmt: - specifier: 'catalog:' - version: 0.42.0 - oxlint: - specifier: 'catalog:' - version: 1.56.0(oxlint-tsgolint@0.17.4) - oxlint-tsgolint: - specifier: 'catalog:' - version: 0.17.4 read-pkg: specifier: 'catalog:' version: 10.1.0 @@ -351,15 +333,15 @@ importers: tstyche: specifier: 'catalog:' version: 6.2.0(typescript@6.0.2) - turbo: - specifier: 'catalog:' - version: 2.8.21 typescript: specifier: 'catalog:' version: 6.0.2 vite: specifier: 8.0.3 version: 8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3) + vite-plus: + specifier: 'catalog:' + version: 0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(happy-dom@20.8.9)(jiti@2.6.1)(jsdom@29.0.1)(typescript@6.0.2)(vite@8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3))(yaml@2.8.3) vitest: specifier: 4.1.2 version: 4.1.2(@types/node@25.3.5)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3)) @@ -409,7 +391,7 @@ importers: devDependencies: oxlint: specifier: 'catalog:' - version: 1.56.0(oxlint-tsgolint@0.17.4) + version: 1.56.0(oxlint-tsgolint@0.18.1) packages/random-name: {} @@ -1829,158 +1811,162 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/runtime@0.122.0': + resolution: {integrity: sha512-vevyz3bNjevQFCV2Yg5o6Sp9BSoiYiJVymMrzA3S1ZGj4J8ak4YiywhFyQMueQ3UNlJU6HZOZYDy70TUc99aHw==} + engines: {node: ^20.19.0 || >=22.12.0} + '@oxc-project/types@0.122.0': resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} - '@oxfmt/binding-android-arm-eabi@0.42.0': - resolution: {integrity: sha512-dsqPTYsozeokRjlrt/b4E7Pj0z3eS3Eg74TWQuuKbjY4VttBmA88rB7d50Xrd+TZ986qdXCNeZRPEzZHAe+jow==} + '@oxfmt/binding-android-arm-eabi@0.43.0': + resolution: {integrity: sha512-CgU2s+/9hHZgo0IxVxrbMPrMj+tJ6VM3mD7Mr/4oiz4FNTISLoCvRmB5nk4wAAle045RtRjd86m673jwPyb1OQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.42.0': - resolution: {integrity: sha512-t+aAjHxcr5eOBphFHdg1ouQU9qmZZoRxnX7UOJSaTwSoKsb6TYezNKO0YbWytGXCECObRqNcUxPoPr0KaraAIg==} + '@oxfmt/binding-android-arm64@0.43.0': + resolution: {integrity: sha512-T9OfRwjA/EdYxAqbvR7TtqLv5nIrwPXuCtTwOHtS7aR9uXyn74ZYgzgTo6/ZwvTq9DY4W+DsV09hB2EXgn9EbA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.42.0': - resolution: {integrity: sha512-ulpSEYMKg61C5bRMZinFHrKJYRoKGVbvMEXA5zM1puX3O9T6Q4XXDbft20yrDijpYWeuG59z3Nabt+npeTsM1A==} + '@oxfmt/binding-darwin-arm64@0.43.0': + resolution: {integrity: sha512-o3i49ZUSJWANzXMAAVY1wnqb65hn4JVzwlRQ5qfcwhRzIA8lGVaud31Q3by5ALHPrksp5QEaKCQF9aAS3TXpZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.42.0': - resolution: {integrity: sha512-ttxLKhQYPdFiM8I/Ri37cvqChE4Xa562nNOsZFcv1CKTVLeEozXjKuYClNvxkXmNlcF55nzM80P+CQkdFBu+uQ==} + '@oxfmt/binding-darwin-x64@0.43.0': + resolution: {integrity: sha512-vWECzzCFkb0kK6jaHjbtC5sC3adiNWtqawFCxhpvsWlzVeKmv5bNvkB4nux+o4JKWTpHCM57NDK/MeXt44txmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.42.0': - resolution: {integrity: sha512-Og7QS3yI3tdIKYZ58SXik0rADxIk2jmd+/YvuHRyKULWpG4V2fR5V4hvKm624Mc0cQET35waPXiCQWvjQEjwYQ==} + '@oxfmt/binding-freebsd-x64@0.43.0': + resolution: {integrity: sha512-rgz8JpkKiI/umOf7fl9gwKyQasC8bs5SYHy6g7e4SunfLBY3+8ATcD5caIg8KLGEtKFm5ujKaH8EfjcmnhzTLg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.42.0': - resolution: {integrity: sha512-jwLOw/3CW4H6Vxcry4/buQHk7zm9Ne2YsidzTL1kpiMe4qqrRCwev3dkyWe2YkFmP+iZCQ7zku4KwjcLRoh8ew==} + '@oxfmt/binding-linux-arm-gnueabihf@0.43.0': + resolution: {integrity: sha512-nWYnF3vIFzT4OM1qL/HSf1Yuj96aBuKWSaObXHSWliwAk2rcj7AWd6Lf7jowEBQMo4wCZVnueIGw/7C4u0KTBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.42.0': - resolution: {integrity: sha512-XwXu2vkMtiq2h7tfvN+WA/9/5/1IoGAVCFPiiQUvcAuG3efR97KNcRGM8BetmbYouFotQ2bDal3yyjUx6IPsTg==} + '@oxfmt/binding-linux-arm-musleabihf@0.43.0': + resolution: {integrity: sha512-sFg+NWJbLfupYTF4WELHAPSnLPOn1jiDZ33Z1jfDnTaA+cC3iB35x0FMMZTFdFOz3icRIArncwCcemJFGXu6TQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.42.0': - resolution: {integrity: sha512-ea7s/XUJoT7ENAtUQDudFe3nkSM3e3Qpz4nJFRdzO2wbgXEcjnchKLEsV3+t4ev3r8nWxIYr9NRjPWtnyIFJVA==} + '@oxfmt/binding-linux-arm64-gnu@0.43.0': + resolution: {integrity: sha512-MelWqv68tX6wZEILDrTc9yewiGXe7im62+5x0bNXlCYFOZdA+VnYiJfAihbROsZ5fm90p9C3haFrqjj43XnlAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.42.0': - resolution: {integrity: sha512-+JA0YMlSdDqmacygGi2REp57c3fN+tzARD8nwsukx9pkCHK+6DkbAA9ojS4lNKsiBjIW8WWa0pBrBWhdZEqfuw==} + '@oxfmt/binding-linux-arm64-musl@0.43.0': + resolution: {integrity: sha512-ROaWfYh+6BSJ1Arwy5ujijTlwnZetxDxzBpDc1oBR4d7rfrPBqzeyjd5WOudowzQUgyavl2wEpzn1hw3jWcqLA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.42.0': - resolution: {integrity: sha512-VfnET0j4Y5mdfCzh5gBt0NK28lgn5DKx+8WgSMLYYeSooHhohdbzwAStLki9pNuGy51y4I7IoW8bqwAaCMiJQg==} + '@oxfmt/binding-linux-ppc64-gnu@0.43.0': + resolution: {integrity: sha512-PJRs/uNxmFipJJ8+SyKHh7Y7VZIKQicqrrBzvfyM5CtKi8D7yZKTwUOZV3ffxmiC2e7l1SDJpkBEOyue5NAFsg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.42.0': - resolution: {integrity: sha512-gVlCbmBkB0fxBWbhBj9rcxezPydsQHf4MFKeHoTSPicOQ+8oGeTQgQ8EeesSybWeiFPVRx3bgdt4IJnH6nOjAA==} + '@oxfmt/binding-linux-riscv64-gnu@0.43.0': + resolution: {integrity: sha512-j6biGAgzIhj+EtHXlbNumvwG7XqOIdiU4KgIWRXAEj/iUbHKukKW8eXa4MIwpQwW1YkxovduKtzEAPnjlnAhVQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.42.0': - resolution: {integrity: sha512-zN5OfstL0avgt/IgvRu0zjQzVh/EPkcLzs33E9LMAzpqlLWiPWeMDZyMGFlSRGOdDjuNmlZBCgj0pFnK5u32TQ==} + '@oxfmt/binding-linux-riscv64-musl@0.43.0': + resolution: {integrity: sha512-RYWxAcslKxvy7yri24Xm9cmD0RiANaiEPs007EFG6l9h1ChM69Q5SOzACaCoz4Z9dEplnhhneeBaTWMEdpgIbA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.42.0': - resolution: {integrity: sha512-9X6+H2L0qMc2sCAgO9HS03bkGLMKvOFjmEdchaFlany3vNZOjnVui//D8k/xZAtQv2vaCs1reD5KAgPoIU4msA==} + '@oxfmt/binding-linux-s390x-gnu@0.43.0': + resolution: {integrity: sha512-DT6Q8zfQQy3jxpezAsBACEHNUUixKSYTwdXeXojNHe4DQOoxjPdjr3Szu6BRNjxLykZM/xMNmp9ElOIyDppwtw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.42.0': - resolution: {integrity: sha512-BajxJ6KQvMMdpXGPWhBGyjb2Jvx4uec0w+wi6TJZ6Tv7+MzPwe0pO8g5h1U0jyFgoaF7mDl6yKPW3ykWcbUJRw==} + '@oxfmt/binding-linux-x64-gnu@0.43.0': + resolution: {integrity: sha512-R8Yk7iYcuZORXmCfFZClqbDxRZgZ9/HEidUuBNdoX8Ptx07cMePnMVJ/woB84lFIDjh2ROHVaOP40Ds3rBXFqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.42.0': - resolution: {integrity: sha512-0wV284I6vc5f0AqAhgAbHU2935B4bVpncPoe5n/WzVZY/KnHgqxC8iSFGeSyLWEgstFboIcWkOPck7tqbdHkzA==} + '@oxfmt/binding-linux-x64-musl@0.43.0': + resolution: {integrity: sha512-F2YYqyvnQNvi320RWZNAvsaWEHwmW3k4OwNJ1hZxRKXupY63expbBaNp6jAgvYs7y/g546vuQnGHQuCBhslhLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.42.0': - resolution: {integrity: sha512-p4BG6HpGnhfgHk1rzZfyR6zcWkE7iLrWxyehHfXUy4Qa5j3e0roglFOdP/Nj5cJJ58MA3isQ5dlfkW2nNEpolw==} + '@oxfmt/binding-openharmony-arm64@0.43.0': + resolution: {integrity: sha512-OE6TdietLXV3F6c7pNIhx/9YC1/2YFwjU9DPc/fbjxIX19hNIaP1rS0cFjCGJlGX+cVJwIKWe8Mos+LdQ1yAJw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.42.0': - resolution: {integrity: sha512-mn//WV60A+IetORDxYieYGAoQso4KnVRRjORDewMcod4irlRe0OSC7YPhhwaexYNPQz/GCFk+v9iUcZ2W22yxQ==} + '@oxfmt/binding-win32-arm64-msvc@0.43.0': + resolution: {integrity: sha512-0nWK6a7pGkbdoypfVicmV9k/N1FwjPZENoqhlTU+5HhZnAhpIO3za30nEE33u6l6tuy9OVfpdXUqxUgZ+4lbZw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.42.0': - resolution: {integrity: sha512-3gWltUrvuz4LPJXWivoAxZ28Of2O4N7OGuM5/X3ubPXCEV8hmgECLZzjz7UYvSDUS3grfdccQwmjynm+51EFpw==} + '@oxfmt/binding-win32-ia32-msvc@0.43.0': + resolution: {integrity: sha512-9aokTR4Ft+tRdvgN/pKzSkVy2ksc4/dCpDm9L/xFrbIw0yhLtASLbvoG/5WOTUh/BRPPnfGTsWznEqv0dlOmhA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.42.0': - resolution: {integrity: sha512-Wg4TMAfQRL9J9AZevJ/ZNy3uyyDztDYQtGr4P8UyyzIhLhFrdSmz1J/9JT+rv0fiCDLaFOBQnj3f3K3+a5PzDQ==} + '@oxfmt/binding-win32-x64-msvc@0.43.0': + resolution: {integrity: sha512-4bPgdQux2ZLWn3bf2TTXXMHcJB4lenmuxrLqygPmvCJ104Yqzj1UctxSRzR31TiJ4MLaG22RK8dUsVpJtrCz5g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxlint-tsgolint/darwin-arm64@0.17.4': - resolution: {integrity: sha512-XEA7vl/T1+wiVnMq2MR6u5OYr2pwKHiAPgklxpK8tPrjQ1ci/amNmwI8ECn6TPXSCsC8SJsSN5xvzXm5H3dTfw==} + '@oxlint-tsgolint/darwin-arm64@0.18.1': + resolution: {integrity: sha512-CxSd15ZwHn70UJFTXVvy76bZ9zwI097cVyjvUFmYRJwvkQF3VnrTf2oe1gomUacErksvtqLgn9OKvZhLMYwvog==} cpu: [arm64] os: [darwin] - '@oxlint-tsgolint/darwin-x64@0.17.4': - resolution: {integrity: sha512-EY2wmHWqkz72B0/ddMiAM564ZXpEuN1i7JqJJhLmDUQfiHX0/X0EqK3xlSScMCFcVicitOxbKO9oqbde3658yg==} + '@oxlint-tsgolint/darwin-x64@0.18.1': + resolution: {integrity: sha512-LE7VW/T/VcKhl3Z1ev5BusrxdlQ3DWweSeOB+qpBeur2h8+vCWq+M7tCO29C7lveBDfx1+rNwj4aiUVlA+Qs+g==} cpu: [x64] os: [darwin] - '@oxlint-tsgolint/linux-arm64@0.17.4': - resolution: {integrity: sha512-XL2X8hgp3/TZWeHFLUnWrveTCBPxy1kNtpzfvVkLtBgyoaRyopPYL0Mnm+ypXKgGvUdcjDaiJhnRjFHWmqZkew==} + '@oxlint-tsgolint/linux-arm64@0.18.1': + resolution: {integrity: sha512-2AG8YIXVJJbnM0rcsJmzzWOjZXBu5REwowgUpbHZueF7OYM3wR7Xu8pXEpAojEHAtYYZ3X4rpPoetomkJx7kCw==} cpu: [arm64] os: [linux] - '@oxlint-tsgolint/linux-x64@0.17.4': - resolution: {integrity: sha512-jT+aWtQuU8jefwfBLAZu16p4t8xUDjxL6KKlOeuwX3cS6NO60ITJ4Glm8eQYq5cGsOmYIKXNIe4ckPpL5LC+5g==} + '@oxlint-tsgolint/linux-x64@0.18.1': + resolution: {integrity: sha512-f8vDYPEdiwpA2JaDEkadTXfuqIgweQ8zcL4SX75EN2kkW2oAynjN7cd8m86uXDgB0JrcyOywbRtwnXdiIzXn2A==} cpu: [x64] os: [linux] - '@oxlint-tsgolint/win32-arm64@0.17.4': - resolution: {integrity: sha512-pnnkBaI5tHBFhx+EhmpUHccBT3VOAXTgWK2eQBVLE4a/ywhpHN+8D6/QQN+ZTaA4LTkKowvlGD6vDOVP5KRPvw==} + '@oxlint-tsgolint/win32-arm64@0.18.1': + resolution: {integrity: sha512-fBdML05KMDAL9ebWeoHIzkyI86Eq6r9YH5UDRuXJ9vAIo1EnKo0ti7hLUxNdc2dy2FF/T4k98p5wkkXvLyXqfA==} cpu: [arm64] os: [win32] - '@oxlint-tsgolint/win32-x64@0.17.4': - resolution: {integrity: sha512-JxT81aEUBNA/s01Ql2OQ2DLAsuM0M+mK9iLHunukOdPMhjA6NvFE/GtTablBYJKScK21d/xTvnoSLgQU3l22Cw==} + '@oxlint-tsgolint/win32-x64@0.18.1': + resolution: {integrity: sha512-cYZMhNrsq9ZZ3OUWHyawqiS+c8HfieYG0zuZP2LbEuWWPfdZM/22iAlo608J+27G1s9RXQhvgX6VekwWbXbD7A==} cpu: [x64] os: [win32] @@ -1990,42 +1976,84 @@ packages: cpu: [arm] os: [android] + '@oxlint/binding-android-arm-eabi@1.58.0': + resolution: {integrity: sha512-1T7UN3SsWWxpWyWGn1cT3ASNJOo+pI3eUkmEl7HgtowapcV8kslYpFQcYn431VuxghXakPNlbjRwhqmR37PFOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + '@oxlint/binding-android-arm64@1.56.0': resolution: {integrity: sha512-Ga5zYrzH6vc/VFxhn6MmyUnYEfy9vRpwTIks99mY3j6Nz30yYpIkWryI0QKPCgvGUtDSXVLEaMum5nA+WrNOSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] + '@oxlint/binding-android-arm64@1.58.0': + resolution: {integrity: sha512-GryzujxuiRv2YFF7bRy8mKcxlbuAN+euVUtGJt9KKbLT8JBUIosamVhcthLh+VEr6KE6cjeVMAQxKAzJcoN7dg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@oxlint/binding-darwin-arm64@1.56.0': resolution: {integrity: sha512-ogmbdJysnw/D4bDcpf1sPLpFThZ48lYp4aKYm10Z/6Nh1SON6NtnNhTNOlhEY296tDFItsZUz+2tgcSYqh8Eyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@oxlint/binding-darwin-arm64@1.58.0': + resolution: {integrity: sha512-7/bRSJIwl4GxeZL9rPZ11anNTyUO9epZrfEJH/ZMla3+/gbQ6xZixh9nOhsZ0QwsTW7/5J2A/fHbD1udC5DQQA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@oxlint/binding-darwin-x64@1.56.0': resolution: {integrity: sha512-x8QE1h+RAtQ2g+3KPsP6Fk/tdz6zJQUv5c7fTrJxXV3GHOo+Ry5p/PsogU4U+iUZg0rj6hS+E4xi+mnwwlDCWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@oxlint/binding-darwin-x64@1.58.0': + resolution: {integrity: sha512-EqdtJSiHweS2vfILNrpyJ6HUwpEq2g7+4Zx1FPi4hu3Hu7tC3znF6ufbXO8Ub2LD4mGgznjI7kSdku9NDD1Mkg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@oxlint/binding-freebsd-x64@1.56.0': resolution: {integrity: sha512-6G+WMZvwJpMvY7my+/SHEjb7BTk/PFbePqLpmVmUJRIsJMy/UlyYqjpuh0RCgYYkPLcnXm1rUM04kbTk8yS1Yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@oxlint/binding-freebsd-x64@1.58.0': + resolution: {integrity: sha512-VQt5TH4M42mY20F545G637RKxV/yjwVtKk2vfXuazfReSIiuvWBnv+FVSvIV5fKVTJNjt3GSJibh6JecbhGdBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@oxlint/binding-linux-arm-gnueabihf@1.56.0': resolution: {integrity: sha512-YYHBsk/sl7fYwQOok+6W5lBPeUEvisznV/HZD2IfZmF3Bns6cPC3Z0vCtSEOaAWTjYWN3jVsdu55jMxKlsdlhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxlint/binding-linux-arm-gnueabihf@1.58.0': + resolution: {integrity: sha512-fBYcj4ucwpAtjJT3oeBdFBYKvNyjRSK+cyuvBOTQjh0jvKp4yeA4S/D0IsCHus/VPaNG5L48qQkh+Vjy3HL2/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxlint/binding-linux-arm-musleabihf@1.56.0': resolution: {integrity: sha512-+AZK8rOUr78y8WT6XkDb04IbMRqauNV+vgT6f8ZLOH8wnpQ9i7Nol0XLxAu+Cq7Sb+J9wC0j6Km5hG8rj47/yQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxlint/binding-linux-arm-musleabihf@1.58.0': + resolution: {integrity: sha512-0BeuFfwlUHlJ1xpEdSD1YO3vByEFGPg36uLjK1JgFaxFb4W6w17F8ET8sz5cheZ4+x5f2xzdnRrrWv83E3Yd8g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxlint/binding-linux-arm64-gnu@1.56.0': resolution: {integrity: sha512-urse2SnugwJRojUkGSSeH2LPMaje5Q50yQtvtL9HFckiyeqXzoFwOAZqD5TR29R2lq7UHidfFDM9EGcchcbb8A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2033,6 +2061,13 @@ packages: os: [linux] libc: [glibc] + '@oxlint/binding-linux-arm64-gnu@1.58.0': + resolution: {integrity: sha512-TXlZgnPTlxrQzxG9ZXU7BNwx1Ilrr17P3GwZY0If2EzrinqRH3zXPc3HrRcBJgcsoZNMuNL5YivtkJYgp467UQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@oxlint/binding-linux-arm64-musl@1.56.0': resolution: {integrity: sha512-rkTZkBfJ4TYLjansjSzL6mgZOdN5IvUnSq3oNJSLwBcNvy3dlgQtpHPrRxrCEbbcp7oQ6If0tkNaqfOsphYZ9g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2040,6 +2075,13 @@ packages: os: [linux] libc: [musl] + '@oxlint/binding-linux-arm64-musl@1.58.0': + resolution: {integrity: sha512-zSoYRo5dxHLcUx93Stl2hW3hSNjPt99O70eRVWt5A1zwJ+FPjeCCANCD2a9R4JbHsdcl11TIQOjyigcRVOH2mw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@oxlint/binding-linux-ppc64-gnu@1.56.0': resolution: {integrity: sha512-uqL1kMH3u69/e1CH2EJhP3CP28jw2ExLsku4o8RVAZ7fySo9zOyI2fy9pVlTAp4voBLVgzndXi3SgtdyCTa2aA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2047,6 +2089,13 @@ packages: os: [linux] libc: [glibc] + '@oxlint/binding-linux-ppc64-gnu@1.58.0': + resolution: {integrity: sha512-NQ0U/lqxH2/VxBYeAIvMNUK1y0a1bJ3ZicqkF2c6wfakbEciP9jvIE4yNzCFpZaqeIeRYaV7AVGqEO1yrfVPjA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@oxlint/binding-linux-riscv64-gnu@1.56.0': resolution: {integrity: sha512-j0CcMBOgV6KsRaBdsebIeiy7hCjEvq2KdEsiULf2LZqAq0v1M1lWjelhCV57LxsqaIGChXFuFJ0RiFrSRHPhSg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2054,6 +2103,13 @@ packages: os: [linux] libc: [glibc] + '@oxlint/binding-linux-riscv64-gnu@1.58.0': + resolution: {integrity: sha512-X9J+kr3gIC9FT8GuZt0ekzpNUtkBVzMVU4KiKDSlocyQuEgi3gBbXYN8UkQiV77FTusLDPsovjo95YedHr+3yg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@oxlint/binding-linux-riscv64-musl@1.56.0': resolution: {integrity: sha512-7VDOiL8cDG3DQ/CY3yKjbV1c4YPvc4vH8qW09Vv+5ukq3l/Kcyr6XGCd5NvxUmxqDb2vjMpM+eW/4JrEEsUetA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2061,6 +2117,13 @@ packages: os: [linux] libc: [musl] + '@oxlint/binding-linux-riscv64-musl@1.58.0': + resolution: {integrity: sha512-CDze3pi1OO3Wvb/QsXjmLEY4XPKGM6kIo82ssNOgmcl1IdndF9VSGAE38YLhADWmOac7fjqhBw82LozuUVxD0Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@oxlint/binding-linux-s390x-gnu@1.56.0': resolution: {integrity: sha512-JGRpX0M+ikD3WpwJ7vKcHKV6Kg0dT52BW2Eu2BupXotYeqGXBrbY+QPkAyKO6MNgKozyTNaRh3r7g+VWgyAQYQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2068,6 +2131,13 @@ packages: os: [linux] libc: [glibc] + '@oxlint/binding-linux-s390x-gnu@1.58.0': + resolution: {integrity: sha512-b/89glbxFaEAcA6Uf1FvCNecBJEgcUTsV1quzrqXM/o4R1M4u+2KCVuyGCayN2UpsRWtGGLb+Ver0tBBpxaPog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@oxlint/binding-linux-x64-gnu@1.56.0': resolution: {integrity: sha512-dNaICPvtmuxFP/VbqdofrLqdS3bM/AKJN3LMJD52si44ea7Be1cBk6NpfIahaysG9Uo+L98QKddU9CD5L8UHnQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2075,6 +2145,13 @@ packages: os: [linux] libc: [glibc] + '@oxlint/binding-linux-x64-gnu@1.58.0': + resolution: {integrity: sha512-0/yYpkq9VJFCEcuRlrViGj8pJUFFvNS4EkEREaN7CB1EcLXJIaVSSa5eCihwBGXtOZxhnblWgxks9juRdNQI7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@oxlint/binding-linux-x64-musl@1.56.0': resolution: {integrity: sha512-pF1vOtM+GuXmbklM1hV8WMsn6tCNPvkUzklj/Ej98JhlanbmA2RB1BILgOpwSuCTRTIYx2MXssmEyQQ90QF5aA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2082,30 +2159,61 @@ packages: os: [linux] libc: [musl] + '@oxlint/binding-linux-x64-musl@1.58.0': + resolution: {integrity: sha512-hr6FNvmcAXiH+JxSvaJ4SJ1HofkdqEElXICW9sm3/Rd5eC3t7kzvmLyRAB3NngKO2wzXRCAm4Z/mGWfrsS4X8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@oxlint/binding-openharmony-arm64@1.56.0': resolution: {integrity: sha512-bp8NQ4RE6fDIFLa4bdBiOA+TAvkNkg+rslR+AvvjlLTYXLy9/uKAYLQudaQouWihLD/hgkrXIKKzXi5IXOewwg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@oxlint/binding-openharmony-arm64@1.58.0': + resolution: {integrity: sha512-R+O368VXgRql1K6Xar+FEo7NEwfo13EibPMoTv3sesYQedRXd6m30Dh/7lZMxnrQVFfeo4EOfYIP4FpcgWQNHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@oxlint/binding-win32-arm64-msvc@1.56.0': resolution: {integrity: sha512-PxT4OJDfMOQBzo3OlzFb9gkoSD+n8qSBxyVq2wQSZIHFQYGEqIRTo9M0ZStvZm5fdhMqaVYpOnJvH2hUMEDk/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@oxlint/binding-win32-arm64-msvc@1.58.0': + resolution: {integrity: sha512-Q0FZiAY/3c4YRj4z3h9K1PgaByrifrfbBoODSeX7gy97UtB7pySPUQfC2B/GbxWU6k7CzQrRy5gME10PltLAFQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@oxlint/binding-win32-ia32-msvc@1.56.0': resolution: {integrity: sha512-PTRy6sIEPqy2x8PTP1baBNReN/BNEFmde0L+mYeHmjXE1Vlcc9+I5nsqENsB2yAm5wLkzPoTNCMY/7AnabT4/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] + '@oxlint/binding-win32-ia32-msvc@1.58.0': + resolution: {integrity: sha512-Y8FKBABrSPp9H0QkRLHDHOSUgM/309a3IvOVgPcVxYcX70wxJrk608CuTg7w+C6vEd724X5wJoNkBcGYfH7nNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + '@oxlint/binding-win32-x64-msvc@1.56.0': resolution: {integrity: sha512-ZHa0clocjLmIDr+1LwoWtxRcoYniAvERotvwKUYKhH41NVfl0Y4LNbyQkwMZzwDvKklKGvGZ5+DAG58/Ik47tQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@oxlint/binding-win32-x64-msvc@1.58.0': + resolution: {integrity: sha512-bCn5rbiz5My+Bj7M09sDcnqW0QJyINRVxdZ65x1/Y2tGrMwherwK/lpk+HRQCKvXa8pcaQdF5KY5j54VGZLwNg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -2118,6 +2226,9 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@remix-run/router@1.23.1': resolution: {integrity: sha512-vDbaOzF7yT2Qs4vO6XV1MHcJv+3dgR1sT+l3B8xxOVhUC336prMvqrvsLL/9Dnw2xr6Qhz4J0dmS0llNAbnUmQ==} engines: {node: '>=14.0.0'} @@ -2306,36 +2417,6 @@ packages: '@types/react-dom': optional: true - '@turbo/darwin-64@2.8.21': - resolution: {integrity: sha512-kfGoM0Iw8ZNZpbds+4IzOe0hjvHldqJwUPRAjXJi3KBxg/QOZL95N893SRoMtf2aJ+jJ3dk32yPkp8rvcIjP9g==} - cpu: [x64] - os: [darwin] - - '@turbo/darwin-arm64@2.8.21': - resolution: {integrity: sha512-o9HEflxUEyr987x0cTUzZBhDOyL6u95JmdmlkH2VyxAw7zq2sdtM5e72y9ufv2N5SIoOBw1fVn9UES5VY5H6vQ==} - cpu: [arm64] - os: [darwin] - - '@turbo/linux-64@2.8.21': - resolution: {integrity: sha512-uTxlCcXWy5h1fSSymP8XSJ+AudzEHMDV3IDfKX7+DGB8kgJ+SLoTUAH7z4OFA7I/l2sznz0upPdbNNZs91YMag==} - cpu: [x64] - os: [linux] - - '@turbo/linux-arm64@2.8.21': - resolution: {integrity: sha512-cdHIcxNcihHHkCHp0Y4Zb60K4Qz+CK4xw1gb6s/t/9o4SMeMj+hTBCtoW6QpPnl9xPYmxuTou8Zw6+cylTnREg==} - cpu: [arm64] - os: [linux] - - '@turbo/windows-64@2.8.21': - resolution: {integrity: sha512-/iBj4OzbqEY8CX+eaeKbBTMZv2CLXNrt0692F7HnK7LcyYwyDecaAiSET6ZzL4opT7sbwkKvzAC/fhqT3Quu1A==} - cpu: [x64] - os: [win32] - - '@turbo/windows-arm64@2.8.21': - resolution: {integrity: sha512-95tMA/ZbIidJFUUtkmqioQ1gf3n3I1YbRP3ZgVdWTVn2qVbkodcIdGXBKRHHrIbRsLRl99SiHi/L7IxhpZDagQ==} - cpu: [arm64] - os: [win32] - '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -2484,6 +2565,143 @@ packages: '@vitest/utils@4.1.2': resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} + '@voidzero-dev/vite-plus-core@0.1.15': + resolution: {integrity: sha512-0qAbqwcvQwiC8xGKSSuFtsjJUEM4LZzpXF7dffRazghGEQ8HH8NAvVryp/PiMSFwreJlV3rujwL4amKjnwCHpg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@tsdown/css': 0.21.7 + '@tsdown/exe': 0.21.7 + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 + jiti: '>=1.21.0' + less: ^4.0.0 + publint: ^0.3.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + typescript: ^5.0.0 || ^6.0.0 + unplugin-unused: ^0.5.0 + yaml: ^2.4.2 + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@tsdown/css': + optional: true + '@tsdown/exe': + optional: true + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + publint: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + yaml: + optional: true + + '@voidzero-dev/vite-plus-darwin-arm64@0.1.15': + resolution: {integrity: sha512-arFq8phXg96rQ5J+FYvkBYdEGxIhP1ePAXlUeQY2hV8hJPzse+CdxusWxcjfpTgvFi+dpsKzE4KSNS22PyBo7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@voidzero-dev/vite-plus-darwin-x64@0.1.15': + resolution: {integrity: sha512-2eY+gTEIZvLH33nQmcL2tKlf+iHfClaqaSMYIlUpTp/CN+xqh4Ir4y2vN1XGEuFDIW0FshSZTg3ulPtduneEDA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@voidzero-dev/vite-plus-linux-arm64-gnu@0.1.15': + resolution: {integrity: sha512-jJgz84pp61oHeXAYIUXKsVwQsMQ7NHK0+dBe6v1Q+Z034xXsyBrxi/JASSeVmCpAd6CN+xzOCsfMyn3whVTTxQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@voidzero-dev/vite-plus-linux-arm64-musl@0.1.15': + resolution: {integrity: sha512-F0Wig+We0ERhGecf3fDIwM/kfqT0vP2htH0vKUnV/inHIVbPc1MsrjcExX1eJ6KFSp5YTfchRN8HGecqtsudPA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@voidzero-dev/vite-plus-linux-x64-gnu@0.1.15': + resolution: {integrity: sha512-aT5Yr2GphvRjoc2URmELDqjWwhe5VPvyy15Tzum+jPhEjY4I/lPXxKXEROjQe3TIv6MmFSHCe3oNCSaFdUE1pA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@voidzero-dev/vite-plus-linux-x64-musl@0.1.15': + resolution: {integrity: sha512-Q6qMBMdVp5v84YVzFvMUpzVIHLfJuwZQR/KUtAOn/hzpfNITigKR2GrZZDgQvszFW+0CPhDFcK3kqLkxlJCdFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@voidzero-dev/vite-plus-test@0.1.15': + resolution: {integrity: sha512-jxMUEX6PDpzMUz+KOVOoB8HiODMf5mWjH19pof0k9l/RZT4iLDyVXB+p9PoWjbVrEMMGzq9BTOVob7wfOZeZEA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/ui': 4.1.2 + happy-dom: '*' + jsdom: '*' + vite: 8.0.3 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + '@voidzero-dev/vite-plus-win32-arm64-msvc@0.1.15': + resolution: {integrity: sha512-EePrs+NIUy3gE60qaXPXzj8mw+JAXEBfGKsfweYBgNK6jo9ZXZto5ViKTuQsVVuWLVaELZSjoudbkzXB8wnJoQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@voidzero-dev/vite-plus-win32-x64-msvc@0.1.15': + resolution: {integrity: sha512-vfYfwOG/5a/WUtgGrbUCatRkc5x0Rq/9GDlCzQQIAFGDB5BfyIjGbdCOqamQWOh+yQbeOHwvgAhqjZ7Dv1oo/w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -2583,6 +2801,10 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} + cac@7.0.0: + resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} + engines: {node: '>=20.19.0'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2811,6 +3033,9 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} @@ -3216,6 +3441,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -3396,6 +3624,10 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3454,13 +3686,13 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - oxfmt@0.42.0: - resolution: {integrity: sha512-QhejGErLSMReNuZ6vxgFHDyGoPbjTRNi6uGHjy0cvIjOQFqD6xmr/T+3L41ixR3NIgzcNiJ6ylQKpvShTgDfqg==} + oxfmt@0.43.0: + resolution: {integrity: sha512-KTYNG5ISfHSdmeZ25Xzb3qgz9EmQvkaGAxgBY/p38+ZiAet3uZeu7FnMwcSQJg152Qwl0wnYAxDc+Z/H6cvrwA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - oxlint-tsgolint@0.17.4: - resolution: {integrity: sha512-4F/NXJiK2KnK4LQiULUPXRzVq0LOfextGvwCVRW1VKQbF5epI3MDMEGVAl5XjAGL6IFc7xBc/eVA95wczPeEQg==} + oxlint-tsgolint@0.18.1: + resolution: {integrity: sha512-Hgb0wMfuXBYL0ddY+1hAG8IIfC40ADwPnBuUaC6ENAuCtTF4dHwsy7mCYtQ2e7LoGvfoSJRY0+kqQRiembJ/jQ==} hasBin: true oxlint@1.56.0: @@ -3473,6 +3705,16 @@ packages: oxlint-tsgolint: optional: true + oxlint@1.58.0: + resolution: {integrity: sha512-t4s9leczDMqlvOSjnbCQe7gtoLkWgBGZ7sBdCJ9EOj5IXFSG/X7OAzK4yuH4iW+4cAYe8kLFbC8tuYMwWZm+Cg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.18.0' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -3577,6 +3819,14 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + pixelmatch@7.1.0: + resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} + hasBin: true + + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + postcss@8.5.8: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} @@ -3797,6 +4047,10 @@ packages: simple-git@3.33.0: resolution: {integrity: sha512-D4V/tGC2sjsoNhoMybKyGoE+v8A60hRawKQ1iFRA1zwuDgGZCBJ4ByOzZ5J8joBbi4Oam0qiPH+GhzmSBwbJng==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -3942,6 +4196,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + tough-cookie@6.0.1: resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} @@ -3966,10 +4224,6 @@ packages: typescript: optional: true - turbo@2.8.21: - resolution: {integrity: sha512-FlJ8OD5Qcp0jTAM7E4a/RhUzRNds2GzKlyxHKA6N247VLy628rrxAGlMpIXSz6VB430+TiQDJ/SMl6PL1lu6wQ==} - hasBin: true - type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} @@ -4043,6 +4297,11 @@ packages: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} + vite-plus@0.1.15: + resolution: {integrity: sha512-PBUvTq4D4BJcuusCA3mrSQmXcGVdPX9CIPpS7Y6+T+LbDsrmAZ+ITl9FzuE6zXvpT6Nht9cpHtwOLJw7m3adog==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + vite@8.0.3: resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -5674,140 +5933,199 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 + '@oxc-project/runtime@0.122.0': {} + '@oxc-project/types@0.122.0': {} - '@oxfmt/binding-android-arm-eabi@0.42.0': + '@oxfmt/binding-android-arm-eabi@0.43.0': optional: true - '@oxfmt/binding-android-arm64@0.42.0': + '@oxfmt/binding-android-arm64@0.43.0': optional: true - '@oxfmt/binding-darwin-arm64@0.42.0': + '@oxfmt/binding-darwin-arm64@0.43.0': optional: true - '@oxfmt/binding-darwin-x64@0.42.0': + '@oxfmt/binding-darwin-x64@0.43.0': optional: true - '@oxfmt/binding-freebsd-x64@0.42.0': + '@oxfmt/binding-freebsd-x64@0.43.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.42.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.43.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.42.0': + '@oxfmt/binding-linux-arm-musleabihf@0.43.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.42.0': + '@oxfmt/binding-linux-arm64-gnu@0.43.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.42.0': + '@oxfmt/binding-linux-arm64-musl@0.43.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.42.0': + '@oxfmt/binding-linux-ppc64-gnu@0.43.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.42.0': + '@oxfmt/binding-linux-riscv64-gnu@0.43.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.42.0': + '@oxfmt/binding-linux-riscv64-musl@0.43.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.42.0': + '@oxfmt/binding-linux-s390x-gnu@0.43.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.42.0': + '@oxfmt/binding-linux-x64-gnu@0.43.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.42.0': + '@oxfmt/binding-linux-x64-musl@0.43.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.42.0': + '@oxfmt/binding-openharmony-arm64@0.43.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.42.0': + '@oxfmt/binding-win32-arm64-msvc@0.43.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.42.0': + '@oxfmt/binding-win32-ia32-msvc@0.43.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.42.0': + '@oxfmt/binding-win32-x64-msvc@0.43.0': optional: true - '@oxlint-tsgolint/darwin-arm64@0.17.4': + '@oxlint-tsgolint/darwin-arm64@0.18.1': optional: true - '@oxlint-tsgolint/darwin-x64@0.17.4': + '@oxlint-tsgolint/darwin-x64@0.18.1': optional: true - '@oxlint-tsgolint/linux-arm64@0.17.4': + '@oxlint-tsgolint/linux-arm64@0.18.1': optional: true - '@oxlint-tsgolint/linux-x64@0.17.4': + '@oxlint-tsgolint/linux-x64@0.18.1': optional: true - '@oxlint-tsgolint/win32-arm64@0.17.4': + '@oxlint-tsgolint/win32-arm64@0.18.1': optional: true - '@oxlint-tsgolint/win32-x64@0.17.4': + '@oxlint-tsgolint/win32-x64@0.18.1': optional: true '@oxlint/binding-android-arm-eabi@1.56.0': optional: true + '@oxlint/binding-android-arm-eabi@1.58.0': + optional: true + '@oxlint/binding-android-arm64@1.56.0': optional: true + '@oxlint/binding-android-arm64@1.58.0': + optional: true + '@oxlint/binding-darwin-arm64@1.56.0': optional: true + '@oxlint/binding-darwin-arm64@1.58.0': + optional: true + '@oxlint/binding-darwin-x64@1.56.0': optional: true + '@oxlint/binding-darwin-x64@1.58.0': + optional: true + '@oxlint/binding-freebsd-x64@1.56.0': optional: true + '@oxlint/binding-freebsd-x64@1.58.0': + optional: true + '@oxlint/binding-linux-arm-gnueabihf@1.56.0': optional: true + '@oxlint/binding-linux-arm-gnueabihf@1.58.0': + optional: true + '@oxlint/binding-linux-arm-musleabihf@1.56.0': optional: true + '@oxlint/binding-linux-arm-musleabihf@1.58.0': + optional: true + '@oxlint/binding-linux-arm64-gnu@1.56.0': optional: true + '@oxlint/binding-linux-arm64-gnu@1.58.0': + optional: true + '@oxlint/binding-linux-arm64-musl@1.56.0': optional: true + '@oxlint/binding-linux-arm64-musl@1.58.0': + optional: true + '@oxlint/binding-linux-ppc64-gnu@1.56.0': optional: true + '@oxlint/binding-linux-ppc64-gnu@1.58.0': + optional: true + '@oxlint/binding-linux-riscv64-gnu@1.56.0': optional: true + '@oxlint/binding-linux-riscv64-gnu@1.58.0': + optional: true + '@oxlint/binding-linux-riscv64-musl@1.56.0': optional: true + '@oxlint/binding-linux-riscv64-musl@1.58.0': + optional: true + '@oxlint/binding-linux-s390x-gnu@1.56.0': optional: true + '@oxlint/binding-linux-s390x-gnu@1.58.0': + optional: true + '@oxlint/binding-linux-x64-gnu@1.56.0': optional: true + '@oxlint/binding-linux-x64-gnu@1.58.0': + optional: true + '@oxlint/binding-linux-x64-musl@1.56.0': optional: true + '@oxlint/binding-linux-x64-musl@1.58.0': + optional: true + '@oxlint/binding-openharmony-arm64@1.56.0': optional: true + '@oxlint/binding-openharmony-arm64@1.58.0': + optional: true + '@oxlint/binding-win32-arm64-msvc@1.56.0': optional: true + '@oxlint/binding-win32-arm64-msvc@1.58.0': + optional: true + '@oxlint/binding-win32-ia32-msvc@1.56.0': optional: true + '@oxlint/binding-win32-ia32-msvc@1.58.0': + optional: true + '@oxlint/binding-win32-x64-msvc@1.56.0': optional: true + '@oxlint/binding-win32-x64-msvc@1.58.0': + optional: true + '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -5820,6 +6138,8 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 + '@polka/url@1.0.0-next.29': {} + '@remix-run/router@1.23.1': {} '@rolldown/binding-android-arm64@1.0.0-rc.12': @@ -5998,24 +6318,6 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@turbo/darwin-64@2.8.21': - optional: true - - '@turbo/darwin-arm64@2.8.21': - optional: true - - '@turbo/linux-64@2.8.21': - optional: true - - '@turbo/linux-arm64@2.8.21': - optional: true - - '@turbo/windows-64@2.8.21': - optional: true - - '@turbo/windows-arm64@2.8.21': - optional: true - '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -6172,6 +6474,85 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 + '@voidzero-dev/vite-plus-core@0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(typescript@6.0.2)(yaml@2.8.3)': + dependencies: + '@oxc-project/runtime': 0.122.0 + '@oxc-project/types': 0.122.0 + lightningcss: 1.32.0 + postcss: 8.5.8 + optionalDependencies: + '@types/node': 25.3.5 + esbuild: 0.27.2 + fsevents: 2.3.3 + jiti: 2.6.1 + typescript: 6.0.2 + yaml: 2.8.3 + + '@voidzero-dev/vite-plus-darwin-arm64@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-darwin-x64@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-linux-arm64-gnu@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-linux-arm64-musl@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-linux-x64-gnu@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-linux-x64-musl@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-test@0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(happy-dom@20.8.9)(jiti@2.6.1)(jsdom@29.0.1)(typescript@6.0.2)(vite@8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3))(yaml@2.8.3)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@voidzero-dev/vite-plus-core': 0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(typescript@6.0.2)(yaml@2.8.3) + es-module-lexer: 1.7.0 + obug: 2.1.1 + pixelmatch: 7.1.0 + pngjs: 7.0.0 + sirv: 3.0.2 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + vite: 8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3) + ws: 8.19.0 + optionalDependencies: + '@types/node': 25.3.5 + happy-dom: 20.8.9 + jsdom: 29.0.1 + transitivePeerDependencies: + - '@arethetypeswrong/core' + - '@tsdown/css' + - '@tsdown/exe' + - '@vitejs/devtools' + - bufferutil + - esbuild + - jiti + - less + - publint + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - typescript + - unplugin-unused + - utf-8-validate + - yaml + + '@voidzero-dev/vite-plus-win32-arm64-msvc@0.1.15': + optional: true + + '@voidzero-dev/vite-plus-win32-x64-msvc@0.1.15': + optional: true + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -6271,6 +6652,8 @@ snapshots: builtin-modules@5.0.0: {} + cac@7.0.0: {} + callsites@3.1.0: {} caniuse-lite@1.0.30001761: {} @@ -6462,6 +6845,8 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} esbuild-plugin-browserslist@2.0.0(browserslist@4.28.1)(esbuild@0.27.2): @@ -6914,6 +7299,8 @@ snapshots: json5@2.2.3: {} + jsonc-parser@3.3.1: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -7063,6 +7450,8 @@ snapshots: mri@1.2.0: {} + mrmime@2.0.1: {} + ms@2.1.3: {} nanoid@3.3.11: {} @@ -7110,40 +7499,40 @@ snapshots: outdent@0.5.0: {} - oxfmt@0.42.0: + oxfmt@0.43.0: dependencies: tinypool: 2.1.0 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.42.0 - '@oxfmt/binding-android-arm64': 0.42.0 - '@oxfmt/binding-darwin-arm64': 0.42.0 - '@oxfmt/binding-darwin-x64': 0.42.0 - '@oxfmt/binding-freebsd-x64': 0.42.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.42.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.42.0 - '@oxfmt/binding-linux-arm64-gnu': 0.42.0 - '@oxfmt/binding-linux-arm64-musl': 0.42.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.42.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.42.0 - '@oxfmt/binding-linux-riscv64-musl': 0.42.0 - '@oxfmt/binding-linux-s390x-gnu': 0.42.0 - '@oxfmt/binding-linux-x64-gnu': 0.42.0 - '@oxfmt/binding-linux-x64-musl': 0.42.0 - '@oxfmt/binding-openharmony-arm64': 0.42.0 - '@oxfmt/binding-win32-arm64-msvc': 0.42.0 - '@oxfmt/binding-win32-ia32-msvc': 0.42.0 - '@oxfmt/binding-win32-x64-msvc': 0.42.0 - - oxlint-tsgolint@0.17.4: + '@oxfmt/binding-android-arm-eabi': 0.43.0 + '@oxfmt/binding-android-arm64': 0.43.0 + '@oxfmt/binding-darwin-arm64': 0.43.0 + '@oxfmt/binding-darwin-x64': 0.43.0 + '@oxfmt/binding-freebsd-x64': 0.43.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.43.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.43.0 + '@oxfmt/binding-linux-arm64-gnu': 0.43.0 + '@oxfmt/binding-linux-arm64-musl': 0.43.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.43.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.43.0 + '@oxfmt/binding-linux-riscv64-musl': 0.43.0 + '@oxfmt/binding-linux-s390x-gnu': 0.43.0 + '@oxfmt/binding-linux-x64-gnu': 0.43.0 + '@oxfmt/binding-linux-x64-musl': 0.43.0 + '@oxfmt/binding-openharmony-arm64': 0.43.0 + '@oxfmt/binding-win32-arm64-msvc': 0.43.0 + '@oxfmt/binding-win32-ia32-msvc': 0.43.0 + '@oxfmt/binding-win32-x64-msvc': 0.43.0 + + oxlint-tsgolint@0.18.1: optionalDependencies: - '@oxlint-tsgolint/darwin-arm64': 0.17.4 - '@oxlint-tsgolint/darwin-x64': 0.17.4 - '@oxlint-tsgolint/linux-arm64': 0.17.4 - '@oxlint-tsgolint/linux-x64': 0.17.4 - '@oxlint-tsgolint/win32-arm64': 0.17.4 - '@oxlint-tsgolint/win32-x64': 0.17.4 - - oxlint@1.56.0(oxlint-tsgolint@0.17.4): + '@oxlint-tsgolint/darwin-arm64': 0.18.1 + '@oxlint-tsgolint/darwin-x64': 0.18.1 + '@oxlint-tsgolint/linux-arm64': 0.18.1 + '@oxlint-tsgolint/linux-x64': 0.18.1 + '@oxlint-tsgolint/win32-arm64': 0.18.1 + '@oxlint-tsgolint/win32-x64': 0.18.1 + + oxlint@1.56.0(oxlint-tsgolint@0.18.1): optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.56.0 '@oxlint/binding-android-arm64': 1.56.0 @@ -7164,7 +7553,30 @@ snapshots: '@oxlint/binding-win32-arm64-msvc': 1.56.0 '@oxlint/binding-win32-ia32-msvc': 1.56.0 '@oxlint/binding-win32-x64-msvc': 1.56.0 - oxlint-tsgolint: 0.17.4 + oxlint-tsgolint: 0.18.1 + + oxlint@1.58.0(oxlint-tsgolint@0.18.1): + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.58.0 + '@oxlint/binding-android-arm64': 1.58.0 + '@oxlint/binding-darwin-arm64': 1.58.0 + '@oxlint/binding-darwin-x64': 1.58.0 + '@oxlint/binding-freebsd-x64': 1.58.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.58.0 + '@oxlint/binding-linux-arm-musleabihf': 1.58.0 + '@oxlint/binding-linux-arm64-gnu': 1.58.0 + '@oxlint/binding-linux-arm64-musl': 1.58.0 + '@oxlint/binding-linux-ppc64-gnu': 1.58.0 + '@oxlint/binding-linux-riscv64-gnu': 1.58.0 + '@oxlint/binding-linux-riscv64-musl': 1.58.0 + '@oxlint/binding-linux-s390x-gnu': 1.58.0 + '@oxlint/binding-linux-x64-gnu': 1.58.0 + '@oxlint/binding-linux-x64-musl': 1.58.0 + '@oxlint/binding-openharmony-arm64': 1.58.0 + '@oxlint/binding-win32-arm64-msvc': 1.58.0 + '@oxlint/binding-win32-ia32-msvc': 1.58.0 + '@oxlint/binding-win32-x64-msvc': 1.58.0 + oxlint-tsgolint: 0.18.1 p-filter@2.1.0: dependencies: @@ -7248,6 +7660,12 @@ snapshots: pify@4.0.1: {} + pixelmatch@7.1.0: + dependencies: + pngjs: 7.0.0 + + pngjs@7.0.0: {} + postcss@8.5.8: dependencies: nanoid: 3.3.11 @@ -7478,6 +7896,12 @@ snapshots: transitivePeerDependencies: - supports-color + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + slash@3.0.0: {} slash@5.1.0: {} @@ -7596,6 +8020,8 @@ snapshots: dependencies: is-number: 7.0.0 + totalist@3.0.1: {} + tough-cookie@6.0.1: dependencies: tldts: 7.0.19 @@ -7612,15 +8038,6 @@ snapshots: optionalDependencies: typescript: 6.0.2 - turbo@2.8.21: - optionalDependencies: - '@turbo/darwin-64': 2.8.21 - '@turbo/darwin-arm64': 2.8.21 - '@turbo/linux-64': 2.8.21 - '@turbo/linux-arm64': 2.8.21 - '@turbo/windows-64': 2.8.21 - '@turbo/windows-arm64': 2.8.21 - type-fest@4.41.0: {} type-fest@5.4.4: @@ -7673,6 +8090,55 @@ snapshots: validate-npm-package-name@6.0.2: {} + vite-plus@0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(happy-dom@20.8.9)(jiti@2.6.1)(jsdom@29.0.1)(typescript@6.0.2)(vite@8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3))(yaml@2.8.3): + dependencies: + '@oxc-project/types': 0.122.0 + '@voidzero-dev/vite-plus-core': 0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(typescript@6.0.2)(yaml@2.8.3) + '@voidzero-dev/vite-plus-test': 0.1.15(@types/node@25.3.5)(esbuild@0.27.2)(happy-dom@20.8.9)(jiti@2.6.1)(jsdom@29.0.1)(typescript@6.0.2)(vite@8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3))(yaml@2.8.3) + cac: 7.0.0 + cross-spawn: 7.0.6 + jsonc-parser: 3.3.1 + oxfmt: 0.43.0 + oxlint: 1.58.0(oxlint-tsgolint@0.18.1) + oxlint-tsgolint: 0.18.1 + picocolors: 1.1.1 + optionalDependencies: + '@voidzero-dev/vite-plus-darwin-arm64': 0.1.15 + '@voidzero-dev/vite-plus-darwin-x64': 0.1.15 + '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.1.15 + '@voidzero-dev/vite-plus-linux-arm64-musl': 0.1.15 + '@voidzero-dev/vite-plus-linux-x64-gnu': 0.1.15 + '@voidzero-dev/vite-plus-linux-x64-musl': 0.1.15 + '@voidzero-dev/vite-plus-win32-arm64-msvc': 0.1.15 + '@voidzero-dev/vite-plus-win32-x64-msvc': 0.1.15 + transitivePeerDependencies: + - '@arethetypeswrong/core' + - '@edge-runtime/vm' + - '@opentelemetry/api' + - '@tsdown/css' + - '@tsdown/exe' + - '@types/node' + - '@vitejs/devtools' + - '@vitest/ui' + - bufferutil + - esbuild + - happy-dom + - jiti + - jsdom + - less + - publint + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - typescript + - unplugin-unused + - utf-8-validate + - vite + - yaml + vite@8.0.3(@types/node@25.3.5)(esbuild@0.27.2)(jiti@2.6.1)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8f72a14b7..2c3d38c4f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -67,6 +67,7 @@ catalog: typescript: 6.0.2 use-deep-compare-effect: 1.8.1 vite: 8.0.3 + vite-plus: 0.1.15 vitest: 4.1.2 vitest-localstorage-mock: 0.1.2 wait-for-expect: 4.0.0 diff --git a/turbo.json b/turbo.json deleted file mode 100644 index 4dee6ac37..000000000 --- a/turbo.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "globalDependencies": ["tsconfig.json"], - "globalEnv": ["ENVIRONMENT"], - "tasks": { - "//#format": {}, - "//#lint:fix": { - "cache": false - }, - "build": { - "dependsOn": ["^build"], - "inputs": ["$TURBO_DEFAULT$"], - "outputs": ["build/**", "dist/**", "!.next/cache/**", "out/**"] - }, - "test:types": { - "dependsOn": ["^build"] - }, - "test:unit": { - "dependsOn": ["^build"], - "passThroughEnv": ["VITEST_*"] - }, - "test:unit:coverage": { - "dependsOn": ["^build"], - "passThroughEnv": ["VITEST_*"] - }, - - "typecheck": { - "dependsOn": ["^build"], - "inputs": ["**/*.{ts,tsx}", "tsconfig.json"] - }, - "typecheck:generate": { - "dependsOn": ["^build"], - "inputs": ["**/*.{ts,tsx}"] - }, - "typecheck:generate:go": { - "dependsOn": ["^build"], - "inputs": ["**/*.{ts,tsx}"] - }, - "typecheck:go": { - "dependsOn": ["^build"], - "inputs": ["**/*.{ts,tsx}"] - } - }, - "ui": "stream" -} diff --git a/vite.config.ts b/vite.config.ts index c6fa3425d..cfb4fcb35 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,6 @@ import react from '@vitejs/plugin-react' -// import browserslist from 'browserslist' import { readPackage } from 'read-pkg' -import type { UserConfig } from 'vite' -import { defineConfig } from 'vite' +import { defineConfig } from 'vite-plus' const pkg = await readPackage() @@ -21,7 +19,7 @@ const external = (id: string) => { return isExternal && !isBundled } -export const defaultConfig: UserConfig = { +export default defineConfig({ build: { lib: { entry: 'src/index.ts', @@ -58,6 +56,49 @@ export const defaultConfig: UserConfig = { jsxRuntime: 'automatic', }), ], -} + run: { + cache: { + scripts: true, + tasks: true, + }, + }, +}) + +export const defaultConfig = { + build: { + lib: { + entry: 'src/index.ts', + fileName: (format: string, filename: string) => { + if (format === 'es') { + return `${filename}.js` + } -export default defineConfig(defaultConfig) + return `${filename}.${format}` + }, + formats: ['es'], + name: pkg.name, + }, + license: true, + minify: false, + outDir: 'dist', + rolldownOptions: { + experimental: { + lazyBarrel: false, + }, + external, + output: { + preserveModules: true, + preserveModulesRoot: 'src', + }, + platform: 'browser', + preserveEntrySignatures: 'exports-only', + treeshake: true, + tsconfig: true, + }, + }, + plugins: [ + react({ + jsxRuntime: 'automatic', + }), + ], +}