repoburg 1.0.55 → 1.0.57

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 (186) hide show
  1. package/backend/.env +1 -0
  2. package/backend/coverage/clover.xml +2409 -2355
  3. package/backend/coverage/coverage-final.json +99 -96
  4. package/backend/coverage/lcov-report/index.html +356 -341
  5. package/backend/coverage/lcov-report/src/action-execution/action-execution.module.ts.html +12 -12
  6. package/backend/coverage/lcov-report/src/action-execution/action-execution.service.ts.html +140 -62
  7. package/backend/coverage/lcov-report/src/action-execution/index.html +28 -28
  8. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +188 -188
  9. package/backend/coverage/lcov-report/src/ai-actions/ai-action-creation.service.ts.html +284 -236
  10. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +109 -109
  11. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +28 -28
  12. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +193 -193
  13. package/backend/coverage/lcov-report/src/ai-actions/index.html +61 -61
  14. package/backend/coverage/lcov-report/src/app.controller.ts.html +24 -24
  15. package/backend/coverage/lcov-report/src/app.module.ts.html +68 -65
  16. package/backend/coverage/lcov-report/src/app.service.ts.html +46 -13
  17. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +87 -33
  18. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +18 -18
  19. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +113 -68
  20. package/backend/coverage/lcov-report/src/application-state/dto/index.html +42 -27
  21. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +12 -12
  22. package/backend/coverage/lcov-report/src/application-state/dto/set-orchestration-timeout.dto.ts.html +103 -0
  23. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +12 -12
  24. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +12 -12
  25. package/backend/coverage/lcov-report/src/application-state/index.html +37 -37
  26. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +16 -16
  27. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +222 -222
  28. package/backend/coverage/lcov-report/src/context-generation/index.html +28 -28
  29. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +31 -31
  30. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +20 -20
  31. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +26 -26
  32. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +28 -28
  33. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +13 -13
  34. package/backend/coverage/lcov-report/src/context-snippets/index.html +31 -31
  35. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +45 -45
  36. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +20 -20
  37. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +87 -84
  38. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +48 -48
  39. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +13 -13
  40. package/backend/coverage/lcov-report/src/context-templates/index.html +36 -36
  41. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +48 -48
  42. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +14 -14
  43. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +22 -22
  44. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +18 -18
  45. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +52 -52
  46. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +20 -20
  47. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +26 -26
  48. package/backend/coverage/lcov-report/src/core-entities/index.html +112 -112
  49. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +28 -28
  50. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +24 -24
  51. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +59 -50
  52. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +56 -56
  53. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +28 -28
  54. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +30 -30
  55. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +18 -18
  56. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +20 -20
  57. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +28 -28
  58. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +13 -13
  59. package/backend/coverage/lcov-report/src/custom-snippets/index.html +32 -32
  60. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +46 -46
  61. package/backend/coverage/lcov-report/src/events/events.module.ts.html +12 -12
  62. package/backend/coverage/lcov-report/src/events/index.html +28 -28
  63. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +1 -1
  64. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +1 -1
  65. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +18 -18
  66. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +18 -18
  67. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +32 -32
  68. package/backend/coverage/lcov-report/src/execution-logs/index.html +33 -33
  69. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +55 -55
  70. package/backend/coverage/lcov-report/src/index.html +44 -44
  71. package/backend/coverage/lcov-report/src/llm-response-parser/dto/ai-action.dto.ts.html +67 -67
  72. package/backend/coverage/lcov-report/src/llm-response-parser/dto/index.html +21 -21
  73. package/backend/coverage/lcov-report/src/llm-response-parser/errors/index.html +17 -17
  74. package/backend/coverage/lcov-report/src/llm-response-parser/errors/parsing.error.ts.html +19 -19
  75. package/backend/coverage/lcov-report/src/llm-response-parser/index.html +35 -35
  76. package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.module.ts.html +12 -12
  77. package/backend/coverage/lcov-report/src/llm-response-parser/llm-response-parser.service.ts.html +208 -208
  78. package/backend/coverage/lcov-report/src/llm-response-parser/parsing.constants.ts.html +38 -38
  79. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +21 -21
  80. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +28 -28
  81. package/backend/coverage/lcov-report/src/llm-responses/index.html +38 -38
  82. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +24 -24
  83. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +38 -35
  84. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +107 -86
  85. package/backend/coverage/lcov-report/src/main.ts.html +1 -1
  86. package/backend/coverage/lcov-report/src/orchestration/dto/index.html +13 -13
  87. package/backend/coverage/lcov-report/src/orchestration/dto/orchestration.dto.ts.html +30 -45
  88. package/backend/coverage/lcov-report/src/orchestration/index.html +74 -74
  89. package/backend/coverage/lcov-report/src/orchestration/orchestration-fs.service.ts.html +245 -128
  90. package/backend/coverage/lcov-report/src/orchestration/orchestration-parser.service.ts.html +32 -200
  91. package/backend/coverage/lcov-report/src/orchestration/orchestration.controller.ts.html +72 -102
  92. package/backend/coverage/lcov-report/src/orchestration/orchestration.module.ts.html +35 -38
  93. package/backend/coverage/lcov-report/src/orchestration/orchestration.service.ts.html +317 -425
  94. package/backend/coverage/lcov-report/src/orchestration/orchestration.types.ts.html +41 -35
  95. package/backend/coverage/lcov-report/src/projects/dto/index.html +13 -13
  96. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +20 -20
  97. package/backend/coverage/lcov-report/src/projects/index.html +32 -32
  98. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +28 -28
  99. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +18 -18
  100. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +20 -20
  101. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +22 -22
  102. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +21 -21
  103. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +1 -1
  104. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +1 -1
  105. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +1 -1
  106. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +1 -1
  107. package/backend/coverage/lcov-report/src/seeding/data/context-templates/pm-context.ts.html +1 -1
  108. package/backend/coverage/lcov-report/src/seeding/data/context-templates/pr-description.ts.html +1 -1
  109. package/backend/coverage/lcov-report/src/seeding/data/context-templates/sample_focused-tree.ts.html +1 -1
  110. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +1 -1
  111. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +1 -1
  112. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +1 -1
  113. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +1 -1
  114. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +1 -1
  115. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +1 -1
  116. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +1 -1
  117. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +1 -1
  118. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +1 -1
  119. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +1 -1
  120. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/codebase-explorer.ts.html +1 -1
  121. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_multi-file-action-generator-with-requester.ts.html +8 -2
  122. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +3 -3
  123. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/packup.ts.html +1 -1
  124. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/refactor-split.ts.html +244 -0
  125. package/backend/coverage/lcov-report/src/seeding/index.html +47 -47
  126. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +24 -24
  127. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +27 -27
  128. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +21 -21
  129. package/backend/coverage/lcov-report/src/session-followup/index.html +28 -28
  130. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +22 -22
  131. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +44 -41
  132. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +13 -13
  133. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +40 -28
  134. package/backend/coverage/lcov-report/src/session-inputs/index.html +50 -50
  135. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +168 -156
  136. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +36 -36
  137. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +40 -37
  138. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +242 -236
  139. package/backend/coverage/lcov-report/src/session-transfer/index.html +22 -22
  140. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +16 -16
  141. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +30 -30
  142. package/backend/coverage/lcov-report/src/sessions/dto/index.html +21 -21
  143. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +54 -54
  144. package/backend/coverage/lcov-report/src/sessions/index.html +39 -39
  145. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +55 -55
  146. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +30 -30
  147. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +120 -120
  148. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +19 -19
  149. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +38 -29
  150. package/backend/coverage/lcov-report/src/system-prompts/index.html +37 -37
  151. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +34 -34
  152. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +20 -20
  153. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +62 -62
  154. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +1 -1
  155. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +310 -0
  156. package/backend/coverage/lcov-report/src/utils/index.html +131 -0
  157. package/backend/coverage/lcov-report/src/utils/index.ts.html +88 -0
  158. package/backend/coverage/lcov-report/src/workspace/dto/index.html +13 -13
  159. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +24 -24
  160. package/backend/coverage/lcov-report/src/workspace/index.html +37 -37
  161. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +26 -26
  162. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +16 -16
  163. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +259 -214
  164. package/backend/coverage/lcov.info +3284 -3186
  165. package/backend/dist/action-execution/action-execution.service.d.ts +2 -0
  166. package/backend/dist/action-execution/action-execution.service.js +31 -13
  167. package/backend/dist/action-execution/action-execution.service.js.map +1 -1
  168. package/backend/dist/context-generation/context-generation.service.d.ts +2 -2
  169. package/backend/dist/context-generation/context-generation.service.js.map +1 -1
  170. package/backend/dist/orchestration/orchestration.service.js +1 -0
  171. package/backend/dist/orchestration/orchestration.service.js.map +1 -1
  172. package/backend/dist/session-inputs/dto/session-input.dto.d.ts +1 -0
  173. package/backend/dist/session-inputs/dto/session-input.dto.js +5 -0
  174. package/backend/dist/session-inputs/dto/session-input.dto.js.map +1 -1
  175. package/backend/dist/session-inputs/session-input-context.service.js +4 -5
  176. package/backend/dist/session-inputs/session-input-context.service.js.map +1 -1
  177. package/backend/dist/session-inputs/session-inputs.service.js +2 -1
  178. package/backend/dist/session-inputs/session-inputs.service.js.map +1 -1
  179. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  180. package/backend/dist/utils/fuzzy-search.js +13 -4
  181. package/backend/dist/utils/fuzzy-search.js.map +1 -1
  182. package/backend/dist/workspace/workspace.service.d.ts +1 -0
  183. package/backend/dist/workspace/workspace.service.js +14 -3
  184. package/backend/dist/workspace/workspace.service.js.map +1 -1
  185. package/package.json +1 -1
  186. package/orchestration-test.txt +0 -3
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">68.42% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/38</span>
28
+ <span class='fraction'>26/38</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/5</span>
35
+ <span class='fraction'>5/5</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">50% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/10</span>
42
+ <span class='fraction'>5/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">66.66% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/36</span>
49
+ <span class='fraction'>24/36</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line medium'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -152,23 +152,23 @@
152
152
  <a name='L87'></a><a href='#L87'>87</a>
