@opensip-cli/checks-typescript 0.1.6 β†’ 0.1.8

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 (78) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/all-checks-execute.test.js +3 -0
  3. package/dist/__tests__/all-checks-execute.test.js.map +1 -1
  4. package/dist/__tests__/behavior-fixtures-2.test.js +3 -0
  5. package/dist/__tests__/behavior-fixtures-2.test.js.map +1 -1
  6. package/dist/__tests__/behavior-fixtures-3.test.js +3 -0
  7. package/dist/__tests__/behavior-fixtures-3.test.js.map +1 -1
  8. package/dist/__tests__/behavior-fixtures-4.test.js +3 -0
  9. package/dist/__tests__/behavior-fixtures-4.test.js.map +1 -1
  10. package/dist/__tests__/behavior-fixtures-5.test.js +3 -0
  11. package/dist/__tests__/behavior-fixtures-5.test.js.map +1 -1
  12. package/dist/__tests__/behavior-fixtures-6.test.js +3 -0
  13. package/dist/__tests__/behavior-fixtures-6.test.js.map +1 -1
  14. package/dist/__tests__/behavior-fixtures.test.js +4 -0
  15. package/dist/__tests__/behavior-fixtures.test.js.map +1 -1
  16. package/dist/__tests__/branch-fixtures-2.test.js +3 -0
  17. package/dist/__tests__/branch-fixtures-2.test.js.map +1 -1
  18. package/dist/__tests__/branch-fixtures-3.test.js +44 -0
  19. package/dist/__tests__/branch-fixtures-3.test.js.map +1 -1
  20. package/dist/__tests__/branch-fixtures.test.js +4 -3
  21. package/dist/__tests__/branch-fixtures.test.js.map +1 -1
  22. package/dist/__tests__/host-tool-runtime-import-boundary.test.js +1 -1
  23. package/dist/__tests__/host-tool-runtime-import-boundary.test.js.map +1 -1
  24. package/dist/__tests__/null-safety-typed.test.d.ts +2 -0
  25. package/dist/__tests__/null-safety-typed.test.d.ts.map +1 -0
  26. package/dist/__tests__/null-safety-typed.test.js +112 -0
  27. package/dist/__tests__/null-safety-typed.test.js.map +1 -0
  28. package/dist/__tests__/shared-program.test.d.ts +2 -0
  29. package/dist/__tests__/shared-program.test.d.ts.map +1 -0
  30. package/dist/__tests__/shared-program.test.js +41 -0
  31. package/dist/__tests__/shared-program.test.js.map +1 -0
  32. package/dist/__tests__/shipped-allowlists-are-generic.test.d.ts +2 -0
  33. package/dist/__tests__/shipped-allowlists-are-generic.test.d.ts.map +1 -0
  34. package/dist/__tests__/shipped-allowlists-are-generic.test.js +64 -0
  35. package/dist/__tests__/shipped-allowlists-are-generic.test.js.map +1 -0
  36. package/dist/__tests__/subprocess-correlation-required.test.d.ts +2 -0
  37. package/dist/__tests__/subprocess-correlation-required.test.d.ts.map +1 -0
  38. package/dist/__tests__/subprocess-correlation-required.test.js +114 -0
  39. package/dist/__tests__/subprocess-correlation-required.test.js.map +1 -0
  40. package/dist/checks/architecture/host-tool-runtime-import-boundary.d.ts.map +1 -1
  41. package/dist/checks/architecture/host-tool-runtime-import-boundary.js +2 -1
  42. package/dist/checks/architecture/host-tool-runtime-import-boundary.js.map +1 -1
  43. package/dist/checks/architecture/index.d.ts +2 -0
  44. package/dist/checks/architecture/index.d.ts.map +1 -1
  45. package/dist/checks/architecture/index.js +2 -0
  46. package/dist/checks/architecture/index.js.map +1 -1
  47. package/dist/checks/architecture/no-run-done-result.d.ts +27 -0
  48. package/dist/checks/architecture/no-run-done-result.d.ts.map +1 -0
  49. package/dist/checks/architecture/no-run-done-result.js +120 -0
  50. package/dist/checks/architecture/no-run-done-result.js.map +1 -0
  51. package/dist/checks/architecture/subprocess-correlation-required.d.ts +28 -0
  52. package/dist/checks/architecture/subprocess-correlation-required.d.ts.map +1 -0
  53. package/dist/checks/architecture/subprocess-correlation-required.js +159 -0
  54. package/dist/checks/architecture/subprocess-correlation-required.js.map +1 -0
  55. package/dist/checks/quality/code-structure/duplicate-utility-functions.d.ts +13 -1
  56. package/dist/checks/quality/code-structure/duplicate-utility-functions.d.ts.map +1 -1
  57. package/dist/checks/quality/code-structure/duplicate-utility-functions.js +7 -3
  58. package/dist/checks/quality/code-structure/duplicate-utility-functions.js.map +1 -1
  59. package/dist/checks/quality/data-integrity/null-safety.d.ts +63 -2
  60. package/dist/checks/quality/data-integrity/null-safety.d.ts.map +1 -1
  61. package/dist/checks/quality/data-integrity/null-safety.js +191 -102
  62. package/dist/checks/quality/data-integrity/null-safety.js.map +1 -1
  63. package/dist/checks/quality/patterns/result-pattern-consistency.d.ts +21 -0
  64. package/dist/checks/quality/patterns/result-pattern-consistency.d.ts.map +1 -1
  65. package/dist/checks/quality/patterns/result-pattern-consistency.js +16 -15
  66. package/dist/checks/quality/patterns/result-pattern-consistency.js.map +1 -1
  67. package/dist/checks/resilience/no-raw-fetch.d.ts +14 -0
  68. package/dist/checks/resilience/no-raw-fetch.d.ts.map +1 -1
  69. package/dist/checks/resilience/no-raw-fetch.js +7 -7
  70. package/dist/checks/resilience/no-raw-fetch.js.map +1 -1
  71. package/dist/display/architecture.d.ts.map +1 -1
  72. package/dist/display/architecture.js +2 -0
  73. package/dist/display/architecture.js.map +1 -1
  74. package/dist/shared/type-program.d.ts +23 -0
  75. package/dist/shared/type-program.d.ts.map +1 -0
  76. package/dist/shared/type-program.js +35 -0
  77. package/dist/shared/type-program.js.map +1 -0
  78. package/package.json +5 -5
