@thethracian/oxlint-config 0.1.0 → 0.2.1

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +62 -2
  3. package/dist/index.d.ts +34 -11
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +73 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/rules/acronym-case.d.ts.map +1 -1
  8. package/dist/rules/acronym-case.js +0 -2
  9. package/dist/rules/acronym-case.js.map +1 -1
  10. package/dist/rules/effect-default-helpers.d.ts +33 -0
  11. package/dist/rules/effect-default-helpers.d.ts.map +1 -0
  12. package/dist/rules/effect-default-helpers.js +536 -0
  13. package/dist/rules/effect-default-helpers.js.map +1 -0
  14. package/dist/rules/effect-default-resource-helpers.d.ts +5 -0
  15. package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -0
  16. package/dist/rules/effect-default-resource-helpers.js +65 -0
  17. package/dist/rules/effect-default-resource-helpers.js.map +1 -0
  18. package/dist/rules/effect-default-test-helpers.d.ts +5 -0
  19. package/dist/rules/effect-default-test-helpers.d.ts.map +1 -0
  20. package/dist/rules/effect-default-test-helpers.js +46 -0
  21. package/dist/rules/effect-default-test-helpers.js.map +1 -0
  22. package/dist/rules/effect-default.d.ts +3 -0
  23. package/dist/rules/effect-default.d.ts.map +1 -0
  24. package/dist/rules/effect-default.js +882 -0
  25. package/dist/rules/effect-default.js.map +1 -0
  26. package/dist/rules/effect-path-options.d.ts +59 -0
  27. package/dist/rules/effect-path-options.d.ts.map +1 -0
  28. package/dist/rules/effect-path-options.js +114 -0
  29. package/dist/rules/effect-path-options.js.map +1 -0
  30. package/dist/rules/effect-rule-core.d.ts +60 -0
  31. package/dist/rules/effect-rule-core.d.ts.map +1 -0
  32. package/dist/rules/effect-rule-core.js +509 -0
  33. package/dist/rules/effect-rule-core.js.map +1 -0
  34. package/dist/rules/effect-rule-names.d.ts +4 -0
  35. package/dist/rules/effect-rule-names.d.ts.map +1 -0
  36. package/dist/rules/effect-rule-names.js +147 -0
  37. package/dist/rules/effect-rule-names.js.map +1 -0
  38. package/dist/rules/effect-source-helpers.d.ts +10 -0
  39. package/dist/rules/effect-source-helpers.d.ts.map +1 -0
  40. package/dist/rules/effect-source-helpers.js +359 -0
  41. package/dist/rules/effect-source-helpers.js.map +1 -0
  42. package/dist/rules/effect-source-scan.d.ts +8 -0
  43. package/dist/rules/effect-source-scan.d.ts.map +1 -0
  44. package/dist/rules/effect-source-scan.js +364 -0
  45. package/dist/rules/effect-source-scan.js.map +1 -0
  46. package/dist/rules/effect-strict-helpers.d.ts +34 -0
  47. package/dist/rules/effect-strict-helpers.d.ts.map +1 -0
  48. package/dist/rules/effect-strict-helpers.js +500 -0
  49. package/dist/rules/effect-strict-helpers.js.map +1 -0
  50. package/dist/rules/effect-strict.d.ts +3 -0
  51. package/dist/rules/effect-strict.d.ts.map +1 -0
  52. package/dist/rules/effect-strict.js +727 -0
  53. package/dist/rules/effect-strict.js.map +1 -0
  54. package/dist/rules/max-line-length.d.ts.map +1 -1
  55. package/dist/rules/max-line-length.js +25 -7
  56. package/dist/rules/max-line-length.js.map +1 -1
  57. package/dist/rules/plugin.d.ts +2 -121
  58. package/dist/rules/plugin.d.ts.map +1 -1
  59. package/dist/rules/plugin.js +94 -101
  60. package/dist/rules/plugin.js.map +1 -1
  61. package/dist/rules/require-function-doc.d.ts.map +1 -1
  62. package/dist/rules/require-function-doc.js +32 -21
  63. package/dist/rules/require-function-doc.js.map +1 -1
  64. package/dist/rules/source-cache.d.ts +11 -0
  65. package/dist/rules/source-cache.d.ts.map +1 -0
  66. package/dist/rules/source-cache.js +50 -0
  67. package/dist/rules/source-cache.js.map +1 -0
  68. package/package.json +13 -4