153
153
  <a name='L88'></a><a href='#L88'>88</a>
154
154
  <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
156
- <span class="cline-any cline-no">&nbsp;</span>
157
- <span class="cline-any cline-no">&nbsp;</span>
158
- <span class="cline-any cline-no">&nbsp;</span>
155
+ <a name='L90'></a><a href='#L90'>90</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">8x</span>
156
+ <span class="cline-any cline-yes">8x</span>
157
+ <span class="cline-any cline-yes">8x</span>
158
+ <span class="cline-any cline-yes">8x</span>
159
159
  <span class="cline-any cline-neutral">&nbsp;</span>
160
160
  <span class="cline-any cline-neutral">&nbsp;</span>
161
161
  <span class="cline-any cline-neutral">&nbsp;</span>
162
162
  <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-no">&nbsp;</span>
163
+ <span class="cline-any cline-yes">8x</span>
164
164
  <span class="cline-any cline-neutral">&nbsp;</span>
165
165
  <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-no">&nbsp;</span>
166
+ <span class="cline-any cline-yes">8x</span>
167
167
  <span class="cline-any cline-neutral">&nbsp;</span>
168
168
  <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-no">&nbsp;</span>
170
- <span class="cline-any cline-no">&nbsp;</span>
171
- <span class="cline-any cline-no">&nbsp;</span>
169
+ <span class="cline-any cline-yes">6x</span>
170
+ <span class="cline-any cline-yes">6x</span>
171
+ <span class="cline-any cline-yes">6x</span>
172
172
  <span class="cline-any cline-neutral">&nbsp;</span>
