@deslop/coding-standards 0.1.1085 → 0.1.1086

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,24 +1,11 @@
1
- # Coding standards
1
+ # @deslop/coding-standards
2
2
 
3
- A strict Oxlint preset and an installer for the engineering, design and review skills. Requires Node 26+.
4
-
5
- ## Install the skills
6
-
7
- Run inside a Git repository, including a linked worktree:
8
-
9
- ```bash
10
- vpx @deslop/coding-standards@latest
11
- ```
12
-
13
- It copies all package-owned skills into the repository's existing `.agents`, `.claude` and `.codex` directories. It always writes `.claude`, which Claude Code reads, and writes `.agents` when no `.codex` exists. A refresh replaces only those names; destinations outside the repository or inside global agent configuration are rejected. Other skills, sign-ins, manifests, lockfiles and lint configuration stay unchanged. Edit package sources, then refresh installed copies with the CLI.
14
-
15
- Use engineering for mechanisms, code, tests and proof, design for visible behavior and review for independent critique and cleanup. Refer to another skill by name, not its installation path. Personal orchestration, delivery, machine commands and reply preferences stay outside this package.
16
-
17
- ## Use the lint preset
3
+ A strict Oxlint preset, and the engineering, design and review skills for Claude Code and Codex.
18
4
 
19
5
  ```bash
6
+ vpx @deslop/coding-standards@latest # copy the skills into the repository's .claude, .codex or .agents
20
7
  vp add -D @deslop/coding-standards @effect/tsgo
21
- vp exec effect-tsgo patch --no-typescript --oxlint
8
+ vp exec effect-tsgo patch --no-typescript --oxlint # the preset needs the patched Oxlint; keep this in `prepare`
22
9
  ```
23
10
 
24
11
  ```ts
@@ -29,64 +16,4 @@ import {oxlint} from '@deslop/coding-standards'
29
16
  export default defineConfig({lint: {extends: [oxlint]}})
30
17
  ```
31
18
 
