@trebired/code-discipline 3.4.1 → 4.0.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +21 -12
  3. package/dist/checks/rules/comments/ranges.js +2 -2
  4. package/dist/checks/rules/comments/ranges.js.map +1 -1
  5. package/dist/checks/rules/comments/stripping.d.ts.map +1 -1
  6. package/dist/checks/rules/comments/stripping.js +4 -0
  7. package/dist/checks/rules/comments/stripping.js.map +1 -1
  8. package/dist/checks/rules/dry/behavior/conditions.d.ts +6 -0
  9. package/dist/checks/rules/dry/behavior/conditions.d.ts.map +1 -0
  10. package/dist/checks/rules/dry/behavior/conditions.js +171 -0
  11. package/dist/checks/rules/dry/behavior/conditions.js.map +1 -0
  12. package/dist/checks/rules/dry/behavior/expressions.d.ts +5 -0
  13. package/dist/checks/rules/dry/behavior/expressions.d.ts.map +1 -0
  14. package/dist/checks/rules/dry/behavior/expressions.js +179 -0
  15. package/dist/checks/rules/dry/behavior/expressions.js.map +1 -0
  16. package/dist/checks/rules/dry/behavior/index.d.ts +6 -0
  17. package/dist/checks/rules/dry/behavior/index.d.ts.map +1 -0
  18. package/dist/checks/rules/dry/behavior/index.js +32 -0
  19. package/dist/checks/rules/dry/behavior/index.js.map +1 -0
  20. package/dist/checks/rules/dry/behavior/model.d.ts +29 -0
  21. package/dist/checks/rules/dry/behavior/model.d.ts.map +1 -0
  22. package/dist/checks/rules/dry/behavior/model.js +185 -0
  23. package/dist/checks/rules/dry/behavior/model.js.map +1 -0
  24. package/dist/checks/rules/dry/behavior/statements.d.ts +6 -0
  25. package/dist/checks/rules/dry/behavior/statements.d.ts.map +1 -0
  26. package/dist/checks/rules/dry/behavior/statements.js +74 -0
  27. package/dist/checks/rules/dry/behavior/statements.js.map +1 -0
  28. package/dist/checks/rules/dry/candidates.d.ts.map +1 -1
  29. package/dist/checks/rules/dry/candidates.js +1 -0
  30. package/dist/checks/rules/dry/candidates.js.map +1 -1
  31. package/dist/checks/rules/dry/fingerprint.d.ts +2 -0
  32. package/dist/checks/rules/dry/fingerprint.d.ts.map +1 -1
  33. package/dist/checks/rules/dry/fingerprint.js +4 -0
  34. package/dist/checks/rules/dry/fingerprint.js.map +1 -1
  35. package/dist/checks/rules/dry/matching.d.ts +1 -1
  36. package/dist/checks/rules/dry/matching.d.ts.map +1 -1
  37. package/dist/checks/rules/dry/matching.js +11 -2
  38. package/dist/checks/rules/dry/matching.js.map +1 -1
  39. package/dist/checks/rules/dry/model.d.ts +1 -0
  40. package/dist/checks/rules/dry/model.d.ts.map +1 -1
  41. package/dist/checks/rules/dry/model.js.map +1 -1
  42. package/dist/checks/sync-options.d.ts +9 -0
  43. package/dist/checks/sync-options.d.ts.map +1 -1
  44. package/dist/checks/sync-options.js +9 -0
  45. package/dist/checks/sync-options.js.map +1 -1
  46. package/dist/config/index.d.ts.map +1 -1
  47. package/dist/config/index.js +1 -6
  48. package/dist/config/index.js.map +1 -1
  49. package/dist/config/normalize/rule-options.d.ts +2 -0
  50. package/dist/config/normalize/rule-options.d.ts.map +1 -1
  51. package/dist/config/normalize/rule-options.js +2 -0
  52. package/dist/config/normalize/rule-options.js.map +1 -1
  53. package/dist/config/normalize/sync-imports-options.d.ts.map +1 -1
  54. package/dist/config/normalize/sync-imports-options.js +10 -0
  55. package/dist/config/normalize/sync-imports-options.js.map +1 -1
  56. package/dist/imports/aliases.d.ts.map +1 -1
  57. package/dist/imports/aliases.js +7 -0
  58. package/dist/imports/aliases.js.map +1 -1
  59. package/dist/imports/check-sync-imports.d.ts.map +1 -1
  60. package/dist/imports/check-sync-imports.js +22 -9
  61. package/dist/imports/check-sync-imports.js.map +1 -1
  62. package/dist/imports/folder.d.ts +6 -0
  63. package/dist/imports/folder.d.ts.map +1 -0
  64. package/dist/imports/folder.js +260 -0
  65. package/dist/imports/folder.js.map +1 -0
  66. package/dist/imports/sync-imports.d.ts.map +1 -1
  67. package/dist/imports/sync-imports.js +15 -7
  68. package/dist/imports/sync-imports.js.map +1 -1
  69. package/dist/imports/types.d.ts +27 -1
  70. package/dist/imports/types.d.ts.map +1 -1
  71. package/dist/runtime/imports-sync.d.ts +20 -1
  72. package/dist/runtime/imports-sync.d.ts.map +1 -1
  73. package/dist/runtime/imports-sync.js +87 -1
  74. package/dist/runtime/imports-sync.js.map +1 -1
  75. package/dist/shared/constants.d.ts.map +1 -1
  76. package/dist/shared/constants.js +1 -1
  77. package/dist/shared/constants.js.map +1 -1
  78. package/dist/shared/languages.d.ts +2 -1
  79. package/dist/shared/languages.d.ts.map +1 -1
  80. package/dist/shared/languages.js +7 -4
  81. package/dist/shared/languages.js.map +1 -1
  82. package/native/darwin-arm64.node +0 -0
  83. package/native/darwin-x64.node +0 -0
  84. package/native/linux-arm64-gnu.node +0 -0
  85. package/native/linux-x64-gnu.node +0 -0
  86. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to `@trebired/code-discipline` will be documented here.