173
173
  <span class="cline-any cline-neutral">&nbsp;</span>
174
174
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -183,15 +183,15 @@
183
183
  <span class="cline-any cline-neutral">&nbsp;</span>
184
184
  <span class="cline-any cline-neutral">&nbsp;</span>
185
185
  <span class="cline-any cline-neutral">&nbsp;</span>
186
- <span class="cline-any cline-no">&nbsp;</span>
187
- <span class="cline-any cline-no">&nbsp;</span>
188
- <span class="cline-any cline-no">&nbsp;</span>
186
+ <span class="cline-any cline-yes">3x</span>
187
+ <span class="cline-any cline-yes">3x</span>
188
+ <span class="cline-any cline-yes">1x</span>
189
189
  <span class="cline-any cline-neutral">&nbsp;</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
190
+ <span class="cline-any cline-yes">2x</span>
191
191
  <span class="cline-any cline-neutral">&nbsp;</span>
192
192
  <span class="cline-any cline-neutral">&nbsp;</span>
193
193
  <span class="cline-any cline-neutral">&nbsp;</span>
194
- <span class="cline-any cline-no">&nbsp;</span>
194
+ <span class="cline-any cline-yes">14x</span>
195
195
  <span class="cline-any cline-neutral">&nbsp;</span>
196
196
  <span class="cline-any cline-neutral">&nbsp;</span>
