@deslop/coding-standards 0.1.1082 → 0.1.1085
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 +12 -8
- package/dist/{MutableList-BCF17jPH.mjs → MutableList-NTBI6AHW.mjs} +231 -8
- package/dist/install.js +35 -80
- package/dist/oxlint.d.ts +86 -4
- package/dist/oxlint.js +837 -147
- package/package.json +1 -1
- package/skills/design/SKILL.md +52 -129
- package/skills/engineering/SKILL.md +193 -128
- package/skills/review/SKILL.md +37 -35
- package/skills/architecture/EVALS.md +0 -21
- package/skills/architecture/SKILL.md +0 -39
- package/skills/design/EVALS.md +0 -46
- package/skills/engineering/EVALS.md +0 -34
- package/skills/review/EVALS.md +0 -24
- package/skills/testing/EVALS.md +0 -22
- package/skills/testing/SKILL.md +0 -64
package/dist/install.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { A as
|
|
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";
|
|
3
3
|
import * as OS from "node:os";
|
|
4
4
|
import * as NodeChildProcess from "node:child_process";
|
|
5
5
|
import { PassThrough } from "node:stream";
|
|
@@ -1080,7 +1080,7 @@ const weeks = (weeks) => make$25(weeks * 6048e5);
|
|
|
1080
1080
|
* @category getters
|
|
1081
1081
|
* @since 2.0.0
|
|
1082
1082
|
*/
|
|
1083
|
-
const toMillis = (self) => match$
|
|
1083
|
+
const toMillis = (self) => match$2(fromInputUnsafe$1(self), {
|
|
1084
1084
|
onMillis: identity,
|
|
1085
1085
|
onNanos: (nanos) => Number(nanos) / 1e6,
|
|
1086
1086
|
onInfinity: () => Infinity,
|
|
@@ -1152,7 +1152,7 @@ const toNanosUnsafe = (input) => {
|
|
|
1152
1152
|
* @category pattern matching
|
|
1153
1153
|
* @since 2.0.0
|
|
1154
1154
|
*/
|
|
1155
|
-
const match$
|
|
1155
|
+
const match$2 = /*#__PURE__*/ dual(2, (self, options) => {
|
|
1156
1156
|
switch (self.value._tag) {
|
|
1157
1157
|
case "Millis": return options.onMillis(self.value.millis);
|
|
1158
1158
|
case "Nanos": return options.onNanos(self.value.nanos);
|
|
@@ -2019,7 +2019,7 @@ const suspend$3 = /*#__PURE__*/ makePrimitive$1({
|
|
|
2019
2019
|
}
|
|
2020
2020
|
});
|
|
2021
2021
|
/** @internal */
|
|
2022
|
-
const fromResult$1 = /*#__PURE__*/ match$
|
|
2022
|
+
const fromResult$1 = /*#__PURE__*/ match$3({
|
|
2023
2023
|
onFailure: fail$4,
|
|
2024
2024
|
onSuccess: succeed$5
|
|
2025
2025
|
});
|
|
@@ -2493,7 +2493,7 @@ const matchEffect$2 = /*#__PURE__*/ dual(2, (self, options) => matchCauseEffect$
|
|
|
2493
2493
|
onSuccess: options.onSuccess
|
|
2494
2494
|
}));
|
|
2495
2495
|
/** @internal */
|
|
2496
|
-
const match$
|
|
2496
|
+
const match$1 = /*#__PURE__*/ dual(2, (self, options) => new MatchImpl(self, options));
|
|
2497
2497
|
/** @internal */
|
|
2498
2498
|
const matchEager = /*#__PURE__*/ dual(2, (self, options) => {
|
|
2499
2499
|
if (effectIsExit(self)) {
|
|
@@ -2502,7 +2502,7 @@ const matchEager = /*#__PURE__*/ dual(2, (self, options) => {
|
|
|
2502
2502
|
if (isFailure$1(error)) return self;
|
|
2503
2503
|
return exitSucceed(options.onFailure(error.success));
|
|
2504
2504
|
}
|
|
2505
|
-
return match$
|
|
2505
|
+
return match$1(self, options);
|
|
2506
2506
|
});
|
|
2507
2507
|
/** @internal */
|
|
2508
2508
|
const exit$1 = (self) => effectIsExit(self) ? exitSucceed(self) : exitPrimitive(self);
|
|
@@ -3229,7 +3229,7 @@ const logLevelToOrder = (level) => {
|
|
|
3229
3229
|
}
|
|
3230
3230
|
};
|
|
3231
3231
|
/** @internal */
|
|
3232
|
-
const isLogLevelGreaterThan = /*#__PURE__*/ isGreaterThan$1(/* @__PURE__ */ mapInput(Number$
|
|
3232
|
+
const isLogLevelGreaterThan = /*#__PURE__*/ isGreaterThan$1(/* @__PURE__ */ mapInput(Number$5, logLevelToOrder));
|
|
3233
3233
|
/** @internal */
|
|
3234
3234
|
const CurrentLoggers = /*#__PURE__*/ Reference("effect/Logger/CurrentLoggers", { defaultValue: () => /* @__PURE__ */ new Set([defaultLogger, tracerLogger]) });
|
|
3235
3235
|
/** @internal */
|
|
@@ -4973,31 +4973,6 @@ const ProtoTimeZone = {
|
|
|
4973
4973
|
({ ...ProtoTimeZone });
|
|
4974
4974
|
/** @internal */
|
|
4975
4975
|
const toDateUtc$1 = (self) => new Date(self.epochMilliseconds);
|
|
4976
|
-
globalThis.Number;
|
|
4977
|
-
/**
|
|
4978
|
-
* Returns the number rounded with the given precision.
|
|
4979
|
-
*
|
|
4980
|
-
* **When to use**
|
|
4981
|
-
*
|
|
4982
|
-
* Use to round a number to a fixed number of decimal places.
|
|
4983
|
-
*
|
|
4984
|
-
* **Example** (Rounding with precision)
|
|
4985
|
-
*
|
|
4986
|
-
* ```ts import.meta.vitest
|
|
4987
|
-
* import { Number } from "effect"
|
|
4988
|
-
*
|
|
4989
|
-
* Number.round(1.1234, 2) // => 1.12
|
|
4990
|
-
* Number.round(1.567, 2) // => 1.57
|
|
4991
|
-
* ```
|
|
4992
|
-
*
|
|
4993
|
-
* @stability stable
|
|
4994
|
-
* @category math
|
|
4995
|
-
* @since 3.8.0
|
|
4996
|
-
*/
|
|
4997
|
-
const round = /*#__PURE__*/ dual(2, (self, precision) => {
|
|
4998
|
-
const factor = Math.pow(10, precision);
|
|
4999
|
-
return Math.round(self * factor) / factor;
|
|
5000
|
-
});
|
|
5001
4976
|
//#endregion
|
|
5002
4977
|
//#region ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/internal/random.js
|
|
5003
4978
|
/** @internal */
|
|
@@ -6762,7 +6737,7 @@ const raceFirst = raceFirst$1;
|
|
|
6762
6737
|
* @category pattern matching
|
|
6763
6738
|
* @since 2.0.0
|
|
6764
6739
|
*/
|
|
6765
|
-
const match
|
|
6740
|
+
const match = match$1;
|
|
6766
6741
|
/**
|
|
6767
6742
|
* Handles failures with access to the cause and allows performing side effects.
|
|
6768
6743
|
*
|
|
@@ -10188,7 +10163,7 @@ const number = /*#__PURE__*/ new Number$3();
|
|
|
10188
10163
|
* @category constructors
|
|
10189
10164
|
* @since 4.0.0
|
|
10190
10165
|
*/
|
|
10191
|
-
const Boolean$
|
|
10166
|
+
const Boolean$4 = class extends ASTNodeImpl {
|
|
10192
10167
|
_tag = "Boolean";
|
|
10193
10168
|
/** @internal */
|
|
10194
10169
|
getParser() {
|
|
@@ -10214,7 +10189,7 @@ const Boolean$5 = class extends ASTNodeImpl {
|
|
|
10214
10189
|
* @category constructors
|
|
10215
10190
|
* @since 4.0.0
|
|
10216
10191
|
*/
|
|
10217
|
-
const boolean = /*#__PURE__*/ new Boolean$
|
|
10192
|
+
const boolean = /*#__PURE__*/ new Boolean$4();
|
|
10218
10193
|
/**
|
|
10219
10194
|
* Constructs a {@link Arrays}.
|
|
10220
10195
|
*
|
|
@@ -12541,7 +12516,7 @@ const String$3 = /*#__PURE__*/ make$16(string);
|
|
|
12541
12516
|
* @category schemas
|
|
12542
12517
|
* @since 4.0.0
|
|
12543
12518
|
*/
|
|
12544
|
-
const Boolean$
|
|
12519
|
+
const Boolean$3 = /*#__PURE__*/ make$16(boolean);
|
|
12545
12520
|
function makeStruct(ast, fields) {
|
|
12546
12521
|
return make$16(ast, {
|
|
12547
12522
|
fields,
|
|
@@ -12697,7 +12672,7 @@ const FalseLiterals = /*#__PURE__*/ Literals([
|
|
|
12697
12672
|
"n"
|
|
12698
12673
|
]);
|
|
12699
12674
|
/** @internal */
|
|
12700
|
-
const BooleanLiterals = /*#__PURE__*/ Literals([...TrueLiterals.literals, ...FalseLiterals.literals]).pipe(/*#__PURE__*/ decodeTo(Boolean$
|
|
12675
|
+
const BooleanLiterals = /*#__PURE__*/ Literals([...TrueLiterals.literals, ...FalseLiterals.literals]).pipe(/*#__PURE__*/ decodeTo(Boolean$3, /*#__PURE__*/ transform$1({
|
|
12701
12676
|
decode: (value) => value === "true" || value === "yes" || value === "on" || value === "1" || value === "y",
|
|
12702
12677
|
encode: (value) => value ? "true" : "false"
|
|
12703
12678
|
})));
|
|
@@ -13095,30 +13070,6 @@ const Json = /*#__PURE__*/ make$16(/*#__PURE__*/ annotate$1(Json$1, { toCode: ()
|
|
|
13095
13070
|
runtime: "Schema.Json",
|
|
13096
13071
|
Type: "Schema.Json"
|
|
13097
13072
|
}) }));
|
|
13098
|
-
globalThis.Boolean;
|
|
13099
|
-
/**
|
|
13100
|
-
* Chooses between two lazy branches based on a boolean value.
|
|
13101
|
-
*
|
|
13102
|
-
* **When to use**
|
|
13103
|
-
*
|
|
13104
|
-
* Use to choose between two lazy branches based on a boolean value.
|
|
13105
|
-
*
|
|
13106
|
-
* **Example** (Pattern matching on booleans)
|
|
13107
|
-
*
|
|
13108
|
-
* ```ts import.meta.vitest
|
|
13109
|
-
* import { Boolean } from "effect"
|
|
13110
|
-
*
|
|
13111
|
-
* Boolean.match(true, {
|
|
13112
|
-
* onFalse: () => "It's false!",
|
|
13113
|
-
* onTrue: () => "It's true!"
|
|
13114
|
-
* }) // => "It's true!"
|
|
13115
|
-
* ```
|
|
13116
|
-
*
|
|
13117
|
-
* @stability stable
|
|
13118
|
-
* @category pattern matching
|
|
13119
|
-
* @since 2.0.0
|
|
13120
|
-
*/
|
|
13121
|
-
const match = /*#__PURE__*/ dual(2, (value, options) => value ? options.onTrue() : options.onFalse());
|
|
13122
13073
|
//#endregion
|
|
13123
13074
|
//#region ../../node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Brand.js
|
|
13124
13075
|
/**
|
|
@@ -15819,7 +15770,7 @@ const make$12 = (impl) => FileSystem.of({
|
|
|
15819
15770
|
return fromPull(succeed$2(flatMap$1(suspend$2(() => {
|
|
15820
15771
|
if (bytesToRead !== void 0 && bytesToRead <= totalBytesRead) return done();
|
|
15821
15772
|
return bytesToRead !== void 0 && bytesToRead - totalBytesRead < chunkSize ? file.readAlloc(Number(bytesToRead - totalBytesRead)) : readChunk;
|
|
15822
|
-
}), match$
|
|
15773
|
+
}), match$4({
|
|
15823
15774
|
onNone: () => done(),
|
|
15824
15775
|
onSome: (buf) => {
|
|
15825
15776
|
totalBytesRead += BigInt(buf.length);
|
|
@@ -19133,7 +19084,7 @@ const layer$2 = /*#__PURE__*/ effect(Terminal, /*#__PURE__*/ (/* @__PURE__ */ fn
|
|
|
19133
19084
|
}
|
|
19134
19085
|
return queue;
|
|
19135
19086
|
});
|
|
19136
|
-
const readLine = suspend$2(() => poll(lines).pipe(flatMap$1(match$
|
|
19087
|
+
const readLine = suspend$2(() => poll(lines).pipe(flatMap$1(match$4({
|
|
19137
19088
|
onNone: () => scoped(andThen(get(rlRef), take(lines))),
|
|
19138
19089
|
onSome: succeed$2
|
|
19139
19090
|
})), mapError(() => new QuitError({}))));
|
|
@@ -20637,7 +20588,7 @@ const handleDateClear = (options) => {
|
|
|
20637
20588
|
const resetCurrentLine = eraseLine + cursorLeft;
|
|
20638
20589
|
const parts = reduce(state.dateParts, "", (doc, part) => doc + part.toString());
|
|
20639
20590
|
const promptText = renderPrompt(parts, options.message, figures.prefix, figures.pointerSmall, figures, { plain: true });
|
|
20640
|
-
const errorText = isSome(state.error) ? match$
|
|
20591
|
+
const errorText = isSome(state.error) ? match$5(state.error.value.split(NEWLINE_REGEXP), {
|
|
20641
20592
|
onEmpty: () => "",
|
|
20642
20593
|
onNonEmpty: (errorLines) => separateSymbol(figures.pointerSmall, errorLines.join("\n"))
|
|
20643
20594
|
}) : "";
|
|
@@ -20715,7 +20666,7 @@ const processDateCursorRight = (state) => {
|
|
|
20715
20666
|
};
|
|
20716
20667
|
const processDateNext = (state) => {
|
|
20717
20668
|
const next = state.dateParts[state.cursor].nextPart();
|
|
20718
|
-
const cursor = match$
|
|
20669
|
+
const cursor = match$4(next, {
|
|
20719
20670
|
onNone: () => state.dateParts.findIndex((part) => !part.isToken()),
|
|
20720
20671
|
onSome: (next) => state.dateParts.indexOf(next)
|
|
20721
20672
|
});
|
|
@@ -20804,7 +20755,7 @@ const handleDateProcess = (options) => {
|
|
|
20804
20755
|
case "down": return succeed$2(processDown(state));
|
|
20805
20756
|
case "tab": return succeed$2(processDateNext(state));
|
|
20806
20757
|
case "enter":
|
|
20807
|
-
case "return": return match
|
|
20758
|
+
case "return": return match(options.validate(state.value), {
|
|
20808
20759
|
onFailure: (error) => Action$1.NextFrame({ state: {
|
|
20809
20760
|
...state,
|
|
20810
20761
|
error: some(error)
|
|
@@ -21058,7 +21009,7 @@ const renderPrompt = (confirm, message, leadingSymbol, trailingSymbol, theme, op
|
|
|
21058
21009
|
else if (trailingSymbol.length > 0) output += " ";
|
|
21059
21010
|
return output;
|
|
21060
21011
|
};
|
|
21061
|
-
return match$
|
|
21012
|
+
return match$5(message.split(NEWLINE_REGEXP), {
|
|
21062
21013
|
onEmpty: () => renderLine(""),
|
|
21063
21014
|
onNonEmpty: (promptLines) => {
|
|
21064
21015
|
const lines = options?.plain === true ? promptLines : map$8(promptLines, (line) => annotate(theme.colors, line, bold));
|
|
@@ -21090,7 +21041,7 @@ const renderNumberInput = (state, submitted, theme, renderOptions) => {
|
|
|
21090
21041
|
return annotate(theme.colors, value, annotation);
|
|
21091
21042
|
};
|
|
21092
21043
|
const renderNumberError = (state, pointer, theme, renderOptions) => {
|
|
21093
|
-
if (isSome(state.error)) return match$
|
|
21044
|
+
if (isSome(state.error)) return match$5(state.error.value.split(NEWLINE_REGEXP), {
|
|
21094
21045
|
onEmpty: () => "",
|
|
21095
21046
|
onNonEmpty: (errorLines) => {
|
|
21096
21047
|
if (renderOptions?.plain === true) return separateSymbol(pointer, errorLines.join("\n"));
|
|
@@ -21195,7 +21146,7 @@ const handleProcessInteger = (options) => {
|
|
|
21195
21146
|
...state,
|
|
21196
21147
|
error: some("Must provide an integer value")
|
|
21197
21148
|
} }));
|
|
21198
|
-
else return match
|
|
21149
|
+
else return match(options.validate(parsed), {
|
|
21199
21150
|
onFailure: (error) => Action$1.NextFrame({ state: {
|
|
21200
21151
|
...state,
|
|
21201
21152
|
error: some(error)
|
|
@@ -21240,7 +21191,7 @@ const handleProcessFloat = (options) => {
|
|
|
21240
21191
|
...state,
|
|
21241
21192
|
error: some("Must provide a floating point value")
|
|
21242
21193
|
} }));
|
|
21243
|
-
else return flatMap$1(sync(() => round(parsed, options.precision)), (rounded) => match
|
|
21194
|
+
else return flatMap$1(sync(() => round(parsed, options.precision)), (rounded) => match(options.validate(rounded), {
|
|
21244
21195
|
onFailure: (error) => Action$1.NextFrame({ state: {
|
|
21245
21196
|
...state,
|
|
21246
21197
|
error: some(error)
|
|
@@ -21367,7 +21318,7 @@ const renderTextInput = (nextState, options, theme, submitted, renderOptions) =>
|
|
|
21367
21318
|
}
|
|
21368
21319
|
};
|
|
21369
21320
|
const renderTextError = (nextState, pointer, theme, renderOptions) => {
|
|
21370
|
-
if (isSome(nextState.error)) return match$
|
|
21321
|
+
if (isSome(nextState.error)) return match$5(nextState.error.value.split(NEWLINE_REGEXP), {
|
|
21371
21322
|
onEmpty: () => "",
|
|
21372
21323
|
onNonEmpty: (errorLines) => {
|
|
21373
21324
|
if (renderOptions?.plain === true) return separateSymbol(pointer, errorLines.join("\n"));
|
|
@@ -21491,7 +21442,7 @@ const handleTextProcess = (options) => {
|
|
|
21491
21442
|
case "enter":
|
|
21492
21443
|
case "return": {
|
|
21493
21444
|
const value = state.value;
|
|
21494
|
-
return match
|
|
21445
|
+
return match(options.validate(value), {
|
|
21495
21446
|
onFailure: (error) => Action$1.NextFrame({ state: {
|
|
21496
21447
|
...state,
|
|
21497
21448
|
value,
|
|
@@ -21969,7 +21920,7 @@ const optional$1 = (param) => {
|
|
|
21969
21920
|
*/
|
|
21970
21921
|
const withDefault$1 = /*#__PURE__*/ dual(2, (self, defaultValue) => {
|
|
21971
21922
|
if (!isEffect(defaultValue)) return map(optional$1(self), getOrElse(() => defaultValue));
|
|
21972
|
-
return mapEffect(optional$1(self), match$
|
|
21923
|
+
return mapEffect(optional$1(self), match$4({
|
|
21973
21924
|
onNone: () => defaultValue,
|
|
21974
21925
|
onSome: succeed$2
|
|
21975
21926
|
}));
|
|
@@ -22754,7 +22705,7 @@ const toFlagDoc = (single, metadata) => {
|
|
|
22754
22705
|
const appendChoiceKeys = (description, choiceKeys) => {
|
|
22755
22706
|
if (choiceKeys === void 0 || choiceKeys.length === 0) return description;
|
|
22756
22707
|
const choiceSuffix = `(choices: ${choiceKeys.join(", ")})`;
|
|
22757
|
-
return match$
|
|
22708
|
+
return match$4(description, {
|
|
22758
22709
|
onNone: () => some(choiceSuffix),
|
|
22759
22710
|
onSome: (value) => some(`${value} ${choiceSuffix}`)
|
|
22760
22711
|
});
|
|
@@ -24425,7 +24376,7 @@ const suggest = (input, candidates) => {
|
|
|
24425
24376
|
/**
|
|
24426
24377
|
* @internal
|
|
24427
24378
|
*/
|
|
24428
|
-
const getCommandPath = (parsedInput) => match$
|
|
24379
|
+
const getCommandPath = (parsedInput) => match$4(parsedInput.subcommand, {
|
|
24429
24380
|
onNone: () => [],
|
|
24430
24381
|
onSome: (subcommand) => [subcommand.name, ...getCommandPath(subcommand.parsedInput)]
|
|
24431
24382
|
});
|
|
@@ -25537,7 +25488,7 @@ const runWith = (command, config) => {
|
|
|
25537
25488
|
const [, value] = yield* flag.flag.parse(emptyArgs);
|
|
25538
25489
|
program = provideService(program, flag, value);
|
|
25539
25490
|
}
|
|
25540
|
-
const services = match$
|
|
25491
|
+
const services = match$4(logLevel, {
|
|
25541
25492
|
onNone: () => empty$2(),
|
|
25542
25493
|
onSome: (level) => make$26(MinimumLogLevel, level)
|
|
25543
25494
|
});
|
|
@@ -25546,7 +25497,7 @@ const runWith = (command, config) => {
|
|
|
25546
25497
|
};
|
|
25547
25498
|
//#endregion
|
|
25548
25499
|
//#region package.json
|
|
25549
|
-
var version = "0.1.
|
|
25500
|
+
var version = "0.1.1085";
|
|
25550
25501
|
//#endregion
|
|
25551
25502
|
//#region src/install.ts
|
|
25552
25503
|
const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
|
|
@@ -25572,7 +25523,7 @@ const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
|
|
|
25572
25523
|
path.join(home, ".codex"),
|
|
25573
25524
|
yield* pipe(String$2("CLAUDE_CONFIG_DIR"), withDefault$2(path.join(home, ".claude"))),
|
|
25574
25525
|
yield* pipe(String$2("CODEX_HOME"), withDefault$2(path.join(home, ".codex")))
|
|
25575
|
-
]), canonical);
|
|
25526
|
+
]), canonical, { concurrency: "unbounded" });
|
|
25576
25527
|
const entries = yield* fs.readDirectory(root);
|
|
25577
25528
|
const directories = pipe([
|
|
25578
25529
|
".agents",
|
|
@@ -25582,7 +25533,7 @@ const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
|
|
|
25582
25533
|
const targets = dedupe([
|
|
25583
25534
|
...directories,
|
|
25584
25535
|
".claude",
|
|
25585
|
-
...match(contains(directories, ".codex"), {
|
|
25536
|
+
...match$6(contains(directories, ".codex"), {
|
|
25586
25537
|
onFalse: () => [".agents"],
|
|
25587
25538
|
onTrue: () => empty$3()
|
|
25588
25539
|
})
|
|
@@ -25611,6 +25562,10 @@ const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
|
|
|
25611
25562
|
}
|
|
25612
25563
|
for (const directory of targets) {
|
|
25613
25564
|
yield* fs.makeDirectory(path.join(root, directory, "skills"), { recursive: true });
|
|
25565
|
+
for (const name of ["architecture", "testing"]) yield* fs.remove(path.join(root, directory, "skills", name), {
|
|
25566
|
+
force: true,
|
|
25567
|
+
recursive: true
|
|
25568
|
+
});
|
|
25614
25569
|
for (const name of names) {
|
|
25615
25570
|
const target = path.join(root, directory, "skills", name);
|
|
25616
25571
|
yield* fs.remove(target, {
|
|
@@ -25621,7 +25576,7 @@ const cli = pipe(make("deslop-coding-standards", {}, fnUntraced(function* () {
|
|
|
25621
25576
|
}
|
|
25622
25577
|
}
|
|
25623
25578
|
yield* log(`Installed ${join$1(names, ", ")} in ${pipe(targets, map$8((directory) => path.join(root, directory, "skills")), join$1(", "))}.`);
|
|
25624
|
-
})), withDescription("Install the package’s
|
|
25579
|
+
})), withDescription("Install the package’s engineering, design and review skills at the Git repository root, including linked worktrees. Copy into each existing .agents, .claude and .codex skills directory, always .claude, and .agents when no .codex exists. Replace only package-owned names; preserve other skills and global configuration. Reject destinations outside the repository before copying. Refer to skills by name. Run the latest CLI transiently without adding a dependency. These skills belong in repositories, not global configuration."), withExamples([{
|
|
25625
25580
|
command: "vpx @deslop/coding-standards@latest",
|
|
25626
25581
|
description: "Install or refresh this repository’s shared skills without adding a dependency."
|
|
25627
25582
|
}]));
|
package/dist/oxlint.d.ts
CHANGED
|
@@ -4017,11 +4017,14 @@ export declare const oxlint: {
|
|
|
4017
4017
|
files: string[];
|
|
4018
4018
|
rules: {
|
|
4019
4019
|
'import/no-default-export': "off";
|
|
4020
|
+
'@deslop/coding-standards/no-barrel-module'?: undefined;
|
|
4020
4021
|
'shadcn/no-restyle'?: undefined;
|
|
4021
4022
|
'shadcn/require-static-classes'?: undefined;
|
|
4022
4023
|
'@deslop/coding-standards/no-destructured-parameter'?: undefined;
|
|
4023
4024
|
'@deslop/coding-standards/no-native-control'?: undefined;
|
|
4024
4025
|
'@deslop/coding-standards/no-renamed-import'?: undefined;
|
|
4026
|
+
'jsx-a11y/click-events-have-key-events'?: undefined;
|
|
4027
|
+
'jsx-a11y/label-has-associated-control'?: undefined;
|
|
4025
4028
|
'react/rules-of-hooks'?: undefined;
|
|
4026
4029
|
'@deslop/coding-standards/no-discarded-failure'?: undefined;
|
|
4027
4030
|
'effecttsgo/async-function'?: undefined;
|
|
@@ -4033,11 +4036,33 @@ export declare const oxlint: {
|
|
|
4033
4036
|
files: string[];
|
|
4034
4037
|
rules: {
|
|
4035
4038
|
'import/no-default-export'?: undefined;
|
|
4039
|
+
'@deslop/coding-standards/no-barrel-module': "off";
|
|
4040
|
+
'shadcn/no-restyle'?: undefined;
|
|
4041
|
+
'shadcn/require-static-classes'?: undefined;
|
|
4042
|
+
'@deslop/coding-standards/no-destructured-parameter'?: undefined;
|
|
4043
|
+
'@deslop/coding-standards/no-native-control'?: undefined;
|
|
4044
|
+
'@deslop/coding-standards/no-renamed-import'?: undefined;
|
|
4045
|
+
'jsx-a11y/click-events-have-key-events'?: undefined;
|
|
4046
|
+
'jsx-a11y/label-has-associated-control'?: undefined;
|
|
4047
|
+
'react/rules-of-hooks'?: undefined;
|
|
4048
|
+
'@deslop/coding-standards/no-discarded-failure'?: undefined;
|
|
4049
|
+
'effecttsgo/async-function'?: undefined;
|
|
4050
|
+
'typescript/require-await'?: undefined;
|
|
4051
|
+
'typescript/strict-void-return'?: undefined;
|
|
4052
|
+
'unicorn/no-null'?: undefined;
|
|
4053
|
+
};
|
|
4054
|
+
} | {
|
|
4055
|
+
files: string[];
|
|
4056
|
+
rules: {
|
|
4057
|
+
'import/no-default-export'?: undefined;
|
|
4058
|
+
'@deslop/coding-standards/no-barrel-module'?: undefined;
|
|
4036
4059
|
'shadcn/no-restyle': "off";
|
|
4037
4060
|
'shadcn/require-static-classes': "off";
|
|
4038
4061
|
'@deslop/coding-standards/no-destructured-parameter'?: undefined;
|
|
4039
4062
|
'@deslop/coding-standards/no-native-control'?: undefined;
|
|
4040
4063
|
'@deslop/coding-standards/no-renamed-import'?: undefined;
|
|
4064
|
+
'jsx-a11y/click-events-have-key-events'?: undefined;
|
|
4065
|
+
'jsx-a11y/label-has-associated-control'?: undefined;
|
|
4041
4066
|
'react/rules-of-hooks'?: undefined;
|
|
4042
4067
|
'@deslop/coding-standards/no-discarded-failure'?: undefined;
|
|
4043
4068
|
'effecttsgo/async-function'?: undefined;
|
|
@@ -4049,11 +4074,14 @@ export declare const oxlint: {
|
|
|
4049
4074
|
files: string[];
|
|
4050
4075
|
rules: {
|
|
4051
4076
|
'import/no-default-export'?: undefined;
|
|
4077
|
+
'@deslop/coding-standards/no-barrel-module'?: undefined;
|
|
4052
4078
|
'shadcn/no-restyle'?: undefined;
|
|
4053
4079
|
'shadcn/require-static-classes'?: undefined;
|
|
4054
4080
|
'@deslop/coding-standards/no-destructured-parameter': "off";
|
|
4055
4081
|
'@deslop/coding-standards/no-native-control': "off";
|
|
4056
4082
|
'@deslop/coding-standards/no-renamed-import': "off";
|
|
4083
|
+
'jsx-a11y/click-events-have-key-events': "off";
|
|
4084
|
+
'jsx-a11y/label-has-associated-control': "off";
|
|
4057
4085
|
'react/rules-of-hooks'?: undefined;
|
|
4058
4086
|
'@deslop/coding-standards/no-discarded-failure'?: undefined;
|
|
4059
4087
|
'effecttsgo/async-function'?: undefined;
|
|
@@ -4065,11 +4093,14 @@ export declare const oxlint: {
|
|
|
4065
4093
|
files: string[];
|
|
4066
4094
|
rules: {
|
|
4067
4095
|
'import/no-default-export'?: undefined;
|
|
4096
|
+
'@deslop/coding-standards/no-barrel-module'?: undefined;
|
|
4068
4097
|
'shadcn/no-restyle'?: undefined;
|
|
4069
4098
|
'shadcn/require-static-classes'?: undefined;
|
|
4070
4099
|
'@deslop/coding-standards/no-destructured-parameter'?: undefined;
|
|
4071
4100
|
'@deslop/coding-standards/no-native-control'?: undefined;
|
|
4072
4101
|
'@deslop/coding-standards/no-renamed-import'?: undefined;
|
|
4102
|
+
'jsx-a11y/click-events-have-key-events'?: undefined;
|
|
4103
|
+
'jsx-a11y/label-has-associated-control'?: undefined;
|
|
4073
4104
|
'react/rules-of-hooks': "off";
|
|
4074
4105
|
'@deslop/coding-standards/no-discarded-failure'?: undefined;
|
|
4075
4106
|
'effecttsgo/async-function'?: undefined;
|
|
@@ -4081,11 +4112,14 @@ export declare const oxlint: {
|
|
|
4081
4112
|
files: string[];
|
|
4082
4113
|
rules: {
|
|
4083
4114
|
'import/no-default-export'?: undefined;
|
|
4115
|
+
'@deslop/coding-standards/no-barrel-module'?: undefined;
|
|
4084
4116
|
'shadcn/no-restyle'?: undefined;
|
|
4085
4117
|
'shadcn/require-static-classes'?: undefined;
|
|
4086
4118
|
'@deslop/coding-standards/no-destructured-parameter'?: undefined;
|
|
4087
4119
|
'@deslop/coding-standards/no-native-control'?: undefined;
|
|
4088
4120
|
'@deslop/coding-standards/no-renamed-import'?: undefined;
|
|
4121
|
+
'jsx-a11y/click-events-have-key-events'?: undefined;
|
|
4122
|
+
'jsx-a11y/label-has-associated-control'?: undefined;
|
|
4089
4123
|
'react/rules-of-hooks'?: undefined;
|
|
4090
4124
|
'@deslop/coding-standards/no-discarded-failure': "off";
|
|
4091
4125
|
'effecttsgo/async-function'?: undefined;
|
|
@@ -4097,11 +4131,14 @@ export declare const oxlint: {
|
|
|
4097
4131
|
files: string[];
|
|
4098
4132
|
rules: {
|
|
4099
4133
|
'import/no-default-export'?: undefined;
|
|
4134
|
+
'@deslop/coding-standards/no-barrel-module'?: undefined;
|
|
4100
4135
|
'shadcn/no-restyle'?: undefined;
|
|
4101
4136
|
'shadcn/require-static-classes'?: undefined;
|
|
4102
4137
|
'@deslop/coding-standards/no-destructured-parameter'?: undefined;
|
|
4103
4138
|
'@deslop/coding-standards/no-native-control'?: undefined;
|
|
4104
4139
|
'@deslop/coding-standards/no-renamed-import'?: undefined;
|
|
4140
|
+
'jsx-a11y/click-events-have-key-events'?: undefined;
|
|
4141
|
+
'jsx-a11y/label-has-associated-control'?: undefined;
|
|
4105
4142
|
'react/rules-of-hooks'?: undefined;
|
|
4106
4143
|
'@deslop/coding-standards/no-discarded-failure'?: undefined;
|
|
4107
4144
|
'effecttsgo/async-function': "off";
|
|
@@ -4110,17 +4147,26 @@ export declare const oxlint: {
|
|
|
4110
4147
|
'unicorn/no-null': "off";
|
|
4111
4148
|
};
|
|
4112
4149
|
})[];
|
|
4113
|
-
plugins: ("effecttsgo" | "eslint" | "import" | "oxc" | "react" | "typescript" | "unicorn")[];
|
|
4150
|
+
plugins: ("effecttsgo" | "eslint" | "import" | "jsx-a11y" | "oxc" | "react" | "typescript" | "unicorn")[];
|
|
4114
4151
|
rules: {
|
|
4152
|
+
'@deslop/coding-standards/explicit-effect-concurrency': "error";
|
|
4153
|
+
'@deslop/coding-standards/module-constant': "error";
|
|
4154
|
+
'@deslop/coding-standards/motion-limits': "error";
|
|
4115
4155
|
'@deslop/coding-standards/no-array-wrap-ternary': "error";
|
|
4156
|
+
'@deslop/coding-standards/no-barrel-module': "error";
|
|
4157
|
+
'@deslop/coding-standards/no-compiler-opt-out': "error";
|
|
4158
|
+
'@deslop/coding-standards/no-component-atom-allocation': "error";
|
|
4116
4159
|
'@deslop/coding-standards/no-constant-function': "error";
|
|
4117
4160
|
'@deslop/coding-standards/no-deep-pipe': "error";
|
|
4118
4161
|
'@deslop/coding-standards/no-destructured-parameter': "error";
|
|
4119
4162
|
'@deslop/coding-standards/no-discarded-failure': "error";
|
|
4120
4163
|
'@deslop/coding-standards/no-double-nullish-check': "error";
|
|
4121
4164
|
'@deslop/coding-standards/no-effect-property-arrow': "error";
|
|
4165
|
+
'@deslop/coding-standards/no-empty-recovery': "error";
|
|
4122
4166
|
'@deslop/coding-standards/no-error-message-assertion': "error";
|
|
4123
4167
|
'@deslop/coding-standards/no-fake-ref-state': "error";
|
|
4168
|
+
'@deslop/coding-standards/no-floating-derived-type': "error";
|
|
4169
|
+
'@deslop/coding-standards/no-gradient': "error";
|
|
4124
4170
|
'@deslop/coding-standards/no-hand-written-guard': "error";
|
|
4125
4171
|
'@deslop/coding-standards/no-in-operator': "error";
|
|
4126
4172
|
'@deslop/coding-standards/no-let': "error";
|
|
@@ -4139,13 +4185,16 @@ export declare const oxlint: {
|
|
|
4139
4185
|
'@deslop/coding-standards/no-renamed-import': "error";
|
|
4140
4186
|
'@deslop/coding-standards/no-return-type': "error";
|
|
4141
4187
|
'@deslop/coding-standards/no-single-use-value': "error";
|
|
4188
|
+
'@deslop/coding-standards/no-stored-jsx': "error";
|
|
4142
4189
|
'@deslop/coding-standards/no-stored-schema-operation': "error";
|
|
4143
4190
|
'@deslop/coding-standards/no-switch-statement': "error";
|
|
4144
4191
|
'@deslop/coding-standards/no-trivial-indirection': "error";
|
|
4192
|
+
'@deslop/coding-standards/no-type-from-value': "error";
|
|
4145
4193
|
'@deslop/coding-standards/no-typeof': "error";
|
|
4146
4194
|
'@deslop/coding-standards/no-undestructured-use-state': "error";
|
|
4147
4195
|
'@deslop/coding-standards/no-unexplained-disable': "error";
|
|
4148
4196
|
'@deslop/coding-standards/no-unvalidated-json-decode': "error";
|
|
4197
|
+
'@deslop/coding-standards/preserve-error-cause': "error";
|
|
4149
4198
|
'@deslop/coding-standards/schema-type-pair': "error";
|
|
4150
4199
|
'effecttsgo/abort-controller-in-effect': "error";
|
|
4151
4200
|
'effecttsgo/crypto-random-uuid': "error";
|
|
@@ -4281,7 +4330,9 @@ export declare const oxlint: {
|
|
|
4281
4330
|
'typescript/no-inferrable-types': "error";
|
|
4282
4331
|
'typescript/no-invalid-void-type': "error";
|
|
4283
4332
|
'typescript/no-misused-promises': ["error", {
|
|
4284
|
-
checksVoidReturn:
|
|
4333
|
+
checksVoidReturn: {
|
|
4334
|
+
attributes: false;
|
|
4335
|
+
};
|
|
4285
4336
|
}];
|
|
4286
4337
|
'typescript/no-misused-spread': "error";
|
|
4287
4338
|
'typescript/no-namespace': ["error", {
|
|
@@ -4316,6 +4367,7 @@ export declare const oxlint: {
|
|
|
4316
4367
|
'typescript/restrict-plus-operands': "error";
|
|
4317
4368
|
'typescript/restrict-template-expressions': "error";
|
|
4318
4369
|
'typescript/strict-boolean-expressions': ["error", {
|
|
4370
|
+
allowNullableObject: false;
|
|
4319
4371
|
allowNumber: false;
|
|
4320
4372
|
allowString: false;
|
|
4321
4373
|
}];
|
|
@@ -4353,6 +4405,7 @@ export declare const oxlint: {
|
|
|
4353
4405
|
regex: string;
|
|
4354
4406
|
}[];
|
|
4355
4407
|
}];
|
|
4408
|
+
'array-callback-return': "error";
|
|
4356
4409
|
'max-depth': ["error", number];
|
|
4357
4410
|
'max-nested-callbacks': ["error", number];
|
|
4358
4411
|
'no-cond-assign': "error";
|
|
@@ -4543,6 +4596,12 @@ export declare const oxlint: {
|
|
|
4543
4596
|
ignoreRestSiblings: true;
|
|
4544
4597
|
reportUsedIgnorePattern: true;
|
|
4545
4598
|
}];
|
|
4599
|
+
'no-use-before-define': ["error", {
|
|
4600
|
+
classes: false;
|
|
4601
|
+
functions: false;
|
|
4602
|
+
typedefs: false;
|
|
4603
|
+
variables: true;
|
|
4604
|
+
}];
|
|
4546
4605
|
'no-useless-assignment': "error";
|
|
4547
4606
|
'no-useless-backreference': "error";
|
|
4548
4607
|
'no-useless-call': "error";
|
|
@@ -4566,6 +4625,12 @@ export declare const oxlint: {
|
|
|
4566
4625
|
}];
|
|
4567
4626
|
'prefer-template': "error";
|
|
4568
4627
|
'require-unicode-regexp': "error";
|
|
4628
|
+
'jsx-a11y/autocomplete-valid': "error";
|
|
4629
|
+
'jsx-a11y/click-events-have-key-events': "error";
|
|
4630
|
+
'jsx-a11y/control-has-associated-label': "error";
|
|
4631
|
+
'jsx-a11y/interactive-supports-focus': "error";
|
|
4632
|
+
'jsx-a11y/label-has-associated-control': "error";
|
|
4633
|
+
'react-doctor/no-aria-invalid-without-description': "error";
|
|
4569
4634
|
'react-doctor/no-call-component-as-function': "error";
|
|
4570
4635
|
'react-doctor/no-controlled-input-value-without-state-update': "error";
|
|
4571
4636
|
'react-doctor/no-create-context-in-render': "error";
|
|
@@ -4573,12 +4638,18 @@ export declare const oxlint: {
|
|
|
4573
4638
|
'react-doctor/no-inline-exhaustive-style': "error";
|
|
4574
4639
|
'react-doctor/no-jsx-element-type': "error";
|
|
4575
4640
|
'react-doctor/no-many-boolean-props': "error";
|
|
4641
|
+
'react-doctor/no-nested-card-surface': "error";
|
|
4642
|
+
'react-doctor/no-placeholder-only-field': "error";
|
|
4576
4643
|
'react-doctor/no-prop-types': "error";
|
|
4577
4644
|
'react-doctor/no-uncontrolled-input': "error";
|
|
4645
|
+
'react-doctor/shadcn-dialog-content-requires-title': "error";
|
|
4578
4646
|
'react-doctor/shadcn-icon-button-requires-label': "error";
|
|
4579
4647
|
'react-doctor/effect-listener-cleanup-mismatch': "error";
|
|
4648
|
+
'react-doctor/effect-needs-cleanup': "error";
|
|
4649
|
+
'react-doctor/no-adjust-state-on-prop-change': "error";
|
|
4580
4650
|
'react-doctor/no-async-effect-callback': "error";
|
|
4581
4651
|
'react-doctor/no-create-object-url-without-revoke': "error";
|
|
4652
|
+
'react-doctor/no-derived-state': "error";
|
|
4582
4653
|
'react-doctor/no-derived-useState': "error";
|
|
4583
4654
|
'react-doctor/no-effect-event-in-deps': "error";
|
|
4584
4655
|
'react-doctor/no-effect-with-fresh-deps': "error";
|
|
@@ -4606,10 +4677,10 @@ export declare const oxlint: {
|
|
|
4606
4677
|
'react-doctor/no-large-animated-blur': "error";
|
|
4607
4678
|
'react-doctor/no-layout-property-animation': "error";
|
|
4608
4679
|
'react-doctor/no-layout-transition-inline': "error";
|
|
4609
|
-
'react-doctor/no-long-transition-duration': "error";
|
|
4610
4680
|
'react-doctor/no-outline-none': "error";
|
|
4611
|
-
'react-doctor/no-
|
|
4681
|
+
'react-doctor/no-reduced-motion-content-removal': "error";
|
|
4612
4682
|
'react-doctor/no-transition-all': "error";
|
|
4683
|
+
'react-doctor/no-ungated-tailwind-animation': "error";
|
|
4613
4684
|
'react/button-has-type': "error";
|
|
4614
4685
|
'react/checked-requires-onchange-or-readonly': "error";
|
|
4615
4686
|
'react/exhaustive-deps': "error";
|
|
@@ -4641,6 +4712,7 @@ export declare const oxlint: {
|
|
|
4641
4712
|
'react/preserve-manual-memoization': "error";
|
|
4642
4713
|
'react/purity': "error";
|
|
4643
4714
|
'react/refs': "error";
|
|
4715
|
+
'react/rule-suppression': "error";
|
|
4644
4716
|
'react/rules-of-hooks': "error";
|
|
4645
4717
|
'react/self-closing-comp': "error";
|
|
4646
4718
|
'react/set-state-in-effect': "error";
|
|
@@ -4683,6 +4755,8 @@ export declare const oxlint: {
|
|
|
4683
4755
|
'typescript/no-unnecessary-type-assertion': "error";
|
|
4684
4756
|
'typescript/no-useless-default-assignment': "error";
|
|
4685
4757
|
'unicorn/filename-case': "error";
|
|
4758
|
+
'unicorn/no-abusive-eslint-disable': "error";
|
|
4759
|
+
'unicorn/no-empty-file': "error";
|
|
4686
4760
|
'unicorn/no-immediate-mutation': "error";
|
|
4687
4761
|
'unicorn/no-null': "error";
|
|
4688
4762
|
'unicorn/no-object-as-default-parameter': "error";
|
|
@@ -4696,6 +4770,14 @@ export declare const oxlint: {
|
|
|
4696
4770
|
'use-isnan': "error";
|
|
4697
4771
|
};
|
|
4698
4772
|
settings: {
|
|
4773
|
+
'jsx-a11y': {
|
|
4774
|
+
components: {
|
|
4775
|
+
Button: string;
|
|
4776
|
+
Input: string;
|
|
4777
|
+
Label: string;
|
|
4778
|
+
Textarea: string;
|
|
4779
|
+
};
|
|
4780
|
+
};
|
|
4699
4781
|
react: {
|
|
4700
4782
|
version: string;
|
|
4701
4783
|
};
|