@deslop/coding-standards 0.1.761 → 0.1.804
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 +73 -0
- package/dist/{MutableRef-DT4DAKeI.mjs → MutableRef-NhSl8G9M.mjs} +145 -4
- package/dist/install.js +2 -2
- package/dist/oxlint.d.ts +9 -1
- package/dist/oxlint.js +305 -148
- package/package.json +1 -1
- package/skills/design/SKILL.md +73 -61
- package/skills/engineering/SKILL.md +31 -17
- package/skills/testing/SKILL.md +6 -4
package/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Coding standards
|
|
2
|
+
|
|
3
|
+
A strict Oxlint preset and an installer for the engineering, design and testing agent 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 the three skills into the repository's existing `.agents`, `.claude` and `.codex` directories, or creates `.agents` when none exists. A refresh replaces only those three skills, and destinations outside the repository or inside global agent configuration are rejected. Nothing is added to the manifest, lockfile or lint configuration. Installed copies are read-only; refresh them with the CLI.
|
|
14
|
+
|
|
15
|
+
## Use the lint preset
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
vp add -D @deslop/coding-standards @effect/tsgo
|
|
19
|
+
vp exec effect-tsgo patch --no-typescript --oxlint
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import {defineConfig} from 'vite-plus'
|
|
24
|
+
import {oxlint} from '@deslop/coding-standards'
|
|
25
|
+
|
|
26
|
+
export default defineConfig({lint: {extends: [oxlint]}})
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The preset needs Effect-tsgo's patched Oxlint, so keep the patch command in the project's `prepare` script.
|
|
30
|
+
|
|
31
|
+
<details>
|
|
32
|
+
<summary>For agents</summary>
|
|
33
|
+
|
|
34
|
+
### Decisions
|
|
35
|
+
|
|
36
|
+
| Owner | Decision |
|
|
37
|
+
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
38
|
+
| `src/` | Flat package structure; rules in `src/rules`, no separate plugin or install-test harness |
|
|
39
|
+
| `skills/` | Maintained engineering, design and testing sources; refresh repository copies from the TypeScript CLI, no build needed |
|
|
40
|
+
| 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 |
|
|
41
|
+
| Rule proof | Existing public CLI regression cases, with accepted and rejected controls; no severity or exclusion workaround |
|
|
42
|
+
|
|
43
|
+
With workspace dependencies installed, from the repository root:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
vp test run tools/coding-standards/src/rules/rules.test.ts
|
|
47
|
+
node tools/coding-standards/src/install.ts
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Rejected shortcuts
|
|
51
|
+
|
|
52
|
+
| Candidate | Reason |
|
|
53
|
+
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
54
|
+
| Blanket `unknown` type ban | Opaque SDK and framework contracts legitimately need it; narrow or decode before use instead of fabricating a shape |
|
|
55
|
+
| Functional preset or dependency just to replace `no-let` | The preset conflicts; a selective plugin adds dependencies for a tiny rule |
|
|
56
|
+
| Syntax-only generator-failure rule | Factory-call syntax does not establish yieldability; the existing type-aware Effect rule owns that check |
|
|
57
|
+
|
|
58
|
+
### Skill sources
|
|
59
|
+
|
|
60
|
+
| Source | Used and boundary |
|
|
61
|
+
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
62
|
+
| [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 |
|
|
63
|
+
| [Cursor / pstack](https://github.com/cursor/plugins/tree/e43c7ee26e0038c6c1fa8380dd34ce86ff94cb2a/pstack) | Interface rationale, focused bug replay and defensible benchmarks; no playbook-stage machinery |
|
|
64
|
+
| [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) |
|
|
65
|
+
| [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 |
|
|
66
|
+
| [Anthropic frontend-design](https://github.com/anthropics/skills/tree/main/skills/frontend-design), [Taste Skill](https://github.com/Leonxlnx/taste-skill), [Vercel design guidelines](https://vercel.com/design/guidelines) | Task-led composition, typography and useful copy; no forced novelty, arbitrary aesthetic bans or plugin bundle |
|
|
67
|
+
| [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) |
|
|
68
|
+
| [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 |
|
|
69
|
+
| [Awesome DESIGN.md](https://github.com/VoltAgent/awesome-design-md) and [Impeccable](https://github.com/pbakaus/impeccable) | Reviewed reference collections; community brand analyses are inspiration, not authoritative/current tokens |
|
|
70
|
+
|
|
71
|
+
These are selectively adapted ideas, not imported frameworks. Concrete behavior, existing stack and settled user decisions govern the maintained skills.
|
|
72
|
+
|
|
73
|
+
</details>
|
|
@@ -3444,7 +3444,7 @@ const isSome = isSome$1;
|
|
|
3444
3444
|
* @category pattern matching
|
|
3445
3445
|
* @since 2.0.0
|
|
3446
3446
|
*/
|
|
3447
|
-
const match$
|
|
3447
|
+
const match$3 = /*#__PURE__*/ dual(2, (self, { onNone, onSome }) => isNone(self) ? onNone() : onSome(self.value));
|
|
3448
3448
|
/**
|
|
3449
3449
|
* Extracts the value from a `Some`, or evaluates a fallback thunk on `None`.
|
|
3450
3450
|
*
|
|
@@ -3604,6 +3604,37 @@ const fromNullishOr = (a) => a == null ? none() : some$1(a);
|
|
|
3604
3604
|
*/
|
|
3605
3605
|
const fromUndefinedOr = (a) => a === void 0 ? none() : some$1(a);
|
|
3606
3606
|
/**
|
|
3607
|
+
* Converts a possibly `null` value into an `Option`, leaving `undefined`
|
|
3608
|
+
* as a valid `Some`.
|
|
3609
|
+
*
|
|
3610
|
+
* **When to use**
|
|
3611
|
+
*
|
|
3612
|
+
* Use when you want to treat only `null` as absent while preserving
|
|
3613
|
+
* `undefined` as a meaningful value.
|
|
3614
|
+
*
|
|
3615
|
+
* **Details**
|
|
3616
|
+
*
|
|
3617
|
+
* - `null` → `None`
|
|
3618
|
+
* - Any other value (including `undefined`) → `Some`
|
|
3619
|
+
*
|
|
3620
|
+
* **Example** (Converting possibly null values to an Option)
|
|
3621
|
+
*
|
|
3622
|
+
* ```ts import.meta.vitest
|
|
3623
|
+
* import { Option } from "effect"
|
|
3624
|
+
*
|
|
3625
|
+
* Option.fromNullOr(null) // => Option.none()
|
|
3626
|
+
* Option.fromNullOr(undefined) // => Option.some(undefined)
|
|
3627
|
+
* Option.fromNullOr(42) // => Option.some(42)
|
|
3628
|
+
* ```
|
|
3629
|
+
*
|
|
3630
|
+
* @see {@link fromNullishOr} to treat both `null` and `undefined` as absent
|
|
3631
|
+
* @see {@link fromUndefinedOr} to only treat `undefined` as absent
|
|
3632
|
+
*
|
|
3633
|
+
* @category converting
|
|
3634
|
+
* @since 4.0.0
|
|
3635
|
+
*/
|
|
3636
|
+
const fromNullOr = (a) => a === null ? none() : some$1(a);
|
|
3637
|
+
/**
|
|
3607
3638
|
* Extracts the value from a `Some`, or returns `undefined` for `None`.
|
|
3608
3639
|
*
|
|
3609
3640
|
* **When to use**
|
|
@@ -3741,6 +3772,34 @@ const map$2 = /*#__PURE__*/ dual(2, (self, f) => isNone(self) ? none() : some$1(
|
|
|
3741
3772
|
*/
|
|
3742
3773
|
const flatMap$1 = /*#__PURE__*/ dual(2, (self, f) => isNone(self) ? none() : f(self.value));
|
|
3743
3774
|
/**
|
|
3775
|
+
* Flattens a nested `Option<Option<A>>` into `Option<A>`.
|
|
3776
|
+
*
|
|
3777
|
+
* **When to use**
|
|
3778
|
+
*
|
|
3779
|
+
* Use when you need to remove one layer of nested `Option`.
|
|
3780
|
+
*
|
|
3781
|
+
* **Details**
|
|
3782
|
+
*
|
|
3783
|
+
* - `Some(Some(value))` → `Some(value)`
|
|
3784
|
+
* - `Some(None)` → `None`
|
|
3785
|
+
* - `None` → `None`
|
|
3786
|
+
*
|
|
3787
|
+
* **Example** (Flattening nested Options)
|
|
3788
|
+
*
|
|
3789
|
+
* ```ts import.meta.vitest
|
|
3790
|
+
* import { Option } from "effect"
|
|
3791
|
+
*
|
|
3792
|
+
* Option.flatten(Option.some(Option.some("value"))) // => Option.some("value")
|
|
3793
|
+
* Option.flatten(Option.some(Option.none())) // => Option.none()
|
|
3794
|
+
* ```
|
|
3795
|
+
*
|
|
3796
|
+
* @see {@link flatMap} which is `map` + `flatten`
|
|
3797
|
+
*
|
|
3798
|
+
* @category sequencing
|
|
3799
|
+
* @since 2.0.0
|
|
3800
|
+
*/
|
|
3801
|
+
const flatten$1 = /*#__PURE__*/ flatMap$1(identity);
|
|
3802
|
+
/**
|
|
3744
3803
|
* Combines two `Option`s into a `Some` containing a tuple `[A, B]` if both
|
|
3745
3804
|
* are `Some`.
|
|
3746
3805
|
*
|
|
@@ -4186,7 +4245,7 @@ const isSuccess = isSuccess$1;
|
|
|
4186
4245
|
* @category pattern matching
|
|
4187
4246
|
* @since 2.0.0
|
|
4188
4247
|
*/
|
|
4189
|
-
const match$
|
|
4248
|
+
const match$2 = /*#__PURE__*/ dual(2, (self, { onFailure, onSuccess }) => isFailure(self) ? onFailure(self.failure) : onSuccess(self.success));
|
|
4190
4249
|
/**
|
|
4191
4250
|
* Extracts the success value or throws the raw failure value `E`.
|
|
4192
4251
|
*
|
|
@@ -4557,7 +4616,7 @@ const ensure = (self) => Array$1.isArray(self) ? self : [self];
|
|
|
4557
4616
|
* @category pattern matching
|
|
4558
4617
|
* @since 2.0.0
|
|
4559
4618
|
*/
|
|
4560
|
-
const match = /*#__PURE__*/ dual(2, (self, { onEmpty, onNonEmpty }) => isReadonlyArrayNonEmpty(self) ? onNonEmpty(self) : onEmpty());
|
|
4619
|
+
const match$1 = /*#__PURE__*/ dual(2, (self, { onEmpty, onNonEmpty }) => isReadonlyArrayNonEmpty(self) ? onNonEmpty(self) : onEmpty());
|
|
4561
4620
|
/**
|
|
4562
4621
|
* Adds a single element to the front of an iterable, returning a `NonEmptyArray`.
|
|
4563
4622
|
*
|
|
@@ -4769,6 +4828,30 @@ const get$1 = /*#__PURE__*/ dual(2, (self, index) => {
|
|
|
4769
4828
|
return isOutOfBounds(i, self) ? none() : some$1(self[i]);
|
|
4770
4829
|
});
|
|
4771
4830
|
/**
|
|
4831
|
+
* Returns the first element of an array safely wrapped in `Option.some`, or
|
|
4832
|
+
* `Option.none` if the array is empty.
|
|
4833
|
+
*
|
|
4834
|
+
* **When to use**
|
|
4835
|
+
*
|
|
4836
|
+
* Use to safely get the first element of an array that may be empty.
|
|
4837
|
+
*
|
|
4838
|
+
* **Example** (Getting the first element)
|
|
4839
|
+
*
|
|
4840
|
+
* ```ts import.meta.vitest
|
|
4841
|
+
* import { Array, Option } from "effect"
|
|
4842
|
+
*
|
|
4843
|
+
* Array.head([1, 2, 3]) // => Option.some(1)
|
|
4844
|
+
* Array.head([]) // => Option.none()
|
|
4845
|
+
* ```
|
|
4846
|
+
*
|
|
4847
|
+
* @see {@link headNonEmpty} — direct access when array is known non-empty
|
|
4848
|
+
* @see {@link last} — get the last element
|
|
4849
|
+
*
|
|
4850
|
+
* @category getters
|
|
4851
|
+
* @since 2.0.0
|
|
4852
|
+
*/
|
|
4853
|
+
const head = /*#__PURE__*/ get$1(0);
|
|
4854
|
+
/**
|
|
4772
4855
|
* Returns the last element of an array safely wrapped in `Option.some`, or
|
|
4773
4856
|
* `Option.none` if the array is empty.
|
|
4774
4857
|
*
|
|
@@ -5635,6 +5718,43 @@ const Order = String$2;
|
|
|
5635
5718
|
*/
|
|
5636
5719
|
const trimEnd = (self) => self.trimEnd();
|
|
5637
5720
|
/**
|
|
5721
|
+
* Splits a string into an array of substrings using a separator.
|
|
5722
|
+
*
|
|
5723
|
+
* **Example** (Splitting strings)
|
|
5724
|
+
*
|
|
5725
|
+
* ```ts import.meta.vitest
|
|
5726
|
+
* import { pipe, String } from "effect"
|
|
5727
|
+
*
|
|
5728
|
+
* pipe("abc", String.split("")) // => ["a", "b", "c"]
|
|
5729
|
+
* pipe("", String.split("")) // => [""]
|
|
5730
|
+
* String.split("hello,world", ",") // => ["hello", "world"]
|
|
5731
|
+
* ```
|
|
5732
|
+
*
|
|
5733
|
+
* @category transforming
|
|
5734
|
+
* @since 2.0.0
|
|
5735
|
+
*/
|
|
5736
|
+
const split = /*#__PURE__*/ dual(2, (self, separator) => {
|
|
5737
|
+
const out = self.split(separator);
|
|
5738
|
+
return isArrayNonEmpty$1(out) ? out : [self];
|
|
5739
|
+
});
|
|
5740
|
+
/**
|
|
5741
|
+
* Returns `true` if `searchString` appears as a substring of `self`, at one or more positions that are
|
|
5742
|
+
* greater than or equal to `position`; otherwise, returns `false`.
|
|
5743
|
+
*
|
|
5744
|
+
* **Example** (Checking for substrings)
|
|
5745
|
+
*
|
|
5746
|
+
* ```ts import.meta.vitest
|
|
5747
|
+
* import { pipe, String } from "effect"
|
|
5748
|
+
*
|
|
5749
|
+
* pipe("hello world", String.includes("world")) // => true
|
|
5750
|
+
* pipe("hello world", String.includes("foo")) // => false
|
|
5751
|
+
* ```
|
|
5752
|
+
*
|
|
5753
|
+
* @category predicates
|
|
5754
|
+
* @since 2.0.0
|
|
5755
|
+
*/
|
|
5756
|
+
const includes = (searchString, position) => (self) => self.includes(searchString, position);
|
|
5757
|
+
/**
|
|
5638
5758
|
* Returns `true` if the string starts with the specified search string.
|
|
5639
5759
|
*
|
|
5640
5760
|
* **Example** (Checking string prefixes)
|
|
@@ -5650,6 +5770,27 @@ const trimEnd = (self) => self.trimEnd();
|
|
|
5650
5770
|
* @since 2.0.0
|
|
5651
5771
|
*/
|
|
5652
5772
|
const startsWith = (searchString, position) => (self) => self.startsWith(searchString, position);
|
|
5773
|
+
/**
|
|
5774
|
+
* Matches a string against a pattern safely and returns `Option.some` with the match
|
|
5775
|
+
* array, or `Option.none` when the pattern does not match.
|
|
5776
|
+
*
|
|
5777
|
+
* **Example** (Matching regular expressions)
|
|
5778
|
+
*
|
|
5779
|
+
* ```ts import.meta.vitest
|
|
5780
|
+
* import { Option, pipe, String } from "effect"
|
|
5781
|
+
*
|
|
5782
|
+
* pipe(
|
|
5783
|
+
* "hello",
|
|
5784
|
+
* String.match(/l+/),
|
|
5785
|
+
* Option.map((match) => [match[0], match.index])
|
|
5786
|
+
* ) // => Option.some(["ll", 2])
|
|
5787
|
+
* pipe("hello", String.match(/x/)) // => Option.none()
|
|
5788
|
+
* ```
|
|
5789
|
+
*
|
|
5790
|
+
* @category searching
|
|
5791
|
+
* @since 2.0.0
|
|
5792
|
+
*/
|
|
5793
|
+
const match = (regExp) => (self) => fromNullOr(self.match(regExp));
|
|
5653
5794
|
//#endregion
|
|
5654
5795
|
//#region ../../node_modules/.pnpm/effect@4.0.0/node_modules/effect/dist/MutableRef.js
|
|
5655
5796
|
const TypeId = "~effect/MutableRef";
|
|
@@ -5848,4 +5989,4 @@ const set = /*#__PURE__*/ dual(2, (self, value) => {
|
|
|
5848
5989
|
*/
|
|
5849
5990
|
const update = /*#__PURE__*/ dual(2, (self, f) => set(self, f(get(self))));
|
|
5850
5991
|
//#endregion
|
|
5851
|
-
export {
|
|
5992
|
+
export { fromOption as $, isNullish as $n, causeFail as $t, getSomes as A, formatPath as An, isGreaterThanOrEqualTo as At, match$1 as B, optimize as Bn, Error$2 as Bt, findFirst as C, setStackTraceLimit as Cn, some$1 as Ct, flatten as D, format as Dn, Number$1 as Dt, flatMap as E, toStringUnknown as En, Date$1 as Et, isReadonlyArrayNonEmpty as F, symbol as Fn, Tuple as Ft, sort as G, hasProperty as Gn, ReasonBase as Gt, prepend as H, string as Hn, Fail as Ht, join as I, array as In, make$2 as It, get$2 as J, isFunction as Jn, Yield as Jt, take as K, isBoolean as Kn, StackTraceKey as Kt, last as L, combine as Ln, strictEqual as Lt, isArrayEmpty as M, currentFiberTypeId as Mn, isLessThanOrEqualTo as Mt, isArrayNonEmpty as N, byReferenceUnsafe as Nn, make$1 as Nt, fromIterable as O, formatDate as On, String$2 as Ot, isCanonicalArrayIndex as P, equals as Pn, mapInput as Pt, fail as Q, isNotUndefined as Qn, causeEmpty as Qt, makeEquivalence as R, hash as Rn, CauseImpl as Rt, filterMap as S, getStackTraceLimit as Sn, orElse as St, findLast as T, NodeInspectSymbol as Tn, BigInt as Tt, reduce as U, structure as Un, InterruptorStackTrace as Ut, of as V, random as Vn, ExitTypeId as Vt, some as W, symbol$1 as Wn, PipeInspectableProto as Wt, remove as X, isNotNull as Xn, causeAnnotate as Xt, map$1 as Y, isIterable as Yn, args as Yt, values as Z, isNotNullish as Zn, causeDie as Zt, dropRight as _, makePrimitive as _n, memoizeIdempotent as _r, isSome as _t, includes as a, done as an, isString as ar, all as at, every as b, assignProperty as bn, Prototype as br, match$3 as bt, startsWith as c, exitFail as cn, isUnknown as cr, filter$1 as ct, TaggedError as d, isCause as dn, constUndefined as dr, flatten$1 as dt, causeFromReasons as en, isNumber as er, getOrThrow as et, taggedEnum as f, isDieReason as fn, constVoid as fr, fromNullishOr as ft, dedupe as g, isInterruptReason as gn, memoize as gr, isNone as gt, contains as h, isFailReason as hn, identity as hr, getOrUndefined as ht, Order as i, contE as in, isReadonlyObject as ir, normalize as it, head as j, formatPropertyKey as jn, isLessThan as jt, get$1 as k, formatJson as kn, isGreaterThan as kt, trimEnd as l, exitFailCause as ln, constFalse as lr, firstSomeOf as lt, appendAll as m, isEffect as mn, dual as mr, getOrElse as mt, make as n, contA as nn, isObjectKeyword as nr, match$2 as nt, match as o, evaluate as on, isTagged as or, contains$1 as ot, append as p, isDone as pn, constant as pr, fromUndefinedOr as pt, fromEntries as q, isError as qn, TaggedError$1 as qt, update as r, contAll as rn, isPropertyKey as rr, succeed as rt, split as s, exitDie as sn, isUndefined as sr, exists as st, get as t, constEmptyAnnotations as tn, isObject as tr, isFailure as tt, Error$1 as u, exitSucceed as un, constTrue as ur, flatMap$1 as ut, empty as v, makePrimitiveProto as vn, pipe as vr, liftThrowable as vt, findFirstIndex as w, BaseProto as wn, zipWith as wt, filter as x, internalCall as xn, pipeArguments as xr, none as xt, ensure as y, withFiber as yn, Class$1 as yr, map$2 as yt, map as z, number as zn, Done as zt };
|
package/dist/install.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $n as isNullish, $t as causeFail, An as formatPath, B as match$5, Bt as Error$3, C as findFirst, Cn as setStackTraceLimit, Ct as some, Dn as format$1, Dt as Number$6, En as toStringUnknown, F as isReadonlyArrayNonEmpty, Fn as symbol, Gn as hasProperty, Gt as ReasonBase, Hn as string$1, Ht as Fail, I as join, Jn as isFunction, Jt as Yield, Kn as isBoolean$1, Kt as StackTraceKey, Ln as combine$1, M as isArrayEmpty, Mn as currentFiberTypeId, N as isArrayNonEmpty, O as fromIterable$1, Ot as String$6, P as isCanonicalArrayIndex, Pn as equals$1, Pt as mapInput, Q as fail$5, Qn as isNotUndefined, Qt as causeEmpty, Rn as hash, Rt as CauseImpl, Sn as getStackTraceLimit, T as findLast, Tn as NodeInspectSymbol, U as reduce, Un as structure, Ut as InterruptorStackTrace, V as of, Vn as random, Vt as ExitTypeId, W as some$1, Wn as symbol$1, Wt as PipeInspectableProto, Xn as isNotNull, Xt as causeAnnotate, Yn as isIterable, Yt as args, Zn as isNotNullish, Zt as causeDie, _n as makePrimitive$1, _r as memoizeIdempotent, _t as isSome, an as done$1, ar as isString, bn as assignProperty, br as Prototype$1, bt as match$4, c as startsWith, cn as exitFail, cr as isUnknown, d as TaggedError$1, dn as isCause, dr as constUndefined, en as causeFromReasons, er as isNumber, f as taggedEnum, fn as isDieReason, fr as constVoid, ft as fromNullishOr, g as dedupe, gn as isInterruptReason, gr as memoize, gt as isNone, h as contains, hn as isFailReason$1, hr as identity, ht as getOrUndefined$1, in as contE, it as normalize$1, jn as formatPropertyKey, kn as formatJson, kt as isGreaterThan$1, l as trimEnd, ln as exitFailCause, lr as constFalse, mn as isEffect$1, mr as dual, mt as getOrElse, n as make$29, nn as contA, nr as isObjectKeyword, nt as match$3, on as evaluate, or as isTagged, p as append$1, pn as isDone$2, pr as constant, pt as fromUndefinedOr, qn as isError, qt as TaggedError$2, rn as contAll, rt as succeed$6, sn as exitDie, sr as isUndefined, st as exists, tn as constEmptyAnnotations, tr as isObject, tt as isFailure$1, u as Error$2, un as exitSucceed, ur as constTrue, ut as flatMap$3, v as empty$3, vn as makePrimitiveProto, vr as pipe, w as findFirstIndex, wn as BaseProto, x as filter, xn as internalCall, xr as pipeArguments, xt as none, yn as withFiber$1, yr as Class, yt as map$10, z as map$9, zn as number$1, zt as Done$1 } from "./MutableRef-NhSl8G9M.mjs";
|
|
3
3
|
import * as NodeChildProcess from "node:child_process";
|
|
4
4
|
import { PassThrough } from "node:stream";
|
|
5
5
|
import * as NodeCrypto from "node:crypto";
|
|
@@ -24685,7 +24685,7 @@ const runWith = (command, config) => {
|
|
|
24685
24685
|
};
|
|
24686
24686
|
//#endregion
|
|
24687
24687
|
//#region package.json
|
|
24688
|
-
var version = "0.1.
|
|
24688
|
+
var version = "0.1.804";
|
|
24689
24689
|
//#endregion
|
|
24690
24690
|
//#region src/install.ts
|
|
24691
24691
|
const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
|
package/dist/oxlint.d.ts
CHANGED
|
@@ -4093,12 +4093,12 @@ export declare const oxlint: {
|
|
|
4093
4093
|
'@deslop/coding-standards/no-double-nullish-check': "error";
|
|
4094
4094
|
'@deslop/coding-standards/no-effect-property-arrow': "error";
|
|
4095
4095
|
'@deslop/coding-standards/no-error-message-assertion': "error";
|
|
4096
|
-
'@deslop/coding-standards/no-fail-in-generator': "error";
|
|
4097
4096
|
'@deslop/coding-standards/no-fake-ref-state': "error";
|
|
4098
4097
|
'@deslop/coding-standards/no-hand-written-guard': "error";
|
|
4099
4098
|
'@deslop/coding-standards/no-let': "error";
|
|
4100
4099
|
'@deslop/coding-standards/no-native-emptiness-check': "error";
|
|
4101
4100
|
'@deslop/coding-standards/no-native-method-call': "error";
|
|
4101
|
+
'@deslop/coding-standards/no-nullish-ternary': "error";
|
|
4102
4102
|
'@deslop/coding-standards/no-option-value-access': "error";
|
|
4103
4103
|
'@deslop/coding-standards/no-readonly-type-syntax': "error";
|
|
4104
4104
|
'@deslop/coding-standards/no-redundant-return-type': "error";
|
|
@@ -4107,6 +4107,7 @@ export declare const oxlint: {
|
|
|
4107
4107
|
'@deslop/coding-standards/no-redundant-variable-annotation': "error";
|
|
4108
4108
|
'@deslop/coding-standards/no-reinvented-schema': "error";
|
|
4109
4109
|
'@deslop/coding-standards/no-renamed-import': "error";
|
|
4110
|
+
'@deslop/coding-standards/no-single-use-value': "error";
|
|
4110
4111
|
'@deslop/coding-standards/no-stored-schema-operation': "error";
|
|
4111
4112
|
'@deslop/coding-standards/no-switch-statement': "error";
|
|
4112
4113
|
'@deslop/coding-standards/no-trivial-indirection': "error";
|
|
@@ -4320,6 +4321,7 @@ export declare const oxlint: {
|
|
|
4320
4321
|
'max-depth': ["error", number];
|
|
4321
4322
|
'max-nested-callbacks': ["error", number];
|
|
4322
4323
|
'no-cond-assign': "error";
|
|
4324
|
+
'no-constant-binary-expression': "error";
|
|
4323
4325
|
'no-continue': "error";
|
|
4324
4326
|
'no-control-regex': "error";
|
|
4325
4327
|
'no-debugger': "error";
|
|
@@ -4335,6 +4337,7 @@ export declare const oxlint: {
|
|
|
4335
4337
|
'no-invalid-regexp': "error";
|
|
4336
4338
|
'no-iterator': "error";
|
|
4337
4339
|
'no-lonely-if': "error";
|
|
4340
|
+
'no-loss-of-precision': "error";
|
|
4338
4341
|
'no-misleading-character-class': "error";
|
|
4339
4342
|
'no-multi-assign': "error";
|
|
4340
4343
|
'no-negated-condition': "error";
|
|
@@ -4504,6 +4507,9 @@ export declare const oxlint: {
|
|
|
4504
4507
|
'no-unneeded-ternary': "error";
|
|
4505
4508
|
'no-unreachable-loop': "error";
|
|
4506
4509
|
'no-unsafe-finally': "error";
|
|
4510
|
+
'no-unsafe-optional-chaining': ["error", {
|
|
4511
|
+
disallowArithmeticOperators: true;
|
|
4512
|
+
}];
|
|
4507
4513
|
'no-unused-expressions': "error";
|
|
4508
4514
|
'no-useless-assignment': "error";
|
|
4509
4515
|
'no-useless-backreference': "error";
|
|
@@ -4515,6 +4521,7 @@ export declare const oxlint: {
|
|
|
4515
4521
|
'no-useless-escape': "error";
|
|
4516
4522
|
'no-useless-rename': "error";
|
|
4517
4523
|
'no-useless-return': "error";
|
|
4524
|
+
'no-var': "error";
|
|
4518
4525
|
'no-void': "error";
|
|
4519
4526
|
'object-shorthand': "error";
|
|
4520
4527
|
'oxc/branches-sharing-code': "error";
|
|
@@ -4528,6 +4535,7 @@ export declare const oxlint: {
|
|
|
4528
4535
|
'prefer-template': "error";
|
|
4529
4536
|
'require-unicode-regexp': "error";
|
|
4530
4537
|
'react-doctor/no-call-component-as-function': "error";
|
|
4538
|
+
'react-doctor/no-controlled-input-value-without-state-update': "error";
|
|
4531
4539
|
'react-doctor/no-create-context-in-render': "error";
|
|
4532
4540
|
'react-doctor/no-default-props': "error";
|
|
4533
4541
|
'react-doctor/no-inline-exhaustive-style': "error";
|