197
197
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -213,25 +213,25 @@
213
213
  <span class="cline-any cline-neutral">&nbsp;</span>
214
214
  <span class="cline-any cline-neutral">&nbsp;</span>
215
215
  <span class="cline-any cline-neutral">&nbsp;</span>
216
- <span class="cline-any cline-no">&nbsp;</span>
216
+ <span class="cline-any cline-yes">3x</span>
217
217
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
218
+ <span class="cline-any cline-yes">2x</span>
219
+ <span class="cline-any cline-yes">2x</span>
220
220
  <span class="cline-any cline-neutral">&nbsp;</span>
221
221
  <span class="cline-any cline-neutral">&nbsp;</span>
222
222
  <span class="cline-any cline-neutral">&nbsp;</span>
223
- <span class="cline-any cline-no">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
223
+ <span class="cline-any cline-yes">2x</span>
224
+ <span class="cline-any cline-yes">1x</span>
225
+ <span class="cline-any cline-yes">1x</span>
226
226
  <span class="cline-any cline-neutral">&nbsp;</span>
227
227
  <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-no">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
228
+ <span class="cline-any cline-yes">2x</span>
229
+ <span class="cline-any cline-yes">2x</span>
230
+ <span class="cline-any cline-yes">2x</span>
231
231
  <span class="cline-any cline-neutral">&nbsp;</span>
232
232
  <span class="cline-any cline-neutral">&nbsp;</span>
233
233
  <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
234
+ <span class="cline-any cline-yes">2x</span>
235
235
  <span class="cline-any cline-neutral">&nbsp;</span>
236
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -241,23 +241,23 @@
241
241
  <span class="cline-any cline-neutral">&nbsp;</span>
242
242
  <span class="cline-any cline-neutral">&nbsp;</span>
243
243
  <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { Injectable, NotFoundException } from '@nestjs/common';</span>
245
- <span class="cstat-no" title="statement not covered" >import { InjectRepository } from '@nestjs/typeorm';</span>
246
- <span class="cstat-no" title="statement not covered" >import { Repository, DataSource } from 'typeorm';</span>
247
- <span class="cstat-no" title="statement not covered" >import { SystemPrompt } from '../core-entities';</span>
244
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable, NotFoundException } from '@nestjs/common';
245
+ import { InjectRepository } from '@nestjs/typeorm';
246
+ import { Repository, DataSource } from 'typeorm';
247
+ import { SystemPrompt } from '../core-entities';
248
248
  import {
249
249
  CreateSystemPromptDto,
250
250
  UpdateSystemPromptDto,
251
251
  } from './dto/system-prompt.dto';
252
- <span class="cstat-no" title="statement not covered" >import { EventsGateway } from '../events/events.gateway';</span>
252
+ import { EventsGateway } from '../events/events.gateway';
253
253
  &nbsp;
254
254
  @Injectable()
