@deslop/coding-standards 0.1.1085 → 0.1.1087
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 +5 -78
- package/dist/{MutableList-NTBI6AHW.mjs → MutableList-CnvD7fcZ.mjs} +4 -26
- package/dist/install.js +18 -30
- package/dist/oxlint.d.ts +20 -25
- package/dist/oxlint.js +159 -247
- package/package.json +3 -3
- package/skills/design/SKILL.md +10 -13
- package/skills/engineering/SKILL.md +117 -118
- package/skills/review/SKILL.md +5 -6
- package/tsconfig.json +0 -2
package/README.md
CHANGED
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @deslop/coding-standards
|
|
2
2
|
|
|
3
|
-
A strict Oxlint preset and
|
|
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
|
|
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 {
|
|
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
|
|
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 (
|
|
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 +
|
|
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 +
|
|
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
|
|
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 +
|
|
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
|
|
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 +
|
|
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 +
|
|
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
|
|
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 +
|
|
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.
|
|
25488
|
+
var version = "0.1.1087";
|
|
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
|
-
|
|
4489
|
+
allowProperties: string[];
|
|
4492
4490
|
message: string;
|
|
4493
|
-
|
|
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: {
|