4
4
 
5
+ ## 4.0.0
6
+
7
+ - Changed config auto-discovery to `code-discipline.ts` only; legacy `tb.code-discipline.*` filenames are no longer auto-discovered unless passed explicitly with `--config`.
8
+ - Added `syncImports.importsFolder` support so alias maps can live in sorted `imports/*.json` source-of-truth files with deterministic max-entry splitting.
9
+ - Added generated tsconfig path projection through `syncImports.generatedTsconfig`, with root `tsconfig.json` extending the generated file and inline `compilerOptions.paths` removed in imports-folder mode.
10
+ - Added imports-folder migration from existing root `tsconfig.json` paths and `package.json#imports`, while keeping `package.json` clean unless `packageJsonImports.enabled` is explicitly true.
11
+ - Added CSS support alongside SCSS for source scanning and removable comment handling.
12
+
13
+ ## 3.4.2
14
+
15
+ - Added normalized behavioral fingerprints for simple pure `dry` functions, so equivalent implementations can be grouped despite different names, parameters, locals, formatting, or expression-vs-block structure.
16
+ - Normalized common equivalent helper forms including nullish fallbacks, const-then-return wrappers, branch returns, finite number guards, and object guard checks while preserving behavior-changing distinctions.
17
+ - Added the `normalized-behavior` DRY signal and fixtures covering representative text, number, clamp, and object helpers without hardcoding project-specific names or paths.
18
+
5
19
  ## 3.4.1
6
20
 
7
21
  - Added `dry.minDuplicateCharacters`, defaulting to `0`, so DRY duplicate detection no longer has a hidden minimum function size.
@@ -114,7 +128,7 @@ All notable changes to `@trebired/code-discipline` will be documented here.
114
128
 
115
129
  - Removed the top-level `code-discipline sync` command and the runtime `sync` / `startup` modes.
116
130
  - Changed the package-owned surface to `check` and `fix`, with positional rule selectors such as `code-discipline fix sync-imports`.
117
- - Changed config auto-discovery to the new `tb.code-discipline.*` filenames and added package-owned TypeScript config loading for Node and Bun.
131
+ - Changed config auto-discovery to package-owned TypeScript config loading for Node and Bun.
118
132
  - Added the `dry` rule for canonical helper registration, duplicate detection, and full-removal standalone autofix.
119
133
  - Moved optional `package.json#imports` syncing under `rules.syncImports.packageJsonImports`.
120
134
  - Changed `fixCodeDiscipline()` from a folderization-only mutation path into a rule-ordered fix pipeline with `ruleResults`.
package/README.md CHANGED
@@ -85,14 +85,9 @@ Long check and fix runs emit chunked rule progress in the CLI, including current
85
85
 
86
86
  The CLI auto-discovers a top-level config module in this order:
87
87
 
88
- - `tb.code-discipline.ts`
89
- - `tb.code-discipline.mts`
90
- - `tb.code-discipline.mjs`
91
- - `tb.code-discipline.js`
92
- - `tb.code-discipline.cts`
93
- - `tb.code-discipline.cjs`
88
+ - `code-discipline.ts`
94
89
 
95
- `tb.code-discipline.ts` is the recommended default.
90
+ `code-discipline.ts` is the only auto-discovered config filename.
96
91
 
97
92
  You can still point at an explicit module path:
98
93
 
@@ -108,7 +103,7 @@ Rule severity is optional and now supports only `severity: "warning" | "fail"`.
108
103
 
109
104
  `evasionGuards` is a top-level opt-in system because it checks suspicious compliance patterns across rules instead of being a normal style rule.
110
105
 
111
- Example `tb.code-discipline.ts`:
106
+ Example `code-discipline.ts`:
112
107
 
113
108
  ```ts
114
109
  import { defineCodeDisciplineConfig } from "@trebired/code-discipline";
@@ -157,8 +152,17 @@ export default defineCodeDisciplineConfig({
157
152
  strategy: "relative-path-slug",
158
153
  },
159
154
  allowRelative: ["./"],
160
- packageJsonImports: {
155
+ importsFolder: {
156
+ enabled: true,
157
+ dir: "imports",
158
+ maxEntriesPerFile: 1000,
159
+ },
160
+ generatedTsconfig: {
161
161
  enabled: true,
162
+ path: ".code-discipline/generated/tsconfig.paths.json",
163
+ },
164
+ packageJsonImports: {
165
+ enabled: false,
162
166
  aliasPrefix: "#",
163
167
  },
164
168
  },
@@ -386,9 +390,12 @@ Validates and optionally fixes:
386
390
  - `tsconfig.compilerOptions.paths`
387
391
  - relative source imports that should become aliases
388
392
  - optional `package.json#imports` drift through `packageJsonImports`
393
+ - optional folder-backed alias maps through `importsFolder`
389
394
 
390
395
  `syncImports` only rewrites JavaScript and TypeScript module files. Mixed-language repositories can still include Go and Rust under the same `sourceRoot`; those files are ignored by alias syncing instead of causing parser failures.
391
396
 
397
+ When `importsFolder.enabled` is true, sorted JSON files such as `imports/1.json` become the alias source of truth. `code-discipline fix` migrates root `tsconfig.json` paths and managed `package.json#imports` entries into that folder, splits entries by `maxEntriesPerFile`, recreates the generated tsconfig projection, removes inline root `compilerOptions.paths`, and makes root `tsconfig.json` extend the generated file. Keep `packageJsonImports.enabled` false for dev-only aliases; set it true for dist/runtime workflows that need Node package imports materialized.
398
+
392
399
  `excludeDirs` now groups scan exclusions in one place, so you can add explicit directories through `excludeDirs.dirs` and opt into root `.gitignore` directory entries through `excludeDirs.gitignore`.
393
400
 
394
401
  Example:
@@ -415,7 +422,7 @@ The rule supports the same language families this package currently scans for di
415
422
  - JavaScript and TypeScript
416
423
  - Go
417
424
  - Rust
418
- - SCSS
425
+ - SCSS and CSS
419
426
 
420
427
  It keeps string, regex, rune, char, byte-string, and raw-string content intact while removing actual source comments. When a removed comment occupied the whole line, that empty line is removed in the same file rewrite.
421
428
 
@@ -440,10 +447,12 @@ code-discipline fix remove-comments
440
447
  Reports duplicate function groups across the configured source tree.
441
448
 
442
449
  - exact normalized structure is reported with 100% confidence
450
+ - equivalent normalized behavior in simple pure functions is reported with 100% confidence
443
451
  - matching function names are reported with 100% confidence
444
452
  - highly similar normalized function structure is reported as a likely duplicate
445
453
  - `minDuplicateCharacters` defaults to `0`; raise it if you only want larger duplicate functions
446
- - whitespace, comments, function names, and local identifier names do not matter
454
+ - whitespace, comments, function names, parameter names, and local identifier names do not matter
455
+ - expression bodies, single-return blocks, simple const-then-return blocks, nullish fallback forms, finite number guards, and object guard branches are normalized when their behavior matches
447
456
  - reports are neutral groups, not "file A duplicates file B"
448
457
  - `dry` is check-only
449
458
 