@@ -2,7 +2,7 @@
2
2
  * @fileoverview No raw fetch check β€” flags direct `fetch()` calls that should
3
3
  * use a wrapped HTTP client.
4
4
  */
5
- import { defineCheck, isCommentLine, isTestFile } from '@opensip-cli/fitness';
5
+ import { defineCheck, getCheckConfig, isCommentLine, isTestFile, } from '@opensip-cli/fitness';
6
6
  /**
7
7
  * Pattern for detecting raw fetch() calls.
8
8
  *
@@ -54,12 +54,12 @@ export const noRawFetch = defineCheck({
54
54
  if (isTestFile(filePath)) {
55
55
  return violations;
56
56
  }
57
- // Skip fitness check definitions that reference fetch in string/regex patterns
58
- if (filePath.includes('/fitness/src/checks/')) {
59
- return violations;
60
- }
61
- // Skip LLM adapter files β€” infrastructure boundary making direct API calls
62
- if (filePath.includes('/llm/') || filePath.includes('/llm-adapter')) {
57
+ // Skip caller-configured infrastructure/adapter boundaries that legitimately
58
+ // call fetch directly. These are PROJECT-SPECIFIC (e.g. an `/llm/` adapter
59
+ // layer) and supplied via the `skipPaths` recipe-config key β€” not hardcoded
60
+ // into this generic check.
61
+ const cfg = getCheckConfig('no-raw-fetch');
62
+ if ((cfg.skipPaths ?? []).some((p) => filePath.includes(p))) {
63
63
  return violations;
64
64
  }
65
65
  // Skip SSE/streaming implementations that require raw fetch for stream parsing
@@ -1 +1 @@
1
- {"version":3,"file":"no-raw-fetch.js","sourceRoot":"","sources":["../../../src/checks/resilience/no-raw-fetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAuB,MAAM,sBAAsB,CAAC;AAEnG;;;;;;;;;;;;;GAaG;AACH,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;IACpC,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IACrC,WAAW,EAAE,kEAAkE;IAC/E,eAAe,EAAE;;;;;;;;oFAQiE;IAClF,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC;IAErC,OAAO,CAAC,OAAe,EAAE,QAAgB;QACvC,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,mDAAmD;QACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,iFAAiF;QACjF,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjF,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,mEAAmE;QACnE,iEAAiE;QACjE,mEAAmE;QACnE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,+EAA+E;QAC/E,IAAI,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC9C,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,2EAA2E;QAC3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACpE,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,+EAA+E;QAC/E,IACE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC/B,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,kEAAkE;QAClE,iEAAiE;QACjE,qEAAqE;QACrE,mEAAmE;QACnE,+DAA+D;QAC/D,iCAAiC;QACjC,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACnF,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAClE,MAAM,gBAAgB,GACpB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,IAAI,gBAAgB,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;YACtD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAEzB,qBAAqB;YACrB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,OAAO,GAAG,CAAC;oBACjB,MAAM,EAAE,KAAK,CAAC,KAAK;oBACnB,OAAO,EAAE,4BAA4B;oBACrC,QAAQ,EAAE,SAAS;oBACnB,UAAU,EACR,0GAA0G;oBAC5G,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"no-raw-fetch.js","sourceRoot":"","sources":["../../../src/checks/resilience/no-raw-fetch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,6CAW/B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,6CAAuD,CAAC"}
1
+ {"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,6CAa/B,CAAC;AAEH,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,6CAAuD,CAAC"}
@@ -10,8 +10,10 @@ export const ARCHITECTURE_DISPLAY = Object.freeze({
10
10
  'missing-type-exports': ['πŸ“€', 'Missing Type Exports'],
11
11
  'module-coupling-fan-out': ['πŸ•ΈοΈ', 'Module Coupling Fan-Out'],
12
12
  'no-bootstrap-tool-import': ['πŸ”Œ', 'No Bootstrap Tool Import'],
13
+ 'architecture-no-run-done-result': ['🎯', 'No Per-Tool Run Done-Result'],
13
14
  'package-json-exports-field': ['πŸ“¦', 'package.json Exports Field'],
14
15
  'phantom-dependency-detection': ['πŸ“¦', 'Phantom Dependency Detection'],
16
+ 'subprocess-correlation-required': ['πŸ”—', 'Subprocess Correlation Required'],
15
17
  'tsconfig-extends-validation': ['βš™οΈ', 'tsconfig Extends Validation'],
16
18
  });
17
19
  /** No documentation TS_AST checks; export empty object for symmetry */
