@thethracian/oxlint-config 0.1.0 → 0.2.0
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/CHANGELOG.md +13 -0
- package/README.md +61 -1
- package/dist/index.d.ts +32 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -1
- package/dist/rules/effect-default-helpers.d.ts +33 -0
- package/dist/rules/effect-default-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-helpers.js +459 -0
- package/dist/rules/effect-default-helpers.js.map +1 -0
- package/dist/rules/effect-default-resource-helpers.d.ts +5 -0
- package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-resource-helpers.js +65 -0
- package/dist/rules/effect-default-resource-helpers.js.map +1 -0
- package/dist/rules/effect-default-test-helpers.d.ts +5 -0
- package/dist/rules/effect-default-test-helpers.d.ts.map +1 -0
- package/dist/rules/effect-default-test-helpers.js +46 -0
- package/dist/rules/effect-default-test-helpers.js.map +1 -0
- package/dist/rules/effect-default.d.ts +3 -0
- package/dist/rules/effect-default.d.ts.map +1 -0
- package/dist/rules/effect-default.js +746 -0
- package/dist/rules/effect-default.js.map +1 -0
- package/dist/rules/effect-path-options.d.ts +59 -0
- package/dist/rules/effect-path-options.d.ts.map +1 -0
- package/dist/rules/effect-path-options.js +114 -0
- package/dist/rules/effect-path-options.js.map +1 -0
- package/dist/rules/effect-rule-core.d.ts +52 -0
- package/dist/rules/effect-rule-core.d.ts.map +1 -0
- package/dist/rules/effect-rule-core.js +362 -0
- package/dist/rules/effect-rule-core.js.map +1 -0
- package/dist/rules/effect-rule-names.d.ts +4 -0
- package/dist/rules/effect-rule-names.d.ts.map +1 -0
- package/dist/rules/effect-rule-names.js +147 -0
- package/dist/rules/effect-rule-names.js.map +1 -0
- package/dist/rules/effect-source-helpers.d.ts +10 -0
- package/dist/rules/effect-source-helpers.d.ts.map +1 -0
- package/dist/rules/effect-source-helpers.js +334 -0
- package/dist/rules/effect-source-helpers.js.map +1 -0
- package/dist/rules/effect-source-scan.d.ts +8 -0
- package/dist/rules/effect-source-scan.d.ts.map +1 -0
- package/dist/rules/effect-source-scan.js +356 -0
- package/dist/rules/effect-source-scan.js.map +1 -0
- package/dist/rules/effect-strict-helpers.d.ts +34 -0
- package/dist/rules/effect-strict-helpers.d.ts.map +1 -0
- package/dist/rules/effect-strict-helpers.js +331 -0
- package/dist/rules/effect-strict-helpers.js.map +1 -0
- package/dist/rules/effect-strict.d.ts +3 -0
- package/dist/rules/effect-strict.d.ts.map +1 -0
- package/dist/rules/effect-strict.js +663 -0
- package/dist/rules/effect-strict.js.map +1 -0
- package/dist/rules/plugin.d.ts.map +1 -1
- package/dist/rules/plugin.js +16 -7
- package/dist/rules/plugin.js.map +1 -1
- package/package.json +15 -3
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { hasEffectSignal } from './effect-rule-core.js';
|
|
2
|
+
import { findBalancedCallEnd, findStatementEnd, isInsideCall, stripComments, stripCommentsAndStrings, } from './effect-source-helpers.js';
|
|
3
|
+
function lineAround(source, targetIndex) {
|
|
4
|
+
const start = source.lastIndexOf('\n', targetIndex) + 1;
|
|
5
|
+
const end = source.indexOf('\n', targetIndex);
|
|
6
|
+
return source.slice(start, end === -1 ? source.length : end);
|
|
7
|
+
}
|
|
8
|
+
function testSegments(source) {
|
|
9
|
+
const code = stripCommentsAndStrings(source);
|
|
10
|
+
const starts = [...code.matchAll(/\bit(?:\.effect)?\s*\(/g)].map((match) => match.index);
|
|
11
|
+
if (starts.length === 0) {
|
|
12
|
+
return [code];
|
|
13
|
+
}
|
|
14
|
+
return starts.map((start, index) => code.slice(start, starts[index + 1] ?? code.length));
|
|
15
|
+
}
|
|
16
|
+
function hasLayerFactory(source) {
|
|
17
|
+
const code = stripCommentsAndStrings(source);
|
|
18
|
+
return (/export\s+function\s+[A-Za-z_$][\w$]*Layer\s*\([^)]*\)\s*{[\s\S]*?Layer\./.test(code) ||
|
|
19
|
+
/export\s+const\s+[A-Za-z_$][\w$]*Layer\s*=\s*(?:\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>[\s\S]*?Layer\./.test(code));
|
|
20
|
+
}
|
|
21
|
+
function hasUnscopedResourceLayer(source) {
|
|
22
|
+
const code = stripCommentsAndStrings(source);
|
|
23
|
+
for (const match of code.matchAll(/Layer\.effect\s*\(/g)) {
|
|
24
|
+
const openParenIndex = code.indexOf('(', match.index);
|
|
25
|
+
const callSource = code.slice(match.index, findBalancedCallEnd(code, openParenIndex) + 1);
|
|
26
|
+
if (/\b(?:open|connect|subscribe|listen)\w*\s*(?:\(|\)|$)/.test(callSource) &&
|
|
27
|
+
!isInsideCall(code, match.index, /Layer\.scoped\s*\(/g)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
function hasBoundaryDataWithoutSchema(source) {
|
|
34
|
+
const code = stripCommentsAndStrings(source);
|
|
35
|
+
for (const match of code.matchAll(/(?:req|request|command|message)\.(?:body|params|query|payload)/g)) {
|
|
36
|
+
const accessEnd = match.index + match[0].length;
|
|
37
|
+
const tail = code.slice(accessEnd);
|
|
38
|
+
const pipeMatch = /^\s*\.pipe\s*\(/.exec(tail);
|
|
39
|
+
const segment = pipeMatch
|
|
40
|
+
? code.slice(match.index, accessEnd + findBalancedCallEnd(tail, tail.indexOf('(')) + 1)
|
|
41
|
+
: code.slice(match.index, accessEnd);
|
|
42
|
+
if (!isInsideCall(code, match.index, /Schema\.decode[A-Za-z]*\s*\(/g) &&
|
|
43
|
+
!/Schema\.decode/.test(segment)) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
function hasHttpServerRequestWithoutSchema(source) {
|
|
50
|
+
const code = stripCommentsAndStrings(source);
|
|
51
|
+
if (!/\b(?:HttpRouter\.|HttpServerRequest\b)/.test(code)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
for (const match of code.matchAll(/\b(?:body|Body|json|Json|urlParams)\b/g)) {
|
|
55
|
+
const line = lineAround(code, match.index);
|
|
56
|
+
const bindingName = /\b(?:const|let)\s+([A-Za-z_$][\w$]*)\b/.exec(line)?.[1];
|
|
57
|
+
const tail = code.slice(match.index, findStatementEnd(code, match.index) + 240);
|
|
58
|
+
if (!/Schema\.decode/.test(line) &&
|
|
59
|
+
!(bindingName &&
|
|
60
|
+
new RegExp(`Schema\\.decode[A-Za-z]*\\s*\\([^)]*\\)\\s*\\(\\s*${bindingName}\\b`).test(tail))) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
function hasPersistenceReadWithoutSchema(source) {
|
|
67
|
+
const code = stripCommentsAndStrings(source);
|
|
68
|
+
for (const match of code.matchAll(/\b(?:db|database|collection|repository)\.[\s\S]*?(?:select|find|get|query)\s*\(/g)) {
|
|
69
|
+
const localSource = lineAround(code, match.index);
|
|
70
|
+
const bindingName = /\b(?:const|let)\s+([A-Za-z_$][\w$]*)\b/.exec(localSource)?.[1];
|
|
71
|
+
const tail = code.slice(match.index, findStatementEnd(code, match.index) + 240);
|
|
72
|
+
if (!/Schema\.decode/.test(localSource) &&
|
|
73
|
+
!(bindingName &&
|
|
74
|
+
new RegExp(`Schema\\.decode[A-Za-z]*\\s*\\([^)]*\\)\\s*\\(\\s*${bindingName}\\b`).test(tail))) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
function hasCommandHandlerWithoutSchema(source) {
|
|
81
|
+
const code = stripCommentsAndStrings(source);
|
|
82
|
+
for (const match of code.matchAll(/\b(?:Command|Cli|Job|Message)\b[\s\S]*?handler/g)) {
|
|
83
|
+
const localSource = code.slice(Math.max(0, match.index - 160), match.index + 160);
|
|
84
|
+
if (!/(?:Schema\.|schema\s*:)/.test(localSource)) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
function hasUnscopedResourceLoop(source) {
|
|
91
|
+
const code = stripCommentsAndStrings(source);
|
|
92
|
+
for (const match of code.matchAll(/\b(?:open|connect|subscribe|listen)\w*\s*\(/g)) {
|
|
93
|
+
const prefix = code.slice(Math.max(0, match.index - 180), match.index);
|
|
94
|
+
if (/\b(?:for|while)\b/.test(prefix) &&
|
|
95
|
+
!isInsideCall(code, match.index, /Effect\.scoped\s*\(/g)) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
function hasUnsafeResourceStream(source) {
|
|
102
|
+
const code = stripCommentsAndStrings(source);
|
|
103
|
+
for (const match of code.matchAll(/\b(?:open|connect|subscribe|listen)\w*\s*\(/g)) {
|
|
104
|
+
const prefix = code.slice(Math.max(0, match.index - 180), match.index);
|
|
105
|
+
if (/\bStream\./.test(prefix) &&
|
|
106
|
+
!isInsideCall(code, match.index, /(?:Stream|Effect)\.scoped\s*\(/g)) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
function hasLiveTestService(source) {
|
|
113
|
+
return /(?:\bLive\b|[A-Za-z_$][\w$]*Live\b|Layer\.live)/.test(stripCommentsAndStrings(source));
|
|
114
|
+
}
|
|
115
|
+
function hasRealTestService(source) {
|
|
116
|
+
return /\breal[A-Z]/.test(stripCommentsAndStrings(source));
|
|
117
|
+
}
|
|
118
|
+
function hasDuplicateLayerInstance(source) {
|
|
119
|
+
const code = stripCommentsAndStrings(source);
|
|
120
|
+
const services = new Set();
|
|
121
|
+
for (const match of code.matchAll(/Layer\.(?:succeed|sync|effect|scoped|fromEffect|fromFunction)\s*\(\s*([A-Za-z_$][\w$]*)\b/g)) {
|
|
122
|
+
const [, serviceName] = match;
|
|
123
|
+
if (services.has(serviceName)) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
services.add(serviceName);
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
function localEffectCallSegment(source, targetIndex) {
|
|
131
|
+
const openParenIndex = source.indexOf('(', targetIndex);
|
|
132
|
+
if (openParenIndex === -1) {
|
|
133
|
+
return source.slice(targetIndex, targetIndex + 160);
|
|
134
|
+
}
|
|
135
|
+
let endIndex = findBalancedCallEnd(source, openParenIndex) + 1;
|
|
136
|
+
const afterCall = source.slice(endIndex);
|
|
137
|
+
const pipeMatch = afterCall.match(/^\s*\.pipe\s*\(/);
|
|
138
|
+
if (pipeMatch) {
|
|
139
|
+
const pipeOpenIndex = endIndex + pipeMatch[0].lastIndexOf('(');
|
|
140
|
+
endIndex = findBalancedCallEnd(source, pipeOpenIndex) + 1;
|
|
141
|
+
}
|
|
142
|
+
return source.slice(targetIndex, endIndex);
|
|
143
|
+
}
|
|
144
|
+
function localStatementSegment(source, targetIndex) {
|
|
145
|
+
return source.slice(targetIndex, findStatementEnd(source, targetIndex) + 1);
|
|
146
|
+
}
|
|
147
|
+
function hasOutputBoundaryWithoutSchema(source) {
|
|
148
|
+
const code = stripCommentsAndStrings(source);
|
|
149
|
+
for (const match of code.matchAll(/\breturn\s+(?:Response\.json|json)\s*\(/g)) {
|
|
150
|
+
const callOffset = match[0].search(/(?:Response\.json|json)\s*\(/);
|
|
151
|
+
const segment = localEffectCallSegment(source, match.index + callOffset);
|
|
152
|
+
if (!/Schema\.(?:encode|decode)/.test(segment)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
function hasHttpClientResponseWithoutSchema(source) {
|
|
159
|
+
const code = stripCommentsAndStrings(source);
|
|
160
|
+
for (const match of code.matchAll(/\bHttpClient\.[\s\S]*?\bresponse\.json\s*\(/g)) {
|
|
161
|
+
const segment = localStatementSegment(source, match.index);
|
|
162
|
+
if (!/Schema\.decode/.test(segment)) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
function hasSharedResourceForEachWithoutSemaphore(source) {
|
|
169
|
+
const code = stripCommentsAndStrings(source);
|
|
170
|
+
for (const match of code.matchAll(/\bEffect\.forEach\s*\(/g)) {
|
|
171
|
+
const localStart = Math.max(0, match.index - 180);
|
|
172
|
+
const segment = code.slice(localStart, findStatementEnd(code, match.index) + 1);
|
|
173
|
+
if (/\b(?:pool|connection|client|browser|worker)\b/.test(segment) &&
|
|
174
|
+
!/\bSemaphore\b/.test(segment)) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
function hasEnsuringCleanupWithoutOnExit(source) {
|
|
181
|
+
const code = stripCommentsAndStrings(source);
|
|
182
|
+
for (const match of code.matchAll(/\bEffect\.ensuring\s*\(/g)) {
|
|
183
|
+
const segment = localEffectCallSegment(source, match.index);
|
|
184
|
+
if (/\bcleanup\b/.test(segment) && !/\bonExit\b/.test(segment)) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
function hasUnterminatedLongRunningStream(source) {
|
|
191
|
+
const code = stripCommentsAndStrings(source);
|
|
192
|
+
for (const match of code.matchAll(/\bStream\.(?:repeat|forever|async|fromQueue)\s*\(/g)) {
|
|
193
|
+
const segment = localEffectCallSegment(source, match.index);
|
|
194
|
+
if (!/\b(?:takeUntil|interruptWhen|timeout)\b/.test(segment)) {
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
function hasAsyncPushWithoutBuffer(source) {
|
|
201
|
+
const code = stripCommentsAndStrings(source);
|
|
202
|
+
for (const match of code.matchAll(/\bStream\.asyncPush\s*\(/g)) {
|
|
203
|
+
const segment = localEffectCallSegment(source, match.index);
|
|
204
|
+
if (!/\b(?:buffer|Queue\.bounded|Queue\.sliding)\b/.test(segment)) {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
function hasUnbatchedResolver(source) {
|
|
211
|
+
const code = stripCommentsAndStrings(source);
|
|
212
|
+
for (const match of code.matchAll(/\bRequestResolver\.make\s*\(/g)) {
|
|
213
|
+
const segment = localEffectCallSegment(source, match.index);
|
|
214
|
+
if (!/\b(?:makeBatched|batchN|grouped)\b/.test(segment)) {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
function hasNPlusOneWithoutBatchedResolver(source) {
|
|
221
|
+
const code = stripCommentsAndStrings(source);
|
|
222
|
+
for (const match of code.matchAll(/\bEffect\.forEach\s*\(/g)) {
|
|
223
|
+
const segment = localEffectCallSegment(source, match.index);
|
|
224
|
+
if (/\b(?:findById|getById|loadById)\s*\(/.test(segment) &&
|
|
225
|
+
!/\bRequestResolver\b/.test(segment)) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
function enclosingEffectWrapperSegment(source, targetIndex) {
|
|
232
|
+
for (const match of source.matchAll(/\bEffect\.(?:promise|tryPromise)\s*\(/g)) {
|
|
233
|
+
const openParenIndex = source.indexOf('(', match.index);
|
|
234
|
+
if (openParenIndex === -1 || openParenIndex > targetIndex) {
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
const endIndex = findBalancedCallEnd(source, openParenIndex);
|
|
238
|
+
if (targetIndex <= endIndex) {
|
|
239
|
+
return localEffectCallSegment(source, match.index);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
function hasTopLevelPipeOperator(segment, operatorName) {
|
|
245
|
+
const pipeIndex = segment.indexOf('.pipe');
|
|
246
|
+
if (pipeIndex === -1) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
const openParenIndex = segment.indexOf('(', pipeIndex);
|
|
250
|
+
if (openParenIndex === -1) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
const pipeBody = segment.slice(openParenIndex + 1, findBalancedCallEnd(segment, openParenIndex));
|
|
254
|
+
const operatorPattern = new RegExp(`(?:^|,)\\s*Effect\\.${operatorName}\\b`);
|
|
255
|
+
return operatorPattern.test(pipeBody);
|
|
256
|
+
}
|
|
257
|
+
function hasExternalEffectWithoutTimeout(source, options = { allowFetch: true }) {
|
|
258
|
+
const externalCallPattern = /\b(?:HttpClient\.(?:get|post|put|patch|delete|request)|fetch|FileSystem\.[A-Za-z_$][\w$]*|SqlClient\.[A-Za-z_$][\w$]*)\s*\(/g;
|
|
259
|
+
const code = stripCommentsAndStrings(source);
|
|
260
|
+
for (const match of code.matchAll(externalCallPattern)) {
|
|
261
|
+
const enclosingWrapper = enclosingEffectWrapperSegment(code, match.index);
|
|
262
|
+
if (match[0].startsWith('fetch') && (!enclosingWrapper || !options.allowFetch)) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
const segment = enclosingWrapper ?? localEffectCallSegment(code, match.index);
|
|
266
|
+
if (!isInsideCall(code, match.index, /Effect\.timeout\s*\(/g) &&
|
|
267
|
+
!hasTopLevelPipeOperator(segment, 'timeout')) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
function hasExternalEffectWithoutSpan(source, options = { allowFetch: true }) {
|
|
274
|
+
const externalCallPattern = /\b(?:HttpClient\.(?:get|post|put|patch|delete|request)|fetch|FileSystem\.[A-Za-z_$][\w$]*|SqlClient\.[A-Za-z_$][\w$]*)\s*\(/g;
|
|
275
|
+
const code = stripCommentsAndStrings(source);
|
|
276
|
+
for (const match of code.matchAll(externalCallPattern)) {
|
|
277
|
+
const enclosingWrapper = enclosingEffectWrapperSegment(source, match.index);
|
|
278
|
+
if (match[0].startsWith('fetch') && (!enclosingWrapper || !options.allowFetch)) {
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
const segment = enclosingWrapper ?? localEffectCallSegment(source, match.index);
|
|
282
|
+
if (!isInsideCall(source, match.index, /Effect\.withSpan\s*\(/g) &&
|
|
283
|
+
!hasTopLevelPipeOperator(segment, 'withSpan')) {
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
function hasIdempotentExternalEffectWithoutRetry(source, options = { allowFetch: true }) {
|
|
290
|
+
const idempotentPattern = /\b(?:HttpClient\.(?:get|head|put|delete)|fetch|(?:find|lookup|read)[A-Z]\w*)\s*\(/g;
|
|
291
|
+
const code = stripCommentsAndStrings(source);
|
|
292
|
+
for (const match of code.matchAll(idempotentPattern)) {
|
|
293
|
+
const enclosingWrapper = enclosingEffectWrapperSegment(code, match.index);
|
|
294
|
+
const rawEnclosingWrapper = enclosingEffectWrapperSegment(source, match.index);
|
|
295
|
+
if (match[0].startsWith('fetch') && (!enclosingWrapper || !options.allowFetch)) {
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
const segment = enclosingWrapper ?? localEffectCallSegment(code, match.index);
|
|
299
|
+
const rawSegment = rawEnclosingWrapper ?? localEffectCallSegment(source, match.index);
|
|
300
|
+
if (match[0].startsWith('fetch') &&
|
|
301
|
+
/\bmethod\s*:\s*['"](?!(?:GET|HEAD|PUT|DELETE)['"])/.test(stripComments(rawSegment))) {
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (!isInsideCall(code, match.index, /Effect\.retry\s*\(/g) &&
|
|
305
|
+
!hasTopLevelPipeOperator(segment, 'retry')) {
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
function hasUnprovidedServiceInEffectTest(source) {
|
|
312
|
+
return testSegments(source).some((segment) => /yield\*\s+[A-Z][\w$]*(?:Service|Repo|Client)\b/.test(segment) &&
|
|
313
|
+
!/\b(?:Effect\.)?provide[A-Za-z_$]*\s*\(/.test(segment));
|
|
314
|
+
}
|
|
315
|
+
function hasTimeCodeWithoutTestClock(source) {
|
|
316
|
+
return testSegments(source).some((segment) => /Effect\.(?:timeout|delay)|Clock\./.test(segment) && !/TestClock/.test(segment));
|
|
317
|
+
}
|
|
318
|
+
function hasMutableStateWithoutRef(source) {
|
|
319
|
+
if (!hasEffectSignal(source)) {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
for (const match of source.matchAll(/\blet\s+[A-Za-z_$][\w$]*\s*=/g)) {
|
|
323
|
+
if (!/\bRef\./.test(lineAround(source, match.index))) {
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
const hasSharedMutableStateWithoutRef = hasMutableStateWithoutRef;
|
|
330
|
+
export { hasAsyncPushWithoutBuffer, hasBoundaryDataWithoutSchema, hasCommandHandlerWithoutSchema, hasDuplicateLayerInstance, hasEnsuringCleanupWithoutOnExit, hasExternalEffectWithoutTimeout, hasExternalEffectWithoutSpan, hasHttpClientResponseWithoutSchema, hasHttpServerRequestWithoutSchema, hasIdempotentExternalEffectWithoutRetry, hasLayerFactory, hasLiveTestService, hasMutableStateWithoutRef, hasNPlusOneWithoutBatchedResolver, hasOutputBoundaryWithoutSchema, hasPersistenceReadWithoutSchema, hasRealTestService, hasSharedResourceForEachWithoutSemaphore, hasSharedMutableStateWithoutRef, hasTimeCodeWithoutTestClock, hasUnbatchedResolver, hasUnprovidedServiceInEffectTest, hasUnscopedResourceLayer, hasUnscopedResourceLoop, hasUnsafeResourceStream, hasUnterminatedLongRunningStream, };
|
|
331
|
+
//# sourceMappingURL=effect-strict-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-strict-helpers.js","sourceRoot":"","sources":["../../src/rules/effect-strict-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-strict.d.ts","sourceRoot":"","sources":["../../src/rules/effect-strict.ts"],"names":[],"mappings":"AA01BA,QAAA,MAAM,iBAAiB,4DAAoE,CAAC;AAE5F,eAAe,iBAAiB,CAAC"}
|