@@ -456,7 +465,7 @@ dry: {
456
465
  Example output:
457
466
 
458
467
  ```txt
459
- dry duplicate function group: 2 functions, confidence 1, signals: exact-normalized, similar-structure
468
+ dry duplicate function group: 2 functions, confidence 1, signals: exact-normalized, normalized-behavior, similar-structure
460
469
  - src/one.ts:1 buildUserLabel
461
470
  - src/two.ts:1 formatUserLabel
462
471
  ```
@@ -1,5 +1,5 @@
1
1
  import ts from "typescript";
2
- import { isGoExtension, isRustExtension, isScssExtension, isTypeScriptFamilyExtension } from "../../../shared/languages.js";
2
+ import { isGoExtension, isRustExtension, isStyleExtension, isTypeScriptFamilyExtension } from "../../../shared/languages.js";
3
3
  function collectTypeScriptCommentRanges(text, extension) {
4
4
  const languageVariant = extension === ".jsx" || extension === ".tsx"
5
5
  ? ts.LanguageVariant.JSX
@@ -204,7 +204,7 @@ function collectCommentRanges(text, extension) {
204
204
  return collectGoCommentRanges(text);
205
205
  if (isRustExtension(extension))
206
206
  return collectRustCommentRanges(text);
207
- if (isScssExtension(extension))
207
+ if (isStyleExtension(extension))
208
208
  return collectGoCommentRanges(text);
209
209
  return [];
210
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAU5H,SAAS,8BAA8B,CAAC,IAAY,EAAE,SAAiB;IACrE,MAAM,eAAe,GAAG,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM;QAClE,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG;QACxB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;IAChC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACvF,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB;YAC1D,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,UAAU,CAAC,sBAAsB;gBAC9C,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,KAAa,EAAE,KAAiB;IAC9E,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,GAAG,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3E,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,MAAe;IACpE,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC7D,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACjD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAClD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAClC,KAAK,GAAG,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACzC,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACrC,KAAK,IAAI,CAAC,CAAC;IAEX,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,SAAS,IAAI,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,KAAK,IAAI,CAAC,CAAC;IAEX,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACzE,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAE,SAAiB;IAC1E,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IAE7C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACnD,KAAK,IAAI,CAAC,CAAC;QACX,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;QAC9D,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,YAAY,IAAI,IAAI;QAAE,OAAO,YAAY,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,GAAG,UAAU,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACjD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAClD,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS;QACX,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,SAAiB;IAC3D,IAAI,2BAA2B,CAAC,SAAS,CAAC;QAAE,OAAO,8BAA8B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnG,IAAI,aAAa,CAAC,SAAS,CAAC;QAAE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACpE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/ranges.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stripping.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/stripping.ts"],"names":[],"mappings":"AAIA,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAiEF,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CA4B/G;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CAW7G;AAED,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"stripping.d.ts","sourceRoot":"","sources":["../../../../src/checks/rules/comments/stripping.ts"],"names":[],"mappings":"AAKA,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAiEF,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CA4B/G;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CAe7G;AAED,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { loadNativeBinding } from "../../../native/native.js";
2
+ import { isStyleExtension } from "../../../shared/languages.js";
2
3
  import { collectCommentRanges } from "./ranges.js";
3
4
  function createBlockCommentReplacement(commentText) {
4
5
  const newlineOnly = commentText.replace(/[^\r\n]/g, "");
@@ -78,6 +79,9 @@ function stripCommentsJs(text, extension, options = {}) {
78
79
  };
79
80
  }
80
81
  function stripComments(text, extension, options = {}) {
82
+ if (isStyleExtension(extension)) {
83
+ return stripCommentsJs(text, extension, options);
84
+ }
81
85
  const native = loadNativeBinding();
82
86
  if (native) {
83
87
  return JSON.parse(native.stripComments(JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"stripping.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/stripping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripping.js","sourceRoot":"","sources":["../../../../src/checks/rules/comments/stripping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import ts from "typescript";
2
+ import type { BehaviorContext, BehaviorExpression } from "./model.js";
3
+ declare function normalizeCondition(node: ts.Node, context: BehaviorContext, sourceFile: ts.SourceFile): BehaviorExpression | undefined;
4
+ declare function normalizeConditional(condition: BehaviorExpression, whenTrue: BehaviorExpression, whenFalse: BehaviorExpression): BehaviorExpression;
5
+ export { normalizeCondition, normalizeConditional };
6
+ //# sourceMappingURL=conditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/behavior/conditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkBtE,iBAAS,kBAAkB,CACzB,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,kBAAkB,GAAG,SAAS,CAkBhC;AA+DD,iBAAS,oBAAoB,CAC3B,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,kBAAkB,GAC5B,kBAAkB,CASpB;AAyID,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,171 @@
1
+ import ts from "typescript";
2
+ import { expressionsEqual, flattenBinary, inferSingleReplacement, invertCondition, isBooleanExpression, isComparisonOperator, isEqualityOperator, isTagged, normalizeAnd, normalizeComparison, positiveEqualityOperator, reduceExpression, replaceExpression, } from "./model.js";
3
+ import { normalizeExpression } from "./expressions.js";
4
+ function normalizeCondition(node, context, sourceFile) {
5
+ const unwrapped = unwrapCondition(node);
6
+ if (unwrapped !== node)
7
+ return normalizeCondition(unwrapped, context, sourceFile);
8
+ if (ts.isPrefixUnaryExpression(node) && node.operator === ts.SyntaxKind.ExclamationToken) {
9
+ const operand = normalizeCondition(node.operand, context, sourceFile);
10
+ return operand === undefined ? undefined : invertCondition(operand);
11
+ }
12
+ const nullishGroup = normalizeNullishGroup(node, context, sourceFile);
13
+ if (nullishGroup !== undefined)
14
+ return nullishGroup;
15
+ if (ts.isBinaryExpression(node)) {
16
+ return normalizeBinaryCondition(node, context, sourceFile);
17
+ }
18
+ const expression = normalizeExpression(node, context, sourceFile);
19
+ return expression === undefined || isBooleanExpression(expression) ? expression : ["truthy", expression];
20
+ }
21
+ function unwrapCondition(node) {
22
+ if (ts.isParenthesizedExpression(node)
23
+ || ts.isAsExpression(node)
24
+ || ts.isTypeAssertionExpression(node)
25
+ || ts.isNonNullExpression(node)
26
+ || ts.isSatisfiesExpression(node)) {
27
+ return node.expression;
28
+ }
29
+ return node;
30
+ }
31
+ function normalizeBinaryCondition(node, context, sourceFile) {
32
+ if (node.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) {
33
+ return normalizeLogicalAnd(node, context, sourceFile);
34
+ }
35
+ if (node.operatorToken.kind === ts.SyntaxKind.BarBarToken) {
36
+ return normalizeLogicalOr(node, context, sourceFile);
37
+ }
38
+ if (isEqualityOperator(node.operatorToken.kind)) {
39
+ return normalizeEqualityCondition(node, context, sourceFile);
40
+ }
41
+ if (isComparisonOperator(node.operatorToken.kind)) {
42
+ const left = normalizeExpression(node.left, context, sourceFile);
43
+ const right = normalizeExpression(node.right, context, sourceFile);
44
+ return left === undefined || right === undefined
45
+ ? undefined
46
+ : ["compare", ts.tokenToString(node.operatorToken.kind) ?? String(node.operatorToken.kind), left, right];
47
+ }
48
+ return undefined;
49
+ }
50
+ function normalizeLogicalAnd(node, context, sourceFile) {
51
+ const terms = flattenBinary(node, ts.SyntaxKind.AmpersandAmpersandToken)
52
+ .map((term) => normalizeCondition(term, context, sourceFile));
53
+ return terms.some((term) => term === undefined) ? undefined : normalizeAnd(terms);
54
+ }
55
+ function normalizeLogicalOr(node, context, sourceFile) {
56
+ const terms = flattenBinary(node, ts.SyntaxKind.BarBarToken)
57
+ .map((term) => normalizeCondition(term, context, sourceFile));
58
+ if (terms.some((term) => term === undefined))
59
+ return undefined;
60
+ return invertCondition(normalizeAnd(terms.map(invertCondition)));
61
+ }
62
+ function normalizeConditional(condition, whenTrue, whenFalse) {
63
+ if (isTagged(condition, "not")) {
64
+ return normalizeConditional(condition[1], whenFalse, whenTrue);
65
+ }
66
+ const coalesce = normalizeCoalesceConditional(condition, whenTrue, whenFalse);
67
+ if (coalesce)
68
+ return coalesce;
69
+ return reduceExpression(["conditional", condition, whenTrue, whenFalse]);
70
+ }
71
+ function normalizeCoalesceConditional(condition, whenTrue, whenFalse) {
72
+ if (!isTagged(condition, "nullish"))
73
+ return undefined;
74
+ const checked = condition[1];
75
+ const fallback = inferCoalesceFallback(checked, whenTrue, whenFalse);
76
+ if (fallback !== undefined)
77
+ return reduceExpression(replaceExpression(whenFalse, checked, ["coalesce", checked, fallback]));
78
+ return undefined;
79
+ }
80
+ function inferCoalesceFallback(checked, whenNullish, whenPresent) {
81
+ if (expressionsEqual(checked, whenPresent))
82
+ return whenNullish;
83
+ const structural = inferSingleReplacement(whenPresent, whenNullish, checked);
84
+ if (structural !== undefined)
85
+ return structural;
86
+ const foldedNullishResult = reduceExpression(replaceExpression(whenPresent, checked, whenNullish));
87
+ return expressionsEqual(foldedNullishResult, whenNullish) ? whenNullish : undefined;
88
+ }
89
+ function normalizeEqualityCondition(node, context, sourceFile) {
90
+ const nullish = normalizeNullishGroup(node, context, sourceFile);
91
+ if (nullish !== undefined)
92
+ return nullish;
93
+ const left = normalizeExpression(node.left, context, sourceFile);
94
+ const right = normalizeExpression(node.right, context, sourceFile);
95
+ if (left === undefined || right === undefined)
96
+ return undefined;
97
+ const equality = normalizeComparison(positiveEqualityOperator(node.operatorToken.kind), left, right);
98
+ return node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken
99
+ || node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken
100
+ ? invertCondition(equality)
101
+ : equality;
102
+ }
103
+ function normalizeNullishGroup(node, context, sourceFile) {
104
+ if (!ts.isBinaryExpression(node))
105
+ return undefined;
106
+ if (node.operatorToken.kind === ts.SyntaxKind.EqualsEqualsToken || node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken) {
107
+ const equality = normalizeNullishEquality(node, context, sourceFile);
108
+ if (!equality)
109
+ return undefined;
110
+ return node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken ? invertCondition(equality) : equality;
111
+ }
112
+ if (node.operatorToken.kind !== ts.SyntaxKind.BarBarToken && node.operatorToken.kind !== ts.SyntaxKind.AmpersandAmpersandToken) {
113
+ return undefined;
114
+ }
115
+ return normalizeStrictNullishGroup(node, context, sourceFile);
116
+ }
117
+ function normalizeStrictNullishGroup(node, context, sourceFile) {
118
+ const parts = flattenBinary(node, node.operatorToken.kind)
119
+ .map((part) => normalizeStrictNullishEquality(part, context, sourceFile));
120
+ if (parts.some((part) => part === undefined))
121
+ return undefined;
122
+ const first = parts[0];
123
+ const sameExpression = parts.every((part) => expressionsEqual(part.expression, first.expression));
124
+ const hasNull = parts.some((part) => part.kind === "null");
125
+ const hasUndefined = parts.some((part) => part.kind === "undefined");
126
+ if (!sameExpression || !hasNull || !hasUndefined)
127
+ return undefined;
128
+ const isNullish = node.operatorToken.kind === ts.SyntaxKind.BarBarToken && parts.every((part) => !part.negated);
129
+ const isNotNullish = node.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken && parts.every((part) => part.negated);
130
+ if (!isNullish && !isNotNullish)
131
+ return undefined;
132
+ const nullish = ["nullish", first.expression];
133
+ return isNotNullish ? invertCondition(nullish) : nullish;
134
+ }
135
+ function normalizeNullishEquality(node, context, sourceFile) {
136
+ const leftNull = isNullLiteral(node.left);
137
+ const rightNull = isNullLiteral(node.right);
138
+ if (!leftNull && !rightNull)
139
+ return undefined;
140
+ const expression = normalizeExpression(leftNull ? node.right : node.left, context, sourceFile);
141
+ return expression === undefined ? undefined : ["nullish", expression];
142
+ }
143
+ function normalizeStrictNullishEquality(node, context, sourceFile) {
144
+ if (!ts.isBinaryExpression(node) || !isEqualityOperator(node.operatorToken.kind))
145
+ return undefined;
146
+ const leftKind = nullishLiteralKind(node.left);
147
+ const rightKind = nullishLiteralKind(node.right);
148
+ if (!leftKind && !rightKind)
149
+ return undefined;
150
+ const expression = normalizeExpression(leftKind ? node.right : node.left, context, sourceFile);
151
+ if (expression === undefined)
152
+ return undefined;
153
+ return {
154
+ expression,
155
+ kind: leftKind ?? rightKind,
156
+ negated: node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken
157
+ || node.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsToken,
158
+ };
159
+ }
160
+ function isNullLiteral(node) {
161
+ return node.kind === ts.SyntaxKind.NullKeyword;
162
+ }
163
+ function nullishLiteralKind(node) {
164
+ if (node.kind === ts.SyntaxKind.NullKeyword)
165
+ return "null";
166
+ if (ts.isIdentifier(node) && node.text === "undefined")
167
+ return "undefined";
168
+ return undefined;
169
+ }
170
+ export { normalizeCondition, normalizeConditional };
171
+ //# sourceMappingURL=conditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/behavior/conditions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import ts from "typescript";
2
+ import type { BehaviorContext, BehaviorExpression } from "./model.js";
3
+ declare function normalizeExpression(node: ts.Node | undefined, context: BehaviorContext, sourceFile: ts.SourceFile): BehaviorExpression | undefined;
4
+ export { normalizeExpression };
5
+ //# sourceMappingURL=expressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/behavior/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQtE,iBAAS,mBAAmB,CAC1B,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,EACzB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,kBAAkB,GAAG,SAAS,CAgBhC;AA6ND,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,179 @@
1
+ import ts from "typescript";
2
+ import { SAFE_GLOBAL_IDENTIFIERS } from "../serialize/context.js";
3
+ import { isComparisonOperator, isLogicalOperator, isNamedGlobal, } from "./model.js";
4
+ import { normalizeCondition, normalizeConditional } from "./conditions.js";
5
+ function normalizeExpression(node, context, sourceFile) {
6
+ if (!node)
7
+ return undefined;
8
+ const wrapped = normalizeWrappedExpression(node, context, sourceFile);
9
+ if (wrapped !== undefined)
10
+ return wrapped;
11
+ const primitive = normalizePrimitiveExpression(node, context);
12
+ if (primitive !== undefined)
13
+ return primitive;
14
+ const container = normalizeContainerExpression(node, context, sourceFile);
15
+ if (container !== undefined)
16
+ return container;
17
+ const access = normalizeAccessExpression(node, context, sourceFile);
18
+ if (access !== undefined)
19
+ return access;
20
+ return normalizeOperatorExpression(node, context, sourceFile);
21
+ }
22
+ function normalizeWrappedExpression(node, context, sourceFile) {
23
+ if (ts.isParenthesizedExpression(node)
24
+ || ts.isAsExpression(node)
25
+ || ts.isTypeAssertionExpression(node)
26
+ || ts.isNonNullExpression(node)
27
+ || ts.isSatisfiesExpression(node)) {
28
+ return normalizeExpression(node.expression, context, sourceFile);
29
+ }
30
+ return undefined;
31
+ }
32
+ function normalizePrimitiveExpression(node, context) {
33
+ if (ts.isIdentifier(node))
34
+ return normalizeIdentifier(node, context);
35
+ if (node.kind === ts.SyntaxKind.TrueKeyword)
36
+ return ["literal", "boolean", true];
37
+ if (node.kind === ts.SyntaxKind.FalseKeyword)
38
+ return ["literal", "boolean", false];
39
+ if (node.kind === ts.SyntaxKind.NullKeyword)
40
+ return ["literal", "null"];
41
+ if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node))
42
+ return ["literal", "string", node.text];
43
+ if (ts.isNumericLiteral(node))
44
+ return ["literal", "number", node.text];
45
+ if (ts.isBigIntLiteral(node))
46
+ return ["literal", "bigint", node.text];
47
+ return undefined;
48
+ }
49
+ function normalizeIdentifier(node, context) {
50
+ const parameter = context.parameters.get(node.text);
51
+ if (parameter)
52
+ return ["param", parameter];
53
+ const local = context.locals.get(node.text);
54
+ if (local !== undefined)
55
+ return local;
56
+ if (node.text === "undefined")
57
+ return ["literal", "undefined"];
58
+ if (SAFE_GLOBAL_IDENTIFIERS.has(node.text))
59
+ return ["global", node.text];
60
+ return ["outer", node.text];
61
+ }
62
+ function normalizeContainerExpression(node, context, sourceFile) {
63
+ if (ts.isArrayLiteralExpression(node))
64
+ return normalizeArrayLiteral(node, context, sourceFile);
65
+ if (ts.isObjectLiteralExpression(node))
66
+ return normalizeObjectLiteral(node, context, sourceFile);
67
+ if (ts.isTemplateExpression(node))
68
+ return normalizeTemplateExpression(node, context, sourceFile);
69
+ return undefined;
70
+ }
71
+ function normalizeArrayLiteral(node, context, sourceFile) {
72
+ const elements = node.elements.map((element) => (ts.isSpreadElement(element)
73
+ ? ["spread", normalizeExpression(element.expression, context, sourceFile)]
74
+ : normalizeExpression(element, context, sourceFile)));
75
+ return elements.some((element) => element === undefined || (Array.isArray(element) && element[1] === undefined))
76
+ ? undefined
77
+ : ["array", elements];
78
+ }
79
+ function normalizeObjectLiteral(node, context, sourceFile) {
80
+ const properties = [];
81
+ for (const property of node.properties) {
82
+ const normalized = normalizeObjectProperty(property, context, sourceFile);
83
+ if (normalized === undefined)
84
+ return undefined;
85
+ properties.push(normalized);
86
+ }
87
+ return ["object", properties];
88
+ }
89
+ function normalizeObjectProperty(property, context, sourceFile) {
90
+ if (ts.isPropertyAssignment(property)) {
91
+ const value = normalizeExpression(property.initializer, context, sourceFile);
92
+ return value === undefined ? undefined : ["property", property.name.getText(sourceFile), value];
93
+ }
94
+ if (ts.isShorthandPropertyAssignment(property)) {
95
+ return ["property", property.name.text, normalizeIdentifier(property.name, context)];
96
+ }
97
+ if (ts.isSpreadAssignment(property)) {
98
+ const value = normalizeExpression(property.expression, context, sourceFile);
99
+ return value === undefined ? undefined : ["spread", value];
100
+ }
101
+ return undefined;
102
+ }
103
+ function normalizeTemplateExpression(node, context, sourceFile) {
104
+ const spans = node.templateSpans.map((span) => [
105
+ normalizeExpression(span.expression, context, sourceFile),
106
+ span.literal.text,
107
+ ]);
108
+ return spans.some(([expression]) => expression === undefined) ? undefined : ["template", node.head.text, spans];
109
+ }
110
+ function normalizeAccessExpression(node, context, sourceFile) {
111
+ if (ts.isPropertyAccessExpression(node)) {
112
+ const target = normalizeExpression(node.expression, context, sourceFile);
113
+ return target === undefined ? undefined : ["member", target, node.name.text];
114
+ }
115
+ if (ts.isElementAccessExpression(node)) {
116
+ const target = normalizeExpression(node.expression, context, sourceFile);
117
+ const argument = normalizeExpression(node.argumentExpression, context, sourceFile);
118
+ return target === undefined || argument === undefined ? undefined : ["element", target, argument];
119
+ }
120
+ return undefined;
121
+ }
122
+ function normalizeOperatorExpression(node, context, sourceFile) {
123
+ if (ts.isCallExpression(node))
124
+ return normalizeCallExpression(node, context, sourceFile);
125
+ if (ts.isConditionalExpression(node))
126
+ return normalizeConditionalExpression(node, context, sourceFile);
127
+ if (ts.isPrefixUnaryExpression(node))
128
+ return normalizePrefixUnaryExpression(node, context, sourceFile);
129
+ if (ts.isBinaryExpression(node))
130
+ return normalizeBinaryExpression(node, context, sourceFile);
131
+ if (ts.isTypeOfExpression(node))
132
+ return normalizeTypeOfExpression(node, context, sourceFile);
133
+ return undefined;
134
+ }
135
+ function normalizeCallExpression(node, context, sourceFile) {
136
+ const callee = normalizeExpression(node.expression, context, sourceFile);
137
+ const args = node.arguments.map((argument) => normalizeExpression(argument, context, sourceFile));
138
+ if (callee === undefined || args.some((arg) => arg === undefined))
139
+ return undefined;
140
+ if (isNamedGlobal(callee, "Boolean") && args.length === 1) {
141
+ return ["truthy", args[0]];
142
+ }
143
+ return ["call", callee, args];
144
+ }
145
+ function normalizeConditionalExpression(node, context, sourceFile) {
146
+ const condition = normalizeCondition(node.condition, context, sourceFile);
147
+ const whenTrue = normalizeExpression(node.whenTrue, context, sourceFile);
148
+ const whenFalse = normalizeExpression(node.whenFalse, context, sourceFile);
149
+ return condition === undefined || whenTrue === undefined || whenFalse === undefined
150
+ ? undefined
151
+ : normalizeConditional(condition, whenTrue, whenFalse);
152
+ }
153
+ function normalizePrefixUnaryExpression(node, context, sourceFile) {
154
+ if (node.operator === ts.SyntaxKind.ExclamationToken)
155
+ return normalizeCondition(node, context, sourceFile);
156
+ const operand = normalizeExpression(node.operand, context, sourceFile);
157
+ return operand === undefined ? undefined : ["prefix", ts.tokenToString(node.operator) ?? String(node.operator), operand];
158
+ }
159
+ function normalizeBinaryExpression(node, context, sourceFile) {
160
+ if (isComparisonOperator(node.operatorToken.kind)) {
161
+ return normalizeCondition(node, context, sourceFile);
162
+ }
163
+ const left = normalizeExpression(node.left, context, sourceFile);
164
+ const right = normalizeExpression(node.right, context, sourceFile);
165
+ if (left === undefined || right === undefined)
166
+ return undefined;
167
+ if (isLogicalOperator(node.operatorToken.kind)) {
168
+ return ["logical", ts.tokenToString(node.operatorToken.kind) ?? String(node.operatorToken.kind), left, right];
169
+ }
170
+ return node.operatorToken.kind === ts.SyntaxKind.QuestionQuestionToken
171
+ ? ["coalesce", left, right]
172
+ : ["binary", ts.tokenToString(node.operatorToken.kind) ?? String(node.operatorToken.kind), left, right];
173
+ }
174
+ function normalizeTypeOfExpression(node, context, sourceFile) {
175
+ const expression = normalizeExpression(node.expression, context, sourceFile);
176
+ return expression === undefined ? undefined : ["typeof", expression];
177
+ }
178
+ export { normalizeExpression };
179
+ //# sourceMappingURL=expressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../../../src/checks/rules/dry/behavior/expressions.ts"],"names":[],"mappings":"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"}