255
- export <span class="cstat-no" title="statement not covered" >class <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >SystemPromptsService </span>{</span></span>
256
- <span class="fstat-no" title="function not covered" > constructor(</span>
255
+ export class SystemPromptsService {
256
+ constructor(
257
257
  @InjectRepository(SystemPrompt)
258
- private <span class="cstat-no" title="statement not covered" >systemPromptsRepository: R</span>epository&lt;SystemPrompt&gt;,
259
- private <span class="cstat-no" title="statement not covered" >dataSource: D</span>ataSource,
260
- private readonly <span class="cstat-no" title="statement not covered" >eventsGateway: E</span>ventsGateway,
258
+ private systemPromptsRepository: Repository&lt;SystemPrompt&gt;,
259
+ private dataSource: DataSource,
260
+ private readonly eventsGateway: EventsGateway,
261
261
  ) {}
262
262
  &nbsp;
263
263
  <span class="fstat-no" title="function not covered" > async </span>create(
@@ -271,16 +271,16 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
271
271
  <span class="cstat-no" title="statement not covered" > return this.systemPromptsRepository.find({ order: { prompt_name: 'ASC' } });</span>
272
272
  }
273
273
  &nbsp;
274
- <span class="fstat-no" title="function not covered" > async </span>findOne(id: string): Promise&lt;SystemPrompt&gt; {
275
- const prompt = <span class="cstat-no" title="statement not covered" >await this.systemPromptsRepository.findOneBy({ id });</span>
276
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!prompt) {</span>
277
- <span class="cstat-no" title="statement not covered" > throw new NotFoundException(`SystemPrompt with ID "${id}" not found`);</span>
274
+ async findOne(id: string): Promise&lt;SystemPrompt&gt; {
275
+ const prompt = await this.systemPromptsRepository.findOneBy({ id });
276
+ if (!prompt) {
277
+ throw new NotFoundException(`SystemPrompt with ID "${id}" not found`);
278
278
  }
279
- <span class="cstat-no" title="statement not covered" > return prompt;</span>
279
+ return prompt;
280
280
  }
281
281
  &nbsp;
282
- <span class="fstat-no" title="function not covered" > async </span>findDefault(): Promise&lt;SystemPrompt | null&gt; {
283
- <span class="cstat-no" title="statement not covered" > return this.systemPromptsRepository.findOneBy({ is_default: true });</span>
282
+ async findDefault(): Promise&lt;SystemPrompt | null&gt; {
283
+ return this.systemPromptsRepository.findOneBy({ is_default: true });
284
284
  }
285
285
  &nbsp;
286
286
  <span class="fstat-no" title="function not covered" > async </span>update(
@@ -301,26 +301,26 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
301
301
  <span class="cstat-no" title="statement not covered" > await this.systemPromptsRepository.remove(prompt);</span>
302
302
  }
303
303
  &nbsp;
304
- <span class="fstat-no" title="function not covered" > async </span>setDefault(id: string): Promise&lt;SystemPrompt&gt; {
305
- const newDefaultPrompt = <span class="cstat-no" title="statement not covered" >await this.findOne(id);</span>
304
+ async setDefault(id: string): Promise&lt;SystemPrompt&gt; {
305
+ const newDefaultPrompt = await this.findOne(id);
306
306
  &nbsp;
307
- <span class="cstat-no" title="statement not covered" > await this.dataSource.transaction(<span class="fstat-no" title="function not covered" >async </span>(manager) =&gt; {</span>
308
- const currentDefault = <span class="cstat-no" title="statement not covered" >await manager.findOneBy(SystemPrompt, {</span>
307
+ await this.dataSource.transaction(async (manager) =&gt; {
308
+ const currentDefault = await manager.findOneBy(SystemPrompt, {
309
309
  is_default: true,
310
310
  });
311
311
  &nbsp;
312
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (currentDefault &amp;&amp; currentDefault.id !== newDefaultPrompt.id) {</span>
313
- <span class="cstat-no" title="statement not covered" > currentDefault.is_default = false;</span>
314
- <span class="cstat-no" title="statement not covered" > await manager.save(currentDefault);</span>
312
+ if (currentDefault &amp;&amp; currentDefault.id !== newDefaultPrompt.id) {
313
+ currentDefault.is_default = false;
314
+ await manager.save(currentDefault);
315
315
  }
316
316
  &nbsp;
317
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!newDefaultPrompt.is_default) {</span>
318
- <span class="cstat-no" title="statement not covered" > newDefaultPrompt.is_default = true;</span>
319
- <span class="cstat-no" title="statement not covered" > await manager.save(newDefaultPrompt);</span>
317
+ if (!newDefaultPrompt.is_default) {
318
+ newDefaultPrompt.is_default = true;
319
+ await manager.save(newDefaultPrompt);
320
320
  }
321
321
  });
322
322
  &nbsp;
323
- <span class="cstat-no" title="statement not covered" > return newDefaultPrompt;</span>
323
+ return newDefaultPrompt;
324
324
  }
325
325
  &nbsp;
326
326
  <span class="fstat-no" title="function not covered" > async </span>pushToStudio(id: string): Promise&lt;void&gt; {
@@ -337,7 +337,7 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
337
337
  <div class='footer quiet pad2 space-top1 center small'>
338
338
  Code coverage generated by
339
339
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
340
- at 2025-07-30T23:37:05.373Z
340
+ at 2025-09-12T19:21:55.945Z
341
341
  </div>
342
342
  <script src="../../prettify.js"></script>
343
343
  <script>
@@ -163,7 +163,7 @@ export <span class="cstat-no" title="statement not covered" >class <span class="
163
163
  <div class='footer quiet pad2 space-top1 center small'>
164
164
  Code coverage generated by
165
165
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
166
- at 2025-07-30T23:37:05.373Z
166
+ at 2025-09-12T19:21:55.945Z
167
167
  </div>
168
168
  <script src="../prettify.js"></script>
169
169
  <script>
@@ -0,0 +1,310 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/utils/fuzzy-search.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/utils</a> fuzzy-search.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">94.44% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>34/36</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">91.66% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>11/12</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>5/5</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">94.11% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>32/34</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">7x</span>
142
+ <span class="cline-any cline-yes">6x</span>
143
+ <span class="cline-any cline-no">&nbsp;</span>
144
+ <span class="cline-any cline-neutral">&nbsp;</span>
145
+ <span class="cline-any cline-neutral">&nbsp;</span>
146
+ <span class="cline-any cline-yes">6x</span>
147
+ <span class="cline-any cline-neutral">&nbsp;</span>
148
+ <span class="cline-any cline-yes">6x</span>
149
+ <span class="cline-any cline-neutral">&nbsp;</span>
150
+ <span class="cline-any cline-yes">20x</span>
151
+ <span class="cline-any cline-yes">20x</span>
152
+ <span class="cline-any cline-yes">20x</span>
153
+ <span class="cline-any cline-yes">20x</span>
154
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
+ <span class="cline-any cline-yes">20x</span>
156
+ <span class="cline-any cline-yes">45x</span>
157
+ <span class="cline-any cline-yes">45x</span>
158
+ <span class="cline-any cline-neutral">&nbsp;</span>
159
+ <span class="cline-any cline-yes">45x</span>
160
+ <span class="cline-any cline-yes">10x</span>
161
+ <span class="cline-any cline-neutral">&nbsp;</span>
162
+ <span class="cline-any cline-neutral">&nbsp;</span>
163
+ <span class="cline-any cline-neutral">&nbsp;</span>
164
+ <span class="cline-any cline-yes">35x</span>
165
+ <span class="cline-any cline-yes">14x</span>
166
+ <span class="cline-any cline-neutral">&nbsp;</span>
167
+ <span class="cline-any cline-neutral">&nbsp;</span>
168
+ <span class="cline-any cline-neutral">&nbsp;</span>
169
+ <span class="cline-any cline-yes">35x</span>
170
+ <span class="cline-any cline-neutral">&nbsp;</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-neutral">&nbsp;</span>
173
+ <span class="cline-any cline-neutral">&nbsp;</span>
174
+ <span class="cline-any cline-yes">10x</span>
175
+ <span class="cline-any cline-neutral">&nbsp;</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-yes">35x</span>
179
+ <span class="cline-any cline-yes">32x</span>
180
+ <span class="cline-any cline-neutral">&nbsp;</span>
181
+ <span class="cline-any cline-neutral">&nbsp;</span>
182
+ <span class="cline-any cline-neutral">&nbsp;</span>
183
+ <span class="cline-any cline-yes">35x</span>
184
+ <span class="cline-any cline-yes">24x</span>
185
+ <span class="cline-any cline-yes">24x</span>
186
+ <span class="cline-any cline-neutral">&nbsp;</span>
187
+ <span class="cline-any cline-yes">11x</span>
188
+ <span class="cline-any cline-neutral">&nbsp;</span>
189
+ <span class="cline-any cline-neutral">&nbsp;</span>
190
+ <span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-yes">35x</span>
192
+ <span class="cline-any cline-neutral">&nbsp;</span>
193
+ <span class="cline-any cline-yes">35x</span>
194
+ <span class="cline-any cline-neutral">&nbsp;</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-yes">10x</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-yes">10x</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-yes">20x</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
205
+ <span class="cline-any cline-neutral">&nbsp;</span>
206
+ <span class="cline-any cline-neutral">&nbsp;</span>
207
+ <span class="cline-any cline-yes">6x</span>
208
+ <span class="cline-any cline-yes">7x</span>
209
+ <span class="cline-any cline-yes">7x</span>
210
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-no">&nbsp;</span>
212
+ <span class="cline-any cline-neutral">&nbsp;</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-yes">10x</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export function fuzzySearch(query: string, items: string[]): string[] {
217
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!query) {
218
+ <span class="cstat-no" title="statement not covered" > return items;</span>
219
+ }
220
+ &nbsp;
221
+ const lowerCaseQuery = query.toLowerCase();
222
+ &nbsp;
223
+ const rankedItems = items
224
+ .map((item, index) =&gt; {
225
+ const lowerCaseItem = item.toLowerCase();
226
+ let score = 0;
227
+ let consecutiveMatches = 0;
228
+ let lastMatchIndex = -1;
229
+ &nbsp;
230
+ for (let i = 0; i &lt; lowerCaseQuery.length; i++) {
231
+ const char = lowerCaseQuery[i];
232
+ const foundIndex = lowerCaseItem.indexOf(char, lastMatchIndex + 1);
233
+ &nbsp;
234
+ if (foundIndex === -1) {
235
+ return null; // Doesn't match
236
+ }
237
+ &nbsp;
238
+ // Bonus if the first query char was matched very early
239
+ if (i === 0) {
240
+ score += Math.max(10, 50 - foundIndex);
241
+ }
242
+ &nbsp;
243
+ // Score bonus for being at the start of a word (separator or camelCase)
244
+ if (
245
+ foundIndex === 0 ||
246
+ ['/', '\\', '_', '-', '.'].includes(lowerCaseItem[foundIndex - 1]) ||
247
+ (/[a-z]/.test(item[foundIndex - 1]) &amp;&amp; /[A-Z]/.test(item[foundIndex]))
248
+ ) {
249
+ score += 15;
250
+ }
251
+ &nbsp;
252
+ // Score bonus for matching case
253
+ if (item[foundIndex] === query[i]) {
254
+ score += 5;
255
+ }
256
+ &nbsp;
257
+ // Score bonus for consecutive matches
258
+ if (lastMatchIndex === foundIndex - 1) {
259
+ consecutiveMatches++;
260
+ score += 20 * consecutiveMatches;
261
+ } else {
262
+ consecutiveMatches = 0;
263
+ }
264
+ &nbsp;
265
+ // Penalty for distance between matches
266
+ score -= foundIndex - (lastMatchIndex + 1);
267
+ &nbsp;
268
+ lastMatchIndex = foundIndex;
269
+ }
270
+ &nbsp;
271
+ // Add a small penalty based on item length to favor shorter matches
272
+ score -= item.length * 0.1;
273
+ &nbsp;
274
+ return { item, score, index };
275
+ })
276
+ .filter(
277
+ (result): result is { item: string; score: number; index: number } =&gt;
278
+ result !== null,
279
+ );
280
+ &nbsp;
281
+ // Sort by score descending, then by original index ascending for stability
282
+ rankedItems.sort((a, b) =&gt; {
283
+ if (a.score !== b.score) {
284
+ return b.score - a.score;
285
+ }
286
+ <span class="cstat-no" title="statement not covered" > return a.index - b.index;</span>
287
+ });
288
+ &nbsp;
289
+ return rankedItems.map((result) =&gt; result.item);
290
+ }
291
+ &nbsp;</pre></td></tr></table></pre>
292
+
293
+ <div class='push'></div><!-- for sticky footer -->
294
+ </div><!-- /wrapper -->
295
+ <div class='footer quiet pad2 space-top1 center small'>
296
+ Code coverage generated by
297
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
298
+ at 2025-09-12T19:21:55.945Z
299
+ </div>
300
+ <script src="../../prettify.js"></script>
301
+ <script>
302
+ window.onload = function () {
303
+ prettyPrint();
304
+ };
305
+ </script>
306
+ <script src="../../sorter.js"></script>
307
+ <script src="../../block-navigation.js"></script>
308
+ </body>
309
+ </html>
310
+