@@ -0,0 +1,500 @@
1
+ import { hasEffectSignal } from './effect-rule-core.js';
2
+ import { findBalancedCallEnd, findStatementEnd, isInsideCall, stripComments, stripCommentsAndStrings, } from './effect-source-helpers.js';
3
+ const SEGMENT_CACHE_MAX = 256;
4
+ const EXTERNAL_CALL_PATTERN = /\b(?:HttpClient\.(?:get|post|put|patch|delete|request)|fetch|FileSystem\.[A-Za-z_$][\w$]*|SqlClient\.[A-Za-z_$][\w$]*)\s*\(/g;
5
+ const IDEMPOTENT_EXTERNAL_CALL_PATTERN = /\b(?:HttpClient\.(?:get|head|put|delete)|fetch|(?:find|lookup|read)[A-Z]\w*)\s*\(/g;
6
+ const localEffectCallSegmentCache = new Map();
7
+ const enclosingEffectWrapperSegmentCache = new Map();
8
+ function sourceIndexCache(cache, source) {
9
+ let indexCache = cache.get(source);
10
+ if (indexCache !== undefined) {
11
+ return indexCache;
12
+ }
13
+ if (cache.size >= SEGMENT_CACHE_MAX) {
14
+ const firstKey = cache.keys().next().value;
15
+ if (firstKey !== undefined) {
16
+ cache.delete(firstKey);
17
+ }
18
+ }
19
+ indexCache = new Map();
20
+ cache.set(source, indexCache);
21
+ return indexCache;
22
+ }
23
+ function lineAround(source, targetIndex) {
24
+ const start = source.lastIndexOf('\n', targetIndex) + 1;
25
+ const end = source.indexOf('\n', targetIndex);
26
+ return source.slice(start, end === -1 ? source.length : end);
27
+ }
28
+ function isAsciiWhitespace(character) {
29
+ return character === ' ' || character === '\n' || character === '\r' || character === '\t';
30
+ }
31
+ function isIdentifierPart(character) {
32
+ if (character === undefined || character === '$' || character === '_') {
33
+ return character !== undefined;
34
+ }
35
+ const charCode = character.charCodeAt(0);
36
+ return ((charCode >= 48 && charCode <= 57) ||
37
+ (charCode >= 65 && charCode <= 90) ||
38
+ (charCode >= 97 && charCode <= 122));
39
+ }
40
+ function testSegments(source) {
41
+ if (!source.includes('it(') && !source.includes('it.effect')) {
42
+ return [source];
43
+ }
44
+ const code = stripCommentsAndStrings(source);
45
+ const starts = [...code.matchAll(/\bit(?:\.effect)?\s*\(/g)].map((match) => match.index);
46
+ if (starts.length === 0) {
47
+ return [code];
48
+ }
49
+ return starts.map((start, index) => code.slice(start, starts[index + 1] ?? code.length));
50
+ }
51
+ function hasLayerFactory(source) {
52
+ if (!source.includes('Layer.')) {
53
+ return false;
54
+ }
55
+ const code = stripCommentsAndStrings(source);
56
+ return (/export\s+function\s+[A-Za-z_$][\w$]*Layer\s*\([^)]*\)\s*{[\s\S]*?Layer\./.test(code) ||
57
+ /export\s+const\s+[A-Za-z_$][\w$]*Layer\s*=\s*(?:\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>[\s\S]*?Layer\./.test(code));
58
+ }
59
+ function hasUnscopedResourceLayer(source) {
60
+ if (!source.includes('Layer.effect')) {
61
+ return false;
62
+ }
63
+ const code = stripCommentsAndStrings(source);
64
+ for (const match of code.matchAll(/Layer\.effect\s*\(/g)) {
65
+ const openParenIndex = code.indexOf('(', match.index);
66
+ const callSource = code.slice(match.index, findBalancedCallEnd(code, openParenIndex) + 1);
67
+ if (/\b(?:open|connect|subscribe|listen)\w*\s*(?:\(|\)|$)/.test(callSource) &&
68
+ !isInsideCall(code, match.index, /Layer\.scoped\s*\(/g)) {
69
+ return true;
70
+ }
71
+ }
72
+ return false;
73
+ }
74
+ function hasBoundaryDataWithoutSchema(source) {
75
+ if (!source.includes('.body') &&
76
+ !source.includes('.params') &&
77
+ !source.includes('.query') &&
78
+ !source.includes('.payload')) {
79
+ return false;
80
+ }
81
+ const code = stripCommentsAndStrings(source);
82
+ for (const match of code.matchAll(/(?:req|request|command|message)\.(?:body|params|query|payload)/g)) {
83
+ const accessEnd = match.index + match[0].length;
84
+ const tail = code.slice(accessEnd);
85
+ const pipeMatch = /^\s*\.pipe\s*\(/.exec(tail);
86
+ const segment = pipeMatch
87
+ ? code.slice(match.index, accessEnd + findBalancedCallEnd(tail, tail.indexOf('(')) + 1)
88
+ : code.slice(match.index, accessEnd);
89
+ if (!isInsideCall(code, match.index, /Schema\.decode[A-Za-z]*\s*\(/g) &&
90
+ !/Schema\.decode/.test(segment)) {
91
+ return true;
92
+ }
93
+ }
94
+ return false;
95
+ }
96
+ function hasHttpServerRequestWithoutSchema(source) {
97
+ if (!source.includes('HttpRouter.') && !source.includes('HttpServerRequest')) {
98
+ return false;
99
+ }
100
+ const code = stripCommentsAndStrings(source);
101
+ if (!/\b(?:HttpRouter\.|HttpServerRequest\b)/.test(code)) {
102
+ return false;
103
+ }
104
+ for (const match of code.matchAll(/\b(?:body|Body|json|Json|urlParams)\b/g)) {
105
+ const line = lineAround(code, match.index);
106
+ const bindingName = /\b(?:const|let)\s+([A-Za-z_$][\w$]*)\b/.exec(line)?.[1];
107
+ const tail = code.slice(match.index, findStatementEnd(code, match.index) + 240);
108
+ if (!/Schema\.decode/.test(line) &&
109
+ !(bindingName &&
110
+ new RegExp(`Schema\\.decode[A-Za-z]*\\s*\\([^)]*\\)\\s*\\(\\s*${bindingName}\\b`).test(tail))) {
111
+ return true;
112
+ }
113
+ }
114
+ return false;
115
+ }
116
+ function hasPersistenceReadWithoutSchema(source) {
117
+ if (!source.includes('db.') &&
118
+ !source.includes('database.') &&
119
+ !source.includes('collection.') &&
120
+ !source.includes('repository.')) {
121
+ return false;
122
+ }
123
+ const code = stripCommentsAndStrings(source);
124
+ for (const match of code.matchAll(/\b(?:db|database|collection|repository)\.[\s\S]*?(?:select|find|get|query)\s*\(/g)) {
125
+ const localSource = lineAround(code, match.index);
126
+ const bindingName = /\b(?:const|let)\s+([A-Za-z_$][\w$]*)\b/.exec(localSource)?.[1];
127
+ const tail = code.slice(match.index, findStatementEnd(code, match.index) + 240);
128
+ if (!/Schema\.decode/.test(localSource) &&
129
+ !(bindingName &&
130
+ new RegExp(`Schema\\.decode[A-Za-z]*\\s*\\([^)]*\\)\\s*\\(\\s*${bindingName}\\b`).test(tail))) {
131
+ return true;
132
+ }
133
+ }
134
+ return false;
135
+ }
136
+ function hasCommandHandlerWithoutSchema(source) {
137
+ if (!source.includes('handler') ||
138
+ (!source.includes('Command') &&
139
+ !source.includes('Cli') &&
140
+ !source.includes('Job') &&
141
+ !source.includes('Message'))) {
142
+ return false;
143
+ }
144
+ const code = stripCommentsAndStrings(source);
145
+ for (const match of code.matchAll(/\b(?:Command|Cli|Job|Message)\b[\s\S]*?handler/g)) {
146
+ const localSource = code.slice(Math.max(0, match.index - 160), match.index + 160);
147
+ if (!/(?:Schema\.|schema\s*:)/.test(localSource)) {
148
+ return true;
149
+ }
150
+ }
151
+ return false;
152
+ }
153
+ function hasUnscopedResourceLoop(source) {
154
+ if (!source.includes('open') &&
155
+ !source.includes('connect') &&
156
+ !source.includes('subscribe') &&
157
+ !source.includes('listen')) {
158
+ return false;
159
+ }
160
+ const code = stripCommentsAndStrings(source);
161
+ for (const match of code.matchAll(/\b(?:open|connect|subscribe|listen)\w*\s*\(/g)) {
162
+ const prefix = code.slice(Math.max(0, match.index - 180), match.index);
163
+ if (/\b(?:for|while)\b/.test(prefix) &&
164
+ !isInsideCall(code, match.index, /Effect\.scoped\s*\(/g)) {
165
+ return true;
166
+ }
167
+ }
168
+ return false;
169
+ }
170
+ function hasUnsafeResourceStream(source) {
171
+ if (!source.includes('Stream.') ||
172
+ (!source.includes('open') &&
173
+ !source.includes('connect') &&
174
+ !source.includes('subscribe') &&
175
+ !source.includes('listen'))) {
176
+ return false;
177
+ }
178
+ const code = stripCommentsAndStrings(source);
179
+ for (const match of code.matchAll(/\b(?:open|connect|subscribe|listen)\w*\s*\(/g)) {
180
+ const prefix = code.slice(Math.max(0, match.index - 180), match.index);
181
+ if (/\bStream\./.test(prefix) &&
182
+ !isInsideCall(code, match.index, /(?:Stream|Effect)\.scoped\s*\(/g)) {
183
+ return true;
184
+ }
185
+ }
186
+ return false;
187
+ }
188
+ function hasLiveTestService(source) {
189
+ if (!source.includes('Live') && !source.includes('Layer.live')) {
190
+ return false;
191
+ }
192
+ return /(?:\bLive\b|[A-Za-z_$][\w$]*Live\b|Layer\.live)/.test(stripCommentsAndStrings(source));
193
+ }
194
+ function hasRealTestService(source) {
195
+ if (!source.includes('real')) {
196
+ return false;
197
+ }
198
+ return /\breal[A-Z]/.test(stripCommentsAndStrings(source));
199
+ }
200
+ function hasDuplicateLayerInstance(source) {
201
+ if (!source.includes('Layer.')) {
202
+ return false;
203
+ }
204
+ const code = stripCommentsAndStrings(source);
205
+ const services = new Set();
206
+ for (const match of code.matchAll(/Layer\.(?:succeed|sync|effect|scoped|fromEffect|fromFunction)\s*\(\s*([A-Za-z_$][\w$]*)\b/g)) {
207
+ const [, serviceName] = match;
208
+ if (services.has(serviceName)) {
209
+ return true;
210
+ }
211
+ services.add(serviceName);
212
+ }
213
+ return false;
214
+ }
215
+ function localEffectCallSegment(source, targetIndex) {
216
+ const indexCache = sourceIndexCache(localEffectCallSegmentCache, source);
217
+ const cachedSegment = indexCache.get(targetIndex);
218
+ if (cachedSegment !== undefined) {
219
+ return cachedSegment;
220
+ }
221
+ const openParenIndex = source.indexOf('(', targetIndex);
222
+ if (openParenIndex === -1) {
223
+ const segment = source.slice(targetIndex, targetIndex + 160);
224
+ indexCache.set(targetIndex, segment);
225
+ return segment;
226
+ }
227
+ let endIndex = findBalancedCallEnd(source, openParenIndex) + 1;
228
+ const afterCall = source.slice(endIndex);
229
+ const pipeMatch = afterCall.match(/^\s*\.pipe\s*\(/);
230
+ if (pipeMatch) {
231
+ const pipeOpenIndex = endIndex + pipeMatch[0].lastIndexOf('(');
232
+ endIndex = findBalancedCallEnd(source, pipeOpenIndex) + 1;
233
+ }
234
+ const segment = source.slice(targetIndex, endIndex);
235
+ indexCache.set(targetIndex, segment);
236
+ return segment;
237
+ }
238
+ function localStatementSegment(source, targetIndex) {
239
+ return source.slice(targetIndex, findStatementEnd(source, targetIndex) + 1);
240
+ }
241
+ function hasOutputBoundaryWithoutSchema(source) {
242
+ if (!source.includes('Response.json') && !source.includes('return json')) {
243
+ return false;
244
+ }
245
+ const code = stripCommentsAndStrings(source);
246
+ for (const match of code.matchAll(/\breturn\s+(?:Response\.json|json)\s*\(/g)) {
247
+ const callOffset = match[0].search(/(?:Response\.json|json)\s*\(/);
248
+ const segment = localEffectCallSegment(source, match.index + callOffset);
249
+ if (!/Schema\.(?:encode|decode)/.test(segment)) {
250
+ return true;
251
+ }
252
+ }
253
+ return false;
254
+ }
255
+ function hasHttpClientResponseWithoutSchema(source) {
256
+ if (!source.includes('HttpClient.') || !source.includes('response.json')) {
257
+ return false;
258
+ }
259
+ const code = stripCommentsAndStrings(source);
260
+ for (const match of code.matchAll(/\bHttpClient\.[\s\S]*?\bresponse\.json\s*\(/g)) {
261
+ const segment = localStatementSegment(source, match.index);
262
+ if (!/Schema\.decode/.test(segment)) {
263
+ return true;
264
+ }
265
+ }
266
+ return false;
267
+ }
268
+ function hasSharedResourceForEachWithoutSemaphore(source) {
269
+ if (!source.includes('Effect.forEach')) {
270
+ return false;
271
+ }
272
+ const code = stripCommentsAndStrings(source);
273
+ for (const match of code.matchAll(/\bEffect\.forEach\s*\(/g)) {
274
+ const localStart = Math.max(0, match.index - 180);
275
+ const segment = code.slice(localStart, findStatementEnd(code, match.index) + 1);
276
+ if (/\b(?:pool|connection|client|browser|worker)\b/.test(segment) &&
277
+ !/\bSemaphore\b/.test(segment)) {
278
+ return true;
279
+ }
280
+ }
281
+ return false;
282
+ }
283
+ function hasEnsuringCleanupWithoutOnExit(source) {
284
+ if (!source.includes('Effect.ensuring') || !source.includes('cleanup')) {
285
+ return false;
286
+ }
287
+ const code = stripCommentsAndStrings(source);
288
+ for (const match of code.matchAll(/\bEffect\.ensuring\s*\(/g)) {
289
+ const segment = localEffectCallSegment(source, match.index);
290
+ if (/\bcleanup\b/.test(segment) && !/\bonExit\b/.test(segment)) {
291
+ return true;
292
+ }
293
+ }
294
+ return false;
295
+ }
296
+ function hasUnterminatedLongRunningStream(source) {
297
+ if (!source.includes('Stream.')) {
298
+ return false;
299
+ }
300
+ const code = stripCommentsAndStrings(source);
301
+ for (const match of code.matchAll(/\bStream\.(?:repeat|forever|async|fromQueue)\s*\(/g)) {
302
+ const segment = localEffectCallSegment(source, match.index);
303
+ if (!/\b(?:takeUntil|interruptWhen|timeout)\b/.test(segment)) {
304
+ return true;
305
+ }
306
+ }
307
+ return false;
308
+ }
309
+ function hasAsyncPushWithoutBuffer(source) {
310
+ if (!source.includes('Stream.asyncPush')) {
311
+ return false;
312
+ }
313
+ const code = stripCommentsAndStrings(source);
314
+ for (const match of code.matchAll(/\bStream\.asyncPush\s*\(/g)) {
315
+ const segment = localEffectCallSegment(source, match.index);
316
+ if (!/\b(?:buffer|Queue\.bounded|Queue\.sliding)\b/.test(segment)) {
317
+ return true;
318
+ }
319
+ }
320
+ return false;
321
+ }
322
+ function hasUnbatchedResolver(source) {
323
+ if (!source.includes('RequestResolver.make')) {
324
+ return false;
325
+ }
326
+ const code = stripCommentsAndStrings(source);
327
+ for (const match of code.matchAll(/\bRequestResolver\.make\s*\(/g)) {
328
+ const segment = localEffectCallSegment(source, match.index);
329
+ if (!/\b(?:makeBatched|batchN|grouped)\b/.test(segment)) {
330
+ return true;
331
+ }
332
+ }
333
+ return false;
334
+ }
335
+ function hasNPlusOneWithoutBatchedResolver(source) {
336
+ if (!source.includes('Effect.forEach')) {
337
+ return false;
338
+ }
339
+ const code = stripCommentsAndStrings(source);
340
+ for (const match of code.matchAll(/\bEffect\.forEach\s*\(/g)) {
341
+ const segment = localEffectCallSegment(source, match.index);
342
+ if (/\b(?:findById|getById|loadById)\s*\(/.test(segment) &&
343
+ !/\bRequestResolver\b/.test(segment)) {
344
+ return true;
345
+ }
346
+ }
347
+ return false;
348
+ }
349
+ function enclosingEffectWrapperSegment(source, targetIndex) {
350
+ const indexCache = sourceIndexCache(enclosingEffectWrapperSegmentCache, source);
351
+ if (indexCache.has(targetIndex)) {
352
+ return indexCache.get(targetIndex);
353
+ }
354
+ if (!source.includes('Effect.promise') && !source.includes('Effect.tryPromise')) {
355
+ indexCache.set(targetIndex, undefined);
356
+ return undefined;
357
+ }
358
+ for (const match of source.matchAll(/\bEffect\.(?:promise|tryPromise)\s*\(/g)) {
359
+ const openParenIndex = source.indexOf('(', match.index);
360
+ if (openParenIndex === -1 || openParenIndex > targetIndex) {
361
+ continue;
362
+ }
363
+ const endIndex = findBalancedCallEnd(source, openParenIndex);
364
+ if (targetIndex <= endIndex) {
365
+ const segment = localEffectCallSegment(source, match.index);
366
+ indexCache.set(targetIndex, segment);
367
+ return segment;
368
+ }
369
+ }
370
+ indexCache.set(targetIndex, undefined);
371
+ return undefined;
372
+ }
373
+ function hasTopLevelPipeOperator(segment, operatorName) {
374
+ const pipeIndex = segment.indexOf('.pipe');
375
+ if (pipeIndex === -1) {
376
+ return false;
377
+ }
378
+ const openParenIndex = segment.indexOf('(', pipeIndex);
379
+ if (openParenIndex === -1) {
380
+ return false;
381
+ }
382
+ const pipeBody = segment.slice(openParenIndex + 1, findBalancedCallEnd(segment, openParenIndex));
383
+ const operatorNeedle = `Effect.${operatorName}`;
384
+ let operatorIndex = pipeBody.indexOf(operatorNeedle);
385
+ while (operatorIndex !== -1) {
386
+ let previousIndex = operatorIndex - 1;
387
+ while (previousIndex >= 0 && isAsciiWhitespace(pipeBody[previousIndex])) {
388
+ previousIndex--;
389
+ }
390
+ const previousCharacter = pipeBody[previousIndex];
391
+ const nextCharacter = pipeBody[operatorIndex + operatorNeedle.length];
392
+ if ((previousIndex < 0 || previousCharacter === ',') && !isIdentifierPart(nextCharacter)) {
393
+ return true;
394
+ }
395
+ operatorIndex = pipeBody.indexOf(operatorNeedle, operatorIndex + operatorNeedle.length);
396
+ }
397
+ return false;
398
+ }
399
+ function hasExternalEffectWithoutTimeout(source, options = { allowFetch: true }) {
400
+ if (!source.includes('HttpClient.') &&
401
+ !source.includes('fetch') &&
402
+ !source.includes('FileSystem.') &&
403
+ !source.includes('SqlClient.')) {
404
+ return false;
405
+ }
406
+ const code = stripCommentsAndStrings(source);
407
+ for (const match of code.matchAll(EXTERNAL_CALL_PATTERN)) {
408
+ const enclosingWrapper = enclosingEffectWrapperSegment(code, match.index);
409
+ if (match[0].startsWith('fetch') && (!enclosingWrapper || !options.allowFetch)) {
410
+ continue;
411
+ }
412
+ const segment = enclosingWrapper ?? localEffectCallSegment(code, match.index);
413
+ if (!isInsideCall(code, match.index, /Effect\.timeout\s*\(/g) &&
414
+ !hasTopLevelPipeOperator(segment, 'timeout')) {
415
+ return true;
416
+ }
417
+ }
418
+ return false;
419
+ }
420
+ function hasExternalEffectWithoutSpan(source, options = { allowFetch: true }) {
421
+ if (!source.includes('HttpClient.') &&
422
+ !source.includes('fetch') &&
423
+ !source.includes('FileSystem.') &&
424
+ !source.includes('SqlClient.')) {
425
+ return false;
426
+ }
427
+ const code = stripCommentsAndStrings(source);
428
+ for (const match of code.matchAll(EXTERNAL_CALL_PATTERN)) {
429
+ const enclosingWrapper = enclosingEffectWrapperSegment(source, match.index);
430
+ if (match[0].startsWith('fetch') && (!enclosingWrapper || !options.allowFetch)) {
431
+ continue;
432
+ }
433
+ const segment = enclosingWrapper ?? localEffectCallSegment(source, match.index);
434
+ if (!isInsideCall(source, match.index, /Effect\.withSpan\s*\(/g) &&
435
+ !hasTopLevelPipeOperator(segment, 'withSpan')) {
436
+ return true;
437
+ }
438
+ }
439
+ return false;
440
+ }
441
+ function hasIdempotentExternalEffectWithoutRetry(source, options = { allowFetch: true }) {
442
+ if (!source.includes('HttpClient.') &&
443
+ !source.includes('fetch') &&
444
+ !source.includes('find') &&
445
+ !source.includes('lookup') &&
446
+ !source.includes('read')) {
447
+ return false;
448
+ }
449
+ const code = stripCommentsAndStrings(source);
450
+ for (const match of code.matchAll(IDEMPOTENT_EXTERNAL_CALL_PATTERN)) {
451
+ const enclosingWrapper = enclosingEffectWrapperSegment(code, match.index);
452
+ const rawEnclosingWrapper = enclosingEffectWrapperSegment(source, match.index);
453
+ if (match[0].startsWith('fetch') && (!enclosingWrapper || !options.allowFetch)) {
454
+ continue;
455
+ }
456
+ const segment = enclosingWrapper ?? localEffectCallSegment(code, match.index);
457
+ const rawSegment = rawEnclosingWrapper ?? localEffectCallSegment(source, match.index);
458
+ if (match[0].startsWith('fetch') &&
459
+ /\bmethod\s*:\s*['"](?!(?:GET|HEAD|PUT|DELETE)['"])/.test(stripComments(rawSegment))) {
460
+ continue;
461
+ }
462
+ if (!isInsideCall(code, match.index, /Effect\.retry\s*\(/g) &&
463
+ !hasTopLevelPipeOperator(segment, 'retry')) {
464
+ return true;
465
+ }
466
+ }
467
+ return false;
468
+ }
469
+ function hasUnprovidedServiceInEffectTest(source) {
470
+ if (!source.includes('Service') && !source.includes('Repo') && !source.includes('Client')) {
471
+ return false;
472
+ }
473
+ return testSegments(source).some((segment) => /yield\*\s+[A-Z][\w$]*(?:Service|Repo|Client)\b/.test(segment) &&
474
+ !/\b(?:Effect\.)?provide[A-Za-z_$]*\s*\(/.test(segment));
475
+ }
476
+ function hasTimeCodeWithoutTestClock(source) {
477
+ if (!source.includes('Effect.timeout') &&
478
+ !source.includes('Effect.delay') &&
479
+ !source.includes('Clock.')) {
480
+ return false;
481
+ }
482
+ return testSegments(source).some((segment) => /Effect\.(?:timeout|delay)|Clock\./.test(segment) && !/TestClock/.test(segment));
483
+ }
484
+ function hasMutableStateWithoutRef(source) {
485
+ if (!source.includes('let ')) {
486
+ return false;
487
+ }
488
+ if (!hasEffectSignal(source)) {
489
+ return false;
490
+ }
491
+ for (const match of source.matchAll(/\blet\s+[A-Za-z_$][\w$]*\s*=/g)) {
492
+ if (!/\bRef\./.test(lineAround(source, match.index))) {
493
+ return true;
494
+ }
495
+ }
496
+ return false;
497
+ }
498
+ const hasSharedMutableStateWithoutRef = hasMutableStateWithoutRef;
499
+ 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, };
500
+ //# 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,3 @@
1
+ declare const effectStrictRules: Record<string, import("./effect-rule-core.js").SourceRule>;
2
+ export default effectStrictRules;
3
+ //# sourceMappingURL=effect-strict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-strict.d.ts","sourceRoot":"","sources":["../../src/rules/effect-strict.ts"],"names":[],"mappings":"AA45BA,QAAA,MAAM,iBAAiB,4DAAoE,CAAC;AAE5F,eAAe,iBAAiB,CAAC"}