32
- The preset needs Effect-tsgo's patched Oxlint, so keep the patch command in the project's `prepare` script. Its fixes leave redundant parentheses and blank lines for the formatter, so the project's fix script runs `vp fmt` after `vp check --fix`, even when diagnostics remain, and exits with the status of the check.
33
-
34
- <details>
35
- <summary>For agents</summary>
36
-
37
- ### Decisions
38
-
39
- | Owner | Decision |
40
- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
- | `src/` | Flat package structure; rules in `src/rules`, no separate plugin or install-test harness |
42
- | `skills/` | Maintained engineering, design and review sources; refresh repository copies from the TypeScript CLI, no build needed |
43
- | Lint rules | Prefer an equivalent maintained rule before custom enforcement; consumer code conforms to strict standards, not the reverse. Fix broken or imprecise rules, not inconvenient valid diagnostics. A rule targets code the engineering skill and the other rules allow; an edge case that only unusual code reaches takes an inline disable with its reason, never a looser rule |
44
- | Rule proof | Public CLI cases with accepted and rejected inputs; no severity or exclusion workaround |
45
-
46
- With workspace dependencies installed, from the repository root:
47
-
48
- ```bash
49
- vp test run tools/coding-standards/src/rules/rules.test.ts
50
- node tools/coding-standards/src/install.ts
51
- ```
52
-
53
- ### Rejected shortcuts
54
-
55
- | Candidate | Reason |
56
- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
57
- | Blanket `unknown` type ban | Opaque SDK and framework contracts legitimately need it; narrow or decode before use instead of fabricating a shape |
58
- | Functional preset or dependency just to replace `no-let` | The preset conflicts; a selective plugin adds dependencies for a tiny rule |
59
- | Syntax-only generator-failure rule | Factory-call syntax does not establish yieldability; the existing type-aware Effect rule owns that check |
60
-
61
- ### Skill sources
62
-
63
- | Source | Used and boundary |
64
- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
65
- | [Matt Pocock's engineering skills](https://github.com/mattpocock/skills/tree/d81f3a183412e71a5b1e84ca21bc1a35eea03a60/skills/engineering) | Caller-first contracts, causal debugging and one uncertain behavior at a time; no universal TDD |
66
- | [Cursor / pstack](https://github.com/cursor/plugins/tree/e43c7ee26e0038c6c1fa8380dd34ce86ff94cb2a/pstack) | Interface rationale, focused bug replay and defensible benchmarks; no playbook-stage machinery |
67
- | [Kit Langton's Effect skill](https://github.com/kitlangton/skills/tree/71195e36024ebd2e66c5beac946e81eafd5abc43/skills/effect) | Schema construction/optionality, checked against actual [Effect 4 source](https://github.com/Effect-TS/effect/tree/67ba4e46a11ccda0b6761578bfd22c04ae00167d/packages/effect/src) |
68
- | [Vercel's agent skills](https://github.com/vercel-labs/agent-skills/tree/063bee94c3f4df8453406c830b0a7df0f2860278/skills) | Independent I/O and narrow subscriptions, translated to Effect/atoms; no manual React memoization |
69
- | [Anthropic frontend-design](https://github.com/anthropics/skills/tree/main/skills/frontend-design) and [Vercel design guidelines](https://vercel.com/design/guidelines) | Task-led composition, copy and interaction contracts (targets, focus, URL state, forms); Critique keeps the generated-default list, not a studio persona |
70
- | [Emil Kowalski's skills](https://github.com/emilkowalski/skills/tree/e8a175de22ae1e49370fc144c1f3bb9aeedf988d/skills) | Realistic layout stress, interruptible motion and mobile checks; no fixed variant picker or audit fan-out. Performance caveats checked against [Motion docs](https://motion.dev/docs/performance) |
71
- | [Dillon Mulroy's skills](https://github.com/dmmulroy/skills/tree/8603380821fee6a77c82639f364ce8fe4f5a92be) and [anti-slop](https://github.com/dmmulroy/anti-slop/tree/c44ef22ca116d0ba62a3ff663a0bd13a3f3fa40b) | Reviewed Effect/error and cleanup approaches; retain our own service layout and ownership |
72
- | [Interface Craft](https://www.interfacecraft.dev/library), the user's licensed library | Before-the-first-draft steps, range and depth, agent-run tuning, the four-pass critique, optical, color, type and motion values; ideas adapted in our words, no files copied |
73
- | [Apple HIG](https://developer.apple.com/design/human-interface-guidelines), [Linear](https://linear.app/now/how-we-redesigned-the-linear-ui), [Rauno Freiberg](https://rauno.me/craft/interaction-design), [Geist](https://vercel.com/geist), [Radix](https://www.radix-ui.com/primitives/docs/overview/accessibility) and [WCAG](https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html) | The quality bar, platform conventions, semantic type and glass, gesture behavior, border and shadow roles, dialog contracts and contrast ratios |
74
-
75
- Additional sources for this refinement:
76
-
77
- - [OpenClaw test audit](https://github.com/openclaw/openclaw/blob/main/.agents/skills/test-audit/SKILL.md): deletion of tautological tests; retain independent boundary contracts.
78
- - [Trail of Bits](https://github.com/trailofbits/skills): reproduce the strongest reachable counterexample and inspect variants of a known root cause; no routine security-audit machinery.
79
- - [Bret Victor](https://worrydream.com/ExplorableExplanations/) and [Nicky Case](https://blog.ncase.me/how-i-make-an-explorable-explanation/): concrete cause and consequence, with optional exploration rather than mandatory navigation.
80
- - [Taste skill](https://github.com/Leonxlnx/taste-skill/tree/a60a36dc2bb3bb77ccf17f2f62041f5ca8a458b9): real subject inventory and screenshot critique; no mandatory image, motion or component quotas.
81
- - [Anatomy](https://github.com/wheresryan22/anatomy): physical and isometric explanations when their relationships are the concept; no mandatory dense machine or separate card frame.
82
- - [Antfu design](https://github.com/antfu/design): native token hierarchy, density and affordance; no Vue or UnoCSS dependency added.
83
- - [Animated sprites](https://github.com/elithrar/dotfiles/tree/main/.agents/skills/animated-sprites): separate structural validity from perceptual motion and actual timing; no character assets required.
84
- - [pstack correct](https://github.com/cursor/plugins/blob/e5136d82418d2db3165ea1050d17577cd618cc05/pstack/skills/correct/SKILL.md), [caller migration](https://github.com/cursor/plugins/blob/e5136d82418d2db3165ea1050d17577cd618cc05/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md) and [design red flags](https://github.com/cursor/plugins/blob/e5136d82418d2db3165ea1050d17577cd618cc05/pstack/skills/architect/references/design-red-flags.md): engineering's Patterns, with a canonical example per shape, whole-repository pattern changes and enforcement of repeated corrections above prose; no rule table beside the Patterns rows, no expiry dates on exceptions.
85
-
86
- - [obra/superpowers](https://github.com/obra/superpowers/tree/bb92a77741419a4ab5f06e711a283343f1ada0c3), [Matt Pocock](https://github.com/mattpocock/skills/tree/49dd158d1076134a641b33efb035946536778336) and [pstack](https://github.com/cursor/plugins/tree/09d06eb4b97a1020ab31e84030e38baf1099c7dc/pstack): recipes over prohibitions, requirement-to-proof mapping, domain-concept search, shrunk reproductions, the shared premise after two failed fixes, a behavior capture before refactors and three similar lines over an abstraction; no approval gates, test-first rituals or verification quotas.
87
- - [Felix Rieseberg, How to be more ambitious](https://felixrieseberg.com/how-to-be-more-ambitious-a-tutorial-for-humans-with-models/): adversarial review by activity, never persona, from raw evidence, and the expert's unrequested check.
88
- - [Emil Kowalski's animate skill](https://github.com/emilkowalski/skills/tree/2d228630ba1446365f614a108cb8252f1feda202/skills/animate) and [Taste v2](https://github.com/Leonxlnx/taste-skill/tree/f624f37a8c650b9cc550253104925efe4c8de246): a slower pace for explanatory motion and measured overflow, clipping and font checks before visual critique.
89
-
90
- These are selectively adapted ideas, not imported frameworks. Concrete behavior, existing stack and settled user decisions govern the maintained skills. Source inspection does not establish a model-quality improvement.
91
-
92
- </details>
19
+ The preset's fixes leave work for the formatter, so run `vp fmt` after `vp check --fix`. Your own `ignorePatterns` replace the preset's, so repeat `**/*.gen.ts`.
@@ -2494,7 +2494,7 @@ const EffectProto = {
2494
2494
  return {
2495
2495
  _id: "Effect",
2496
2496
  op: this[identifier],
2497
- ...args in this ? { args: this[args] } : void 0
2497
+ ..."~effect/Effect/args" in this ? { args: this[args] } : void 0
2498
2498
  };
2499
2499
  }
2500
2500
  };
@@ -2677,7 +2677,7 @@ function defaultEvaluate(_fiber) {
2677
2677
  const makePrimitiveProto = (options) => ({
2678
2678
  ...EffectProto,
2679
2679
  [identifier]: options.op,
2680
- [evaluate]: options[evaluate] ?? defaultEvaluate,
2680
+ [evaluate]: options["~effect/Effect/evaluate"] ?? defaultEvaluate,
2681
2681
  [contA]: options[contA],
2682
2682
  [contE]: options[contE],
2683
2683
  [contAll]: options[contAll]
@@ -2713,7 +2713,7 @@ const makeExit = (options) => {
2713
2713
  };
2714
2714
  },
2715
2715
  [symbol](that) {
2716
- return isExit(that) && that._tag === this._tag && equals(this[args], that[args]);
2716
+ return isExit(that) && that._tag === this._tag && equals(this["~effect/Effect/args"], that["~effect/Effect/args"]);
2717
2717
  },
2718
2718
  [symbol$1]() {
2719
2719
  return combine(string(options.op), hash(this[args]));
@@ -6409,28 +6409,6 @@ const Order = String$2;
6409
6409
  */
6410
6410
  const toUpperCase = (self) => self.toUpperCase();
6411
6411
  /**
6412
- * Replaces matches in a string using `String.prototype.replace`.
6413
- *
6414
- * **Details**
6415
- *
6416
- * String search values and non-global regular expressions replace the first
6417
- * match; global regular expressions replace every match.
6418
- *
6419
- * **Example** (Replacing a substring)
6420
- *
6421
- * ```ts import.meta.vitest
6422
- * import { pipe, String } from "effect"
6423
- *
6424
- * pipe("abc", String.replace("b", "d")) // => "adc"
6425
- * pipe("hello world", String.replace("world", "Effect")) // => "hello Effect"
6426
- * ```
6427
- *
6428
- * @stability stable
6429
- * @category transforming
6430
- * @since 2.0.0
6431
- */
6432
- const replace = (searchValue, replaceValue) => (self) => self.replace(searchValue, replaceValue);
6433
- /**
6434
6412
  * Removes whitespace from both ends of a string.
6435
6413
  *
6436
6414
  * **Example** (Trimming whitespace)
@@ -7052,4 +7030,4 @@ const toArrayN = (self, n) => {
7052
7030
  */
7053
7031
  const toArray = (self) => toArrayN(self, self.length);
7054
7032
  //#endregion
7055
- export { last as $, toStringUnknown as $n, pipeArguments as $r, isGreaterThanOrEqualTo as $t, dedupe as A, contE as An, isNullish as Ar, filter$1 as At, findLast as B, isEffect as Bn, isUnknown as Br, liftThrowable as Bt, Error$1 as C, causeDie as Cn, isBoolean as Cr, map$2 as Ct, appendAll as D, constEmptyAnnotations as Dn, isNotNull as Dr, all as Dt, append$1 as E, causeFromReasons as En, isIterable as Er, normalize as Et, every as F, exitFailCause as Fn, isReadonlyObject as Fr, fromUndefinedOr as Ft, get$1 as G, makePrimitiveProto as Gn, constant as Gr, some$1 as Gt, flatten as H, isFailReason as Hn, constTrue as Hr, match$4 as Ht, filter as I, exitSucceed as In, isRegExp as Ir, getOrElse as It, isArrayEmpty as J, internalCall as Jn, memoize as Jr, BigInt$1 as Jt, getSomes as K, withFiber as Kn, dual as Kr, toArray$1 as Kt, filterMap as L, isCause as Ln, isString as Lr, getOrUndefined as Lt, dropRight as M, evaluate as Mn, isObject as Mr, flatMap$2 as Mt, empty as N, exitDie as Nn, isObjectKeyword as Nr, flatten$1 as Nt, contains as O, contA as On, isNotNullish as Or, contains$1 as Ot, ensure as P, exitFail as Pn, isPropertyKey as Pr, fromNullishOr as Pt, join as Q, NodeInspectSymbol as Qn, Prototype as Qr, isGreaterThan as Qt, findFirst as R, isDieReason as Rn, isTagged as Rr, isNone as Rt, round as S, causeCombine as Sn, isBigInt as Sr, isSuccess as St, taggedEnum as T, causeFail as Tn, isFunction as Tr, succeed as Tt, forEach as U, isInterruptReason as Un, constUndefined as Ur, none as Ut, flatMap as V, isExit as Vn, constFalse as Vr, map$3 as Vt, fromIterable as W, makePrimitive as Wn, constVoid as Wr, orElse as Wt, isCanonicalArrayIndex as X, setStackTraceLimit as Xn, pipe as Xr, Number$2 as Xt, isArrayNonEmpty as Y, getStackTraceLimit as Yn, memoizeIdempotent as Yr, Date$1 as Yt, isReadonlyArrayNonEmpty as Z, BaseProto as Zn, Class$1 as Zr, String$2 as Zt, startsWith as _, TaggedError$1 as _n, string as _r, fail as _t, takeN as a, make$3 as an, currentFiberTypeId as ar, prepend as at, trimEnd as b, causeAddInterrupts as bn, symbol$1 as br, getOrThrow as bt, make$1 as c, Die as cn, asEquivalence as cr, sort as ct, Order as d, ExitTypeId as dn, symbol as dr, fromEntries as dt, isLessThan as en, format as er, makeEquivalence as et, includes as f, Fail as fn, array as fr, get$2 as ft, split as g, StackTraceKey as gn, optimize as gr, values as gt, replaceAll as h, ReasonBase as hn, number as hr, remove as ht, take as i, Tuple as in, formatPropertyKey as ir, of as it, dedupeWith as j, done as jn, isNumber as jr, firstSomeOf as jt, containsWith as k, contAll as kn, isNotUndefined as kr, exists as kt, update as l, Done as ln, byReferenceUnsafe as lr, take$1 as lt, replace as m, PipeInspectableProto as mn, hash as mr, map$1 as mt, clear as n, make$2 as nn, formatJson as nr, match$2 as nt, toArray as o, strictEqual as on, redact as or, reduce as ot, match$1 as p, InterruptorStackTrace as pn, combine as pr, makeEquivalence$1 as pt, head as q, assignProperty as qn, identity as qr, zipWith as qt, make as r, mapInput as rn, formatPath as rr, matchRight as rt, get as s, CauseImpl as sn, symbolRedactable as sr, some as st, append as t, isLessThanOrEqualTo as tn, formatDate as tr, map as tt, match as u, Error$2 as un, equals as ur, takeWhile as ut, toUpperCase as v, Yield as vn, structure as vr, flatMap$1 as vt, TaggedError as w, causeEmpty as wn, isError as wr, match$3 as wt, parse as x, causeAnnotate as xn, hasProperty as xr, isFailure as xt, trim as y, args as yn, structureKeys as yr, fromOption as yt, findFirstIndex as z, isDone as zn, isUndefined as zr, isSome as zt };
7033
+ export { makeEquivalence as $, format as $n, isLessThan as $t, dedupeWith as A, done as An, isNumber as Ar, firstSomeOf as At, flatMap as B, isExit as Bn, constFalse as Br, map$3 as Bt, TaggedError as C, causeEmpty as Cn, isError as Cr, match$3 as Ct, contains as D, contA as Dn, isNotNullish as Dr, contains$1 as Dt, appendAll as E, constEmptyAnnotations as En, isNotNull as Er, all as Et, filter as F, exitSucceed as Fn, isRegExp as Fr, getOrElse as Ft, getSomes as G, withFiber as Gn, dual as Gr, toArray$1 as Gt, forEach as H, isInterruptReason as Hn, constUndefined as Hr, none as Ht, filterMap as I, isCause as In, isString as Ir, getOrUndefined as It, isArrayNonEmpty as J, getStackTraceLimit as Jn, memoizeIdempotent as Jr, Date$1 as Jt, head as K, assignProperty as Kn, identity as Kr, zipWith as Kt, findFirst as L, isDieReason as Ln, isTagged as Lr, isNone as Lt, empty as M, exitDie as Mn, isObjectKeyword as Mr, flatten$1 as Mt, ensure as N, exitFail as Nn, isPropertyKey as Nr, fromNullishOr as Nt, containsWith as O, contAll as On, isNotUndefined as Or, exists as Ot, every as P, exitFailCause as Pn, isReadonlyObject as Pr, fromUndefinedOr as Pt, last as Q, toStringUnknown as Qn, pipeArguments as Qr, isGreaterThanOrEqualTo as Qt, findFirstIndex as R, isDone as Rn, isUndefined as Rr, isSome as Rt, Error$1 as S, causeDie as Sn, isBoolean as Sr, map$2 as St, append$1 as T, causeFromReasons as Tn, isIterable as Tr, normalize as Tt, fromIterable as U, makePrimitive as Un, constVoid as Ur, orElse as Ut, flatten as V, isFailReason as Vn, constTrue as Vr, match$4 as Vt, get$1 as W, makePrimitiveProto as Wn, constant as Wr, some$1 as Wt, isReadonlyArrayNonEmpty as X, BaseProto as Xn, Class$1 as Xr, String$2 as Xt, isCanonicalArrayIndex as Y, setStackTraceLimit as Yn, pipe as Yr, Number$2 as Yt, join as Z, NodeInspectSymbol as Zn, Prototype as Zr, isGreaterThan as Zt, toUpperCase as _, Yield as _n, structure as _r, flatMap$1 as _t, takeN as a, strictEqual as an, redact as ar, reduce as at, parse as b, causeAnnotate as bn, hasProperty as br, isFailure as bt, make$1 as c, Done as cn, byReferenceUnsafe as cr, take$1 as ct, Order as d, Fail as dn, array as dr, get$2 as dt, isLessThanOrEqualTo as en, formatDate as er, map as et, includes as f, InterruptorStackTrace as fn, combine as fr, makeEquivalence$1 as ft, startsWith as g, TaggedError$1 as gn, string as gr, fail as gt, split as h, StackTraceKey as hn, optimize as hr, values as ht, take as i, make$3 as in, currentFiberTypeId as ir, prepend as it, dropRight as j, evaluate as jn, isObject as jr, flatMap$2 as jt, dedupe as k, contE as kn, isNullish as kr, filter$1 as kt, update as l, Error$2 as ln, equals as lr, takeWhile as lt, replaceAll as m, ReasonBase as mn, number as mr, remove as mt, clear as n, mapInput as nn, formatPath as nr, matchRight as nt, toArray as o, CauseImpl as on, symbolRedactable as or, some as ot, match$1 as p, PipeInspectableProto as pn, hash as pr, map$1 as pt, isArrayEmpty as q, internalCall as qn, memoize as qr, BigInt$1 as qt, make as r, Tuple as rn, formatPropertyKey as rr, of as rt, get as s, Die as sn, asEquivalence as sr, sort as st, append as t, make$2 as tn, formatJson as tr, match$2 as tt, match as u, ExitTypeId as un, symbol as ur, fromEntries as ut, trim as v, args as vn, structureKeys as vr, fromOption as vt, taggedEnum as w, causeFail as wn, isFunction as wr, succeed as wt, round as x, causeCombine as xn, isBigInt as xr, isSuccess as xt, trimEnd as y, causeAddInterrupts as yn, symbol$1 as yr, getOrThrow as yt, findLast as z, isEffect as zn, isUnknown as zr, liftThrowable as zt };
package/dist/install.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $n as toStringUnknown, $r as pipeArguments, A as dedupe, An as contE, Ar as isNullish, B as findLast, Bn as isEffect$1, Br as isUnknown, C as Error$2, Cn as causeDie, Cr as isBoolean$1, Dn as constEmptyAnnotations, Dr as isNotNull, E as append, En as causeFromReasons, Er as isIterable, Et as normalize$1, Fn as exitFailCause, Ft as fromUndefinedOr, Gn as makePrimitiveProto, Gr as constant, Gt as some, Hn as isFailReason$1, Hr as constTrue, Ht as match$4, I as filter, In as exitSucceed, It as getOrElse, Jn as internalCall, Jr as memoize, Kn as withFiber$1, Kr as dual, Ln as isCause, Lr as isString$1, Lt as getOrUndefined$1, Mn as evaluate, Mr as isObject, Mt as flatMap$4, N as empty$3, Nn as exitDie, Nr as isObjectKeyword, O as contains, On as contA, Or as isNotNullish, Pn as exitFail, Pt as fromNullishOr, Q as join$1, Qn as NodeInspectSymbol, Qr as Prototype$1, Qt as isGreaterThan$1, R as findFirst, Rn as isDieReason$1, Rr as isTagged, Rt as isNone, S as round, Sn as causeCombine, T as taggedEnum, Tn as causeFail, Tr as isFunction, Tt as succeed$6, Un as isInterruptReason, Ur as constUndefined, Ut as none, Vn as isExit, Vr as constFalse, Vt as map$10, W as fromIterable$1, Wn as makePrimitive$1, Wr as constVoid, Wt as orElse, X as isCanonicalArrayIndex, Xn as setStackTraceLimit, Xr as pipe, Xt as Number$5, Y as isArrayNonEmpty, Yn as getStackTraceLimit, Yr as memoizeIdempotent, Z as isReadonlyArrayNonEmpty, Zn as BaseProto, Zr as Class, Zt as String$6, _ as startsWith, _n as TaggedError$2, _r as string$1, _t as fail$5, a as takeN, ar as currentFiberTypeId, b as trimEnd, bn as causeAddInterrupts, br as symbol$1, c as make$30, cn as Die, dn as ExitTypeId, dr as symbol, er as format$1, fn as Fail, gn as StackTraceKey, hn as ReasonBase, hr as number$1, i as take$1, ir as formatPropertyKey, it as of, jn as done$1, jr as isNumber, kn as contAll, kr as isNotUndefined, kt as exists, ln as Done$1, mn as PipeInspectableProto, mr as hash, n as clear, nr as formatJson, nt as match$5, ot as reduce, pn as InterruptorStackTrace, pr as combine$1, qn as assignProperty, qr as identity, r as make$29, rn as mapInput, rr as formatPath, sn as CauseImpl, st as some$1, t as append$1, tt as map$8, u as match$6, un as Error$3, ur as equals$1, vn as Yield, vr as structure, w as TaggedError$1, wn as causeEmpty, wr as isError, wt as match$3, xn as causeAnnotate, xr as hasProperty, xt as isFailure$1, yn as args, z as findFirstIndex, zn as isDone$2, zr as isUndefined, zt as isSome } from "./MutableList-NTBI6AHW.mjs";
2
+ import { $n as format$1, An as done$1, Ar as isNumber, Bn as isExit, Br as constFalse, Bt as map$10, C as TaggedError$1, Cn as causeEmpty, Cr as isError, Ct as match$3, D as contains, Dn as contA, Dr as isNotNullish, En as constEmptyAnnotations, Er as isNotNull, F as filter, Fn as exitSucceed, Ft as getOrElse, Gn as withFiber$1, Gr as dual, Hn as isInterruptReason, Hr as constUndefined, Ht as none, In as isCause, Ir as isString$1, It as getOrUndefined$1, J as isArrayNonEmpty, Jn as getStackTraceLimit, Jr as memoizeIdempotent, Kn as assignProperty, Kr as identity, L as findFirst, Ln as isDieReason$1, Lr as isTagged, Lt as isNone, M as empty$3, Mn as exitDie, Mr as isObjectKeyword, Nn as exitFail, Nt as fromNullishOr, On as contAll, Or as isNotUndefined, Ot as exists, Pn as exitFailCause, Pt as fromUndefinedOr, Qn as toStringUnknown, Qr as pipeArguments, R as findFirstIndex, Rn as isDone$2, Rr as isUndefined, Rt as isSome, S as Error$2, Sn as causeDie, Sr as isBoolean$1, T as append, Tn as causeFromReasons, Tr as isIterable, Tt as normalize$1, U as fromIterable$1, Un as makePrimitive$1, Ur as constVoid, Ut as orElse, Vn as isFailReason$1, Vr as constTrue, Vt as match$4, Wn as makePrimitiveProto, Wr as constant, Wt as some, X as isReadonlyArrayNonEmpty, Xn as BaseProto, Xr as Class, Xt as String$6, Y as isCanonicalArrayIndex, Yn as setStackTraceLimit, Yr as pipe, Yt as Number$5, Z as join$1, Zn as NodeInspectSymbol, Zr as Prototype$1, Zt as isGreaterThan$1, _n as Yield, _r as structure, a as takeN, at as reduce, bn as causeAnnotate, br as hasProperty, bt as isFailure$1, c as make$30, cn as Done$1, dn as Fail, et as map$8, fn as InterruptorStackTrace, fr as combine$1, g as startsWith, gn as TaggedError$2, gr as string$1, gt as fail$5, hn as StackTraceKey, i as take$1, ir as currentFiberTypeId, jn as evaluate, jr as isObject, jt as flatMap$4, k as dedupe, kn as contE, kr as isNullish, ln as Error$3, lr as equals$1, mn as ReasonBase, mr as number$1, n as clear, nn as mapInput, nr as formatPath, on as CauseImpl, ot as some$1, pn as PipeInspectableProto, pr as hash, qn as internalCall, qr as memoize, r as make$29, rr as formatPropertyKey, rt as of, sn as Die, t as append$1, tr as formatJson, tt as match$5, u as match$6, un as ExitTypeId, ur as symbol, vn as args, w as taggedEnum, wn as causeFail, wr as isFunction, wt as succeed$6, x as round, xn as causeCombine, y as trimEnd, yn as causeAddInterrupts, yr as symbol$1, z as findLast, zn as isEffect$1, zr as isUnknown } from "./MutableList-CnvD7fcZ.mjs";
3
3
  import * as OS from "node:os";
4
4
  import * as NodeChildProcess from "node:child_process";
5
5
  import { PassThrough } from "node:stream";
@@ -1835,7 +1835,7 @@ var FiberImpl = class {
1835
1835
  current = cache.tracerContext ? cache.tracerContext(current, this) : current[evaluate](this);
1836
1836
  if (current === Yield) {
1837
1837
  const yielded = this._yielded;
1838
- if (ExitTypeId in yielded) {
1838
+ if ("~effect/Exit" in yielded) {
1839
1839
  this._deferredInterrupt = false;
1840
1840
  this._yielded = void 0;
1841
1841
  return yielded;
@@ -1847,7 +1847,7 @@ var FiberImpl = class {
1847
1847
  return Yield;
1848
1848
  }
1849
1849
  } catch (error) {
1850
- if (!hasProperty(current, evaluate)) return exitDie(`Fiber.runLoop: Not a valid effect: ${String(current)}`);
1850
+ if (!hasProperty(current, "~effect/Effect/evaluate")) return exitDie(`Fiber.runLoop: Not a valid effect: ${String(current)}`);
1851
1851
  current = exitDie(error);
1852
1852
  }
1853
1853
  } finally {
@@ -2031,7 +2031,7 @@ const yieldNow = /*#__PURE__*/ (/* @__PURE__ */ makePrimitive$1({
2031
2031
  fiber.currentDispatcher.scheduleTask(() => {
2032
2032
  if (resumed) return;
2033
2033
  fiber.evaluate(exitVoid);
2034
- }, this[args] ?? 0);
2034
+ }, this["~effect/Effect/args"] ?? 0);
2035
2035
  return fiber.yieldWith(() => {
2036
2036
  resumed = true;
2037
2037
  });
@@ -2816,14 +2816,14 @@ const whileLoop$1 = /*#__PURE__*/ makePrimitive$1({
2816
2816
  op: "While",
2817
2817
  [contA](value, fiber) {
2818
2818
  this[args].step(value);
2819
- if (this[args].while()) {
2819
+ if (this["~effect/Effect/args"].while()) {
2820
2820
  fiber._stack.push(this);
2821
2821
  return this[args].body();
2822
2822
  }
2823
2823
  return exitVoid;
2824
2824
  },
2825
2825
  [evaluate](fiber) {
2826
- if (this[args].while()) {
2826
+ if (this["~effect/Effect/args"].while()) {
2827
2827
  fiber._stack.push(this);
2828
2828
  return this[args].body();
2829
2829
  }
@@ -11985,7 +11985,7 @@ function run$4(ast) {
11985
11985
  function parserResult(result, input) {
11986
11986
  if (result === sameExit) return succeed$2(input);
11987
11987
  if (!effectIsExit(result)) return flatMapEager(result, getValue);
11988
- return result[args] === missing ? getValue(missing) : result;
11988
+ return result["~effect/Effect/args"] === missing ? getValue(missing) : result;
11989
11989
  }
11990
11990
  function runWithCompiler(compiler, ast) {
11991
11991
  let parser;
@@ -11993,7 +11993,7 @@ function runWithCompiler(compiler, ast) {
11993
11993
  const result = (parser ??= compiler(ast))(input, options ?? defaultParseOptions);
11994
11994
  if (result === sameExit) return succeed$2(input);
11995
11995
  if (!effectIsExit(result)) return flatMapEager(result, getValue);
11996
- return result[args] === missing ? getValue(missing) : result;
11996
+ return result["~effect/Effect/args"] === missing ? getValue(missing) : result;
11997
11997
  };
11998
11998
  }
11999
11999
  function asExit(parser) {
@@ -19948,18 +19948,6 @@ const cursorHide = `${ESC}?25l`;
19948
19948
  /**
19949
19949
  * @internal
19950
19950
  */
19951
- const cursorLeft = `${ESC}G`;
19952
- /**
19953
- * @internal
19954
- */
19955
- const cursorSavePosition = `${ESC}s`;
19956
- /**
19957
- * @internal
19958
- */
19959
- const cursorRestorePosition = `${ESC}u`;
19960
- /**
19961
- * @internal
19962
- */
19963
19951
  const eraseLine = `${ESC}2K`;
19964
19952
  /**
19965
19953
  * @internal
@@ -20544,7 +20532,7 @@ const handleConfirmClear = (options) => {
20544
20532
  const figures = yield* getTheme(options);
20545
20533
  const confirmMessage = state.value ? options.placeholder.defaultConfirm : options.placeholder.defaultDeny;
20546
20534
  const promptText = renderPrompt(confirmMessage, options.message, figures.prefix, figures.pointerSmall, figures, { plain: true });
20547
- return eraseText(promptText, columns) + (eraseLine + cursorLeft);
20535
+ return eraseText(promptText, columns) + (eraseLine + "\x1B[G");
20548
20536
  });
20549
20537
  };
20550
20538
  const renderConfirmNextFrame = /*#__PURE__*/ fnUntraced(function* (state, options) {
@@ -20585,7 +20573,7 @@ const handleDateClear = (options) => {
20585
20573
  return fnUntraced(function* (state, _) {
20586
20574
  const columns = yield* (yield* Terminal).columns;
20587
20575
  const figures = yield* getTheme(options);
20588
- const resetCurrentLine = eraseLine + cursorLeft;
20576
+ const resetCurrentLine = eraseLine + "\x1B[G";
20589
20577
  const parts = reduce(state.dateParts, "", (doc, part) => doc + part.toString());
20590
20578
  const promptText = renderPrompt(parts, options.message, figures.prefix, figures.pointerSmall, figures, { plain: true });
20591
20579
  const errorText = isSome(state.error) ? match$5(state.error.value.split(NEWLINE_REGEXP), {
@@ -20601,7 +20589,7 @@ const renderDateError = (state, pointer, theme) => {
20601
20589
  if (isReadonlyArrayNonEmpty(errorLines)) {
20602
20590
  const prefix = annotateSymbol(theme, pointer, theme.errorColor);
20603
20591
  const lines = map$8(errorLines, (str) => annotateErrorLine(theme, str));
20604
- return cursorSavePosition + "\n" + separateSymbol(prefix, lines.join("\n")) + cursorRestorePosition;
20592
+ return "\x1B[s\n" + separateSymbol(prefix, lines.join("\n")) + "\x1B[u";
20605
20593
  }
20606
20594
  }
20607
20595
  return "";
@@ -21028,7 +21016,7 @@ const handleNumberClear = (options) => {
21028
21016
  return fnUntraced(function* (state, _) {
21029
21017
  const columns = yield* (yield* Terminal).columns;
21030
21018
  const figures = yield* getTheme(options);
21031
- const resetCurrentLine = eraseLine + cursorLeft;
21019
+ const resetCurrentLine = eraseLine + "\x1B[G";
21032
21020
  const errorText = renderNumberError(state, figures.pointerSmall, figures, { plain: true });
21033
21021
  const promptText = renderNumberOutput(state, figures.prefix, figures.pointerSmall, options, figures, { plain: true });
21034
21022
  return clearOutputWithError(promptText, columns, errorText) + resetCurrentLine;
@@ -21047,7 +21035,7 @@ const renderNumberError = (state, pointer, theme, renderOptions) => {
21047
21035
  if (renderOptions?.plain === true) return separateSymbol(pointer, errorLines.join("\n"));
21048
21036
  const prefix = annotateSymbol(theme, pointer, theme.errorColor);
21049
21037
  const lines = map$8(errorLines, (str) => annotateErrorLine(theme, str));
21050
- return cursorSavePosition + "\n" + separateSymbol(prefix, lines.join("\n")) + cursorRestorePosition;
21038
+ return "\x1B[s\n" + separateSymbol(prefix, lines.join("\n")) + "\x1B[u";
21051
21039
  }
21052
21040
  });
21053
21041
  return "";
@@ -21272,7 +21260,7 @@ const handleSelectRender = (options) => {
21272
21260
  const handleSelectClear = (options) => fnUntraced(function* (state, _) {
21273
21261
  const columns = yield* (yield* Terminal).columns;
21274
21262
  const figures = yield* getTheme(options);
21275
- const clearPrompt = eraseLine + cursorLeft;
21263
+ const clearPrompt = eraseLine + "\x1B[G";
21276
21264
  const promptText = renderSelectOutput(figures.prefix, figures.pointerSmall, options, figures, { plain: true });
21277
21265
  const choicesText = renderSelectChoices(state, options, figures, { plain: true });
21278
21266
  return eraseText(withSelectHeader(promptText, choicesText), columns) + clearPrompt;
@@ -21298,7 +21286,7 @@ const handleSelectProcess = (options) => {
21298
21286
  const renderClearScreen = /*#__PURE__*/ fnUntraced(function* (state, options) {
21299
21287
  const columns = yield* (yield* Terminal).columns;
21300
21288
  const figures = yield* getTheme(options);
21301
- const resetCurrentLine = eraseLine + cursorLeft;
21289
+ const resetCurrentLine = eraseLine + "\x1B[G";
21302
21290
  const errorText = renderTextError(state, figures.pointerSmall, figures, { plain: true });
21303
21291
  return clearOutputWithError(renderTextOutput(state, figures.prefix, figures.pointerSmall, options, figures, { plain: true }), columns, errorText) + resetCurrentLine;
21304
21292
  });
@@ -21324,7 +21312,7 @@ const renderTextError = (nextState, pointer, theme, renderOptions) => {
21324
21312
  if (renderOptions?.plain === true) return separateSymbol(pointer, errorLines.join("\n"));
21325
21313
  const prefix = annotateSymbol(theme, pointer, theme.errorColor);
21326
21314
  const lines = map$8(errorLines, (str) => annotateErrorLine(theme, str));
21327
- return cursorSavePosition + "\n" + separateSymbol(prefix, lines.join("\n")) + cursorRestorePosition;
21315
+ return "\x1B[s\n" + separateSymbol(prefix, lines.join("\n")) + "\x1B[u";
21328
21316
  }
21329
21317
  });
21330
21318
  return "";
@@ -21482,7 +21470,7 @@ const basePrompt = (options, type) => {
21482
21470
  const handleToggleClear = /*#__PURE__*/ fnUntraced(function* (options) {
21483
21471
  const columns = yield* (yield* Terminal).columns;
21484
21472
  const figures = yield* getTheme(options);
21485
- const clearPrompt = eraseLine + cursorLeft;
21473
+ const clearPrompt = eraseLine + "\x1B[G";
21486
21474
  const toggleText = options.active + " " + separateSymbol(figures.toggleSeparator, options.inactive);
21487
21475
  const promptText = renderPrompt(toggleText, options.message, figures.prefix, figures.pointerSmall, figures, { plain: true });
21488
21476
  return eraseText(promptText, columns) + clearPrompt;
@@ -25497,7 +25485,7 @@ const runWith = (command, config) => {
25497
25485
  };
25498
25486
  //#endregion
25499
25487
  //#region package.json
25500
- var version = "0.1.1085";
25488
+ var version = "0.1.1086";
25501
25489
  //#endregion
25502
25490
  //#region src/install.ts
25503
25491
  const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
package/dist/oxlint.d.ts CHANGED
@@ -4152,7 +4152,6 @@ export declare const oxlint: {
4152
4152
  '@deslop/coding-standards/explicit-effect-concurrency': "error";
4153
4153
  '@deslop/coding-standards/module-constant': "error";
4154
4154
  '@deslop/coding-standards/motion-limits': "error";
4155
- '@deslop/coding-standards/no-array-wrap-ternary': "error";
4156
4155
  '@deslop/coding-standards/no-barrel-module': "error";
4157
4156
  '@deslop/coding-standards/no-compiler-opt-out': "error";
4158
4157
  '@deslop/coding-standards/no-component-atom-allocation': "error";
@@ -4174,7 +4173,6 @@ export declare const oxlint: {
4174
4173
  '@deslop/coding-standards/no-native-control': "error";
4175
4174
  '@deslop/coding-standards/no-native-emptiness-check': "error";
4176
4175
  '@deslop/coding-standards/no-native-method-call': "error";
4177
- '@deslop/coding-standards/no-nullish-ternary': "error";
4178
4176
  '@deslop/coding-standards/no-option-value-access': "error";
4179
4177
  '@deslop/coding-standards/no-property-alias': "error";
4180
4178
  '@deslop/coding-standards/no-readonly-type-syntax': "error";
@@ -4210,6 +4208,8 @@ export declare const oxlint: {
4210
4208
  'effecttsgo/global-timers': "error";
4211
4209
  'effecttsgo/global-timers-in-effect': "error";
4212
4210
  'effecttsgo/node-builtin-import': "error";
4211
+ 'effecttsgo/prefer-effect-array': "error";
4212
+ 'effecttsgo/prefer-effect-record': "error";
4213
4213
  'effecttsgo/prefer-schema-over-json': "error";
4214
4214
  'effecttsgo/process-env': "error";
4215
4215
  'effecttsgo/process-env-in-effect': "error";
@@ -4228,9 +4228,11 @@ export declare const oxlint: {
4228
4228
  'effecttsgo/effect-in-void-success': "error";
4229
4229
  'effecttsgo/effect-map-flatten': "error";
4230
4230
  'effecttsgo/effect-map-void': "error";
4231
+ 'effecttsgo/effect-sleep-zero-to-yield-now': "error";
4231
4232
  'effecttsgo/effect-succeed-with-void': "error";
4232
4233
  'effecttsgo/flat-map-ignored-param-to-and-then': "error";
4233
4234
  'effecttsgo/flat-map-to-map': "error";
4235
+ 'effecttsgo/flat-map-to-tap': "error";
4234
4236
  'effecttsgo/floating-effect': "error";
4235
4237
  'effecttsgo/floating-effect-in-vitest': "error";
4236
4238
  'effecttsgo/layer-merge-all-with-dependencies': "error";
@@ -4268,11 +4270,10 @@ export declare const oxlint: {
4268
4270
  'effecttsgo/catch-all-to-map-error': "error";
4269
4271
  'effecttsgo/catch-chain-to-first-success-of': "error";
4270
4272
  'effecttsgo/catch-conditional-refail-to-catch-if': "error";
4271
- 'effecttsgo/catch-die-to-or-die': "error";
4272
4273
  'effecttsgo/catch-tag-to-catch-reason': "error";
4273
- 'effecttsgo/catch-to-ignore': "error";
4274
4274
  'effecttsgo/catch-to-or-else-succeed': "error";
4275
4275
  'effecttsgo/catch-unfailable-effect': "error";
4276
+ 'effecttsgo/error-payload-shadows-name': "error";
4276
4277
  'effecttsgo/flat-map-conditional-to-filter-or-fail': "error";
4277
4278
  'effecttsgo/global-error-in-effect-catch': "error";
4278
4279
  'effecttsgo/global-error-in-effect-failure': "error";
@@ -4281,10 +4282,8 @@ export declare const oxlint: {
4281
4282
  'effecttsgo/redundant-map-error': "error";
4282
4283
  'effecttsgo/redundant-or-die': "error";
4283
4284
  'effecttsgo/timeout-catch-tag-to-timeout-or-else': "error";
4284
- 'effecttsgo/unknown-in-effect-catch': "error";
4285
4285
  'effecttsgo/class-self-mismatch': "error";
4286
4286
  'effecttsgo/deterministic-keys': "error";
4287
- 'effecttsgo/generic-effect-services': "error";
4288
4287
  'effecttsgo/instance-of-schema': "error";
4289
4288
  'effecttsgo/new-schema-class': "error";
4290
4289
  'effecttsgo/obsolete-match-import': "error";
@@ -4297,6 +4296,7 @@ export declare const oxlint: {
4297
4296
  'effecttsgo/schema-number': "error";
4298
4297
  'effecttsgo/schema-struct-with-tag': "error";
4299
4298
  'effecttsgo/schema-sync-in-effect': "error";
4299
+ 'effecttsgo/schema-union-of-literals': "error";
4300
4300
  'effecttsgo/service-not-as-class': "error";
4301
4301
  'effecttsgo/unnecessary-typeof-type': "error";
4302
4302
  'typescript/consistent-generic-constructors': "error";
@@ -4362,7 +4362,9 @@ export declare const oxlint: {
4362
4362
  'typescript/unbound-method': "error";
4363
4363
  'typescript/unified-signatures': "error";
4364
4364
  'typescript/prefer-as-const': "error";
4365
- 'typescript/prefer-nullish-coalescing': "error";
4365
+ 'typescript/prefer-nullish-coalescing': ["error", {
4366
+ ignoreTernaryTests: true;
4367
+ }];
4366
4368
  'typescript/prefer-optional-chain': "error";
4367
4369
  'typescript/restrict-plus-operands': "error";
4368
4370
  'typescript/restrict-template-expressions': "error";
@@ -4405,7 +4407,6 @@ export declare const oxlint: {
4405
4407
  regex: string;
4406
4408
  }[];
4407
4409
  }];
4408
- 'array-callback-return': "error";
4409
4410
  'max-depth': ["error", number];
4410
4411
  'max-nested-callbacks': ["error", number];
4411
4412
  'no-cond-assign': "error";
@@ -4480,17 +4481,14 @@ export declare const oxlint: {
4480
4481
  }, {
4481
4482
  message: string;
4482
4483
  name: string;
4483
- }, {
4484
- message: string;
4485
- name: string;
4486
4484
  }];
4487
4485
  'no-restricted-properties': ["error", {
4488
4486
  message: string;
4489
4487
  property: string;
4490
4488
  }, {
4491
- allowObjects: string[];
4489
+ allowProperties: string[];
4492
4490
  message: string;
4493
- property: string;
4491
+ object: string;
4494
4492
  }, ...({
4495
4493
  message: string;
4496
4494
  object: string;
@@ -4584,7 +4582,6 @@ export declare const oxlint: {
4584
4582
  'no-ternary': "error";
4585
4583
  'no-throw-literal': "error";
4586
4584
  'no-unmodified-loop-condition': "error";
4587
- 'no-unneeded-ternary': "error";
4588
4585
  'no-unreachable-loop': "error";
4589
4586
  'no-unsafe-finally': "error";
4590
4587
  'no-unsafe-optional-chaining': ["error", {
@@ -4592,6 +4589,7 @@ export declare const oxlint: {
4592
4589
  }];
4593
4590
  'no-unused-expressions': "error";
4594
4591
  'no-unused-vars': ["error", {
4592
+ args: "all";
4595
4593
  argsIgnorePattern: string;
4596
4594
  ignoreRestSiblings: true;
4597
4595
  reportUsedIgnorePattern: true;
@@ -4616,8 +4614,6 @@ export declare const oxlint: {
4616
4614
  'no-void': "error";
4617
4615
  'object-shorthand': "error";
4618
4616
  'oxc/branches-sharing-code': "error";
4619
- 'oxc/no-accumulating-spread': "error";
4620
- 'oxc/no-map-spread': "error";
4621
4617
  'oxc/only-used-in-recursion': "error";
4622
4618
  'prefer-arrow-callback': "error";
4623
4619
  'prefer-const': ["error", {
@@ -4625,11 +4621,18 @@ export declare const oxlint: {
4625
4621
  }];
4626
4622
  'prefer-template': "error";
4627
4623
  'require-unicode-regexp': "error";
4624
+ 'jsx-a11y/alt-text': "error";
4625
+ 'jsx-a11y/aria-props': "error";
4626
+ 'jsx-a11y/aria-proptypes': "error";
4628
4627
  'jsx-a11y/autocomplete-valid': "error";
4629
4628
  'jsx-a11y/click-events-have-key-events': "error";
4630
4629
  'jsx-a11y/control-has-associated-label': "error";
4630
+ 'jsx-a11y/heading-has-content': "error";
4631
4631
  'jsx-a11y/interactive-supports-focus': "error";
4632
4632
  'jsx-a11y/label-has-associated-control': "error";
4633
+ 'jsx-a11y/no-aria-hidden-on-focusable': "error";
4634
+ 'jsx-a11y/role-has-required-aria-props': "error";
4635
+ 'jsx-a11y/tabindex-no-positive': "error";
4633
4636
  'react-doctor/no-aria-invalid-without-description': "error";
4634
4637
  'react-doctor/no-call-component-as-function': "error";
4635
4638
  'react-doctor/no-controlled-input-value-without-state-update': "error";
@@ -4698,7 +4701,6 @@ export declare const oxlint: {
4698
4701
  'react/jsx-no-script-url': "error";
4699
4702
  'react/jsx-no-target-blank': "error";
4700
4703
  'react/jsx-no-useless-fragment': "error";
4701
- 'react/memo-dependencies': "error";
4702
4704
  'react/no-array-index-key': "error";
4703
4705
  'react/no-children-prop': "error";
4704
4706
  'react/no-clone-element': "error";
@@ -4706,10 +4708,6 @@ export declare const oxlint: {
4706
4708
  'react/no-object-type-as-default-prop': "error";
4707
4709
  'react/no-react-children': "error";
4708
4710
  'react/no-unknown-property': "error";
4709
- 'react/no-unstable-nested-components': ["error", {
4710
- allowAsProps: true;
4711
- }];
4712
- 'react/preserve-manual-memoization': "error";
4713
4711
  'react/purity': "error";
4714
4712
  'react/refs': "error";
4715
4713
  'react/rule-suppression': "error";
@@ -4718,9 +4716,7 @@ export declare const oxlint: {
4718
4716
  'react/set-state-in-effect': "error";
4719
4717
  'react/set-state-in-render': "error";
4720
4718
  'react/static-components': "error";
4721
- 'react/use-memo': "error";
4722
4719
  'react/void-dom-elements-no-children': "error";
4723
- 'react/void-use-memo': "error";
4724
4720
  'shadcn/no-arbitrary-values': "error";
4725
4721
  'shadcn/no-inline-styles': "error";
4726
4722
  'shadcn/no-raw-colors': "error";
@@ -4763,10 +4759,9 @@ export declare const oxlint: {
4763
4759
  'unicorn/no-process-exit': "error";
4764
4760
  'unicorn/no-static-only-class': "error";
4765
4761
  'unicorn/no-useless-fallback-in-spread': "error";
4766
- 'unicorn/no-useless-length-check': "error";
4767
4762
  'unicorn/no-useless-spread': "error";
4768
- 'unicorn/prefer-logical-operator-over-ternary': "error";
4769
4763
  'unicorn/prefer-optional-catch-binding': "error";
4764
+ 'unicorn/prefer-string-replace-all': "error";
4770
4765
  'use-isnan': "error";
4771
4766
  };
4772
4767
  settings: {