@@ -1 +1 @@
1
- {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAoC;IACnF,2BAA2B,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAChE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,kCAAkC,EAAE,CAAC,KAAK,EAAE,kCAAkC,CAAC;IAC/E,mCAAmC,EAAE,CAAC,IAAI,EAAE,mCAAmC,CAAC;IAChF,sBAAsB,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtD,yBAAyB,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC7D,0BAA0B,EAAE,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC9D,4BAA4B,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAClE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,6BAA6B,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;CACrE,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAoC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/display/architecture.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAoC;IACnF,2BAA2B,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAChE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,kCAAkC,EAAE,CAAC,KAAK,EAAE,kCAAkC,CAAC;IAC/E,mCAAmC,EAAE,CAAC,IAAI,EAAE,mCAAmC,CAAC;IAChF,sBAAsB,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtD,yBAAyB,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC7D,0BAA0B,EAAE,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC9D,iCAAiC,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;IACxE,4BAA4B,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAClE,8BAA8B,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;IACtE,iCAAiC,EAAE,CAAC,IAAI,EAAE,iCAAiC,CAAC;IAC5E,6BAA6B,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;CACrE,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAoC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Shared per-run TypeScript Program accessor for type-aware checks.
3
+ *
4
+ * Builds ONE `ts.Program` + bound `TypeChecker` per fit run (the expensive
5
+ * part: ~1s / ~0.6 GB on a ~900-file corpus) and reuses it across every
6
+ * type-aware TS check, via the per-run cell the fitness tool hangs on
7
+ * `scope.fitness.tsProgram`.
8
+ *
9
+ * The build logic lives HERE, not in the fitness engine, because only this
10
+ * pack carries the `lang-typescript` / `typescript` runtime dependency β€” the
11
+ * engine's cell stays a generic, opaque holder so the heavy `typescript` dep
12
+ * never enters the engine (or non-TS check runs).
13
+ */
14
+ import { type TypeCheckedProgram } from '@opensip-cli/lang-typescript';
15
+ /**
16
+ * Return the run's shared type-checked Program over `rootFiles`, building it on
17
+ * the first call and memoizing it on the fitness subscope cell so subsequent
18
+ * type-aware checks in the same run reuse it. When no scope/subscope is active
19
+ * (e.g. a unit test that does not enter a RunScope), builds a fresh, uncached
20
+ * Program so the caller still works.
21
+ */
22
+ export declare function getSharedTypeCheckedProgram(rootFiles: readonly string[]): TypeCheckedProgram;
23
+ //# sourceMappingURL=type-program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-program.d.ts","sourceRoot":"","sources":["../../src/shared/type-program.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEjG;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAW5F"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @fileoverview Shared per-run TypeScript Program accessor for type-aware checks.
3
+ *
4
+ * Builds ONE `ts.Program` + bound `TypeChecker` per fit run (the expensive
5
+ * part: ~1s / ~0.6 GB on a ~900-file corpus) and reuses it across every
6
+ * type-aware TS check, via the per-run cell the fitness tool hangs on
7
+ * `scope.fitness.tsProgram`.
8
+ *
9
+ * The build logic lives HERE, not in the fitness engine, because only this
10
+ * pack carries the `lang-typescript` / `typescript` runtime dependency β€” the
11
+ * engine's cell stays a generic, opaque holder so the heavy `typescript` dep
12
+ * never enters the engine (or non-TS check runs).
13
+ */
14
+ import { currentScope } from '@opensip-cli/core';
15
+ import { createTypeCheckedProgram } from '@opensip-cli/lang-typescript';
16
+ /**
17
+ * Return the run's shared type-checked Program over `rootFiles`, building it on
18
+ * the first call and memoizing it on the fitness subscope cell so subsequent
19
+ * type-aware checks in the same run reuse it. When no scope/subscope is active
20
+ * (e.g. a unit test that does not enter a RunScope), builds a fresh, uncached
21
+ * Program so the caller still works.
22
+ */
23
+ export function getSharedTypeCheckedProgram(rootFiles) {
24
+ const scope = currentScope();
25
+ const projectRoot = scope?.projectContext?.projectRoot ?? process.cwd();
26
+ const cell = scope?.fitness?.tsProgram;
27
+ if (!cell) {
28
+ return createTypeCheckedProgram(rootFiles, { projectRoot });
29
+ }
30
+ if (cell.value === undefined) {
31
+ cell.value = createTypeCheckedProgram(rootFiles, { projectRoot });
32
+ }
33
+ return cell.value;
34
+ }
35
+ //# sourceMappingURL=type-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-program.js","sourceRoot":"","sources":["../../src/shared/type-program.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAA2B,MAAM,8BAA8B,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAA4B;IACtE,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,KAAK,EAAE,cAAc,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,wBAAwB,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC,KAA2B,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensip-cli/checks-typescript",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "license": "Apache-2.0",
5
5
  "description": "TypeScript/Node.js fitness checks for opensip-cli",
6
6
  "keywords": [
@@ -37,14 +37,14 @@
37
37
  ],
38
38
  "dependencies": {
39
39
  "typescript": "~6.0.3",
40
- "@opensip-cli/core": "0.1.6",
41
- "@opensip-cli/lang-typescript": "0.1.6",
42
- "@opensip-cli/fitness": "0.1.6"
40
+ "@opensip-cli/core": "0.1.8",
41
+ "@opensip-cli/fitness": "0.1.8",
42
+ "@opensip-cli/lang-typescript": "0.1.8"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^24.13.2",
46
46
  "vitest": "^4.1.8",
47
- "@opensip-cli/test-support": "0.1.6"
47
+ "@opensip-cli/test-support": "0.1.8"
48
48
  },
49
49
  "scripts": {
50
50
  "build": "tsc",