From 203ba217614e737c771130681e61c077f8f628d2 Mon Sep 17 00:00:00 2001 From: "omegent-app[bot]" <306514130+omegent-app[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 06:09:41 +0000 Subject: [PATCH 1/2] chore: move Effect diagnostics to Oxlint Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com> --- .changeset/tidy-effects-diagnose.md | 5 + .oxlintrc.json | 22 +- package.json | 7 +- packages/effect-app/src/Model/query/dsl.ts | 94 ++-- .../src/Model/query/new-kid-interpreter.ts | 16 +- packages/effect-app/src/ids.ts | 2 +- packages/infra/src/Store/Memory.ts | 4 +- .../src/components/OmegaForm/blockDialog.ts | 2 +- .../components/OmegaForm/meta/createMeta.ts | 6 +- .../src/components/OmegaForm/meta/defaults.ts | 2 +- .../src/components/OmegaForm/meta/walker.ts | 8 +- .../src/components/OmegaForm/submit.ts | 2 +- packages/vue/src/makeClient.ts | 6 +- packages/vue/src/mutate.ts | 4 +- pnpm-lock.yaml | 429 +++++++++++++++++- pnpm-workspace.yaml | 11 +- tsconfig.plugins.json | 14 +- 17 files changed, 541 insertions(+), 93 deletions(-) create mode 100644 .changeset/tidy-effects-diagnose.md diff --git a/.changeset/tidy-effects-diagnose.md b/.changeset/tidy-effects-diagnose.md new file mode 100644 index 0000000000..2d6799345d --- /dev/null +++ b/.changeset/tidy-effects-diagnose.md @@ -0,0 +1,5 @@ +--- +"@effect-app/eslint-shared-config": patch +--- + +Run configured Effect diagnostics through Oxlint's type-aware lint integration. diff --git a/.oxlintrc.json b/.oxlintrc.json index df11f32e0d..383dfa9257 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,6 +1,26 @@ { - "$schema": "https://raw.githubusercontent.com/oxc-project/oxc/main/npm/oxlint/configuration_schema.json", + "$schema": "./node_modules/@effect/tsgo/oxlint-schema.json", "extends": ["./packages/eslint-shared-config/src/oxlintrc.json"], + "options": { + "typeAware": true + }, + "plugins": ["effecttsgo"], + "rules": { + "effecttsgo/any-unknown-in-error-context": "off", + "effecttsgo/effect-fn-iife": "off", + "effecttsgo/global-error-in-effect-catch": "off", + "effecttsgo/layer-merge-all-with-dependencies": "off", + "effecttsgo/lazy-effect": "off", + "effecttsgo/return-effect-in-gen": "off", + "effecttsgo/run-effect-inside-effect": "off", + "effecttsgo/schema-sync-in-effect": "off", + "effecttsgo/strict-effect-provide": "off", + "effecttsgo/unknown-in-effect-catch": "off", + "effecttsgo/missing-effect-service-dependency": "error", + "effecttsgo/effect-fn-opportunity": "warn", + "effecttsgo/global-error-in-effect-failure": "warn", + "effecttsgo/prefer-schema-over-json": "warn" + }, // ignorePatterns overwrites (not merges) the base — all standard patterns must be repeated here. "ignorePatterns": [ "**/dist/**", diff --git a/package.json b/package.json index ad1a9a5266..42d4e101e8 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build": "cd packages/eslint-shared-config && pnpm build && cd ../.. && cd packages/cli && pnpm build && cd .. && pnpm build:tsc && cd vue-components && pnpm build", "rbuild": "pnpm clean && pnpm build", "nnm": "find . -name 'node_modules' -type d -prune -exec rm -rf '{}' + && pnpm i", - "prepare": "node -e \"const v=require('typescript/package.json').version;if(v.startsWith('6.')){require('child_process').execSync('effect-language-service patch',{stdio:'inherit'})}else{console.log('Skipping effect-language-service patch for TypeScript '+v)}\" && node scripts/install-git-hooks.mjs", + "prepare": "node -e \"const v=require('typescript/package.json').version;if(v.startsWith('6.')){require('child_process').execSync('effect-language-service patch',{stdio:'inherit'})}else{console.log('Skipping effect-language-service patch for TypeScript '+v)}\" && effect-tsgo patch --no-typescript --oxlint && node scripts/install-git-hooks.mjs", "subtree:effect": "node scripts/sync-effect-subtree.js" }, "dependencies": { @@ -49,6 +49,7 @@ "@effect-app/eslint-codegen-model": "workspace:*", "@effect-app/infra": "workspace:*", "@effect/language-service": "0.86.2", + "@effect/tsgo": "^0.31.0", "@effect/platform-node": "4.0.0-beta.90", "@effect/vitest": "4.0.0-beta.90", "@tsconfig/strictest": "^2.0.8", @@ -64,8 +65,8 @@ "lint-staged": "^17.3.0", "madge": "^8.0.0", "npm-check-updates": "^22.2.1", - "oxlint": "^1.67.0", - "oxlint-tsgolint": "^0.23.0", + "oxlint": "1.77.0", + "oxlint-tsgolint": "7.0.2001", "pkg-pr-new": "0.0.75", "ts-plugin-sort-import-suggestions": "^1.0.4", "typescript": "~6.0.3", diff --git a/packages/effect-app/src/Model/query/dsl.ts b/packages/effect-app/src/Model/query/dsl.ts index f6cd53ea25..d9efe2d044 100644 --- a/packages/effect-app/src/Model/query/dsl.ts +++ b/packages/effect-app/src/Model/query/dsl.ts @@ -707,7 +707,7 @@ export const relation = < expr: { field: (field: FieldPath>): ComputedProjectionMathExpression => ({ _tag: "field", - field: field as string + field }), mul: ( left: ComputedProjectionMathExpression, @@ -716,33 +716,33 @@ export const relation = < }, length: (): ComputedProjectionExpression => ({ _tag: "relation-length", - path: path as string + path }), count: (operation?: ComputedProjectionOperation): ComputedProjectionExpression => operation ? { _tag: "relation-count", - path: path as string, + path, operation } : { _tag: "relation-count", - path: path as string + path }, any: (operation?: ComputedProjectionOperation): ComputedProjectionExpression => operation ? { _tag: "relation-any", - path: path as string, + path, operation } : { _tag: "relation-any", - path: path as string + path }, every: (operation: ComputedProjectionOperation): ComputedProjectionExpression => ({ _tag: "relation-every", - path: path as string, + path, operation }), distinctCount: >>( @@ -752,14 +752,14 @@ export const relation = < operation ? { _tag: "relation-distinct-count", - path: path as string, - field: field as string, + path, + field, operation } : { _tag: "relation-distinct-count", - path: path as string, - field: field as string + path, + field }, sum: >>( field: F, @@ -768,14 +768,14 @@ export const relation = < operation ? { _tag: "relation-sum", - path: path as string, - field: field as string, + path, + field, operation } : { _tag: "relation-sum", - path: path as string, - field: field as string + path, + field }, sumExpr: ( expression: ComputedProjectionMathExpression, @@ -784,13 +784,13 @@ export const relation = < operation ? { _tag: "relation-sum-expr", - path: path as string, + path, expression, operation } : { _tag: "relation-sum-expr", - path: path as string, + path, expression }, sumExprBy: >>( @@ -803,16 +803,16 @@ export const relation = < operation ? { _tag: "relation-sum-expr-by", - path: path as string, + path, expression, - unit: options.unit as string, + unit: options.unit, operation } : { _tag: "relation-sum-expr-by", - path: path as string, + path, expression, - unit: options.unit as string + unit: options.unit }, sumExprNormalized: ( expression: ComputedProjectionMathExpression, @@ -826,18 +826,18 @@ export const relation = < operation ? { _tag: "relation-sum-expr-normalized", - path: path as string, + path, expression, - unit: options.unit as string, + unit: options.unit, toBase: options.toBase, factors: options.factors, operation } : { _tag: "relation-sum-expr-normalized", - path: path as string, + path, expression, - unit: options.unit as string, + unit: options.unit, toBase: options.toBase, factors: options.factors }, @@ -848,15 +848,15 @@ export const relation = < operation ? { _tag: "relation-collect", - path: path as string, - field: field as string, + path, + field, distinct: false, operation } : { _tag: "relation-collect", - path: path as string, - field: field as string, + path, + field, distinct: false }, collectDistinct: >>( @@ -866,15 +866,15 @@ export const relation = < operation ? { _tag: "relation-collect", - path: path as string, - field: field as string, + path, + field, distinct: true, operation } : { _tag: "relation-collect", - path: path as string, - field: field as string, + path, + field, distinct: true }, collectFields: >[]>( @@ -886,15 +886,15 @@ export const relation = < operation ? { _tag: "relation-collect-fields", - path: path as string, - fields: fields as readonly string[], + path, + fields, distinct: false, operation } : { _tag: "relation-collect-fields", - path: path as string, - fields: fields as readonly string[], + path, + fields, distinct: false }, collectDistinctFields: >[]>( @@ -906,15 +906,15 @@ export const relation = < operation ? { _tag: "relation-collect-fields", - path: path as string, - fields: fields as readonly string[], + path, + fields, distinct: true, operation } : { _tag: "relation-collect-fields", - path: path as string, - fields: fields as readonly string[], + path, + fields, distinct: true } }) @@ -930,7 +930,7 @@ export const relation = < export const expr = { field: ( field: FieldPath - ): ComputedProjectionMathExpression => ({ _tag: "field", field: field as string }), + ): ComputedProjectionMathExpression => ({ _tag: "field", field }), mul: ( left: ComputedProjectionMathExpression, right: ComputedProjectionMathExpression @@ -1059,7 +1059,7 @@ export const projectComputed: { const computedProjection = typeof mapOrBuild === "function" ? mapOrBuild(makeComputedHelpers()) : mapOrBuild - return new Project({ current, schema, mode, computed: computedProjection } as any) + return new Project({ current, schema, mode, computed: computedProjection }) } /** @@ -1077,12 +1077,12 @@ export interface AggBuilder { } const makeAggBuilder = (): AggBuilder => ({ - field: (path) => ({ _tag: "agg-field", path: path as string }), + field: (path) => ({ _tag: "agg-field", path }), count: () => ({ _tag: "agg-count" }), countWhen: (operation) => ({ _tag: "agg-count-when", operation }), - sum: (field) => ({ _tag: "agg-sum", field: field as string }), - min: (field) => ({ _tag: "agg-min", field: field as string }), - max: (field) => ({ _tag: "agg-max", field: field as string }) + sum: (field) => ({ _tag: "agg-sum", field }), + min: (field) => ({ _tag: "agg-min", field }), + max: (field) => ({ _tag: "agg-max", field }) }) /** diff --git a/packages/effect-app/src/Model/query/new-kid-interpreter.ts b/packages/effect-app/src/Model/query/new-kid-interpreter.ts index 71fe540094..8c55a19388 100644 --- a/packages/effect-app/src/Model/query/new-kid-interpreter.ts +++ b/packages/effect-app/src/Model/query/new-kid-interpreter.ts @@ -316,17 +316,17 @@ const interpret = < case "relation-count": case "relation-any": case "relation-every": - return [key, { _tag: e._tag, path: e.path, filter } as ComputedProjectionIrExpression] + return [key, { _tag: e._tag, path: e.path, filter }] case "relation-distinct-count": case "relation-sum": return [ key, - { _tag: e._tag, path: e.path, field: e.field, filter } as ComputedProjectionIrExpression + { _tag: e._tag, path: e.path, field: e.field, filter } ] case "relation-sum-expr": return [ key, - { _tag: e._tag, path: e.path, expression: e.expression, filter } as ComputedProjectionIrExpression + { _tag: e._tag, path: e.path, expression: e.expression, filter } ] case "relation-sum-expr-by": return [ @@ -337,7 +337,7 @@ const interpret = < expression: e.expression, unit: e.unit, filter - } as ComputedProjectionIrExpression + } ] case "relation-sum-expr-normalized": return [ @@ -350,7 +350,7 @@ const interpret = < toBase: e.toBase, factors: e.factors, filter - } as ComputedProjectionIrExpression + } ] case "relation-collect": return [ @@ -361,7 +361,7 @@ const interpret = < field: e.field, distinct: e.distinct, filter - } as ComputedProjectionIrExpression + } ] case "relation-collect-fields": return [ @@ -372,10 +372,10 @@ const interpret = < fields: e.fields, distinct: e.distinct, filter - } as ComputedProjectionIrExpression + } ] case "relation-length": - return [key, { _tag: e._tag, path: e.path } as ComputedProjectionIrExpression] + return [key, { _tag: e._tag, path: e.path }] } }) ) diff --git a/packages/effect-app/src/ids.ts b/packages/effect-app/src/ids.ts index 60b721e12b..c9b910ed42 100644 --- a/packages/effect-app/src/ids.ts +++ b/packages/effect-app/src/ids.ts @@ -28,7 +28,7 @@ export const RequestId = extendM( function make(input: string, options?: S.MakeOptions): NonEmptyString255 function make(input?: string, options?: S.MakeOptions): NonEmptyString255 { const id = input === undefined ? StringId.make() : StringId.make(input, options) - return id as NonEmptyString255 + return id } return ({ make, diff --git a/packages/infra/src/Store/Memory.ts b/packages/infra/src/Store/Memory.ts index f38fd5dbd8..059488d419 100644 --- a/packages/infra/src/Store/Memory.ts +++ b/packages/infra/src/Store/Memory.ts @@ -421,7 +421,7 @@ export function makeMemoryStoreInt @@ -456,7 +456,7 @@ export function makeMemoryStoreInt) => diff --git a/packages/vue-components/src/components/OmegaForm/blockDialog.ts b/packages/vue-components/src/components/OmegaForm/blockDialog.ts index e3660a6fd9..75fdb3223f 100644 --- a/packages/vue-components/src/components/OmegaForm/blockDialog.ts +++ b/packages/vue-components/src/components/OmegaForm/blockDialog.ts @@ -31,7 +31,7 @@ export const usePreventClose = (mkIsDirty: () => Ref) => { const message = formatMessage ? formatMessage({ id: "form.unsaved_changes_confirm", defaultMessage }) // eslint-disable-next-line @typescript-eslint/no-explicit-any -- key may not be registered in the locale catalog - : trans?.("form.unsaved_changes_confirm" as any) ?? defaultMessage + : trans?.("form.unsaved_changes_confirm") ?? defaultMessage if (!confirm(message)) { evt.prevent = true } diff --git a/packages/vue-components/src/components/OmegaForm/meta/createMeta.ts b/packages/vue-components/src/components/OmegaForm/meta/createMeta.ts index d8e8549351..5508a5d14f 100644 --- a/packages/vue-components/src/components/OmegaForm/meta/createMeta.ts +++ b/packages/vue-components/src/components/OmegaForm/meta/createMeta.ts @@ -115,16 +115,16 @@ export const metadataFromAst = ( // Root-level discriminated union classifyAndWalkUnion(ast, "", { required: true, nullableOrUndefined: false }, ctx) - return { meta: newMeta as MetaRecord, defaultValues, unionMeta } + return { meta: newMeta, defaultValues, unionMeta } } if (S.AST.isObjects(ast)) { walkStruct(ast.propertySignatures, "", { required: true, nullableOrUndefined: false }, ctx) - return { meta: newMeta as MetaRecord, defaultValues, unionMeta } + return { meta: newMeta, defaultValues, unionMeta } } - return { meta: newMeta as MetaRecord, defaultValues, unionMeta } + return { meta: newMeta, defaultValues, unionMeta } } export const generateMetaFromSchema = ( diff --git a/packages/vue-components/src/components/OmegaForm/meta/defaults.ts b/packages/vue-components/src/components/OmegaForm/meta/defaults.ts index ac437e56e3..e18c68c7ba 100644 --- a/packages/vue-components/src/components/OmegaForm/meta/defaults.ts +++ b/packages/vue-components/src/components/OmegaForm/meta/defaults.ts @@ -7,7 +7,7 @@ import { isNullableOrUndefined, unwrapDeclaration } from "./createMeta" const extractDefaultFromLink = (link: any): unknown | undefined => { if (!link?.transformation?.decode?.run) return undefined try { - const result = Effect.runSync(link.transformation.decode.run(Option.none())) as Option.Option + const result = Effect.runSync(link.transformation.decode.run(Option.none())) return Option.isSome(result) ? result.value : undefined } catch { return undefined diff --git a/packages/vue-components/src/components/OmegaForm/meta/walker.ts b/packages/vue-components/src/components/OmegaForm/meta/walker.ts index 72c5d8c817..c6dce73b0b 100644 --- a/packages/vue-components/src/components/OmegaForm/meta/walker.ts +++ b/packages/vue-components/src/components/OmegaForm/meta/walker.ts @@ -52,7 +52,7 @@ export const leafMetaForAst = ( nullableOrUndefined, type: "select", members: [ast.literal] - } as FieldMeta + } } return { @@ -143,7 +143,7 @@ export const classifyAndWalkUnion = ( if (tagValue) { const existing = ctx.unionMeta[tagValue] if (existing) Object.assign(existing, branchCtx.acc as MetaRecord) - else ctx.unionMeta[tagValue] = branchCtx.acc as MetaRecord + else ctx.unionMeta[tagValue] = branchCtx.acc } for (const [metaKey, metaValue] of Object.entries(branchCtx.acc)) { @@ -171,7 +171,7 @@ export const classifyAndWalkUnion = ( type: "select", members: discriminatorValues, required: !isNullableDiscriminatedUnion - } as FieldMeta + } } } return @@ -192,7 +192,7 @@ export const classifyAndWalkUnion = ( nullableOrUndefined, type: "select", members: resolvedTypes.filter(S.AST.isLiteral).map((t) => t.literal) - } as FieldMeta + } if (isOptionalKey) leaf.isOptionalKey = true acc[key as NestedKeyOf] = leaf return diff --git a/packages/vue-components/src/components/OmegaForm/submit.ts b/packages/vue-components/src/components/OmegaForm/submit.ts index f1c49b76bc..77faa00623 100644 --- a/packages/vue-components/src/components/OmegaForm/submit.ts +++ b/packages/vue-components/src/components/OmegaForm/submit.ts @@ -65,7 +65,7 @@ export const wrapOnSubmit = ( // validators only validate, they don't actually transform, so we have to do that manually here. const parsedValue = await runPromise(decode(value)) const r = userOnSubmit({ - formApi: formApi as OmegaFormApi, + formApi, meta, value: parsedValue }) diff --git a/packages/vue/src/makeClient.ts b/packages/vue/src/makeClient.ts index 7debd81ecc..0856f320e5 100644 --- a/packages/vue/src/makeClient.ts +++ b/packages/vue/src/makeClient.ts @@ -1031,7 +1031,7 @@ export const makeClient = ( fromRequestConfig( defaultKey, queryResources as never, - input as never, + input, output as never ) as InvalidationEntry[]) : undefined @@ -1111,7 +1111,7 @@ export const makeClient = ( fromRequestConfig( defaultKey, queryResources as never, - input as never, + input, output as never ) as InvalidationEntry[]) : undefined @@ -1142,7 +1142,7 @@ export const makeClient = ( fromRequestConfig( defaultKey, queryResources as never, - input as never, + input, output as never ) as InvalidationEntry[]) : undefined diff --git a/packages/vue/src/mutate.ts b/packages/vue/src/mutate.ts index 54ebdf7e0c..7d33f74a0c 100644 --- a/packages/vue/src/mutate.ts +++ b/packages/vue/src/mutate.ts @@ -212,7 +212,7 @@ export const asResult = ( )) ) - return tuple(computed(() => state.value), act) as any + return tuple(computed(() => state.value), act) } /** @@ -259,7 +259,7 @@ export const asStreamResult = ( const act = (...args: Args) => runStream(handler(...args)) - return tuple(computed(() => state.value), act) as any + return tuple(computed(() => state.value), act) } const buildInvalidateCache = ( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42737cf999..a62835a1c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: "@effect/platform-node": specifier: 4.0.0-beta.90 version: 4.0.0-beta.90(effect@4.0.0-beta.90)(ioredis@5.9.3(supports-color@8.1.1)) + "@effect/tsgo": + specifier: ^0.31.0 + version: 0.31.0 "@effect/vitest": specifier: 4.0.0-beta.90 version: 4.0.0-beta.90(effect@4.0.0-beta.90)(vitest@4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(jsdom@29.1.1)(vite@8.0.15(@types/node@25.9.1)(esbuild@0.28.0)(sass@1.100.0)(terser@5.45.0)(tsx@4.22.4)(yaml@2.9.0))) @@ -90,11 +93,11 @@ importers: specifier: ^22.2.1 version: 22.2.1 oxlint: - specifier: ^1.67.0 - version: 1.67.0(oxlint-tsgolint@0.23.0) + specifier: 1.77.0 + version: 1.77.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: - specifier: ^0.23.0 - version: 0.23.0 + specifier: 7.0.2001 + version: 7.0.2001 pkg-pr-new: specifier: 0.0.75 version: 0.0.75 @@ -1247,6 +1250,61 @@ packages: peerDependencies: effect: ^4.0.0-beta.90 + "@effect/tsgo-darwin-arm64@0.31.0": + resolution: { + integrity: sha512-83StWyiq0vB9unpsObZoCIiix73til4yW1zCpHEDuBirxoNLymmOBv22kW132FD74tBzWBSffsmTHQEMUg+j7Q==, + } + cpu: [arm64] + os: [darwin] + + "@effect/tsgo-darwin-x64@0.31.0": + resolution: { + integrity: sha512-1jk7VItW+/oFEbGT0txq74Ejn81144DQ8GspcnBi09KH9rBareNBSTcFmi71caDfPBiJyMun8rVi04jbmaxFmg==, + } + cpu: [x64] + os: [darwin] + + "@effect/tsgo-linux-arm64@0.31.0": + resolution: { + integrity: sha512-ClSiB/tpf6uABf7JT2p+ukdQpEesTfNqzMSRqrR1yIeb/l20VY4Qklm4HKeqFdYz5cbg65Y2P+IDeGHGxnq4aA==, + } + cpu: [arm64] + os: [linux] + + "@effect/tsgo-linux-arm@0.31.0": + resolution: { + integrity: sha512-XUcOl5OhUD685CnhRhdMtbXjmVjxMwNVlgM5bU+h0kkBzrLlLUHFBSzkMhQcVL8L+gnXXLua2N0aY6I+PGbvaQ==, + } + cpu: [arm] + os: [linux] + + "@effect/tsgo-linux-x64@0.31.0": + resolution: { + integrity: sha512-T1WSK5T4smwfrXPJEynNfoNPA2a/IXBAEPrtLhddv/whUY5MeazCt2vY80XupigqI1cPAEt8QVjHj7m7YQzNOA==, + } + cpu: [x64] + os: [linux] + + "@effect/tsgo-win32-arm64@0.31.0": + resolution: { + integrity: sha512-5oNVxv7EV3vuYlv6v3RXdVYu3a2xrmUMJzH3So9h1neZynZ3P9122wVJae3Q+aiRIkyIBo7TZii3UiFtEHTiqw==, + } + cpu: [arm64] + os: [win32] + + "@effect/tsgo-win32-x64@0.31.0": + resolution: { + integrity: sha512-7UXqXF+3sMXWcjy9paP5rnvbVzGYAYLkO9UPYzAfE9B0Hda+Npkt8Ofa3uggRNMyOTzP8o3o9Se518k527hyzQ==, + } + cpu: [x64] + os: [win32] + + "@effect/tsgo@0.31.0": + resolution: { + integrity: sha512-mv/p4nPg5IhJWnZXIctSa2QG9Y79yQzRMMdZI+BD5QUrGXL6giqWMJZ3S+IaooQc6pjny3q9IeOvSf0CBTPfQw==, + } + hasBin: true + "@effect/vitest@4.0.0-beta.90": resolution: { integrity: sha512-eWSkDg34TjsrSVfrU0PkR8YN/AeeM0kt792/RCobCVTx5SGO/iYwyqyjl/73nP8Q5rMM6UTepaBCzK7D/H1tlg==, @@ -2717,6 +2775,13 @@ packages: cpu: [arm64] os: [darwin] + "@oxlint-tsgolint/darwin-arm64@7.0.2001": + resolution: { + integrity: sha512-CUJEdbSZ54+Xy9OXqOhWLTKZKV0BBiV7C2i/ygyVmXtkUNXx5YCzN8DpSSshTAKktoL7S+tnQ/ftFG/i7X896w==, + } + cpu: [arm64] + os: [darwin] + "@oxlint-tsgolint/darwin-x64@0.23.0": resolution: { integrity: sha512-kjJ8B+7n4tB9VJdxS5A9GdJt6/bYpzbu4lXp2uO1S3sRmCB5gDEABlGoiePNApRWaW+xqL4b4xgiE727jSLhuA==, @@ -2724,6 +2789,13 @@ packages: cpu: [x64] os: [darwin] + "@oxlint-tsgolint/darwin-x64@7.0.2001": + resolution: { + integrity: sha512-pXfBb5BqONCcgrXQNUZWXgiYmRSWJzd97S8i41VVOh6ut0tyo+cJ5FKFpczDHxiVNfj/3e7c9B4MtztNdpIVCw==, + } + cpu: [x64] + os: [darwin] + "@oxlint-tsgolint/linux-arm64@0.23.0": resolution: { integrity: sha512-6dCZuKNu135seMXilkRk9SpCx6i1XgmiipYGalLij5WVRX6ZYS8c4xI7preN/zv9fCXhsQclTIMDu2Y/cytTjw==, @@ -2731,6 +2803,13 @@ packages: cpu: [arm64] os: [linux] + "@oxlint-tsgolint/linux-arm64@7.0.2001": + resolution: { + integrity: sha512-roP7zujb/QDPzDwEKsFFpzNHHy91/Y7oX9vQXk78ekyZtcQj1QXDIMH33gjDdHBfRl4K9pZ36xhRgrP4Zr+R8A==, + } + cpu: [arm64] + os: [linux] + "@oxlint-tsgolint/linux-x64@0.23.0": resolution: { integrity: sha512-3bdilnyA7kmSTjK27rvjIjSxL5SIg3wt7vwNiRkouWB83ytssyKnuGvxSYJxgMEmFpSutzaBzcCUM2jDtPGcgA==, @@ -2738,6 +2817,13 @@ packages: cpu: [x64] os: [linux] + "@oxlint-tsgolint/linux-x64@7.0.2001": + resolution: { + integrity: sha512-UDezNqdECVmngu2TPnjaS1YoAmcTaBoI5lV9vk3VahBxoi+I5r9k3iJTT7qZoYWOXTD/7T7bNcwRgrocR6BscQ==, + } + cpu: [x64] + os: [linux] + "@oxlint-tsgolint/win32-arm64@0.23.0": resolution: { integrity: sha512-j+OEp44SVYiQ+ZD+uttsX7u6L9SvmbbQ77SO1pSFCcJlsVMeCk8qZsjhKfGKuT/jIA+ipOJMVs/+pqUfObBWNw==, @@ -2745,6 +2831,13 @@ packages: cpu: [arm64] os: [win32] + "@oxlint-tsgolint/win32-arm64@7.0.2001": + resolution: { + integrity: sha512-uJZhqB6pdXLuN+AD1F5082byyQti/NPmJA77GtcFlmT2HzRelqbNls3SaIqxpjdFgvSBF9g0yOKGBkGFg7kX8Q==, + } + cpu: [arm64] + os: [win32] + "@oxlint-tsgolint/win32-x64@0.23.0": resolution: { integrity: sha512-5MyjFuqf+g8OUPJBSGWHJtmoWnzFJYyOg4To9WMQshZYEWig/vtu7JtJ03VWnzHv9LJkAUeApY0gVCOywFR/iQ==, @@ -2752,6 +2845,13 @@ packages: cpu: [x64] os: [win32] + "@oxlint-tsgolint/win32-x64@7.0.2001": + resolution: { + integrity: sha512-FkDRm8hx9OwzGQqyWG1tO5QrTLRApff9DzSgpz9QZau37BR8d1VYKOxMLGf6shPZntJFoTwIIJYT68VndYDCog==, + } + cpu: [x64] + os: [win32] + "@oxlint/binding-android-arm-eabi@1.67.0": resolution: { integrity: sha512-VrSi571rDv1N8HaEDM+DEX8nmT0y9jJo8tzzW13vsOWTx59xQczCIJx68n2zWOXRT5YKZsOZXp4qkHN/10x4mw==, @@ -2760,6 +2860,14 @@ packages: cpu: [arm] os: [android] + "@oxlint/binding-android-arm-eabi@1.77.0": + resolution: { + integrity: sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm] + os: [android] + "@oxlint/binding-android-arm64@1.67.0": resolution: { integrity: sha512-l6+NdYxMoRohix5r5bbigW16LPicceCwGcQ6LKKuE1kUdjgFfQolJjrJsQYPFetIs78Gxj/G/f5TEGoTCwj9nQ==, @@ -2768,6 +2876,14 @@ packages: cpu: [arm64] os: [android] + "@oxlint/binding-android-arm64@1.77.0": + resolution: { + integrity: sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [android] + "@oxlint/binding-darwin-arm64@1.67.0": resolution: { integrity: sha512-jOzXxS1AxFxhImLIRbtGIMrEwaXcgMw3gR57WB1cRk8ai+vpr6726kxXqVvlNsrXtJ/FrmOm8RxlC0m8SW24Qg==, @@ -2776,6 +2892,14 @@ packages: cpu: [arm64] os: [darwin] + "@oxlint/binding-darwin-arm64@1.77.0": + resolution: { + integrity: sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [darwin] + "@oxlint/binding-darwin-x64@1.67.0": resolution: { integrity: sha512-3DFAVY94OqjIZHXIPz37yGRSWwOFTAqChQ64/M69GYLawzP0KiwdhDNfqdKKYT0bTR/DNxmMnQsj3ns+8+X/Lg==, @@ -2784,6 +2908,14 @@ packages: cpu: [x64] os: [darwin] + "@oxlint/binding-darwin-x64@1.77.0": + resolution: { + integrity: sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [darwin] + "@oxlint/binding-freebsd-x64@1.67.0": resolution: { integrity: sha512-e4dDKZuLu8TR9DEBssWSDahlPgZBwojTTHZUvnjBRJfJJbpxYCjfjKfi0Z1+CSLMiJBwI2yCDtRM1XJQaARjmg==, @@ -2792,6 +2924,14 @@ packages: cpu: [x64] os: [freebsd] + "@oxlint/binding-freebsd-x64@1.77.0": + resolution: { + integrity: sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [freebsd] + "@oxlint/binding-linux-arm-gnueabihf@1.67.0": resolution: { integrity: sha512-BKytFdcQzbITV3xlnzDUDTEDtbUMCCiC4EaNTDZ4FyT8gdNvBC4gfiLucXp/sQl0XU3p7syTlorUWVVVBZab2g==, @@ -2800,6 +2940,14 @@ packages: cpu: [arm] os: [linux] + "@oxlint/binding-linux-arm-gnueabihf@1.77.0": + resolution: { + integrity: sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm] + os: [linux] + "@oxlint/binding-linux-arm-musleabihf@1.67.0": resolution: { integrity: sha512-XYAv0esBDX7BpTzRDjVX2Vdj+zndd8ll2dFQiaeQ6zTZr7A8GRDTN7fH3FP3jU+O0vCDx85oH/EtG7BzPgAXuw==, @@ -2808,6 +2956,14 @@ packages: cpu: [arm] os: [linux] + "@oxlint/binding-linux-arm-musleabihf@1.77.0": + resolution: { + integrity: sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm] + os: [linux] + "@oxlint/binding-linux-arm64-gnu@1.67.0": resolution: { integrity: sha512-zizRMjA0i6u/2B0evgda04iycu+MoNuf1pBy6Eh+1CjC5wMEG7qN5zdDKTCvFc0KSYSDM9QTG3gjZHirgtQuKg==, @@ -2817,6 +2973,15 @@ packages: os: [linux] libc: [glibc] + "@oxlint/binding-linux-arm64-gnu@1.77.0": + resolution: { + integrity: sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [linux] + libc: [glibc] + "@oxlint/binding-linux-arm64-musl@1.67.0": resolution: { integrity: sha512-zB/Tf6sUjmmvvbva9Gj3JTJ8rJ9t4I8/U0o6vSRtd0DRIsIuyegBwJAzhSUFQHdMijIRJkW0exs/yBhpw2S20w==, @@ -2826,6 +2991,15 @@ packages: os: [linux] libc: [musl] + "@oxlint/binding-linux-arm64-musl@1.77.0": + resolution: { + integrity: sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [linux] + libc: [musl] + "@oxlint/binding-linux-ppc64-gnu@1.67.0": resolution: { integrity: sha512-kgU40Gt74CK0TCsF51KZymkIwN9U0BajKsMijB52zPqOeZU9NAHkA/NSQkZDHEaCakx42DxhXkODiAqf2b4Gug==, @@ -2835,6 +3009,15 @@ packages: os: [linux] libc: [glibc] + "@oxlint/binding-linux-ppc64-gnu@1.77.0": + resolution: { + integrity: sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [ppc64] + os: [linux] + libc: [glibc] + "@oxlint/binding-linux-riscv64-gnu@1.67.0": resolution: { integrity: sha512-tOYhkk/iaG9aD3FvGpBFd1Lrw0x0RaVoJBxjUkfNzS50rC5NS5BteNCwgr8A2zCdADrIIoze6D7u6U5Ic++/iQ==, @@ -2844,6 +3027,15 @@ packages: os: [linux] libc: [glibc] + "@oxlint/binding-linux-riscv64-gnu@1.77.0": + resolution: { + integrity: sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [riscv64] + os: [linux] + libc: [glibc] + "@oxlint/binding-linux-riscv64-musl@1.67.0": resolution: { integrity: sha512-sEtywrPb+0b+tHYl1SDCrw903fiC4eyKoNqzP3v+f2JT3Xcv4NEYG+P8rj+eEnX7IWhqV/xj8/JmcmVj21CXaA==, @@ -2853,6 +3045,15 @@ packages: os: [linux] libc: [musl] + "@oxlint/binding-linux-riscv64-musl@1.77.0": + resolution: { + integrity: sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [riscv64] + os: [linux] + libc: [musl] + "@oxlint/binding-linux-s390x-gnu@1.67.0": resolution: { integrity: sha512-BvR8Moa0zCLxroOx4vZaZN9nUfwAUpSTwjZdxZyKy4bv3PrzrXrxKR/ZQ0L9wNSvlPhnMJeZfa3q5w6ZCTuN6Q==, @@ -2862,6 +3063,15 @@ packages: os: [linux] libc: [glibc] + "@oxlint/binding-linux-s390x-gnu@1.77.0": + resolution: { + integrity: sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [s390x] + os: [linux] + libc: [glibc] + "@oxlint/binding-linux-x64-gnu@1.67.0": resolution: { integrity: sha512-mm2cxM6fksOpq6l0uFws8BUGKAR4dNa/cZCn37Npq7PFbhD5HDJqWfnoIvTaeRKMy5XdS2tO0MA0qbHDrnXAAA==, @@ -2871,6 +3081,15 @@ packages: os: [linux] libc: [glibc] + "@oxlint/binding-linux-x64-gnu@1.77.0": + resolution: { + integrity: sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [linux] + libc: [glibc] + "@oxlint/binding-linux-x64-musl@1.67.0": resolution: { integrity: sha512-WmbMuLapKyDlobMkXAaAL0Y+Uczh4LETfIfQsUpbId4Ip8Ai82/jqeYTOoUCkuuhBFapgqP253+d83tLKOksJg==, @@ -2880,6 +3099,15 @@ packages: os: [linux] libc: [musl] + "@oxlint/binding-linux-x64-musl@1.77.0": + resolution: { + integrity: sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [linux] + libc: [musl] + "@oxlint/binding-openharmony-arm64@1.67.0": resolution: { integrity: sha512-9g/PqxYJelzzTAOR5Y+RiRqdeydhEuXv2KxNeFcAKQ7UsvnWSY1OP4MsuPMbTO2Pf70tz7mFhl1j13H3fyh+8g==, @@ -2888,6 +3116,14 @@ packages: cpu: [arm64] os: [openharmony] + "@oxlint/binding-openharmony-arm64@1.77.0": + resolution: { + integrity: sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [openharmony] + "@oxlint/binding-win32-arm64-msvc@1.67.0": resolution: { integrity: sha512-2VhwE6Gatb0vJGnN0TBuQMbKCOiZlSQ/zJvVWYLK4a9d4iDiJOen/yVQkGpmsJ90MuH66fzi0kEKI0jRQMDxGA==, @@ -2896,6 +3132,14 @@ packages: cpu: [arm64] os: [win32] + "@oxlint/binding-win32-arm64-msvc@1.77.0": + resolution: { + integrity: sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [arm64] + os: [win32] + "@oxlint/binding-win32-ia32-msvc@1.67.0": resolution: { integrity: sha512-EQ3VExXfeM1InbE5+JjufhZZTWy+kHUwgt3yZR7gQ47Je/mE0WspQPan0OJznh493L5anM210YNJtH1PXjTSFg==, @@ -2904,6 +3148,14 @@ packages: cpu: [ia32] os: [win32] + "@oxlint/binding-win32-ia32-msvc@1.77.0": + resolution: { + integrity: sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [ia32] + os: [win32] + "@oxlint/binding-win32-x64-msvc@1.67.0": resolution: { integrity: sha512-bw24y+/1MHS4QDkons3YyHkPT9uCMoLHHgQhb+mb8NOjTYwub1CZ+K9Ngr8aO5DMrDrkqHwTzlTwFP2vS8Y/ZQ==, @@ -2912,6 +3164,14 @@ packages: cpu: [x64] os: [win32] + "@oxlint/binding-win32-x64-msvc@1.77.0": + resolution: { + integrity: sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + cpu: [x64] + os: [win32] + "@parcel/watcher-android-arm64@2.5.4": resolution: { integrity: sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==, @@ -7395,6 +7655,12 @@ packages: } hasBin: true + oxlint-tsgolint@7.0.2001: + resolution: { + integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==, + } + hasBin: true + oxlint@1.67.0: resolution: { integrity: sha512-blwwaHPdoH8piQ5/z0KHeoHFR7FZgl12WluKJfu4qFLPkZl6mK04PkLE45Fw1NxfBRSlh40Gu7MkxHUw++ociQ==, @@ -7410,6 +7676,21 @@ packages: vite-plus: optional: true + oxlint@1.77.0: + resolution: { + integrity: sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } + hasBin: true + peerDependencies: + oxlint-tsgolint: ">=7.0.2001" + vite-plus: "*" + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + p-filter@2.1.0: resolution: { integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, @@ -10023,6 +10304,37 @@ snapshots: better-sqlite3: 12.10.0 effect: 4.0.0-beta.90 + "@effect/tsgo-darwin-arm64@0.31.0": + optional: true + + "@effect/tsgo-darwin-x64@0.31.0": + optional: true + + "@effect/tsgo-linux-arm64@0.31.0": + optional: true + + "@effect/tsgo-linux-arm@0.31.0": + optional: true + + "@effect/tsgo-linux-x64@0.31.0": + optional: true + + "@effect/tsgo-win32-arm64@0.31.0": + optional: true + + "@effect/tsgo-win32-x64@0.31.0": + optional: true + + "@effect/tsgo@0.31.0": + optionalDependencies: + "@effect/tsgo-darwin-arm64": 0.31.0 + "@effect/tsgo-darwin-x64": 0.31.0 + "@effect/tsgo-linux-arm": 0.31.0 + "@effect/tsgo-linux-arm64": 0.31.0 + "@effect/tsgo-linux-x64": 0.31.0 + "@effect/tsgo-win32-arm64": 0.31.0 + "@effect/tsgo-win32-x64": 0.31.0 + "@effect/vitest@4.0.0-beta.90(effect@4.0.0-beta.90)(vitest@4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(jsdom@29.1.1)(vite@8.0.15(@types/node@25.9.1)(esbuild@0.28.0)(sass@1.100.0)(terser@5.45.0)(tsx@4.22.4)(yaml@2.9.0)))": dependencies: effect: 4.0.0-beta.90 @@ -10714,78 +11026,153 @@ snapshots: "@oxlint-tsgolint/darwin-arm64@0.23.0": optional: true + "@oxlint-tsgolint/darwin-arm64@7.0.2001": + optional: true + "@oxlint-tsgolint/darwin-x64@0.23.0": optional: true + "@oxlint-tsgolint/darwin-x64@7.0.2001": + optional: true + "@oxlint-tsgolint/linux-arm64@0.23.0": optional: true + "@oxlint-tsgolint/linux-arm64@7.0.2001": + optional: true + "@oxlint-tsgolint/linux-x64@0.23.0": optional: true + "@oxlint-tsgolint/linux-x64@7.0.2001": + optional: true + "@oxlint-tsgolint/win32-arm64@0.23.0": optional: true + "@oxlint-tsgolint/win32-arm64@7.0.2001": + optional: true + "@oxlint-tsgolint/win32-x64@0.23.0": optional: true + "@oxlint-tsgolint/win32-x64@7.0.2001": + optional: true + "@oxlint/binding-android-arm-eabi@1.67.0": optional: true + "@oxlint/binding-android-arm-eabi@1.77.0": + optional: true + "@oxlint/binding-android-arm64@1.67.0": optional: true + "@oxlint/binding-android-arm64@1.77.0": + optional: true + "@oxlint/binding-darwin-arm64@1.67.0": optional: true + "@oxlint/binding-darwin-arm64@1.77.0": + optional: true + "@oxlint/binding-darwin-x64@1.67.0": optional: true + "@oxlint/binding-darwin-x64@1.77.0": + optional: true + "@oxlint/binding-freebsd-x64@1.67.0": optional: true + "@oxlint/binding-freebsd-x64@1.77.0": + optional: true + "@oxlint/binding-linux-arm-gnueabihf@1.67.0": optional: true + "@oxlint/binding-linux-arm-gnueabihf@1.77.0": + optional: true + "@oxlint/binding-linux-arm-musleabihf@1.67.0": optional: true + "@oxlint/binding-linux-arm-musleabihf@1.77.0": + optional: true + "@oxlint/binding-linux-arm64-gnu@1.67.0": optional: true + "@oxlint/binding-linux-arm64-gnu@1.77.0": + optional: true + "@oxlint/binding-linux-arm64-musl@1.67.0": optional: true + "@oxlint/binding-linux-arm64-musl@1.77.0": + optional: true + "@oxlint/binding-linux-ppc64-gnu@1.67.0": optional: true + "@oxlint/binding-linux-ppc64-gnu@1.77.0": + optional: true + "@oxlint/binding-linux-riscv64-gnu@1.67.0": optional: true + "@oxlint/binding-linux-riscv64-gnu@1.77.0": + optional: true + "@oxlint/binding-linux-riscv64-musl@1.67.0": optional: true + "@oxlint/binding-linux-riscv64-musl@1.77.0": + optional: true + "@oxlint/binding-linux-s390x-gnu@1.67.0": optional: true + "@oxlint/binding-linux-s390x-gnu@1.77.0": + optional: true + "@oxlint/binding-linux-x64-gnu@1.67.0": optional: true + "@oxlint/binding-linux-x64-gnu@1.77.0": + optional: true + "@oxlint/binding-linux-x64-musl@1.67.0": optional: true + "@oxlint/binding-linux-x64-musl@1.77.0": + optional: true + "@oxlint/binding-openharmony-arm64@1.67.0": optional: true + "@oxlint/binding-openharmony-arm64@1.77.0": + optional: true + "@oxlint/binding-win32-arm64-msvc@1.67.0": optional: true + "@oxlint/binding-win32-arm64-msvc@1.77.0": + optional: true + "@oxlint/binding-win32-ia32-msvc@1.67.0": optional: true + "@oxlint/binding-win32-ia32-msvc@1.77.0": + optional: true + "@oxlint/binding-win32-x64-msvc@1.67.0": optional: true + "@oxlint/binding-win32-x64-msvc@1.77.0": + optional: true + "@parcel/watcher-android-arm64@2.5.4": optional: true @@ -10830,7 +11217,7 @@ snapshots: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.4 + picomatch: 4.0.5 optionalDependencies: "@parcel/watcher-android-arm64": 2.5.4 "@parcel/watcher-darwin-arm64": 2.5.4 @@ -14125,6 +14512,15 @@ snapshots: "@oxlint-tsgolint/win32-arm64": 0.23.0 "@oxlint-tsgolint/win32-x64": 0.23.0 + oxlint-tsgolint@7.0.2001: + optionalDependencies: + "@oxlint-tsgolint/darwin-arm64": 7.0.2001 + "@oxlint-tsgolint/darwin-x64": 7.0.2001 + "@oxlint-tsgolint/linux-arm64": 7.0.2001 + "@oxlint-tsgolint/linux-x64": 7.0.2001 + "@oxlint-tsgolint/win32-arm64": 7.0.2001 + "@oxlint-tsgolint/win32-x64": 7.0.2001 + oxlint@1.67.0(oxlint-tsgolint@0.23.0): optionalDependencies: "@oxlint/binding-android-arm-eabi": 1.67.0 @@ -14148,6 +14544,29 @@ snapshots: "@oxlint/binding-win32-x64-msvc": 1.67.0 oxlint-tsgolint: 0.23.0 + oxlint@1.77.0(oxlint-tsgolint@7.0.2001): + optionalDependencies: + "@oxlint/binding-android-arm-eabi": 1.77.0 + "@oxlint/binding-android-arm64": 1.77.0 + "@oxlint/binding-darwin-arm64": 1.77.0 + "@oxlint/binding-darwin-x64": 1.77.0 + "@oxlint/binding-freebsd-x64": 1.77.0 + "@oxlint/binding-linux-arm-gnueabihf": 1.77.0 + "@oxlint/binding-linux-arm-musleabihf": 1.77.0 + "@oxlint/binding-linux-arm64-gnu": 1.77.0 + "@oxlint/binding-linux-arm64-musl": 1.77.0 + "@oxlint/binding-linux-ppc64-gnu": 1.77.0 + "@oxlint/binding-linux-riscv64-gnu": 1.77.0 + "@oxlint/binding-linux-riscv64-musl": 1.77.0 + "@oxlint/binding-linux-s390x-gnu": 1.77.0 + "@oxlint/binding-linux-x64-gnu": 1.77.0 + "@oxlint/binding-linux-x64-musl": 1.77.0 + "@oxlint/binding-openharmony-arm64": 1.77.0 + "@oxlint/binding-win32-arm64-msvc": 1.77.0 + "@oxlint/binding-win32-ia32-msvc": 1.77.0 + "@oxlint/binding-win32-x64-msvc": 1.77.0 + oxlint-tsgolint: 7.0.2001 + p-filter@2.1.0: dependencies: p-map: 2.1.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 29157c4af5..48ae2f1dfd 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,6 +7,15 @@ allowBuilds: esbuild: false msgpackr-extract: false vue-demi: false +minimumReleaseAgeExclude: + - "@effect/tsgo-darwin-arm64@0.31.0" + - "@effect/tsgo-darwin-x64@0.31.0" + - "@effect/tsgo-linux-arm64@0.31.0" + - "@effect/tsgo-linux-arm@0.31.0" + - "@effect/tsgo-linux-x64@0.31.0" + - "@effect/tsgo-win32-arm64@0.31.0" + - "@effect/tsgo-win32-x64@0.31.0" + - "@effect/tsgo@0.31.0" overrides: date-fns: ^4.4.0 fast-check: ^4.8.0 @@ -16,4 +25,4 @@ patchedDependencies: "@tanstack/query-core": patches/@tanstack__query-core.patch typescript@6.0.3: patches/typescript.patch "@sendgrid/mail": patches/@sendgrid__mail.patch - '@changesets/cli@2.31.0': patches/@changesets__cli@2.31.0.patch + "@changesets/cli@2.31.0": patches/@changesets__cli@2.31.0.patch diff --git a/tsconfig.plugins.json b/tsconfig.plugins.json index d3dd7759ed..5607866c42 100644 --- a/tsconfig.plugins.json +++ b/tsconfig.plugins.json @@ -18,16 +18,10 @@ // "effect-app": [] // } // }, - // { - // "name": "@effect/language-service", - // "ignoreEffectWarningsInTscExitCode": true, - // "diagnosticSeverity": { - // "missingEffectServiceDependency": "error", - // "effectFnOpportunity": "warning", - // "globalErrorInEffectFailure": "warning", - // "preferSchemaOverJson": "warning" - // } - // } + { + "name": "@effect/language-service", + "diagnostics": false + } ] } } From ac64f2967b45fe886566241c0601f133d8261d53 Mon Sep 17 00:00:00 2001 From: "omegent-app[bot]" <306514130+omegent-app[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 06:20:06 +0000 Subject: [PATCH 2/2] fix: preserve Vue decode boundary type Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com> --- .../vue-components/src/components/OmegaForm/meta/defaults.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vue-components/src/components/OmegaForm/meta/defaults.ts b/packages/vue-components/src/components/OmegaForm/meta/defaults.ts index e18c68c7ba..9635d57af3 100644 --- a/packages/vue-components/src/components/OmegaForm/meta/defaults.ts +++ b/packages/vue-components/src/components/OmegaForm/meta/defaults.ts @@ -7,7 +7,8 @@ import { isNullableOrUndefined, unwrapDeclaration } from "./createMeta" const extractDefaultFromLink = (link: any): unknown | undefined => { if (!link?.transformation?.decode?.run) return undefined try { - const result = Effect.runSync(link.transformation.decode.run(Option.none())) + // oxlint-disable-next-line typescript/no-unnecessary-type-assertion -- vue-tsc needs the decoded value narrowed at this boundary + const result = Effect.runSync(link.transformation.decode.run(Option.none())) as Option.Option return Option.isSome(result) ? result.value : undefined } catch { return undefined