diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 6874e6515..d8056b4ea 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -37,6 +37,9 @@ jobs: - name: Run type check run: pnpm run type-check + - name: Check core exports + run: pnpm run check-core-exports + build-and-exports: name: Build and Check Exports runs-on: ubuntu-latest diff --git a/.oxlintrc.json b/.oxlintrc.json index dcdff994d..a010de25e 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -52,7 +52,7 @@ { "files": [ "scripts/**", - "packages/core/src/headlessForm.ts", + "packages/core/src/form/headlessForm.ts", "src/common/createHeadlessForm.tsx", "src/common/headlessForm.ts", "src/common/useHeadlessForm.ts", diff --git a/knip.json b/knip.json new file mode 100644 index 000000000..b6f0a63aa --- /dev/null +++ b/knip.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://unpkg.com/knip@6/schema.json", + "workspaces": { + ".": { + "entry": ["src/index.tsx"], + "project": ["src/**/*.{ts,tsx}"], + "ignore": ["src/client/**"] + }, + "packages/core": { + "project": ["src/**/*.ts"], + "includeEntryExports": true + } + } +} diff --git a/package.json b/package.json index cd6b5af1f..2bd253d9c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "scripts": { "audit": "pnpm audit --audit-level=high", "build": "NODE_ENV=production tsdown --config-loader unrun", - "ci": "pnpm run build && pnpm run check-format && pnpm run check-exports && pnpm run lint && pnpm run type-check && pnpm run test", + "ci": "pnpm run build && pnpm run check-format && pnpm run check-exports && pnpm run check-core-exports && pnpm run lint && pnpm run type-check && pnpm run test", + "check-core-exports": "knip --workspace packages/core --include exports", "check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm --exclude-entrypoints index.css styles.css --profile node16 && pnpm run check-flow-subpaths && pnpm run check-single-schema-form", "check-flow-subpaths": "tsx scripts/check-flow-subpaths.ts", "check-single-schema-form": "tsx scripts/check-single-schema-form.ts", @@ -139,10 +140,10 @@ "zod": "4.6.6" }, "devDependencies": { - "@remoteoss/remote-flows-core": "workspace:*", "@arethetypeswrong/cli": "0.18.5", "@faker-js/faker": "^10.6.0", "@hey-api/openapi-ts": "0.0.0-next-20260824173136", + "@remoteoss/remote-flows-core": "workspace:*", "@testing-library/jest-dom": "7.0.1", "@testing-library/react": "16.3.3", "@testing-library/user-event": "14.6.8", @@ -164,6 +165,7 @@ "glob": "13.0.6", "gzip-size": "7.0.0", "jsdom": "30.1.3", + "knip": "6.44.1", "lodash": "4.18.1", "msw": "3.0.3", "oxfmt": "0.74.0", diff --git a/packages/core/src/invoiceSchedules/constants.ts b/packages/core/src/domains/invoice-schedule/constants.ts similarity index 100% rename from packages/core/src/invoiceSchedules/constants.ts rename to packages/core/src/domains/invoice-schedule/constants.ts diff --git a/packages/core/src/invoiceSchedules/invoiceSchedules.test.ts b/packages/core/src/domains/invoice-schedule/invoiceSchedule.test.ts similarity index 99% rename from packages/core/src/invoiceSchedules/invoiceSchedules.test.ts rename to packages/core/src/domains/invoice-schedule/invoiceSchedule.test.ts index b92814aa0..f833182ba 100644 --- a/packages/core/src/invoiceSchedules/invoiceSchedules.test.ts +++ b/packages/core/src/domains/invoice-schedule/invoiceSchedule.test.ts @@ -9,8 +9,8 @@ import { buildRecurrence, toOrdinal, } from './utils'; -import { createHeadlessForm } from '../headlessForm'; -import type { $TSFixMe } from '../types'; +import { createHeadlessForm } from '../../form/headlessForm'; +import type { $TSFixMe } from '../../types'; const baseValues = { currency: 'USD', diff --git a/packages/core/src/invoiceSchedules/jsonSchema.ts b/packages/core/src/domains/invoice-schedule/jsonSchema.ts similarity index 97% rename from packages/core/src/invoiceSchedules/jsonSchema.ts rename to packages/core/src/domains/invoice-schedule/jsonSchema.ts index 797fd05a2..19b196380 100644 --- a/packages/core/src/invoiceSchedules/jsonSchema.ts +++ b/packages/core/src/domains/invoice-schedule/jsonSchema.ts @@ -526,9 +526,7 @@ export function buildCreateInvoiceScheduleSchema({ { const: PLACEHOLDER_OPTION, // An empty list is an answer — this contractor has no currencies to be - // invoiced in — where no list at all means the fetch has not resolved. Both - // states exist: the flows build the schema once currencies arrive, but the - // static `createInvoiceScheduleSchema` fallback is built without any. + // invoiced in — where no list at all means the fetch has not resolved. // Labelling the empty case "loading" left it looking stuck forever. title: currencies ? 'No currencies available' @@ -743,9 +741,3 @@ export function buildCreateInvoiceScheduleSchema({ ], }; } - -/** - * The schema as the in-flow onboarding step renders it. - * Currencies are substituted at runtime — see `useGetCreateInvoiceScheduleSchema`. - */ -export const createInvoiceScheduleSchema = buildCreateInvoiceScheduleSchema(); diff --git a/packages/core/src/invoiceSchedules/types.ts b/packages/core/src/domains/invoice-schedule/types.ts similarity index 100% rename from packages/core/src/invoiceSchedules/types.ts rename to packages/core/src/domains/invoice-schedule/types.ts diff --git a/packages/core/src/invoiceSchedules/utils.ts b/packages/core/src/domains/invoice-schedule/utils.ts similarity index 100% rename from packages/core/src/invoiceSchedules/utils.ts rename to packages/core/src/domains/invoice-schedule/utils.ts diff --git a/packages/core/src/form.test.ts b/packages/core/src/form/form.test.ts similarity index 100% rename from packages/core/src/form.test.ts rename to packages/core/src/form/form.test.ts diff --git a/packages/core/src/form.ts b/packages/core/src/form/form.ts similarity index 95% rename from packages/core/src/form.ts rename to packages/core/src/form/form.ts index 810e47710..8b6f64d95 100644 --- a/packages/core/src/form.ts +++ b/packages/core/src/form/form.ts @@ -4,11 +4,40 @@ import { isWeekend, nextMonday, } from 'date-fns'; -import { supportedTypes } from './fieldTypes'; -import { isForceValue, isMultiSelect } from './fieldHelpers'; -import { convertFromCents, convertToCents } from './money'; -import { getNestedValue } from './object'; -import type { $TSFixMe, Field, JSFFields } from './types'; +import { supportedTypes } from '../fieldTypes'; +import { isForceValue, isMultiSelect } from '../fieldHelpers'; +import { convertFromCents, convertToCents } from '../money'; +import type { $TSFixMe, Field, JSFFields } from '../types'; + +/** + * Gets a nested value from an object using a dot-notation path string. + * Replacement for lodash.get with support for nested property access. + * @param obj - The object to query + * @param path - The path to the property (e.g., 'user.address.city') + * @param defaultValue - The value to return if the resolved value is undefined + * @returns The resolved value or defaultValue + */ +export function getNestedValue( + obj: unknown, + path: string, + defaultValue?: T, +): T | undefined { + if (obj == null || typeof path !== 'string') { + return defaultValue; + } + + const keys = path.split('.'); + let result: unknown = obj; + + for (const key of keys) { + if (result == null || typeof result !== 'object') { + return defaultValue; + } + result = (result as Record)[key]; + } + + return (result === undefined ? defaultValue : result) as T | undefined; +} const trimStringValues = (values: Record) => Object.entries(values || {}).reduce>( @@ -212,7 +241,7 @@ function getValueToAPITransformer(type: string, convertFiles: FileConverter) { return baseFieldTypesTransformations[type]?.transformValueToAPI; } -export async function parseFormValuesToAPI( +async function parseFormValuesToAPI( formValues: Record = {}, fields: $TSFixMe[], convertFiles: FileConverter, @@ -487,7 +516,7 @@ function cleanUnderscoreFields( return obj; } -export async function parseSubmitValues( +async function parseSubmitValues( formValues: Record, fields: $TSFixMe[], config: { keepInvisibleValues?: boolean; convertFiles: FileConverter }, diff --git a/packages/core/src/headlessForm.test.ts b/packages/core/src/form/headlessForm.test.ts similarity index 91% rename from packages/core/src/headlessForm.test.ts rename to packages/core/src/form/headlessForm.test.ts index 95f13ecfc..c1a2f7391 100644 --- a/packages/core/src/headlessForm.test.ts +++ b/packages/core/src/form/headlessForm.test.ts @@ -1,5 +1,5 @@ import { parseValuesForValidation } from './headlessForm'; -import type { JSONSchemaFormResultWithFieldsets } from './types'; +import type { JSONSchemaFormResultWithFieldsets } from '../types'; describe('parseValuesForValidation', () => { it('converts selected files with the converter it is given', async () => { diff --git a/packages/core/src/headlessForm.ts b/packages/core/src/form/headlessForm.ts similarity index 97% rename from packages/core/src/headlessForm.ts rename to packages/core/src/form/headlessForm.ts index 4a23c6351..cf4cfa4fd 100644 --- a/packages/core/src/headlessForm.ts +++ b/packages/core/src/form/headlessForm.ts @@ -2,7 +2,7 @@ import { createHeadlessForm as baseCreateHeadlessForm, modify, } from '@remoteoss/remote-json-schema-form-kit'; -import { convertToCents } from './money'; +import { convertToCents } from '../money'; import { parseJSFToValidate } from './form'; import type { FileConverter } from './form'; import type { @@ -11,12 +11,9 @@ import type { JSFModify, JSONSchemaFormResultWithFieldsets, $TSFixMe, -} from './types'; +} from '../types'; -export function findFieldsByType( - fields: Record, - type: string, -) { +function findFieldsByType(fields: Record, type: string) { const fieldsNames = []; for (const [key, value] of Object.entries(fields)) { // old schemas use type, new schemas use inputType diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index b87e0b647..423352a78 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,5 +1,4 @@ export { convertFromCents, convertToCents, round } from './money'; -export { supportedTypes } from './fieldTypes'; export { checkFieldHasForcedValue, fieldsetHasVisibleContent, @@ -7,7 +6,6 @@ export { getFieldRenderType, isFieldSkipped, isForceValue, - isMultiSelect, resolveFieldDynamicProperties, } from './fieldHelpers'; export { @@ -15,13 +13,20 @@ export { getFieldsWithFlatFieldsets, getInitialValues, getMinStartDate, + getNestedValue, isDateDisabled, - parseFormValuesToAPI, parseJSFToValidate, - parseSubmitValues, -} from './form'; -export type { FileConverter } from './form'; -export { getNestedValue } from './object'; +} from './form/form'; +export { + buildHeadlessForm, + createHeadlessForm, + parseValuesForValidation, + withFieldsetObjects, +} from './form/headlessForm'; +export type { + HeadlessFormOptions, + HeadlessFormStrategy, +} from './form/headlessForm'; export type { $TSFixMe, Field, @@ -32,19 +37,11 @@ export type { JSONSchemaFormResultWithFieldsets, UploadedFileReference, } from './types'; -export { - buildHeadlessForm, - createHeadlessForm, - findFieldsByType, - parseValuesForValidation, - withFieldsetObjects, -} from './headlessForm'; -export type { HeadlessFormOptions, HeadlessFormStrategy } from './headlessForm'; -export { INVOICE_SCHEDULE_STATUS } from './invoiceSchedules/constants'; -export { buildCreateInvoiceScheduleSchema } from './invoiceSchedules/jsonSchema'; +export { INVOICE_SCHEDULE_STATUS } from './domains/invoice-schedule/constants'; +export { buildCreateInvoiceScheduleSchema } from './domains/invoice-schedule/jsonSchema'; export { buildInvoicePreviewPayload, buildInvoiceSchedulePayload, buildInvoiceScheduleFormValues, -} from './invoiceSchedules/utils'; -export type { ContractorInvoicePreview } from './invoiceSchedules/types'; +} from './domains/invoice-schedule/utils'; +export type { ContractorInvoicePreview } from './domains/invoice-schedule/types'; diff --git a/packages/core/src/object.ts b/packages/core/src/object.ts deleted file mode 100644 index 8f94c1bc2..000000000 --- a/packages/core/src/object.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Gets a nested value from an object using a dot-notation path string. - * Replacement for lodash.get with support for nested property access. - * @param obj - The object to query - * @param path - The path to the property (e.g., 'user.address.city') - * @param defaultValue - The value to return if the resolved value is undefined - * @returns The resolved value or defaultValue - */ -export function getNestedValue( - obj: unknown, - path: string, - defaultValue?: T, -): T | undefined { - if (obj == null || typeof path !== 'string') { - return defaultValue; - } - - const keys = path.split('.'); - let result: unknown = obj; - - for (const key of keys) { - if (result == null || typeof result !== 'object') { - return defaultValue; - } - result = (result as Record)[key]; - } - - return (result === undefined ? defaultValue : result) as T | undefined; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af2c11edc..b59e762f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -304,7 +304,7 @@ importers: version: 14.6.8(@testing-library/dom@10.4.2) '@tsdown/css': specifier: 0.23.0 - version: 0.23.0(jiti@2.7.0)(postcss-import@17.0.0(postcss@8.5.31))(postcss@8.5.31)(tsdown@0.23.0)(tsx@4.23.15) + version: 0.23.0(jiti@2.7.0)(postcss-import@17.0.0(postcss@8.5.31))(postcss@8.5.31)(tsdown@0.23.0)(tsx@4.23.15)(yaml@2.9.1) '@types/jsdom': specifier: 30.0.0 version: 30.0.0 @@ -356,12 +356,15 @@ importers: jsdom: specifier: 30.1.3 version: 30.1.3 + knip: + specifier: 6.44.1 + version: 6.44.1 lodash: specifier: 4.18.1 version: 4.18.1 msw: specifier: 3.0.3 - version: 3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) + version: 3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) oxfmt: specifier: 0.74.0 version: 0.74.0 @@ -379,7 +382,7 @@ importers: version: 0.6.1 tsdown: specifier: 0.23.0 - version: 0.23.0(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.23.0)(tsx@4.23.15)(typescript@7.0.2)(unrun@0.3.1) + version: 0.23.0(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.23.0)(oxc-resolver@11.24.2)(tsx@4.23.15)(typescript@7.0.2)(unrun@0.3.1) tsx: specifier: 4.23.15 version: 4.23.15 @@ -391,7 +394,7 @@ importers: version: 0.3.1 vitest: specifier: 5.0.5 - version: 5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) + version: 5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) packages/core: dependencies: @@ -563,6 +566,15 @@ packages: resolution: {integrity: sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==} engines: {node: '>=20.19.0'} + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@esbuild/aix-ppc64@0.28.2': resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} engines: {node: '>=18'} @@ -854,12 +866,247 @@ packages: resolution: {integrity: sha512-PPZQBiojRuy1jJQoUqbrJhoac47GC1GwRazDrYwwbE70zfqMkOY/5a+Du4hp3vlPUXLt/um4TMcmRabmooAkxw==} engines: {node: '>=22'} + '@napi-rs/wasm-runtime@1.2.7': + resolution: {integrity: sha512-zJccwplOAbgfZju95IUHazLnx9RAPtPN2YGJXI6UbrgeaR9QfPjGrQL6ERkSAtnVCA4Q+83ApGyaX5zdpCaKkQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || 2.0.0-beta.2 || 2.0.0-beta.3 + '@emnapi/runtime': ^1.7.1 || 2.0.0-beta.2 || 2.0.0-beta.3 + '@open-draft/until@3.0.1': resolution: {integrity: sha512-s7/9ELP4aP9YZtW7RJaa0Xf3RISaRH9+EFN18FtykJYRHGNrl8f9ymvoNXzjhrjmftFvkQudtuDU9RYhk0xs3A==} + '@oxc-parser/binding-android-arm-eabi@0.155.0': + resolution: {integrity: sha512-A6xv7hDtnTm+xlZ7utn6rRQpRMJHRhVr3gjRGqlx0RUX84mNk0pAsy6YN/wWhuOTkaZhRrrzaLxf0NfbH77j2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxc-parser/binding-android-arm64@0.155.0': + resolution: {integrity: sha512-T1wWwH9/JI5g7Z4kEQwDOwhToxdDhRyOTklH+uuNpJ16m3MZFmGl+l2rKc0NHQdbVRG2LTOBsNjpW3h1BWytPA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxc-parser/binding-darwin-arm64@0.155.0': + resolution: {integrity: sha512-ZoRB3qJxJ8DWA41jHja+YeB0lLfjBy4T+Kr15vnN1k65X3zbJt3rPZftEwN4Ju4tmA4K/T9dWWD7Z8ewQLnrVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxc-parser/binding-darwin-x64@0.155.0': + resolution: {integrity: sha512-vxtL86BtM+IgrpejA86nbTk5j0HKTIMeuaJ1fQciw6p9RfavPtIPjI7gN34owap0yG9txXBaAWpGdxokNwdqIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxc-parser/binding-freebsd-x64@0.155.0': + resolution: {integrity: sha512-tN6Ru5e0UVnWaIuiH8jEwnvxuxg7FvhWwSd3oe5oDhOD4ObsSr9/N6WfHLjilUWlPPj65ptwrSDH0Y7lzwTzmw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxc-parser/binding-linux-arm-gnueabihf@0.155.0': + resolution: {integrity: sha512-h4ozA5n6L6lwolsz9iwunEhKWnIVbmFRots5QxEix0H6nJ5ICpuDa7PuShuhfpIDFe3+Qvyscioyiv+9g+4Syg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm-musleabihf@0.155.0': + resolution: {integrity: sha512-058/+LardpfuUlsKIvBGk/CYoakEVcMgqYx8GgyUZeOxFWTojYLlCc1Gb60/y21v3esDhHidgiY/Zbq9LpBhaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxc-parser/binding-linux-arm64-gnu@0.155.0': + resolution: {integrity: sha512-nrOt2Y3xIAzu+lSPzH0864ieO+iCCXgoo9qFlGANE8Xh0cQ+RP8Wstfp+/wXN2YCyb98cAGzX0VruKYw7it/jw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-arm64-musl@0.155.0': + resolution: {integrity: sha512-KYAayyN5hQbJPtGKtRxlyc8XYmyntOplyXSQzTDrmbz7l/GCrzQbSswvyJFBTH1LGtsZrbXOAfN52i/Kz6kLKg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-ppc64-gnu@0.155.0': + resolution: {integrity: sha512-CSuSY5hfjtsBnHXydOj8jiNfS1qHbdPZuPz1YL1cSgK7VmNYP+QlZIbG0BBYYBgX/vYEgZwbG9mBdW4YairZ5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.155.0': + resolution: {integrity: sha512-7KCfOQm+Nz2N8trAXbQkal4TQ5756WVEmhm35y816YHvyFnEfVsICsiV5k0pEszNf/fRm4cm2i6i18SJ6/iCWg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-musl@0.155.0': + resolution: {integrity: sha512-JSlhgoK+/g1TGJI5NuADx2+6syhxnQNLCWLXyO5QLFyetomcr/vIxSdiNlmyAv963YXUzCuwAwRG6npZ5xyJ1A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-linux-s390x-gnu@0.155.0': + resolution: {integrity: sha512-WFIX+dPokWp64mi434Md3U3lJaTwNxAphvGjpltoyQjGUsdXavOIRrnp9dOS34Hd75HOAwDxAI+YwWOwqmJbtg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-gnu@0.155.0': + resolution: {integrity: sha512-g6xSDC/JpbnVOz5uafMGyK3txBVRFMQTx8opv/yHXGxqV3ZMVl3bf7W8XrSnF68dmy3gM4dgReNryuE53+WkeQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-parser/binding-linux-x64-musl@0.155.0': + resolution: {integrity: sha512-6/4xlxKlZJWrQ0uwDFPc0H9+xLu7068CKhX3vIDW3SbvP/lVgnVuT5v6dyugeWskWpuxqF/WJ4WKwhxjU3pG2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-parser/binding-openharmony-arm64@0.155.0': + resolution: {integrity: sha512-tltklL0J0XjDxIRTBXWOBhvc2mitcmES45pIxhwDWfxRyqz7Vkeu0NekTZEIxGE4f/lXgq3vZcjjffteQOVorg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxc-parser/binding-win32-arm64-msvc@0.155.0': + resolution: {integrity: sha512-alAb9TzjatUEsOeoncAziUnfdTDxfyswhalFZ9sC6plUgATIUx2NIZ0+bMn6aJ28AduS1OpG/OAisr/YISn4Ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxc-parser/binding-win32-ia32-msvc@0.155.0': + resolution: {integrity: sha512-yc5cbSfcGmRv/KpxDFuyk8adEBaWd/9HilWvBbQ4bFbus1V2PUh2mGB2Cfq9rqZTqLeiMT8x0skV+LKp9hOMgQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxc-parser/binding-win32-x64-msvc@0.155.0': + resolution: {integrity: sha512-8heq6jGq+rfpTDRDjoQiBHw0maQZf3IXkS99pdHQZPoTL5kyF5qyPS0RidUlSdnWDIqxXb5nux7GBD9cT+imUw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.149.0': resolution: {integrity: sha512-Efcc+iF0j3Bf67YjEqIqWXbX5XddXoK/Mw4K1/JuXwRCZ8N16VR7iT23nlCc9XrveFVh/E5Rqs2StT0V8v9LdA==} + '@oxc-project/types@0.155.0': + resolution: {integrity: sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==} + + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.24.2': + resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.24.2': + resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.24.2': + resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.24.2': + resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} + cpu: [x64] + os: [win32] + '@oxfmt/binding-android-arm-eabi@0.74.0': resolution: {integrity: sha512-xxQwrf5EPI5zxvuCTW8r6tzCTjPQ+h6+HqJ0iRKRy2zS1yBllt/xLVjoIyUc+FnR7g0a5g1SZv2yyDYhTItLbA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1902,6 +2149,9 @@ packages: sass-embedded: optional: true + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -2620,6 +2870,9 @@ packages: fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2636,6 +2889,11 @@ packages: resolution: {integrity: sha512-CgbdcjFLDJzMUnxQxHZ5uVxREmTVkjoXnppVB0AH8X0N8Uz4CZarWZLFALLv/Ymyf6EEu1AgaLPS6laXiqBEWA==} engines: {node: '>= 10.8.0'} + formatly@0.11.4: + resolution: {integrity: sha512-TeCC10lP8KCgoX+Fe5lryILIT0/Dy+nP0OSVnsuB5CwXoLuOdqxCYlPFF1inR8S/zTy1ec7TjhS2TeRKWzzImA==} + engines: {node: '>=18.14.0'} + hasBin: true + fs-extra@11.4.0: resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==} engines: {node: '>=14.14'} @@ -2667,6 +2925,9 @@ packages: get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} + get-tsconfig@5.0.0-beta.6: resolution: {integrity: sha512-X6fBC0pmImC70gvX2zm56go9hx0MyoGVdG0tUCkg/D+Xnh5TJsOZ7iDbOdI3PvmtrDxnu1YdDufpK2QJX1Meqw==} engines: {node: '>=20.20.0'} @@ -2797,6 +3058,11 @@ packages: jsonfile@6.2.1: resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + knip@6.44.1: + resolution: {integrity: sha512-Hbd8nvkIsNgFfXgC7Jsb5LHv7jj6VwA3tmfHd53XPX2z9Vc9RnAZqV0BIiP4OrtYqKwCoLseFHQZerb1bNlbSw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -3104,6 +3370,13 @@ packages: outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + oxc-parser@0.155.0: + resolution: {integrity: sha512-C/ReSf1JUFukK/zvk6jhcNibSssvas5+ktIzK7fbKVd3CedWe59C3QwHEOrEZj/4Rt9+xg0Jeis/Jv1F/KM1mw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxc-resolver@11.24.2: + resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} + oxfmt@0.74.0: resolution: {integrity: sha512-G4OP7FgwGYZR5ttRpCOOfJdyRsSyvtn34vSXnjDq6Oqed5Dufg5mB44mank+51nAdHOKuTJ0lj0mksY7L+N61A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3137,6 +3410,9 @@ packages: vite-plus: optional: true + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} + parse5-htmlparser2-tree-adapter@6.0.1: resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} @@ -3384,6 +3660,10 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} + smol-toml@1.9.1: + resolution: {integrity: sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ==} + engines: {node: '>= 18'} + source-map-js@1.2.2: resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} engines: {node: '>=0.10.0'} @@ -3415,6 +3695,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -3552,6 +3836,10 @@ packages: engines: {node: '>=16.20.0'} hasBin: true + unbash@6.0.3: + resolution: {integrity: sha512-hRzSpMeM8uYMQkrnIVaVy3f44oLlokglVeEyP5hIQj88z60bKPO9VVbEpGfxChGBh9lBkzuWKOTOzPdfD6KNEA==} + engines: {node: '>=14'} + unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} @@ -3722,6 +4010,10 @@ packages: resolution: {integrity: sha512-4Nsy8K5Tr6SPDH9jhKJOHf7ChDrc1zufZTVSF7x72hwuEXBqxqk9G6cK+K2NRUtB3iELRJqjXb4JPDMBjMTl2Q==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + webidl-conversions@8.0.1: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} @@ -3762,6 +4054,11 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -3977,6 +4274,22 @@ snapshots: '@csstools/css-tokenizer@4.0.2': {} + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.28.2': optional: true @@ -4203,10 +4516,137 @@ snapshots: transitivePeerDependencies: - supports-color + '@napi-rs/wasm-runtime@1.2.7(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.4 + optional: true + '@open-draft/until@3.0.1': {} + '@oxc-parser/binding-android-arm-eabi@0.155.0': + optional: true + + '@oxc-parser/binding-android-arm64@0.155.0': + optional: true + + '@oxc-parser/binding-darwin-arm64@0.155.0': + optional: true + + '@oxc-parser/binding-darwin-x64@0.155.0': + optional: true + + '@oxc-parser/binding-freebsd-x64@0.155.0': + optional: true + + '@oxc-parser/binding-linux-arm-gnueabihf@0.155.0': + optional: true + + '@oxc-parser/binding-linux-arm-musleabihf@0.155.0': + optional: true + + '@oxc-parser/binding-linux-arm64-gnu@0.155.0': + optional: true + + '@oxc-parser/binding-linux-arm64-musl@0.155.0': + optional: true + + '@oxc-parser/binding-linux-ppc64-gnu@0.155.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-gnu@0.155.0': + optional: true + + '@oxc-parser/binding-linux-riscv64-musl@0.155.0': + optional: true + + '@oxc-parser/binding-linux-s390x-gnu@0.155.0': + optional: true + + '@oxc-parser/binding-linux-x64-gnu@0.155.0': + optional: true + + '@oxc-parser/binding-linux-x64-musl@0.155.0': + optional: true + + '@oxc-parser/binding-openharmony-arm64@0.155.0': + optional: true + + '@oxc-parser/binding-win32-arm64-msvc@0.155.0': + optional: true + + '@oxc-parser/binding-win32-ia32-msvc@0.155.0': + optional: true + + '@oxc-parser/binding-win32-x64-msvc@0.155.0': + optional: true + '@oxc-project/types@0.149.0': {} + '@oxc-project/types@0.155.0': {} + + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + optional: true + + '@oxc-resolver/binding-android-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.24.2': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.7(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + optional: true + '@oxfmt/binding-android-arm-eabi@0.74.0': optional: true @@ -4952,7 +5392,7 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 optionalDependencies: - vitest: 5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) + vitest: 5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@testing-library/react@16.3.3(@testing-library/dom@10.4.2)(@types/react@19.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -4967,12 +5407,12 @@ snapshots: dependencies: '@testing-library/dom': 10.4.2 - '@tsdown/css@0.23.0(jiti@2.7.0)(postcss-import@17.0.0(postcss@8.5.31))(postcss@8.5.31)(tsdown@0.23.0)(tsx@4.23.15)': + '@tsdown/css@0.23.0(jiti@2.7.0)(postcss-import@17.0.0(postcss@8.5.31))(postcss@8.5.31)(tsdown@0.23.0)(tsx@4.23.15)(yaml@2.9.1)': dependencies: lightningcss: 1.33.0 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.31)(tsx@4.23.15) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.31)(tsx@4.23.15)(yaml@2.9.1) rolldown: 1.2.8 - tsdown: 0.23.0(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.23.0)(tsx@4.23.15)(typescript@7.0.2)(unrun@0.3.1) + tsdown: 0.23.0(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.23.0)(oxc-resolver@11.24.2)(tsx@4.23.15)(typescript@7.0.2)(unrun@0.3.1) optionalDependencies: postcss: 8.5.31 postcss-import: 17.0.0(postcss@8.5.31) @@ -4981,6 +5421,11 @@ snapshots: - tsx - yaml + '@tybys/wasm-util@0.10.4': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/chai@5.2.3': @@ -5125,7 +5570,7 @@ snapshots: magicast: 0.5.5 obug: 3.0.0 tinyrainbow: 3.2.0 - vitest: 5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) + vitest: 5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) '@vitest/istanbul-lib-coverage@1.0.2': {} @@ -5147,15 +5592,15 @@ snapshots: '@vitest/istanbul-lib-coverage': 1.0.2 obug: 2.2.1 - '@vitest/mocker@5.0.5(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15))': + '@vitest/mocker@5.0.5(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.5 estree-walker: 3.0.3 magic-string: 1.4.3 optionalDependencies: - msw: 3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) - vite: 8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15) + msw: 3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) + vite: 8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) '@vitest/spy@5.0.5': {} @@ -5457,7 +5902,9 @@ snapshots: drange@2.0.1: {} - dts-resolver@3.0.0: {} + dts-resolver@3.0.0(oxc-resolver@11.24.2): + optionalDependencies: + oxc-resolver: 11.24.2 duplexer@0.1.2: {} @@ -5535,6 +5982,10 @@ snapshots: dependencies: fast-string-width: 3.0.2 + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: picomatch: 4.0.7 @@ -5543,6 +5994,11 @@ snapshots: filesize@11.0.26: {} + formatly@0.11.4: + dependencies: + fd-package-json: 2.0.0 + package-manager-detector: 1.9.0 + fs-extra@11.4.0: dependencies: graceful-fs: 4.2.11 @@ -5566,6 +6022,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.14.3: + dependencies: + resolve-pkg-maps: 1.0.0 + get-tsconfig@5.0.0-beta.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -5686,6 +6146,21 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + knip@6.44.1: + dependencies: + formatly: 0.11.4 + get-tsconfig: 4.14.3 + jiti: 2.7.0 + oxc-parser: 0.155.0 + oxc-resolver: 11.24.2 + picomatch: 4.0.7 + smol-toml: 1.9.1 + strip-json-comments: 5.0.3 + tinyglobby: 0.2.17 + unbash: 6.0.3 + yaml: 2.9.1 + zod: 4.6.6 + lightningcss-android-arm64@1.32.0: optional: true @@ -5859,7 +6334,7 @@ snapshots: ms@2.1.3: {} - msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)): + msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@inquirer/confirm': 6.3.2(@types/node@24.12.4) '@msw/url': 0.1.2 @@ -5875,7 +6350,7 @@ snapshots: yargs: 18.2.0 optionalDependencies: typescript: 7.0.2 - vite: 8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15) + vite: 8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -5922,6 +6397,52 @@ snapshots: outvariant@1.4.3: {} + oxc-parser@0.155.0: + dependencies: + '@oxc-project/types': 0.155.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.155.0 + '@oxc-parser/binding-android-arm64': 0.155.0 + '@oxc-parser/binding-darwin-arm64': 0.155.0 + '@oxc-parser/binding-darwin-x64': 0.155.0 + '@oxc-parser/binding-freebsd-x64': 0.155.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.155.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.155.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.155.0 + '@oxc-parser/binding-linux-arm64-musl': 0.155.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.155.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.155.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.155.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.155.0 + '@oxc-parser/binding-linux-x64-gnu': 0.155.0 + '@oxc-parser/binding-linux-x64-musl': 0.155.0 + '@oxc-parser/binding-openharmony-arm64': 0.155.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.155.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.155.0 + '@oxc-parser/binding-win32-x64-msvc': 0.155.0 + + oxc-resolver@11.24.2: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.24.2 + '@oxc-resolver/binding-android-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-x64': 11.24.2 + '@oxc-resolver/binding-freebsd-x64': 11.24.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.24.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-musl': 11.24.2 + '@oxc-resolver/binding-openharmony-arm64': 11.24.2 + '@oxc-resolver/binding-wasm32-wasi': 11.24.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 + oxfmt@0.74.0: dependencies: tinypool: 2.2.0 @@ -5978,6 +6499,8 @@ snapshots: '@oxlint/binding-win32-x64-msvc': 1.89.0 oxlint-tsgolint: 7.0.2004 + package-manager-detector@1.9.0: {} + parse5-htmlparser2-tree-adapter@6.0.1: dependencies: parse5: 6.0.1 @@ -6018,13 +6541,14 @@ snapshots: read-cache: 1.0.2 resolve: 1.22.12 - postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.31)(tsx@4.23.15): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.31)(tsx@4.23.15)(yaml@2.9.1): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.7.0 postcss: 8.5.31 tsx: 4.23.15 + yaml: 2.9.1 postcss-value-parser@4.2.0: {} @@ -6146,9 +6670,9 @@ snapshots: rettime@0.11.12: {} - rolldown-plugin-dts@0.28.6(rolldown@1.2.8)(typescript@7.0.2): + rolldown-plugin-dts@0.28.6(oxc-resolver@11.24.2)(rolldown@1.2.8)(typescript@7.0.2): dependencies: - dts-resolver: 3.0.0 + dts-resolver: 3.0.0(oxc-resolver@11.24.2) get-tsconfig: 5.0.0-beta.6 obug: 3.0.0 rolldown: 1.2.8 @@ -6201,6 +6725,8 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 + smol-toml@1.9.1: {} + source-map-js@1.2.2: {} std-env@4.3.0: {} @@ -6234,6 +6760,8 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@5.0.3: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6296,7 +6824,7 @@ snapshots: tree-kill@1.2.2: {} - tsdown@0.23.0(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.23.0)(tsx@4.23.15)(typescript@7.0.2)(unrun@0.3.1): + tsdown@0.23.0(@arethetypeswrong/core@0.18.5)(@tsdown/css@0.23.0)(oxc-resolver@11.24.2)(tsx@4.23.15)(typescript@7.0.2)(unrun@0.3.1): dependencies: cac: 7.0.0 defu: 6.1.7 @@ -6306,7 +6834,7 @@ snapshots: obug: 2.2.1 picomatch: 4.0.7 rolldown: 1.2.8 - rolldown-plugin-dts: 0.28.6(rolldown@1.2.8)(typescript@7.0.2) + rolldown-plugin-dts: 0.28.6(oxc-resolver@11.24.2)(rolldown@1.2.8)(typescript@7.0.2) tinyexec: 1.3.1 tinyglobby: 0.2.17 tree-kill: 1.2.2 @@ -6314,7 +6842,7 @@ snapshots: verkit: 0.4.0 optionalDependencies: '@arethetypeswrong/core': 0.18.5 - '@tsdown/css': 0.23.0(jiti@2.7.0)(postcss-import@17.0.0(postcss@8.5.31))(postcss@8.5.31)(tsdown@0.23.0)(tsx@4.23.15) + '@tsdown/css': 0.23.0(jiti@2.7.0)(postcss-import@17.0.0(postcss@8.5.31))(postcss@8.5.31)(tsdown@0.23.0)(tsx@4.23.15)(yaml@2.9.1) tsx: 4.23.15 typescript: 7.0.2 unrun: 0.3.1 @@ -6362,6 +6890,8 @@ snapshots: '@typescript/typescript-win32-arm64': 7.0.2 '@typescript/typescript-win32-x64': 7.0.2 + unbash@6.0.3: {} + unconfig-core@7.5.0: dependencies: '@quansync/fs': 1.1.0 @@ -6421,7 +6951,7 @@ snapshots: verkit@0.4.0: {} - vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15): + vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -6434,11 +6964,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 tsx: 4.23.15 + yaml: 2.9.1 - vitest@5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)): + vitest@5.0.5(@types/node@24.12.4)(@vitest/coverage-istanbul@5.0.5)(jsdom@30.1.3)(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.5(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)) + '@vitest/mocker': 5.0.5(msw@3.0.3(@types/node@24.12.4)(supports-color@7.2.0)(typescript@7.0.2)(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)))(vite@8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1)) chai: 6.3.0 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -6449,7 +6980,7 @@ snapshots: tinybench: 6.2.2 tinyexec: 1.3.1 tinyglobby: 0.2.17 - vite: 8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15) + vite: 8.3.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.15)(yaml@2.9.1) why-is-node-running: 3.2.1 optionalDependencies: '@types/node': 24.12.4 @@ -6462,6 +6993,8 @@ snapshots: dependencies: xml-name-validator: 5.0.0 + walk-up-path@4.0.0: {} + webidl-conversions@8.0.1: {} whatwg-mimetype@5.0.0: {} @@ -6499,6 +7032,8 @@ snapshots: y18n@5.0.8: {} + yaml@2.9.1: {} + yargs-parser@20.2.9: {} yargs-parser@22.0.0: {} diff --git a/src/components/form/utils.ts b/src/components/form/utils.ts index 9eca6f850..a35dc7c67 100644 --- a/src/components/form/utils.ts +++ b/src/components/form/utils.ts @@ -1,29 +1,7 @@ import { convertFilesToBase64 } from '@/src/lib/files'; -import { - parseFormValuesToAPI as parseFormValuesToAPICore, - parseJSFToValidate as parseJSFToValidateCore, - parseSubmitValues as parseSubmitValuesCore, -} from '@remoteoss/remote-flows-core'; +import { parseJSFToValidate as parseJSFToValidateCore } from '@remoteoss/remote-flows-core'; import type { $TSFixMe, JSFFields } from '@remoteoss/remote-flows-core'; -export async function parseFormValuesToAPI( - formValues: Record = {}, - fields: $TSFixMe[], -) { - return parseFormValuesToAPICore(formValues, fields, convertFilesToBase64); -} - -export async function parseSubmitValues( - formValues: Record, - fields: $TSFixMe[], - config?: { keepInvisibleValues?: boolean }, -) { - return parseSubmitValuesCore(formValues, fields, { - ...config, - convertFiles: convertFilesToBase64, - }); -} - export async function parseJSFToValidate( formValues: Record, fields: JSFFields, @@ -51,7 +29,6 @@ export { isDateDisabled, isFieldSkipped, isForceValue, - isMultiSelect, resolveFieldDynamicProperties, round, } from '@remoteoss/remote-flows-core';