@cardstack/boxel-cli 0.13.0-unstable.4 → 0.13.0-unstable.5

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 (1050) hide show
  1. package/bundled-realms/pretui/components/doc-report.gts +2 -2
  2. package/bundled-realms/pretui/components/doc-report.usage.gts +3 -3
  3. package/bundled-realms/pretui/components/form-field.md +1 -1
  4. package/bundled-realms/pretui/components/icon-button.md +1 -1
  5. package/bundled-realms/pretui/components/popup.md +1 -1
  6. package/bundled-realms/pretui/components/switch.gts +13 -0
  7. package/bundled-realms/pretui/components/switch.md +5 -3
  8. package/bundled-realms/pretui/components/theme-frame.gts +49 -22
  9. package/bundled-realms/pretui/components/tooltip.gts +141 -42
  10. package/bundled-realms/pretui/components/tooltip.md +10 -12
  11. package/bundled-realms/pretui/components/tooltip.usage.gts +3 -5
  12. package/bundled-realms/pretui/docs/structure.md +1 -1
  13. package/bundled-realms/pretui/internal/overlay.gts +4 -2
  14. package/bundled-realms/pretui/pretui-css.gts +6 -2
  15. package/bundled-realms/pretui/theme-scoped-css.gts +262 -0
  16. package/bundled-test-harness/assets/account-switch-failed-test-DwAZq6Sc.js +45 -0
  17. package/bundled-test-harness/assets/adapter-C_6pnsx1.js +2 -0
  18. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-zMYtJWBv.js +112 -0
  19. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-CwhAV-Ow.js +130 -0
  20. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DNgclkGJ.js +46 -0
  21. package/bundled-test-harness/assets/ai-assistant-test-DGYFiRTb.js +2223 -0
  22. package/bundled-test-harness/assets/ai-function-generation-test-Dj6WzKkh.js +1176 -0
  23. package/bundled-test-harness/assets/ai-module-creation-test-EsOoJpQ1.js +151 -0
  24. package/bundled-test-harness/assets/aibot-message-uGaCPn5o.js +1312 -0
  25. package/bundled-test-harness/assets/app-pIzBYfiZ.js +14146 -0
  26. package/bundled-test-harness/assets/apply-markdown-edit-test-CPhfeg1i.js +230 -0
  27. package/bundled-test-harness/assets/ask-user-picker-NVRkhKwt.js +370 -0
  28. package/bundled-test-harness/assets/ask-user-picker-test-SsZqFm9W.js +39 -0
  29. package/bundled-test-harness/assets/assistant-transcript-test-DesuBCIB.js +57 -0
  30. package/bundled-test-harness/assets/audio-metadata-extractor-test-8JM6oZXG.js +1176 -0
  31. package/bundled-test-harness/assets/authed-fetch-test-yPTMe-9V.js +73 -0
  32. package/bundled-test-harness/assets/avif-image-def-test-Kyknj908.js +187 -0
  33. package/bundled-test-harness/assets/basic-test-D9OrrMaq.js +139 -0
  34. package/bundled-test-harness/assets/binary-upload-dedupe-test-Dnxlbbu6.js +308 -0
  35. package/bundled-test-harness/assets/bot-registration-test-Bk2lTaCW.js +97 -0
  36. package/bundled-test-harness/assets/box-test-BbV9sMyU.js +50 -0
  37. package/bundled-test-harness/assets/brand-guide-attachments-test-z4wTsKbI.js +84 -0
  38. package/bundled-test-harness/assets/brand-guide-custom-css-test-BlSJE8xo.js +196 -0
  39. package/bundled-test-harness/assets/brand-guide-edit-test-DJ1OQ6IB.js +140 -0
  40. package/bundled-test-harness/assets/brand-logo-mark-field-test-ux7eetkO.js +86 -0
  41. package/bundled-test-harness/assets/broken-link-template-test-CqB3MWyw.js +192 -0
  42. package/bundled-test-harness/assets/bundled-base-modules-test-B2oNLZSJ.js +54 -0
  43. package/bundled-test-harness/assets/bundled-base-oracle-test-DelPfFjn.js +37 -0
  44. package/bundled-test-harness/assets/buried-stack-item-scroll-test-Ixsl1tS0.js +236 -0
  45. package/bundled-test-harness/assets/button-BvYQm_A1.js +141 -0
  46. package/bundled-test-harness/assets/bxl-cyclic-graph-test-p23WCLRW.js +47 -0
  47. package/bundled-test-harness/assets/bxl-expression-test-CVTQYT_C.js +250 -0
  48. package/bundled-test-harness/assets/bxl-indexing-test-D_A7X2sr.js +212 -0
  49. package/bundled-test-harness/assets/bxl-platform-module-test-Cltfyybp.js +71 -0
  50. package/bundled-test-harness/assets/can-invoke-test-DJi7jMaU.js +455 -0
  51. package/bundled-test-harness/assets/can-read-realm-test-CIz6WX_K.js +56 -0
  52. package/bundled-test-harness/assets/cancel-indexing-job-test-0LlrOgYK.js +69 -0
  53. package/bundled-test-harness/assets/capture-test-diHIWmh0.js +360 -0
  54. package/bundled-test-harness/assets/card-api-test-Ci9b0ghP.js +198 -0
  55. package/bundled-test-harness/assets/card-basics-test-RKQoQWZD.js +5364 -0
  56. package/bundled-test-harness/assets/card-chooser-paging-test-BoUyFMEw.js +235 -0
  57. package/bundled-test-harness/assets/card-chooser-test-7ZwhxxkH.js +393 -0
  58. package/bundled-test-harness/assets/card-context-search-results-KmkXJbmC.js +30 -0
  59. package/bundled-test-harness/assets/card-context-search-results-test-CpMr8OlX.js +184 -0
  60. package/bundled-test-harness/assets/card-def-field-def-relationships-test-ByPl5n55.js +562 -0
  61. package/bundled-test-harness/assets/card-def-menu-items-test-ohuHc0b4.js +228 -0
  62. package/bundled-test-harness/assets/card-delete-test-Be971b-V.js +466 -0
  63. package/bundled-test-harness/assets/card-error-3q1o3i0e.js +72 -0
  64. package/bundled-test-harness/assets/card-error-awaiting-index-test-DPgYKfbF.js +53 -0
  65. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-CVfeJyjt.js +219 -0
  66. package/bundled-test-harness/assets/card-playground-test-D-7bi4PQ.js +1491 -0
  67. package/bundled-test-harness/assets/card-prerender-DemTfK_a.js +12939 -0
  68. package/bundled-test-harness/assets/card-thunk-error-test-DCBh1vRT.js +48 -0
  69. package/bundled-test-harness/assets/card-type-service-test-DXPrfVYk.js +161 -0
  70. package/bundled-test-harness/assets/check-correctness-test-DjE7r1X2.js +1093 -0
  71. package/bundled-test-harness/assets/check-domain-availability-test-U10xSKbY.js +98 -0
  72. package/bundled-test-harness/assets/chip-0r_r9SC8.js +44 -0
  73. package/bundled-test-harness/assets/choreo-Ci5dG5fv.js +2 -0
  74. package/bundled-test-harness/assets/choreo-D1K9RyjM.js +1031 -0
  75. package/bundled-test-harness/assets/choreo-feature-reel-test-vzmW-SFd.js +155 -0
  76. package/bundled-test-harness/assets/choreo-gallery-build-order-test-J6n0_PKm.js +436 -0
  77. package/bundled-test-harness/assets/choreo-gallery-compositor-test-DSi1N9bi.js +399 -0
  78. package/bundled-test-harness/assets/choreo-gallery-cover-test-BT05gNKC.js +214 -0
  79. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-BIuLOZH6.js +133 -0
  80. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-ClGjpnj6.js +42 -0
  81. package/bundled-test-harness/assets/choreo-gallery-drift-test-OjxMXV0Y.js +620 -0
  82. package/bundled-test-harness/assets/choreo-gallery-escort-test-D6VL4FfT.js +187 -0
  83. package/bundled-test-harness/assets/choreo-gallery-films-test-DBcDHGx8.js +140 -0
  84. package/bundled-test-harness/assets/choreo-gallery-filter-test-BUghtJZe.js +46 -0
  85. package/bundled-test-harness/assets/choreo-gallery-fold-test-0D9-_h_I.js +180 -0
  86. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-DS41eNNV.js +114 -0
  87. package/bundled-test-harness/assets/choreo-gallery-guides-test-CZnaxUNJ.js +321 -0
  88. package/bundled-test-harness/assets/choreo-gallery-hang-test-WFvsJ-MJ.js +426 -0
  89. package/bundled-test-harness/assets/choreo-gallery-highlight-test-Dn0hYPLC.js +60 -0
  90. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-C5WvS67s.js +370 -0
  91. package/bundled-test-harness/assets/choreo-gallery-interruption-test-CgT9RKTe.js +176 -0
  92. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-BZgqbTJd.js +104 -0
  93. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CWzXkvbW.js +193 -0
  94. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Dt71t4CU.js +111 -0
  95. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-B_rDq4em.js +127 -0
  96. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-j_cZ9cAM.js +100 -0
  97. package/bundled-test-harness/assets/choreo-gallery-presentation-test-CIFKR65J.js +157 -0
  98. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BvRCiCvB.js +145 -0
  99. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DgO2MBzU.js +89 -0
  100. package/bundled-test-harness/assets/choreo-gallery-sheet-test-BntUKT_P.js +48 -0
  101. package/bundled-test-harness/assets/choreo-gallery-site-test-CvSE6Jyq.js +237 -0
  102. package/bundled-test-harness/assets/choreo-gallery-stage-Dj6tFzon.js +256 -0
  103. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-CkDrAPA8.js +102 -0
  104. package/bundled-test-harness/assets/choreo-gallery-stages-test-DHUmzoRW.js +35 -0
  105. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-BZ9-cDFh.js +138 -0
  106. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-7uP6mZpo.js +144 -0
  107. package/bundled-test-harness/assets/choreo-gallery-theater-test-DgEue9FD.js +252 -0
  108. package/bundled-test-harness/assets/choreo-gallery-tuning-test-CfPx5iCp.js +95 -0
  109. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-o9T2EFKq.js +88 -0
  110. package/bundled-test-harness/assets/choreo-gallery-wires-test-73JLkxn6.js +148 -0
  111. package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
  112. package/bundled-test-harness/assets/clip-CsRtHZiN.js +92 -0
  113. package/bundled-test-harness/assets/clip-CycGr0Lf.js +2 -0
  114. package/bundled-test-harness/assets/code-block-DRE8KQZQ.js +502 -0
  115. package/bundled-test-harness/assets/code-ref-test-CDcqE8_C.js +163 -0
  116. package/bundled-test-harness/assets/code-submode-availability-test-DPTqZYYm.js +198 -0
  117. package/bundled-test-harness/assets/code-submode-test-AHV4mzJ4.js +1839 -0
  118. package/bundled-test-harness/assets/codeblocks-test-D9pbJMK8.js +418 -0
  119. package/bundled-test-harness/assets/codemirror-editor-test-BeAMVivu.js +1512 -0
  120. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bnb7_KUT.js +366 -0
  121. package/bundled-test-harness/assets/color-field-test-CR6gGEqE.js +212 -0
  122. package/bundled-test-harness/assets/compaction-test-BSqAGv4g.js +150 -0
  123. package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
  124. package/bundled-test-harness/assets/container-CEslVSTe.js +10884 -0
  125. package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
  126. package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
  127. package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
  128. package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
  129. package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
  130. package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
  131. package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
  132. package/bundled-test-harness/assets/create-listing-modal-test-DyGlGMWu.js +273 -0
  133. package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
  134. package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
  135. package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
  136. package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
  137. package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
  138. package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
  139. package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
  140. package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
  141. package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
  142. package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
  143. package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
  144. package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
  145. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
  146. package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
  147. package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
  148. package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
  149. package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
  150. package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
  151. package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
  152. package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
  153. package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
  154. package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
  155. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
  156. package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
  157. package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
  158. package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
  159. package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
  160. package/bundled-test-harness/assets/debug-message-test-0hv0RwE_.js +117 -0
  161. package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
  162. package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
  163. package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
  164. package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
  165. package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
  166. package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
  167. package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
  168. package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
  169. package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
  170. package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
  171. package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
  172. package/bundled-test-harness/assets/externals-CDQm-Lm7.js +4393 -0
  173. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DQSiTzvj.js +207 -0
  174. package/bundled-test-harness/assets/fallback-banner-test-CJFKLpOy.js +225 -0
  175. package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
  176. package/bundled-test-harness/assets/fallback-models-test-CiWfmxaB.js +161 -0
  177. package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
  178. package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
  179. package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
  180. package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
  181. package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
  182. package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
  183. package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
  184. package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
  185. package/bundled-test-harness/assets/file-attachment-test-m72-VerW.js +796 -0
  186. package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
  187. package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
  188. package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
  189. package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
  190. package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
  191. package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
  192. package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
  193. package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
  194. package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
  195. package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
  196. package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
  197. package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
  198. package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
  199. package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
  200. package/bundled-test-harness/assets/film-D1E-odYG.js +13 -0
  201. package/bundled-test-harness/assets/film-D25Y0ED6.js +2 -0
  202. package/bundled-test-harness/assets/film-D97U-ydx.js +4074 -0
  203. package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
  204. package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
  205. package/bundled-test-harness/assets/formatted-aibot-message-test-Bdx_-Ktn.js +109 -0
  206. package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
  207. package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
  208. package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
  209. package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
  210. package/bundled-test-harness/assets/general-test-DQuxDvXK.js +923 -0
  211. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
  212. package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
  213. package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
  214. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
  215. package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
  216. package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
  217. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
  218. package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
  219. package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
  220. package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
  221. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-DzPKH76g.js +160 -0
  222. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-D9mlcQuN.js +74 -0
  223. package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
  224. package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
  225. package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
  226. package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
  227. package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
  228. package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
  229. package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
  230. package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
  231. package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
  232. package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
  233. package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
  234. package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
  235. package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
  236. package/bundled-test-harness/assets/index-query-engine-test-BOvxkx07.js +2593 -0
  237. package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
  238. package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
  239. package/bundled-test-harness/assets/instance-filter-matcher-test-COAlkUed.js +788 -0
  240. package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
  241. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
  242. package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
  243. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
  244. package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
  245. package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
  246. package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
  247. package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
  248. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
  249. package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
  250. package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
  251. package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
  252. package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
  253. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
  254. package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
  255. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
  256. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
  257. package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
  258. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
  259. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
  260. package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
  261. package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
  262. package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
  263. package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
  264. package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
  265. package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
  266. package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
  267. package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
  268. package/bundled-test-harness/assets/main-DUKPWRts.js +5 -0
  269. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
  270. package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
  271. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
  272. package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
  273. package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
  274. package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
  275. package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
  276. package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
  277. package/bundled-test-harness/assets/markdown-preview-Df5fp1SY.js +72 -0
  278. package/bundled-test-harness/assets/markdown-preview-test-DDaPzsVs.js +238 -0
  279. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
  280. package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
  281. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
  282. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
  283. package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
  284. package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
  285. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
  286. package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
  287. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
  288. package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
  289. package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
  290. package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
  291. package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
  292. package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
  293. package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
  294. package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
  295. package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
  296. package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
  297. package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
  298. package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
  299. package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
  300. package/bundled-test-harness/assets/model-cost-tier-test-CZlu1zww.js +174 -0
  301. package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
  302. package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
  303. package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
  304. package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
  305. package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
  306. package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
  307. package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
  308. package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
  309. package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
  310. package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
  311. package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
  312. package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
  313. package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
  314. package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
  315. package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
  316. package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
  317. package/bundled-test-harness/assets/operation-lowering-test-CKkamOQt.js +2957 -0
  318. package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
  319. package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
  320. package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
  321. package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
  322. package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
  323. package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
  324. package/bundled-test-harness/assets/operator-mode-card-chooser-test-CQ1v8med.js +1036 -0
  325. package/bundled-test-harness/assets/operator-mode-links-test-BMHEauS3.js +797 -0
  326. package/bundled-test-harness/assets/operator-mode-test-blL_JVF8.js +696 -0
  327. package/bundled-test-harness/assets/operator-mode-ui-test-BG6I7-Hc.js +1045 -0
  328. package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
  329. package/bundled-test-harness/assets/overlay-menu-items-test-D-zmRQQ0.js +331 -0
  330. package/bundled-test-harness/assets/overlays-COinwHCP.js +2 -0
  331. package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
  332. package/bundled-test-harness/assets/overlays-nTqcu69K.js +75 -0
  333. package/bundled-test-harness/assets/panel-D9SEMehG.js +15124 -0
  334. package/bundled-test-harness/assets/past-sessions-test-De9N4wVX.js +321 -0
  335. package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
  336. package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
  337. package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
  338. package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
  339. package/bundled-test-harness/assets/permission-checking-realm-test-OBzvhDB_.js +306 -0
  340. package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
  341. package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
  342. package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
  343. package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
  344. package/bundled-test-harness/assets/plate-DAr_pvwC.js +41 -0
  345. package/bundled-test-harness/assets/plate-DeoQd99m.js +2 -0
  346. package/bundled-test-harness/assets/player-BvXGBItd.js +2 -0
  347. package/bundled-test-harness/assets/player-CAVQUyKk.js +82 -0
  348. package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
  349. package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
  350. package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
  351. package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
  352. package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
  353. package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
  354. package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
  355. package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
  356. package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
  357. package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
  358. package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
  359. package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
  360. package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
  361. package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
  362. package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
  363. package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
  364. package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
  365. package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
  366. package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
  367. package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
  368. package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
  369. package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
  370. package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
  371. package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
  372. package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
  373. package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
  374. package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
  375. package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
  376. package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
  377. package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
  378. package/bundled-test-harness/assets/quick-look-test-icQwb1NJ.js +139 -0
  379. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
  380. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
  381. package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
  382. package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
  383. package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
  384. package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
  385. package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
  386. package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
  387. package/bundled-test-harness/assets/realm-api-keys-test-gtJ8XZCE.js +109 -0
  388. package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
  389. package/bundled-test-harness/assets/realm-config-policy-standing-test-CXJ4ZMde.js +290 -0
  390. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-DoEunShH.js +274 -0
  391. package/bundled-test-harness/assets/realm-config-settings-test-BYi9i4O6.js +187 -0
  392. package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
  393. package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
  394. package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
  395. package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
  396. package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
  397. package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
  398. package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
  399. package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
  400. package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
  401. package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
  402. package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
  403. package/bundled-test-harness/assets/reasoning-test-WUx-4agu.js +221 -0
  404. package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
  405. package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
  406. package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
  407. package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
  408. package/bundled-test-harness/assets/rendered-markdown-B_jWmDrK.js +292 -0
  409. package/bundled-test-harness/assets/rendered-markdown-test-sdWhU0NA.js +587 -0
  410. package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
  411. package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
  412. package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
  413. package/bundled-test-harness/assets/room-message-test-BYNhZ39n.js +484 -0
  414. package/bundled-test-harness/assets/run-FzaqmBEl.js +3959 -0
  415. package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
  416. package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
  417. package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
  418. package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
  419. package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
  420. package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
  421. package/bundled-test-harness/assets/scrolling-test-Dd4gv_fj.js +412 -0
  422. package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
  423. package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
  424. package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
  425. package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
  426. package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
  427. package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
  428. package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
  429. package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
  430. package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
  431. package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
  432. package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
  433. package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
  434. package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
  435. package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
  436. package/bundled-test-harness/assets/searchable-option-test-eJaIPH_L.js +322 -0
  437. package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
  438. package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
  439. package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
  440. package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
  441. package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
  442. package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
  443. package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
  444. package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
  445. package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
  446. package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
  447. package/bundled-test-harness/assets/sending-test-Dt9Dh2wW.js +659 -0
  448. package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
  449. package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
  450. package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
  451. package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
  452. package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
  453. package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
  454. package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
  455. package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
  456. package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
  457. package/bundled-test-harness/assets/skills-test-BP8QNesE.js +648 -0
  458. package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
  459. package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
  460. package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
  461. package/bundled-test-harness/assets/src-LqENIikj.js +5 -0
  462. package/bundled-test-harness/assets/src-a4d10Hra.js +216 -0
  463. package/bundled-test-harness/assets/stick-to-bottom-resize-test-BBLiCR3X.js +56 -0
  464. package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
  465. package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
  466. package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
  467. package/bundled-test-harness/assets/store-test-Dd4WQp7L.js +3672 -0
  468. package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
  469. package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
  470. package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
  471. package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
  472. package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
  473. package/bundled-test-harness/assets/test-support-QTh6wGxu.js +3 -0
  474. package/bundled-test-harness/assets/test-support-Tr-PYFgc.js +99 -0
  475. package/bundled-test-harness/assets/tests-zLlwPutr.js +3598 -0
  476. package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
  477. package/bundled-test-harness/assets/text-input-validator-test-C1uDVZU7.js +156 -0
  478. package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
  479. package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
  480. package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
  481. package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
  482. package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
  483. package/bundled-test-harness/assets/titles-0a1luoTq.js +52 -0
  484. package/bundled-test-harness/assets/titles-DKHNLVwC.js +2 -0
  485. package/bundled-test-harness/assets/to-device-streaming-test-3A6jI0_r.js +163 -0
  486. package/bundled-test-harness/assets/token-usage-test-33ovcqPk.js +160 -0
  487. package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
  488. package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
  489. package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
  490. package/bundled-test-harness/assets/tools-test-DtUQp5ez.js +3204 -0
  491. package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
  492. package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
  493. package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
  494. package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
  495. package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
  496. package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
  497. package/bundled-test-harness/assets/turn-settling-test-DqYk312r.js +160 -0
  498. package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
  499. package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
  500. package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
  501. package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
  502. package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
  503. package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
  504. package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
  505. package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
  506. package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
  507. package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
  508. package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
  509. package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
  510. package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
  511. package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
  512. package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
  513. package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
  514. package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
  515. package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
  516. package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
  517. package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
  518. package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
  519. package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
  520. package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
  521. package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
  522. package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
  523. package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
  524. package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
  525. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  526. package/bundled-test-harness/index.html +47 -47
  527. package/bundled-test-harness/tests/index.html +49 -49
  528. package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
  529. package/bundled-types/choreo/choreo.gts +13 -1
  530. package/bundled-types/choreo/run.ts +19 -0
  531. package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
  532. package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
  533. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
  534. package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
  535. package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
  536. package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
  537. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
  538. package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
  539. package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
  540. package/bundled-types/host-app/services/host-mode-service.ts +39 -0
  541. package/bundled-types/host-app/services/realm.ts +14 -0
  542. package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
  543. package/package.json +1 -1
  544. package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
  545. package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
  546. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
  547. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
  548. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
  549. package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
  550. package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
  551. package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
  552. package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
  553. package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
  554. package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
  555. package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
  556. package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
  557. package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
  558. package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
  559. package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
  560. package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
  561. package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
  562. package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
  563. package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
  564. package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
  565. package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
  566. package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
  567. package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
  568. package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
  569. package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
  570. package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
  571. package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
  572. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
  573. package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
  574. package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
  575. package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
  576. package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
  577. package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
  578. package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
  579. package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
  580. package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
  581. package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
  582. package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
  583. package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
  584. package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
  585. package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
  586. package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
  587. package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
  588. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
  589. package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
  590. package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
  591. package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
  592. package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
  593. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
  594. package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
  595. package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
  596. package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
  597. package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
  598. package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
  599. package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
  600. package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
  601. package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
  602. package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
  603. package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
  604. package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
  605. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
  606. package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
  607. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
  608. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
  609. package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
  610. package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
  611. package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
  612. package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
  613. package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
  614. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
  615. package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
  616. package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
  617. package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
  618. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
  619. package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
  620. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
  621. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
  622. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
  623. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
  624. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
  625. package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
  626. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
  627. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
  628. package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
  629. package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
  630. package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
  631. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
  632. package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
  633. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
  634. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
  635. package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
  636. package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
  637. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
  638. package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
  639. package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
  640. package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
  641. package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
  642. package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
  643. package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
  644. package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
  645. package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
  646. package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
  647. package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
  648. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
  649. package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
  650. package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
  651. package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
  652. package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
  653. package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
  654. package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
  655. package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
  656. package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
  657. package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
  658. package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
  659. package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
  660. package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
  661. package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
  662. package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
  663. package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
  664. package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
  665. package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
  666. package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
  667. package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
  668. package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
  669. package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
  670. package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
  671. package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
  672. package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
  673. package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
  674. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
  675. package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
  676. package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
  677. package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
  678. package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
  679. package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
  680. package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
  681. package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
  682. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
  683. package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
  684. package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
  685. package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
  686. package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
  687. package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
  688. package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
  689. package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
  690. package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
  691. package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
  692. package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
  693. package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
  694. package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
  695. package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
  696. package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
  697. package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
  698. package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
  699. package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
  700. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
  701. package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
  702. package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
  703. package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
  704. package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
  705. package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
  706. package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
  707. package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
  708. package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
  709. package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
  710. package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
  711. package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
  712. package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
  713. package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
  714. package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
  715. package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
  716. package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
  717. package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
  718. package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
  719. package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
  720. package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
  721. package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
  722. package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
  723. package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
  724. package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
  725. package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
  726. package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
  727. package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
  728. package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
  729. package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
  730. package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
  731. package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
  732. package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
  733. package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
  734. package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
  735. package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
  736. package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
  737. package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
  738. package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
  739. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
  740. package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
  741. package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
  742. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
  743. package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
  744. package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
  745. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
  746. package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
  747. package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
  748. package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
  749. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
  750. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
  751. package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
  752. package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
  753. package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
  754. package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
  755. package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
  756. package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
  757. package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
  758. package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
  759. package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
  760. package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
  761. package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
  762. package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
  763. package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
  764. package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
  765. package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
  766. package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
  767. package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
  768. package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
  769. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
  770. package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
  771. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
  772. package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
  773. package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
  774. package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
  775. package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
  776. package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
  777. package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
  778. package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
  779. package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
  780. package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
  781. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
  782. package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
  783. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
  784. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
  785. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
  786. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
  787. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
  788. package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
  789. package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
  790. package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
  791. package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
  792. package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
  793. package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
  794. package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
  795. package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
  796. package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
  797. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
  798. package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
  799. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
  800. package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
  801. package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
  802. package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
  803. package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
  804. package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
  805. package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
  806. package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
  807. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
  808. package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
  809. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
  810. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
  811. package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
  812. package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
  813. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
  814. package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
  815. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
  816. package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
  817. package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
  818. package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
  819. package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
  820. package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
  821. package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
  822. package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
  823. package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
  824. package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
  825. package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
  826. package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
  827. package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
  828. package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
  829. package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
  830. package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
  831. package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
  832. package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
  833. package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
  834. package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
  835. package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
  836. package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
  837. package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
  838. package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
  839. package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
  840. package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
  841. package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
  842. package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
  843. package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
  844. package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
  845. package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
  846. package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
  847. package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
  848. package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
  849. package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
  850. package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
  851. package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
  852. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
  853. package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
  854. package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
  855. package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
  856. package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
  857. package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
  858. package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
  859. package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
  860. package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
  861. package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
  862. package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
  863. package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
  864. package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
  865. package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
  866. package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
  867. package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
  868. package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
  869. package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
  870. package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
  871. package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
  872. package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
  873. package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
  874. package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
  875. package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
  876. package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
  877. package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
  878. package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
  879. package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
  880. package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
  881. package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
  882. package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
  883. package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
  884. package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
  885. package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
  886. package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
  887. package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
  888. package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
  889. package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
  890. package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
  891. package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
  892. package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
  893. package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
  894. package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
  895. package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
  896. package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
  897. package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
  898. package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
  899. package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
  900. package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
  901. package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
  902. package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
  903. package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
  904. package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
  905. package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
  906. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
  907. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
  908. package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
  909. package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
  910. package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
  911. package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
  912. package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
  913. package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
  914. package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
  915. package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
  916. package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
  917. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
  918. package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
  919. package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
  920. package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
  921. package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
  922. package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
  923. package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
  924. package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
  925. package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
  926. package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
  927. package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
  928. package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
  929. package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
  930. package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
  931. package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
  932. package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
  933. package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
  934. package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
  935. package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
  936. package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
  937. package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
  938. package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
  939. package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
  940. package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
  941. package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
  942. package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
  943. package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
  944. package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
  945. package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
  946. package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
  947. package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
  948. package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
  949. package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
  950. package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
  951. package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
  952. package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
  953. package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
  954. package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
  955. package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
  956. package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
  957. package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
  958. package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
  959. package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
  960. package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
  961. package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
  962. package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
  963. package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
  964. package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
  965. package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
  966. package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
  967. package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
  968. package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
  969. package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
  970. package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
  971. package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
  972. package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
  973. package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
  974. package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
  975. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
  976. package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
  977. package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
  978. package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
  979. package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
  980. package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
  981. package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
  982. package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
  983. package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
  984. package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
  985. package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
  986. package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
  987. package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
  988. package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
  989. package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
  990. package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
  991. package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
  992. package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
  993. package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
  994. package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
  995. package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
  996. package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
  997. package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
  998. package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
  999. package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
  1000. package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
  1001. package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
  1002. package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
  1003. package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
  1004. package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
  1005. package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
  1006. package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
  1007. package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
  1008. package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
  1009. package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
  1010. package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
  1011. package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
  1012. package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
  1013. package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
  1014. package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
  1015. package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
  1016. package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
  1017. package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
  1018. package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
  1019. package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
  1020. package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
  1021. package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
  1022. package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
  1023. package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
  1024. package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
  1025. package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
  1026. package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
  1027. package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
  1028. package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
  1029. package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
  1030. package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
  1031. package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
  1032. package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
  1033. package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
  1034. package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
  1035. package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
  1036. package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
  1037. package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
  1038. package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
  1039. package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
  1040. package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
  1041. package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
  1042. package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
  1043. package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
  1044. package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
  1045. package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
  1046. package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
  1047. package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
  1048. package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
  1049. package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
  1050. package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
@@ -1,2593 +0,0 @@
1
- import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
- import { Br as testRealmURL, Fa as maybeHandleScopedCSSRequest, Go as identifyCard, Ka as VirtualNetwork, Ls as wrapper_default, Os as FilterRefersToNonexistentTypeError, Ys as Loader, Za as fetcher, ba as isFilterRefersToNonsearchableFieldError, l as internalKeyFor, un as format, va as IndexQueryEngine, wa as jobStagingId, ws as getFieldDefinitions } from "./runtime-common-BTaLJEw-.js";
4
- import { T as rri } from "./paths-C9-NYXnM.js";
5
- import { O as baseRealm, it as baseRealmRRI } from "./constants-Icc0nFW-.js";
6
- import { t as config } from "./environment-DIUJgBKt.js";
7
- import { t as shimExternals } from "./externals-B02-sD_L.js";
8
- import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
9
- import { Mt as tagTestModuleExports, at as setupIndex, b as getDbAdapter, it as serializeCard, rt as getTypes } from "./mock-matrix-Dd8k0DNa.js";
10
- import { t as p } from "./helpers-DhyRg69S.js";
11
- //#region tests/unit/index-query-engine-test.ts
12
- var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
13
- var cardApi;
14
- var string;
15
- var date;
16
- var number;
17
- var boolean;
18
- var codeRef;
19
- var { resolvedBaseRealmURL } = config;
20
- (0, import_qunit.module)("Unit | query", function(hooks) {
21
- let dbAdapter;
22
- let indexQueryEngine;
23
- let loader;
24
- let testCards = {};
25
- let virtualNetwork;
26
- hooks.before(async function() {
27
- dbAdapter = await getDbAdapter();
28
- });
29
- hooks.beforeEach(async function() {
30
- virtualNetwork = new VirtualNetwork();
31
- virtualNetwork.addURLMapping(new URL(baseRealm.url), new URL(resolvedBaseRealmURL));
32
- virtualNetwork.addRealmMapping("@cardstack/base/", resolvedBaseRealmURL);
33
- virtualNetwork.addImportMap("@cardstack/boxel-icons/", (rest) => {
34
- return `${config.iconsURL}/@cardstack/boxel-icons/v1/icons/${rest}.js`;
35
- });
36
- shimExternals(virtualNetwork);
37
- loader = new Loader(fetcher(virtualNetwork.fetch, [async (req, next) => {
38
- return await maybeHandleScopedCSSRequest(req) || next(req);
39
- }]), virtualNetwork.resolveImport, { virtualNetwork });
40
- cardApi = await loader.import("@cardstack/base/card-api");
41
- string = await loader.import("@cardstack/base/string");
42
- date = await loader.import("@cardstack/base/date");
43
- number = await loader.import("@cardstack/base/number");
44
- boolean = await loader.import("@cardstack/base/boolean");
45
- codeRef = await loader.import("@cardstack/base/code-ref");
46
- let { field, contains, containsMany, linksToMany, linksTo, CardDef, FieldDef, setCardAsSavedForTest } = cardApi;
47
- let { default: StringField } = string;
48
- let { default: CodeRefField } = codeRef;
49
- let { default: DateField } = date;
50
- let { default: NumberField } = number;
51
- let { default: BooleanField } = boolean;
52
- class Address extends FieldDef {
53
- static {
54
- decorateFieldV2(this.prototype, "street", [field], function() {
55
- return contains(StringField);
56
- });
57
- }
58
- #street = (initializeDeferredDecorator(this, "street"), void 0);
59
- static {
60
- decorateFieldV2(this.prototype, "city", [field], function() {
61
- return contains(StringField);
62
- });
63
- }
64
- #city = (initializeDeferredDecorator(this, "city"), void 0);
65
- static {
66
- decorateFieldV2(this.prototype, "number", [field], function() {
67
- return contains(NumberField);
68
- });
69
- }
70
- #number = (initializeDeferredDecorator(this, "number"), void 0);
71
- }
72
- class Person extends CardDef {
73
- static {
74
- decorateFieldV2(this.prototype, "name", [field], function() {
75
- return contains(StringField);
76
- });
77
- }
78
- #name = (initializeDeferredDecorator(this, "name"), void 0);
79
- static {
80
- decorateFieldV2(this.prototype, "nickNames", [field], function() {
81
- return containsMany(StringField);
82
- });
83
- }
84
- #nickNames = (initializeDeferredDecorator(this, "nickNames"), void 0);
85
- static {
86
- decorateFieldV2(this.prototype, "address", [field], function() {
87
- return contains(Address);
88
- });
89
- }
90
- #address = (initializeDeferredDecorator(this, "address"), void 0);
91
- static {
92
- decorateFieldV2(this.prototype, "bestFriend", [field], function() {
93
- return linksTo(() => Person, { searchable: "friends" });
94
- });
95
- }
96
- #bestFriend = (initializeDeferredDecorator(this, "bestFriend"), void 0);
97
- static {
98
- decorateFieldV2(this.prototype, "friends", [field], function() {
99
- return linksToMany(() => Person, { searchable: "bestFriend" });
100
- });
101
- }
102
- #friends = (initializeDeferredDecorator(this, "friends"), void 0);
103
- static {
104
- decorateFieldV2(this.prototype, "age", [field], function() {
105
- return contains(NumberField);
106
- });
107
- }
108
- #age = (initializeDeferredDecorator(this, "age"), void 0);
109
- static {
110
- decorateFieldV2(this.prototype, "isHairy", [field], function() {
111
- return contains(BooleanField);
112
- });
113
- }
114
- #isHairy = (initializeDeferredDecorator(this, "isHairy"), void 0);
115
- static {
116
- decorateFieldV2(this.prototype, "lotteryNumbers", [field], function() {
117
- return containsMany(NumberField);
118
- });
119
- }
120
- #lotteryNumbers = (initializeDeferredDecorator(this, "lotteryNumbers"), void 0);
121
- }
122
- class FancyPerson extends Person {
123
- static {
124
- decorateFieldV2(this.prototype, "favoriteColor", [field], function() {
125
- return contains(StringField);
126
- });
127
- }
128
- #favoriteColor = (initializeDeferredDecorator(this, "favoriteColor"), void 0);
129
- }
130
- class Cat extends CardDef {
131
- static {
132
- decorateFieldV2(this.prototype, "name", [field], function() {
133
- return contains(StringField);
134
- });
135
- }
136
- #name = (initializeDeferredDecorator(this, "name"), void 0);
137
- }
138
- class SimpleSpec extends CardDef {
139
- static {
140
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
141
- return contains(StringField);
142
- });
143
- }
144
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
145
- static {
146
- decorateFieldV2(this.prototype, "ref", [field], function() {
147
- return contains(CodeRefField);
148
- });
149
- }
150
- #ref = (initializeDeferredDecorator(this, "ref"), void 0);
151
- }
152
- class Event extends CardDef {
153
- static {
154
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
155
- return contains(StringField);
156
- });
157
- }
158
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
159
- static {
160
- decorateFieldV2(this.prototype, "venue", [field], function() {
161
- return contains(StringField);
162
- });
163
- }
164
- #venue = (initializeDeferredDecorator(this, "venue"), void 0);
165
- static {
166
- decorateFieldV2(this.prototype, "date", [field], function() {
167
- return contains(DateField);
168
- });
169
- }
170
- #date = (initializeDeferredDecorator(this, "date"), void 0);
171
- }
172
- class Org extends CardDef {
173
- static {
174
- decorateFieldV2(this.prototype, "name", [field], function() {
175
- return contains(StringField);
176
- });
177
- }
178
- #name = (initializeDeferredDecorator(this, "name"), void 0);
179
- static {
180
- decorateFieldV2(this.prototype, "headquarters", [field], function() {
181
- return linksTo(() => Person, { searchable: true });
182
- });
183
- }
184
- #headquarters = (initializeDeferredDecorator(this, "headquarters"), void 0);
185
- static {
186
- decorateFieldV2(this.prototype, "ceo", [field], function() {
187
- return linksTo(() => Person);
188
- });
189
- }
190
- #ceo = (initializeDeferredDecorator(this, "ceo"), void 0);
191
- static {
192
- decorateFieldV2(this.prototype, "staff", [field], function() {
193
- return linksToMany(() => Person);
194
- });
195
- }
196
- #staff = (initializeDeferredDecorator(this, "staff"), void 0);
197
- static {
198
- decorateFieldV2(this.prototype, "matchingPeople", [field], function() {
199
- return linksToMany(() => Person, { query: {
200
- filter: { eq: { name: "match" } },
201
- page: {
202
- size: 10,
203
- number: 0
204
- }
205
- } });
206
- });
207
- }
208
- #matchingPeople = (initializeDeferredDecorator(this, "matchingPeople"), void 0);
209
- }
210
- tagTestModuleExports(`${testRealmURL}address`, { Address });
211
- tagTestModuleExports(`${testRealmURL}person`, { Person });
212
- tagTestModuleExports(`${testRealmURL}fancy-person`, { FancyPerson });
213
- tagTestModuleExports(`${testRealmURL}cat`, { Cat });
214
- tagTestModuleExports(`${testRealmURL}spec`, { SimpleSpec });
215
- tagTestModuleExports(`${testRealmURL}event`, { Event });
216
- tagTestModuleExports(`${testRealmURL}org`, { Org });
217
- let stringFieldEntry = new SimpleSpec({
218
- cardTitle: "String Field",
219
- ref: {
220
- module: `${baseRealmRRI}string`,
221
- name: "default"
222
- }
223
- });
224
- let numberFieldEntry = new SimpleSpec({
225
- cardTitle: "Number Field",
226
- ref: {
227
- module: `${baseRealmRRI}number`,
228
- name: "default"
229
- }
230
- });
231
- let ringo = new Person({
232
- name: "Ringo",
233
- address: new Address({
234
- street: "100 Treat Street",
235
- city: "Waggington"
236
- })
237
- });
238
- let vangogh = new Person({
239
- name: "Van Gogh",
240
- address: new Address({
241
- street: "456 Grand Blvd",
242
- city: "Barksville"
243
- }),
244
- bestFriend: ringo,
245
- friends: [ringo]
246
- });
247
- testCards = {
248
- mango: new FancyPerson({
249
- name: "Mango",
250
- address: new Address({
251
- street: "123 Main Street",
252
- city: "Barksville"
253
- }),
254
- bestFriend: vangogh,
255
- friends: [vangogh, ringo]
256
- }),
257
- vangogh,
258
- ringo,
259
- paper: new Cat({ name: "Paper" }),
260
- mangoBirthday: new Event({
261
- cardTitle: "Mango's Birthday",
262
- venue: "Dog Park",
263
- date: p("2024-10-30")
264
- }),
265
- vangoghBirthday: new Event({
266
- cardTitle: "Van Gogh's Birthday",
267
- venue: "Backyard",
268
- date: p("2024-11-19")
269
- }),
270
- stringFieldEntry,
271
- numberFieldEntry
272
- };
273
- for (let [name, card] of Object.entries(testCards)) {
274
- card.id = rri(`${testRealmURL}${name}`);
275
- setCardAsSavedForTest(card);
276
- }
277
- let api = await loader.import("@cardstack/base/card-api");
278
- async function buildDefinition(cardDef) {
279
- let { fields, fieldDefs } = getFieldDefinitions(api, cardDef);
280
- return {
281
- codeRef: identifyCard(cardDef),
282
- displayName: cardDef.displayName,
283
- fields,
284
- fieldDefs
285
- };
286
- }
287
- await dbAdapter.reset();
288
- indexQueryEngine = new IndexQueryEngine(dbAdapter, {
289
- async lookupDefinition(codeRef) {
290
- switch (internalKeyFor(codeRef, void 0, virtualNetwork)) {
291
- case `${testRealmURL}address/Address`: return await buildDefinition(Address);
292
- case `${testRealmURL}person/Person`: return await buildDefinition(Person);
293
- case `${testRealmURL}fancy-person/FancyPerson`: return await buildDefinition(FancyPerson);
294
- case `${testRealmURL}cat/Cat`: return await buildDefinition(Cat);
295
- case `${testRealmURL}spec/SimpleSpec`: return await buildDefinition(SimpleSpec);
296
- case `${testRealmURL}event/Event`: return await buildDefinition(Event);
297
- case `${testRealmURL}org/Org`: return await buildDefinition(Org);
298
- default: throw new FilterRefersToNonexistentTypeError(codeRef, { cause: `Definition for ${wrapper_default(codeRef)} not found` });
299
- }
300
- },
301
- async lookupDefinitionEntry() {
302
- throw new Error("lookupDefinitionEntry is not used by these tests");
303
- },
304
- async lookupCachedDefinition() {},
305
- async invalidate(_realmURL) {
306
- return [];
307
- },
308
- async clearRealmDefinitions(_realmURL) {},
309
- async getCachedDefinitions() {},
310
- async populateDefinitionCacheEntry() {},
311
- async getCachedDefinitionsBatch() {
312
- return {};
313
- },
314
- registerRealm() {},
315
- async clearAllDefinitions() {},
316
- forRealm() {
317
- return this;
318
- }
319
- }, virtualNetwork);
320
- });
321
- (0, import_qunit.test)("can get all cards with empty filter", async function(assert) {
322
- let { mango, vangogh, paper } = testCards;
323
- await setupIndex(dbAdapter, [
324
- mango,
325
- vangogh,
326
- paper
327
- ]);
328
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {});
329
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
330
- assert.deepEqual(results, [
331
- await serializeCard(mango),
332
- await serializeCard(paper),
333
- await serializeCard(vangogh)
334
- ], "results are correct");
335
- });
336
- (0, import_qunit.test)("deleted cards are not included in results", async function(assert) {
337
- let { mango, vangogh, paper } = testCards;
338
- await setupIndex(dbAdapter, [
339
- {
340
- card: mango,
341
- data: { is_deleted: false }
342
- },
343
- {
344
- card: vangogh,
345
- data: { is_deleted: null }
346
- },
347
- {
348
- card: paper,
349
- data: { is_deleted: true }
350
- }
351
- ]);
352
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {});
353
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
354
- });
355
- (0, import_qunit.test)("error docs are not included in results", async function(assert) {
356
- let { mango, vangogh } = testCards;
357
- await setupIndex(dbAdapter, [
358
- {
359
- url: `${testRealmURL}1.json`,
360
- type: "instance",
361
- has_error: true,
362
- generation: 1,
363
- realm_url: testRealmURL,
364
- pristine_doc: void 0,
365
- types: [],
366
- error_doc: {
367
- message: "test error",
368
- status: 500,
369
- additionalErrors: []
370
- }
371
- },
372
- {
373
- url: `${testRealmURL}mango.json`,
374
- type: "instance",
375
- generation: 1,
376
- realm_url: testRealmURL,
377
- pristine_doc: await serializeCard(mango),
378
- types: await getTypes(mango),
379
- error_doc: void 0
380
- },
381
- {
382
- url: `${testRealmURL}vangogh.json`,
383
- type: "instance",
384
- generation: 1,
385
- realm_url: testRealmURL,
386
- pristine_doc: await serializeCard(vangogh),
387
- types: await getTypes(vangogh),
388
- error_doc: void 0
389
- }
390
- ]);
391
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {});
392
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
393
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
394
- });
395
- (0, import_qunit.test)("can filter by type", async function(assert) {
396
- let { mango, vangogh, paper } = testCards;
397
- await setupIndex(dbAdapter, [
398
- mango,
399
- vangogh,
400
- paper
401
- ]);
402
- let type = await personCardType(testCards);
403
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { type } });
404
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
405
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
406
- });
407
- (0, import_qunit.test)("not: { type } genuinely excludes rows whose types chain contains the ref", async function(assert) {
408
- let { paper } = testCards;
409
- await setupIndex(dbAdapter, [
410
- testCards.mango,
411
- testCards.vangogh,
412
- paper
413
- ]);
414
- let personType = await personCardType(testCards);
415
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { not: { type: personType } } });
416
- assert.strictEqual(meta.page.total, 1, "only the non-Person card remains");
417
- assert.deepEqual(getIds(results), [paper.id], "the Cat is kept; both Person-chain cards are excluded");
418
- });
419
- (0, import_qunit.test)("every: [{ type: A }, { type: B }] is an intersection, satisfiable within one chain", async function(assert) {
420
- let { mango, ringo } = testCards;
421
- await setupIndex(dbAdapter, [mango, ringo]);
422
- let personType = await personCardType(testCards);
423
- let fancyType = internalKeyToCodeRef([...await getTypes(mango)].shift());
424
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { every: [{ type: fancyType }, { type: personType }] } });
425
- assert.strictEqual(meta.page.total, 1, "the intersection matches one card");
426
- assert.deepEqual(getIds(results), [mango.id], "only the FancyPerson");
427
- });
428
- (0, import_qunit.test)("a type filter spelled with the base realm alias matches a canonically-keyed row", async function(assert) {
429
- await setupIndex(dbAdapter, [{
430
- url: `${testRealmURL}vangogh.json`,
431
- file_alias: `${testRealmURL}vangogh`,
432
- type: "instance",
433
- generation: 1,
434
- realm_url: testRealmURL,
435
- deps: [],
436
- types: [`${baseRealmRRI}card-api/CardDef`],
437
- last_modified: "1",
438
- resource_created_at: "1"
439
- }]);
440
- for (let [label, module] of [["prefix form", `${baseRealmRRI}card-api`], ["alias URL form", "https://cardstack.com/base/card-api"]]) {
441
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { type: {
442
- module,
443
- name: "CardDef"
444
- } } });
445
- assert.strictEqual(meta.page.total, 1, `a filter in ${label} matches the canonically-keyed row`);
446
- }
447
- });
448
- (0, import_qunit.test)("{ type: baseRef } matches every card instance (BaseDef terminates the chain)", async function(assert) {
449
- let { mango, paper } = testCards;
450
- await setupIndex(dbAdapter, [mango, paper]);
451
- let baseType = internalKeyToCodeRef([...await getTypes(mango)].pop());
452
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { type: baseType } });
453
- assert.strictEqual(meta.page.total, 2, "both cards match BaseDef");
454
- assert.deepEqual(getIds(results), [mango.id, paper.id]);
455
- });
456
- (0, import_qunit.test)(`can filter using 'eq'`, async function(assert) {
457
- let { mango, vangogh, paper } = testCards;
458
- await setupIndex(dbAdapter, [
459
- {
460
- card: mango,
461
- data: { search_doc: { name: "Mango" } }
462
- },
463
- {
464
- card: vangogh,
465
- data: { search_doc: { name: "Van Gogh" } }
466
- },
467
- {
468
- card: paper,
469
- data: { search_doc: { name: "Mango" } }
470
- }
471
- ]);
472
- let type = await personCardType(testCards);
473
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
474
- eq: { name: "Mango" },
475
- on: type
476
- } });
477
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
478
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
479
- });
480
- (0, import_qunit.test)(`can filter using 'eq' thru nested fields`, async function(assert) {
481
- let { mango, vangogh, ringo } = testCards;
482
- await setupIndex(dbAdapter, [
483
- {
484
- card: mango,
485
- data: { search_doc: {
486
- name: "Mango",
487
- address: {
488
- street: "123 Main Street",
489
- city: "Barksville"
490
- }
491
- } }
492
- },
493
- {
494
- card: vangogh,
495
- data: { search_doc: {
496
- name: "Van Gogh",
497
- address: {
498
- street: "456 Grand Blvd",
499
- city: "Barksville"
500
- }
501
- } }
502
- },
503
- {
504
- card: ringo,
505
- data: { search_doc: {
506
- name: "Ringo",
507
- address: {
508
- street: "100 Treat Street",
509
- city: "Waggington"
510
- }
511
- } }
512
- }
513
- ]);
514
- let type = await personCardType(testCards);
515
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
516
- on: type,
517
- eq: { "address.city": "Barksville" }
518
- } });
519
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
520
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
521
- });
522
- (0, import_qunit.test)(`can use 'eq' to match multiple fields`, async function(assert) {
523
- let { mango, vangogh } = testCards;
524
- await setupIndex(dbAdapter, [{
525
- card: mango,
526
- data: { search_doc: {
527
- name: "Mango",
528
- nickNames: ["Mang Mang", "Baby"]
529
- } }
530
- }, {
531
- card: vangogh,
532
- data: { search_doc: {
533
- name: "Van Gogh",
534
- nickNames: ["Big boy", "Farty"]
535
- } }
536
- }]);
537
- let type = await personCardType(testCards);
538
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
539
- on: type,
540
- eq: {
541
- name: "Van Gogh",
542
- nickNames: "Farty"
543
- }
544
- } });
545
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
546
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
547
- });
548
- (0, import_qunit.test)(`can use 'eq' to find 'null' values`, async function(assert) {
549
- let { mango, vangogh, ringo } = testCards;
550
- await setupIndex(dbAdapter, [
551
- {
552
- card: mango,
553
- data: { search_doc: { name: "Mango" } }
554
- },
555
- {
556
- card: vangogh,
557
- data: { search_doc: { name: "Van Gogh" } }
558
- },
559
- {
560
- card: ringo,
561
- data: { search_doc: { name: null } }
562
- }
563
- ]);
564
- let type = await personCardType(testCards);
565
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
566
- on: type,
567
- eq: { name: null }
568
- } });
569
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
570
- assert.deepEqual(getIds(results), [ringo.id], "results are correct");
571
- });
572
- (0, import_qunit.test)(`can use 'eq' to match against number type`, async function(assert) {
573
- let { mango, vangogh } = testCards;
574
- await setupIndex(dbAdapter, [{
575
- card: mango,
576
- data: { search_doc: {
577
- name: "Mango",
578
- age: 4
579
- } }
580
- }, {
581
- card: vangogh,
582
- data: { search_doc: {
583
- name: "Van Gogh",
584
- age: 8
585
- } }
586
- }]);
587
- let type = await personCardType(testCards);
588
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
589
- on: type,
590
- eq: { age: 4 }
591
- } });
592
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
593
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
594
- });
595
- (0, import_qunit.test)(`can use 'eq' to match against boolean type`, async function(assert) {
596
- let { mango, vangogh, ringo } = testCards;
597
- await setupIndex(dbAdapter, [
598
- {
599
- card: mango,
600
- data: { search_doc: {
601
- name: "Mango",
602
- isHairy: false
603
- } }
604
- },
605
- {
606
- card: vangogh,
607
- data: { search_doc: {
608
- name: "Van Gogh",
609
- isHairy: true
610
- } }
611
- },
612
- {
613
- card: ringo,
614
- data: { search_doc: {
615
- name: "Van Gogh",
616
- isHairy: null
617
- } }
618
- }
619
- ]);
620
- let type = await personCardType(testCards);
621
- {
622
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
623
- on: type,
624
- eq: { isHairy: false }
625
- } });
626
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
627
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
628
- }
629
- {
630
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
631
- on: type,
632
- eq: { isHairy: true }
633
- } });
634
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
635
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
636
- }
637
- {
638
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
639
- on: type,
640
- eq: { isHairy: null }
641
- } });
642
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
643
- assert.deepEqual(getIds(results), [ringo.id], "results are correct");
644
- }
645
- });
646
- (0, import_qunit.test)("can filter eq from a code ref query value", async function(assert) {
647
- let { stringFieldEntry, numberFieldEntry } = testCards;
648
- await setupIndex(dbAdapter, [{
649
- card: stringFieldEntry,
650
- data: { search_doc: {
651
- cardTitle: stringFieldEntry.cardTitle,
652
- ref: internalKeyFor(stringFieldEntry.ref, void 0, virtualNetwork)
653
- } }
654
- }, {
655
- card: numberFieldEntry,
656
- data: { search_doc: {
657
- cardTitle: numberFieldEntry.cardTitle,
658
- ref: internalKeyFor(numberFieldEntry.ref, void 0, virtualNetwork)
659
- } }
660
- }]);
661
- let type = await SimpleSpecType(testCards);
662
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
663
- on: type,
664
- eq: { ref: {
665
- module: `${baseRealmRRI}string`,
666
- name: "default"
667
- } }
668
- } });
669
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
670
- assert.deepEqual(getIds(results), [stringFieldEntry.id], "results are correct");
671
- });
672
- (0, import_qunit.test)("can filter eq from a date query value", async function(assert) {
673
- let { mangoBirthday, vangoghBirthday } = testCards;
674
- await setupIndex(dbAdapter, [{
675
- card: mangoBirthday,
676
- data: { search_doc: {
677
- cardTitle: mangoBirthday.cardTitle,
678
- venue: mangoBirthday.venue,
679
- date: format(mangoBirthday.date, "yyyy-MM-dd")
680
- } }
681
- }, {
682
- card: vangoghBirthday,
683
- data: { search_doc: {
684
- cardTitle: vangoghBirthday.cardTitle,
685
- venue: vangoghBirthday.venue,
686
- date: format(vangoghBirthday.date, "yyyy-MM-dd")
687
- } }
688
- }]);
689
- let type = await eventType(testCards);
690
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
691
- on: type,
692
- eq: { date: "2024-10-30" }
693
- } });
694
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
695
- assert.deepEqual(getIds(results), [mangoBirthday.id], "results are correct");
696
- });
697
- (0, import_qunit.test)(`can filter using 'in'`, async function(assert) {
698
- let { mango, vangogh, ringo } = testCards;
699
- await setupIndex(dbAdapter, [
700
- {
701
- card: mango,
702
- data: { search_doc: { name: "Mango" } }
703
- },
704
- {
705
- card: vangogh,
706
- data: { search_doc: { name: "Van Gogh" } }
707
- },
708
- {
709
- card: ringo,
710
- data: { search_doc: { name: "Ringo" } }
711
- }
712
- ]);
713
- let type = await personCardType(testCards);
714
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
715
- in: { name: ["Mango", "Ringo"] },
716
- on: type
717
- } });
718
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
719
- assert.deepEqual(getIds(results), [mango.id, ringo.id], "results are correct");
720
- });
721
- (0, import_qunit.test)(`can filter using 'in' with a single value`, async function(assert) {
722
- let { mango, vangogh } = testCards;
723
- await setupIndex(dbAdapter, [{
724
- card: mango,
725
- data: { search_doc: { name: "Mango" } }
726
- }, {
727
- card: vangogh,
728
- data: { search_doc: { name: "Van Gogh" } }
729
- }]);
730
- let type = await personCardType(testCards);
731
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
732
- in: { name: ["Mango"] },
733
- on: type
734
- } });
735
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
736
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
737
- });
738
- (0, import_qunit.test)(`can filter using 'in' with an empty array`, async function(assert) {
739
- let { mango, vangogh } = testCards;
740
- await setupIndex(dbAdapter, [{
741
- card: mango,
742
- data: { search_doc: { name: "Mango" } }
743
- }, {
744
- card: vangogh,
745
- data: { search_doc: { name: "Van Gogh" } }
746
- }]);
747
- let type = await personCardType(testCards);
748
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
749
- in: { name: [] },
750
- on: type
751
- } });
752
- assert.strictEqual(meta.page.total, 0, "the total results meta is correct");
753
- assert.deepEqual(getIds(results), [], "results are correct");
754
- });
755
- (0, import_qunit.test)(`can filter using 'in' with null values`, async function(assert) {
756
- let { mango, vangogh, ringo } = testCards;
757
- await setupIndex(dbAdapter, [
758
- {
759
- card: mango,
760
- data: { search_doc: { name: "Mango" } }
761
- },
762
- {
763
- card: vangogh,
764
- data: { search_doc: { name: null } }
765
- },
766
- {
767
- card: ringo,
768
- data: { search_doc: { name: "Ringo" } }
769
- }
770
- ]);
771
- let type = await personCardType(testCards);
772
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
773
- in: { name: ["Mango", null] },
774
- on: type
775
- } });
776
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
777
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
778
- });
779
- (0, import_qunit.test)(`can filter using 'in' thru nested fields`, async function(assert) {
780
- let { mango, vangogh, ringo } = testCards;
781
- await setupIndex(dbAdapter, [
782
- {
783
- card: mango,
784
- data: { search_doc: {
785
- name: "Mango",
786
- address: { city: "Barksville" }
787
- } }
788
- },
789
- {
790
- card: vangogh,
791
- data: { search_doc: {
792
- name: "Van Gogh",
793
- address: { city: "Barksville" }
794
- } }
795
- },
796
- {
797
- card: ringo,
798
- data: { search_doc: {
799
- name: "Ringo",
800
- address: { city: "Waggington" }
801
- } }
802
- }
803
- ]);
804
- let type = await personCardType(testCards);
805
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
806
- on: type,
807
- in: { "address.city": ["Waggington"] }
808
- } });
809
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
810
- assert.deepEqual(getIds(results), [ringo.id], "results are correct");
811
- });
812
- (0, import_qunit.test)(`can negate an 'in' filter with 'not'`, async function(assert) {
813
- let { mango, vangogh, ringo } = testCards;
814
- await setupIndex(dbAdapter, [
815
- {
816
- card: mango,
817
- data: { search_doc: { name: "Mango" } }
818
- },
819
- {
820
- card: vangogh,
821
- data: { search_doc: { name: "Van Gogh" } }
822
- },
823
- {
824
- card: ringo,
825
- data: { search_doc: { name: "Ringo" } }
826
- }
827
- ]);
828
- let type = await personCardType(testCards);
829
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
830
- on: type,
831
- not: { in: { name: ["Mango", "Ringo"] } }
832
- } });
833
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
834
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
835
- });
836
- (0, import_qunit.test)(`can filter using 'in' with the id field`, async function(assert) {
837
- let { mango, vangogh, ringo } = testCards;
838
- await setupIndex(dbAdapter, [
839
- {
840
- card: mango,
841
- data: { search_doc: {
842
- id: mango.id,
843
- name: "Mango"
844
- } }
845
- },
846
- {
847
- card: vangogh,
848
- data: { search_doc: {
849
- id: vangogh.id,
850
- name: "Van Gogh"
851
- } }
852
- },
853
- {
854
- card: ringo,
855
- data: { search_doc: {
856
- id: ringo.id,
857
- name: "Ringo"
858
- } }
859
- }
860
- ]);
861
- let type = await personCardType(testCards);
862
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
863
- on: type,
864
- in: { id: [mango.id, ringo.id] }
865
- } });
866
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
867
- assert.deepEqual(getIds(results), [mango.id, ringo.id], "results are correct");
868
- });
869
- (0, import_qunit.test)(`can search with a 'not' filter`, async function(assert) {
870
- let { mango, vangogh, ringo } = testCards;
871
- await setupIndex(dbAdapter, [
872
- {
873
- card: mango,
874
- data: { search_doc: { name: "Mango" } }
875
- },
876
- {
877
- card: vangogh,
878
- data: { search_doc: { name: "Van Gogh" } }
879
- },
880
- {
881
- card: ringo,
882
- data: { search_doc: { name: "Ringo" } }
883
- }
884
- ]);
885
- let type = await personCardType(testCards);
886
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
887
- on: type,
888
- not: { eq: { name: "Mango" } }
889
- } });
890
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
891
- assert.deepEqual(getIds(results), [ringo.id, vangogh.id], "results are correct");
892
- });
893
- (0, import_qunit.test)("can handle a filter with double negatives", async function(assert) {
894
- let { mango, vangogh, ringo } = testCards;
895
- await setupIndex(dbAdapter, [
896
- {
897
- card: mango,
898
- data: { search_doc: { name: "Mango" } }
899
- },
900
- {
901
- card: vangogh,
902
- data: { search_doc: { name: "Van Gogh" } }
903
- },
904
- {
905
- card: ringo,
906
- data: { search_doc: { name: "Ringo" } }
907
- }
908
- ]);
909
- let type = await personCardType(testCards);
910
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
911
- on: type,
912
- not: { not: { not: { eq: { name: "Mango" } } } }
913
- } });
914
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
915
- assert.deepEqual(getIds(results), [ringo.id, vangogh.id], "results are correct");
916
- });
917
- (0, import_qunit.test)(`can use a 'contains' filter`, async function(assert) {
918
- let { mango, vangogh, ringo } = testCards;
919
- await setupIndex(dbAdapter, [
920
- {
921
- card: mango,
922
- data: { search_doc: { name: "Mango" } }
923
- },
924
- {
925
- card: vangogh,
926
- data: { search_doc: { name: "Van Gogh" } }
927
- },
928
- {
929
- card: ringo,
930
- data: { search_doc: { name: "Ringo" } }
931
- }
932
- ]);
933
- let type = await personCardType(testCards);
934
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
935
- on: type,
936
- contains: { name: "ngo" }
937
- } });
938
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
939
- assert.deepEqual(getIds(results), [mango.id, ringo.id], "results are correct");
940
- });
941
- (0, import_qunit.test)(`contains filter is case insensitive`, async function(assert) {
942
- let { mango, vangogh, ringo } = testCards;
943
- await setupIndex(dbAdapter, [
944
- {
945
- card: mango,
946
- data: { search_doc: { name: "Mango" } }
947
- },
948
- {
949
- card: vangogh,
950
- data: { search_doc: { name: "Van Gogh" } }
951
- },
952
- {
953
- card: ringo,
954
- data: { search_doc: { name: "Ringo" } }
955
- }
956
- ]);
957
- let type = await personCardType(testCards);
958
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
959
- on: type,
960
- contains: { name: "mang" }
961
- } });
962
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
963
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
964
- });
965
- (0, import_qunit.test)(`can use 'contains' to match multiple fields`, async function(assert) {
966
- let { mango, vangogh } = testCards;
967
- await setupIndex(dbAdapter, [{
968
- card: mango,
969
- data: { search_doc: {
970
- name: "Mango",
971
- nickNames: ["Mang Mang", "Pee Baby"]
972
- } }
973
- }, {
974
- card: vangogh,
975
- data: { search_doc: {
976
- name: "Van Gogh",
977
- nickNames: ["Big Baby", "Farty"]
978
- } }
979
- }]);
980
- let type = await personCardType(testCards);
981
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
982
- on: type,
983
- contains: {
984
- name: "ngo",
985
- nickNames: "Baby"
986
- }
987
- } });
988
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
989
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
990
- });
991
- (0, import_qunit.test)(`can use a 'contains' filter to match 'null'`, async function(assert) {
992
- let { mango, vangogh } = testCards;
993
- await setupIndex(dbAdapter, [{
994
- card: mango,
995
- data: { search_doc: { name: "Mango" } }
996
- }, {
997
- card: vangogh,
998
- data: { search_doc: { name: null } }
999
- }]);
1000
- let type = await personCardType(testCards);
1001
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1002
- on: type,
1003
- contains: { name: null }
1004
- } });
1005
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1006
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1007
- });
1008
- (0, import_qunit.test)(`can use 'every' to combine multiple filters`, async function(assert) {
1009
- let { mango, vangogh, ringo } = testCards;
1010
- await setupIndex(dbAdapter, [
1011
- {
1012
- card: mango,
1013
- data: { search_doc: {
1014
- name: "Mango",
1015
- address: {
1016
- street: "123 Main Street",
1017
- city: "Barksville"
1018
- }
1019
- } }
1020
- },
1021
- {
1022
- card: vangogh,
1023
- data: { search_doc: {
1024
- name: "Van Gogh",
1025
- address: {
1026
- street: "456 Grand Blvd",
1027
- city: "Barksville"
1028
- }
1029
- } }
1030
- },
1031
- {
1032
- card: ringo,
1033
- data: { search_doc: {
1034
- name: "Ringo",
1035
- address: {
1036
- street: "100 Treat Street",
1037
- city: "Waggington"
1038
- }
1039
- } }
1040
- }
1041
- ]);
1042
- let type = await personCardType(testCards);
1043
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1044
- on: type,
1045
- every: [{ eq: { "address.city": "Barksville" } }, { not: { eq: { "address.street": "456 Grand Blvd" } } }]
1046
- } });
1047
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1048
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1049
- });
1050
- (0, import_qunit.test)(`can use 'any' to combine multiple filters`, async function(assert) {
1051
- let { mango, vangogh, ringo } = testCards;
1052
- await setupIndex(dbAdapter, [
1053
- {
1054
- card: mango,
1055
- data: { search_doc: { name: "Mango" } }
1056
- },
1057
- {
1058
- card: vangogh,
1059
- data: { search_doc: { name: "Van Gogh" } }
1060
- },
1061
- {
1062
- card: ringo,
1063
- data: { search_doc: { name: "Ringo" } }
1064
- }
1065
- ]);
1066
- let type = await personCardType(testCards);
1067
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1068
- on: type,
1069
- any: [{ eq: { name: "Mango" } }, { eq: { name: "Van Gogh" } }]
1070
- } });
1071
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1072
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
1073
- });
1074
- (0, import_qunit.test)(`returns empty results when query refers to missing card`, async function(assert) {
1075
- await setupIndex(dbAdapter, []);
1076
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1077
- on: {
1078
- module: `${testRealmURL}nonexistent`,
1079
- name: "Nonexistent"
1080
- },
1081
- eq: { nonExistentField: "hello" }
1082
- } });
1083
- assert.strictEqual(cards.length, 0, "no cards are returned");
1084
- assert.strictEqual(meta.page.total, 0, "total count is zero");
1085
- });
1086
- (0, import_qunit.test)(`gives a good error when query refers to missing field`, async function(assert) {
1087
- await setupIndex(dbAdapter, []);
1088
- let type = await personCardType(testCards);
1089
- try {
1090
- await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1091
- on: type,
1092
- eq: {
1093
- name: "Cardy",
1094
- nonExistentField: "hello"
1095
- }
1096
- } });
1097
- throw new Error("failed to throw expected exception");
1098
- } catch (err) {
1099
- assert.strictEqual(err.message, `Your filter refers to a nonexistent field "nonExistentField" on type ${wrapper_default(type)}`);
1100
- }
1101
- });
1102
- (0, import_qunit.test)(`errors when a filter crosses a non-searchable relationship`, async function(assert) {
1103
- await setupIndex(dbAdapter, []);
1104
- let orgType = {
1105
- module: `${testRealmURL}org`,
1106
- name: "Org"
1107
- };
1108
- try {
1109
- await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1110
- on: orgType,
1111
- eq: { "ceo.name": "Robin" }
1112
- } });
1113
- throw new Error("failed to throw expected exception");
1114
- } catch (err) {
1115
- assert.true(isFilterRefersToNonsearchableFieldError(err), "throws the distinct non-searchable-field error");
1116
- assert.strictEqual(err.reason, "not-searchable", "reason is not-searchable");
1117
- assert.true(err.message.includes("\"ceo\""), `message names the relationship: ${err.message}`);
1118
- assert.true(err.message.includes("not searchable"), `message explains it is not searchable: ${err.message}`);
1119
- assert.true(err.message.includes("searchable: true"), `message names the annotation to add: ${err.message}`);
1120
- }
1121
- });
1122
- (0, import_qunit.test)(`errors when a filter crosses a non-searchable relationship deeper in the path`, async function(assert) {
1123
- await setupIndex(dbAdapter, []);
1124
- let orgType = {
1125
- module: `${testRealmURL}org`,
1126
- name: "Org"
1127
- };
1128
- try {
1129
- await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1130
- on: orgType,
1131
- eq: { "headquarters.bestFriend.name": "Robin" }
1132
- } });
1133
- throw new Error("failed to throw expected exception");
1134
- } catch (err) {
1135
- assert.true(isFilterRefersToNonsearchableFieldError(err), "throws the distinct non-searchable-field error");
1136
- assert.strictEqual(err.reason, "not-searchable", "reason is not-searchable");
1137
- assert.true(err.message.includes("\"headquarters.bestFriend\""), `message names the deeper hop: ${err.message}`);
1138
- assert.true(err.message.includes(`searchable: 'bestFriend'`), `message names the route to add to the head field: ${err.message}`);
1139
- }
1140
- });
1141
- (0, import_qunit.test)(`errors when a filter crosses a query-backed relationship`, async function(assert) {
1142
- await setupIndex(dbAdapter, []);
1143
- let orgType = {
1144
- module: `${testRealmURL}org`,
1145
- name: "Org"
1146
- };
1147
- try {
1148
- await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1149
- on: orgType,
1150
- eq: { "matchingPeople.name": "Robin" }
1151
- } });
1152
- throw new Error("failed to throw expected exception");
1153
- } catch (err) {
1154
- assert.true(isFilterRefersToNonsearchableFieldError(err), "throws the distinct non-searchable-field error");
1155
- assert.strictEqual(err.reason, "query-backed", "reason is query-backed");
1156
- assert.true(err.message.includes("\"matchingPeople\""), `message names the relationship: ${err.message}`);
1157
- assert.true(err.message.includes("query-backed"), `message explains it is query-backed: ${err.message}`);
1158
- }
1159
- });
1160
- (0, import_qunit.test)(`a searchable relationship path compiles and runs`, async function(assert) {
1161
- await setupIndex(dbAdapter, []);
1162
- let orgType = {
1163
- module: `${testRealmURL}org`,
1164
- name: "Org"
1165
- };
1166
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1167
- on: orgType,
1168
- eq: { "headquarters.name": "Robin" }
1169
- } });
1170
- assert.strictEqual(meta.page.total, 0, "the searchable path ran without error");
1171
- });
1172
- (0, import_qunit.test)(`a filter on a relationship's id is allowed even when it is not searchable`, async function(assert) {
1173
- await setupIndex(dbAdapter, []);
1174
- let orgType = {
1175
- module: `${testRealmURL}org`,
1176
- name: "Org"
1177
- };
1178
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1179
- on: orgType,
1180
- eq: { "ceo.id": `${testRealmURL}mango` }
1181
- } });
1182
- assert.strictEqual(meta.page.total, 0, "the id reference filter ran without error");
1183
- });
1184
- (0, import_qunit.test)(`a nonexistent field beyond a searchable relationship still reports the nonexistent-field error`, async function(assert) {
1185
- await setupIndex(dbAdapter, []);
1186
- let orgType = {
1187
- module: `${testRealmURL}org`,
1188
- name: "Org"
1189
- };
1190
- try {
1191
- await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1192
- on: orgType,
1193
- eq: { "headquarters.nope": "Robin" }
1194
- } });
1195
- throw new Error("failed to throw expected exception");
1196
- } catch (err) {
1197
- assert.false(isFilterRefersToNonsearchableFieldError(err), "does not throw the searchability error");
1198
- assert.true(err.message.includes("nonexistent field \"headquarters.nope\""), `reports the nonexistent-field error: ${err.message}`);
1199
- }
1200
- });
1201
- (0, import_qunit.test)(`it can filter on a plural primitive field using 'eq'`, async function(assert) {
1202
- let { mango, vangogh } = testCards;
1203
- await setupIndex(dbAdapter, [{
1204
- card: mango,
1205
- data: { search_doc: {
1206
- name: "Mango",
1207
- nickNames: ["Mang Mang", "Baby"]
1208
- } }
1209
- }, {
1210
- card: vangogh,
1211
- data: { search_doc: {
1212
- name: "Van Gogh",
1213
- nickNames: ["Big boy", "Farty"]
1214
- } }
1215
- }]);
1216
- let type = await personCardType(testCards);
1217
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1218
- on: type,
1219
- eq: { nickNames: "Farty" }
1220
- } });
1221
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1222
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1223
- });
1224
- (0, import_qunit.test)(`it can filter on a nested field within a plural composite field using 'eq'`, async function(assert) {
1225
- let { mango, vangogh } = testCards;
1226
- await setupIndex(dbAdapter, [{
1227
- card: mango,
1228
- data: { search_doc: {
1229
- name: "Mango",
1230
- friends: [{ name: "Van Gogh" }, { name: "Ringo" }]
1231
- } }
1232
- }, {
1233
- card: vangogh,
1234
- data: { search_doc: {
1235
- name: "Van Gogh",
1236
- friends: [{ name: "Ringo" }]
1237
- } }
1238
- }]);
1239
- let type = await personCardType(testCards);
1240
- {
1241
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1242
- on: type,
1243
- eq: { "friends.name": "Van Gogh" }
1244
- } });
1245
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1246
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1247
- }
1248
- {
1249
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1250
- on: type,
1251
- eq: { "friends.name": "Ringo" }
1252
- } });
1253
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1254
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
1255
- }
1256
- });
1257
- (0, import_qunit.test)("it can match a null in a plural field", async function(assert) {
1258
- let { mango, vangogh } = testCards;
1259
- await setupIndex(dbAdapter, [{
1260
- card: mango,
1261
- data: { search_doc: {
1262
- name: "Mango",
1263
- nickNames: ["Mang Mang", "Baby"]
1264
- } }
1265
- }, {
1266
- card: vangogh,
1267
- data: { search_doc: {
1268
- name: "Van Gogh",
1269
- nickNames: null
1270
- } }
1271
- }]);
1272
- let type = await personCardType(testCards);
1273
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1274
- on: type,
1275
- eq: { nickNames: null }
1276
- } });
1277
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1278
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1279
- });
1280
- (0, import_qunit.test)("it can match a leaf plural field nested in a plural composite field", async function(assert) {
1281
- let { mango, vangogh } = testCards;
1282
- await setupIndex(dbAdapter, [{
1283
- card: mango,
1284
- data: { search_doc: {
1285
- name: "Mango",
1286
- friends: [{
1287
- name: "Van Gogh",
1288
- nickNames: ["Big Baby", "Farty"]
1289
- }, {
1290
- name: "Ringo",
1291
- nickNames: ["Mang Mang", "Baby"]
1292
- }]
1293
- } }
1294
- }, {
1295
- card: vangogh,
1296
- data: { search_doc: {
1297
- name: "Van Gogh",
1298
- friends: [{
1299
- name: "Ringo",
1300
- nickNames: ["Ring Ring"]
1301
- }]
1302
- } }
1303
- }]);
1304
- let type = await personCardType(testCards);
1305
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1306
- on: type,
1307
- eq: { "friends.nickNames": "Baby" }
1308
- } });
1309
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1310
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1311
- });
1312
- (0, import_qunit.test)("it can match thru a plural nested composite field that is field of a singular composite field", async function(assert) {
1313
- let { mango, vangogh } = testCards;
1314
- await setupIndex(dbAdapter, [{
1315
- card: mango,
1316
- data: { search_doc: {
1317
- name: "Mango",
1318
- bestFriend: {
1319
- name: "Van Gogh",
1320
- friends: [{ name: "Ringo" }, { name: "Van Gogh" }]
1321
- }
1322
- } }
1323
- }, {
1324
- card: vangogh,
1325
- data: { search_doc: {
1326
- name: "Van Gogh",
1327
- bestFriend: {
1328
- name: "Ringo",
1329
- friends: [{ name: "Lucky" }]
1330
- }
1331
- } }
1332
- }]);
1333
- let type = await personCardType(testCards);
1334
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1335
- on: type,
1336
- eq: { "bestFriend.friends.name": "Lucky" }
1337
- } });
1338
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1339
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1340
- });
1341
- (0, import_qunit.test)(`can return a single result for a card when there are multiple matches within a result's search doc`, async function(assert) {
1342
- let { mango } = testCards;
1343
- await setupIndex(dbAdapter, [{
1344
- card: mango,
1345
- data: { search_doc: {
1346
- name: "Mango",
1347
- friends: [{
1348
- name: "Ringo",
1349
- bestFriend: { name: "Mango" }
1350
- }, {
1351
- name: "Van Gogh",
1352
- bestFriend: { name: "Mango" }
1353
- }]
1354
- } }
1355
- }]);
1356
- let type = await personCardType(testCards);
1357
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1358
- on: type,
1359
- eq: { "friends.bestFriend.name": "Mango" }
1360
- } });
1361
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1362
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1363
- });
1364
- (0, import_qunit.test)("can perform query against a pass's staged rows", async function(assert) {
1365
- let { mango, vangogh, ringo } = testCards;
1366
- let stagingId = jobStagingId(1, 1);
1367
- await setupIndex(dbAdapter, [{
1368
- realm_url: testRealmURL,
1369
- current_generation: 1
1370
- }], {
1371
- working: [
1372
- {
1373
- card: mango,
1374
- data: {
1375
- generation: 1,
1376
- staging_id: stagingId,
1377
- search_doc: { name: "Mango" }
1378
- }
1379
- },
1380
- {
1381
- card: vangogh,
1382
- data: {
1383
- generation: 2,
1384
- staging_id: stagingId,
1385
- search_doc: { name: "Mango" }
1386
- }
1387
- },
1388
- {
1389
- card: ringo,
1390
- data: {
1391
- generation: 2,
1392
- staging_id: stagingId,
1393
- search_doc: { name: "Ringo" }
1394
- }
1395
- }
1396
- ],
1397
- production: [
1398
- {
1399
- card: mango,
1400
- data: {
1401
- generation: 1,
1402
- search_doc: { name: "Mango" }
1403
- }
1404
- },
1405
- {
1406
- card: vangogh,
1407
- data: {
1408
- generation: 1,
1409
- search_doc: { name: "Van Gogh" }
1410
- }
1411
- },
1412
- {
1413
- card: ringo,
1414
- data: {
1415
- generation: 1,
1416
- search_doc: { name: "Mango" }
1417
- }
1418
- }
1419
- ]
1420
- });
1421
- let type = await personCardType(testCards);
1422
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1423
- on: type,
1424
- eq: { name: "Mango" }
1425
- } }, { pendingStagingId: stagingId });
1426
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1427
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
1428
- });
1429
- (0, import_qunit.test)("can perform query against \"production\" version of the index", async function(assert) {
1430
- let { mango, vangogh, ringo } = testCards;
1431
- let stagingId = jobStagingId(1, 1);
1432
- await setupIndex(dbAdapter, [{
1433
- realm_url: testRealmURL,
1434
- current_generation: 1
1435
- }], {
1436
- working: [
1437
- {
1438
- card: mango,
1439
- data: {
1440
- generation: 1,
1441
- staging_id: stagingId,
1442
- search_doc: { name: "Mango" }
1443
- }
1444
- },
1445
- {
1446
- card: vangogh,
1447
- data: {
1448
- generation: 2,
1449
- staging_id: stagingId,
1450
- search_doc: { name: "Mango" }
1451
- }
1452
- },
1453
- {
1454
- card: ringo,
1455
- data: {
1456
- generation: 1,
1457
- staging_id: stagingId,
1458
- search_doc: { name: "Ringo" }
1459
- }
1460
- }
1461
- ],
1462
- production: [
1463
- {
1464
- card: mango,
1465
- data: {
1466
- generation: 1,
1467
- search_doc: { name: "Mango" }
1468
- }
1469
- },
1470
- {
1471
- card: vangogh,
1472
- data: {
1473
- generation: 1,
1474
- search_doc: { name: "Van Gogh" }
1475
- }
1476
- },
1477
- {
1478
- card: ringo,
1479
- data: {
1480
- generation: 1,
1481
- search_doc: { name: "Ringo" }
1482
- }
1483
- }
1484
- ]
1485
- });
1486
- let type = await personCardType(testCards);
1487
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1488
- on: type,
1489
- eq: { name: "Mango" }
1490
- } });
1491
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1492
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1493
- });
1494
- (0, import_qunit.test)("can sort search results", async function(assert) {
1495
- let { mango, vangogh, ringo } = testCards;
1496
- await setupIndex(dbAdapter, [
1497
- {
1498
- card: mango,
1499
- data: { search_doc: { name: "Mango" } }
1500
- },
1501
- {
1502
- card: vangogh,
1503
- data: { search_doc: { name: "Van Gogh" } }
1504
- },
1505
- {
1506
- card: ringo,
1507
- data: { search_doc: { name: "Ringo" } }
1508
- }
1509
- ]);
1510
- let type = await personCardType(testCards);
1511
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { sort: [{
1512
- on: type,
1513
- by: "name"
1514
- }] });
1515
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1516
- assert.deepEqual(getIds(results), [
1517
- mango.id,
1518
- ringo.id,
1519
- vangogh.id
1520
- ], "results are correct");
1521
- });
1522
- (0, import_qunit.test)("can sort descending", async function(assert) {
1523
- let { mango, vangogh, ringo } = testCards;
1524
- await setupIndex(dbAdapter, [
1525
- {
1526
- card: mango,
1527
- data: { search_doc: { name: "Mango" } }
1528
- },
1529
- {
1530
- card: vangogh,
1531
- data: { search_doc: { name: "Van Gogh" } }
1532
- },
1533
- {
1534
- card: ringo,
1535
- data: { search_doc: { name: "Ringo" } }
1536
- }
1537
- ]);
1538
- let type = await personCardType(testCards);
1539
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { sort: [{
1540
- on: type,
1541
- by: "name",
1542
- direction: "desc"
1543
- }] });
1544
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1545
- assert.deepEqual(getIds(results), [
1546
- vangogh.id,
1547
- ringo.id,
1548
- mango.id
1549
- ], "results are correct");
1550
- });
1551
- (0, import_qunit.test)("nulls are sorted to the end of search results", async function(assert) {
1552
- let { mango, vangogh, ringo } = testCards;
1553
- await setupIndex(dbAdapter, [
1554
- {
1555
- card: mango,
1556
- data: { search_doc: { name: "Mango" } }
1557
- },
1558
- {
1559
- card: vangogh,
1560
- data: { search_doc: { name: null } }
1561
- },
1562
- {
1563
- card: ringo,
1564
- data: { search_doc: { name: "Ringo" } }
1565
- }
1566
- ]);
1567
- let type = await personCardType(testCards);
1568
- let { cards: results } = await indexQueryEngine.searchCards(new URL(testRealmURL), { sort: [{
1569
- on: type,
1570
- by: "name"
1571
- }] });
1572
- assert.deepEqual(getIds(results), [
1573
- mango.id,
1574
- ringo.id,
1575
- vangogh.id
1576
- ], "results are correct");
1577
- });
1578
- (0, import_qunit.test)(`can filter using 'gt'`, async function(assert) {
1579
- let { mango, vangogh, ringo } = testCards;
1580
- await setupIndex(dbAdapter, [
1581
- {
1582
- card: mango,
1583
- data: { search_doc: {
1584
- name: "Mango",
1585
- address: {
1586
- street: "123 Main Street",
1587
- city: "Barksville"
1588
- },
1589
- age: 35
1590
- } }
1591
- },
1592
- {
1593
- card: vangogh,
1594
- data: { search_doc: {
1595
- name: "Van Gogh",
1596
- address: {
1597
- street: "456 Grand Blvd",
1598
- city: "Barksville"
1599
- },
1600
- age: 30
1601
- } }
1602
- },
1603
- {
1604
- card: ringo,
1605
- data: { search_doc: {
1606
- name: "Ringo",
1607
- address: {
1608
- street: "100 Treat Street",
1609
- city: "Waggington"
1610
- },
1611
- age: 25
1612
- } }
1613
- }
1614
- ]);
1615
- let type = await personCardType(testCards);
1616
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1617
- on: type,
1618
- range: { age: { gt: 25 } }
1619
- } });
1620
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1621
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1622
- });
1623
- (0, import_qunit.test)(`range filter works when both 'type' and 'on' are provided`, async function(assert) {
1624
- let { mango, vangogh, ringo } = testCards;
1625
- await setupIndex(dbAdapter, [
1626
- {
1627
- card: mango,
1628
- data: { search_doc: {
1629
- name: "Mango",
1630
- address: {
1631
- street: "123 Main Street",
1632
- city: "Barksville"
1633
- },
1634
- age: 35
1635
- } }
1636
- },
1637
- {
1638
- card: vangogh,
1639
- data: { search_doc: {
1640
- name: "Van Gogh",
1641
- address: {
1642
- street: "456 Grand Blvd",
1643
- city: "Barksville"
1644
- },
1645
- age: 30
1646
- } }
1647
- },
1648
- {
1649
- card: ringo,
1650
- data: { search_doc: {
1651
- name: "Ringo",
1652
- address: {
1653
- street: "100 Treat Street",
1654
- city: "Waggington"
1655
- },
1656
- age: 25
1657
- } }
1658
- }
1659
- ]);
1660
- let type = await personCardType(testCards);
1661
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1662
- on: type,
1663
- type,
1664
- range: { age: { gt: 25 } }
1665
- } });
1666
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1667
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1668
- });
1669
- (0, import_qunit.test)(`eq filter works when both 'type' and 'on' are provided`, async function(assert) {
1670
- let { mango, vangogh, ringo } = testCards;
1671
- await setupIndex(dbAdapter, [
1672
- {
1673
- card: mango,
1674
- data: { search_doc: { name: "Mango" } }
1675
- },
1676
- {
1677
- card: vangogh,
1678
- data: { search_doc: { name: "Van Gogh" } }
1679
- },
1680
- {
1681
- card: ringo,
1682
- data: { search_doc: { name: "Ringo" } }
1683
- }
1684
- ]);
1685
- let type = await personCardType(testCards);
1686
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1687
- on: type,
1688
- type,
1689
- eq: { name: "Mango" }
1690
- } });
1691
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1692
- assert.deepEqual(getIds(cards), [mango.id], "results are correct");
1693
- });
1694
- (0, import_qunit.test)(`contains filter works when both 'type' and 'on' are provided`, async function(assert) {
1695
- let { mango, vangogh, ringo } = testCards;
1696
- await setupIndex(dbAdapter, [
1697
- {
1698
- card: mango,
1699
- data: { search_doc: {
1700
- name: "Mango",
1701
- address: { city: "Barksville" }
1702
- } }
1703
- },
1704
- {
1705
- card: vangogh,
1706
- data: { search_doc: {
1707
- name: "Van Gogh",
1708
- address: { city: "Barksville" }
1709
- } }
1710
- },
1711
- {
1712
- card: ringo,
1713
- data: { search_doc: {
1714
- name: "Ringo",
1715
- address: { city: "Waggington" }
1716
- } }
1717
- }
1718
- ]);
1719
- let type = await personCardType(testCards);
1720
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1721
- on: type,
1722
- type,
1723
- contains: { "address.city": "Barks" }
1724
- } });
1725
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1726
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1727
- });
1728
- (0, import_qunit.test)(`not filter works when both 'type' and 'on' are provided`, async function(assert) {
1729
- let { mango, vangogh, ringo } = testCards;
1730
- await setupIndex(dbAdapter, [
1731
- {
1732
- card: mango,
1733
- data: { search_doc: { name: "Mango" } }
1734
- },
1735
- {
1736
- card: vangogh,
1737
- data: { search_doc: { name: "Van Gogh" } }
1738
- },
1739
- {
1740
- card: ringo,
1741
- data: { search_doc: { name: "Ringo" } }
1742
- }
1743
- ]);
1744
- let type = await personCardType(testCards);
1745
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1746
- filter: {
1747
- on: type,
1748
- type,
1749
- not: { eq: { name: "Mango" } }
1750
- },
1751
- sort: [{
1752
- on: type,
1753
- by: "name",
1754
- direction: "asc"
1755
- }]
1756
- });
1757
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1758
- assert.deepEqual(getIds(cards), [ringo.id, vangogh.id], "results are correct");
1759
- });
1760
- (0, import_qunit.test)(`'on' takes precedence over 'type' when they differ`, async function(assert) {
1761
- let { mango, vangogh, ringo, paper } = testCards;
1762
- await setupIndex(dbAdapter, [
1763
- {
1764
- card: mango,
1765
- data: { search_doc: {
1766
- name: "Mango",
1767
- address: {
1768
- street: "123 Main Street",
1769
- city: "Barksville"
1770
- },
1771
- age: 35
1772
- } }
1773
- },
1774
- {
1775
- card: vangogh,
1776
- data: { search_doc: {
1777
- name: "Van Gogh",
1778
- address: {
1779
- street: "456 Grand Blvd",
1780
- city: "Barksville"
1781
- },
1782
- age: 30
1783
- } }
1784
- },
1785
- {
1786
- card: ringo,
1787
- data: { search_doc: {
1788
- name: "Ringo",
1789
- address: {
1790
- street: "100 Treat Street",
1791
- city: "Waggington"
1792
- },
1793
- age: 25
1794
- } }
1795
- },
1796
- {
1797
- card: paper,
1798
- data: { search_doc: {
1799
- name: "Paper",
1800
- age: 99
1801
- } }
1802
- }
1803
- ]);
1804
- let personType = await personCardType(testCards);
1805
- let catType = internalKeyToCodeRef([...await getTypes(paper)].shift());
1806
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1807
- on: personType,
1808
- type: catType,
1809
- range: { age: { gt: 25 } }
1810
- } });
1811
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1812
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are drawn from the on type and ignore conflicting type");
1813
- });
1814
- (0, import_qunit.test)(`can filter using 'gte'`, async function(assert) {
1815
- let { mango, vangogh, ringo } = testCards;
1816
- await setupIndex(dbAdapter, [
1817
- {
1818
- card: mango,
1819
- data: { search_doc: {
1820
- name: "Mango",
1821
- address: {
1822
- street: "123 Main Street",
1823
- city: "Barksville"
1824
- },
1825
- age: 35
1826
- } }
1827
- },
1828
- {
1829
- card: vangogh,
1830
- data: { search_doc: {
1831
- name: "Van Gogh",
1832
- address: {
1833
- street: "456 Grand Blvd",
1834
- city: "Barksville"
1835
- },
1836
- age: 30
1837
- } }
1838
- },
1839
- {
1840
- card: ringo,
1841
- data: { search_doc: {
1842
- name: "Ringo",
1843
- address: {
1844
- street: "100 Treat Street",
1845
- city: "Waggington"
1846
- },
1847
- age: 25
1848
- } }
1849
- }
1850
- ]);
1851
- let type = await personCardType(testCards);
1852
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1853
- filter: {
1854
- on: type,
1855
- range: { age: { gte: 25 } }
1856
- },
1857
- sort: [{
1858
- on: type,
1859
- by: "age",
1860
- direction: "desc"
1861
- }]
1862
- });
1863
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1864
- assert.deepEqual(getIds(cards), [
1865
- mango.id,
1866
- vangogh.id,
1867
- ringo.id
1868
- ], "results are correct");
1869
- });
1870
- (0, import_qunit.test)(`can filter using 'gt' thru nested fields`, async function(assert) {
1871
- let { mango, vangogh, ringo } = testCards;
1872
- await setupIndex(dbAdapter, [
1873
- {
1874
- card: mango,
1875
- data: { search_doc: {
1876
- name: "Mango",
1877
- address: {
1878
- street: "123 Main Street",
1879
- city: "Barksville",
1880
- number: 123
1881
- }
1882
- } }
1883
- },
1884
- {
1885
- card: vangogh,
1886
- data: { search_doc: {
1887
- name: "Van Gogh",
1888
- address: {
1889
- street: "456 Grand Blvd",
1890
- city: "Barksville",
1891
- number: 456
1892
- }
1893
- } }
1894
- },
1895
- {
1896
- card: ringo,
1897
- data: { search_doc: {
1898
- name: "Ringo",
1899
- address: {
1900
- street: "100 Treat Street",
1901
- city: "Waggington",
1902
- number: 100
1903
- }
1904
- } }
1905
- }
1906
- ]);
1907
- let type = await personCardType(testCards);
1908
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1909
- on: type,
1910
- range: { "address.number": { gt: 100 } }
1911
- } });
1912
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1913
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1914
- });
1915
- (0, import_qunit.test)(`can filter using 'gt' thru a plural primitive field`, async function(assert) {
1916
- let { mango, vangogh, ringo } = testCards;
1917
- await setupIndex(dbAdapter, [
1918
- {
1919
- card: mango,
1920
- data: { search_doc: {
1921
- name: "Mango",
1922
- lotteryNumbers: [
1923
- 20,
1924
- 50,
1925
- 70
1926
- ]
1927
- } }
1928
- },
1929
- {
1930
- card: vangogh,
1931
- data: { search_doc: {
1932
- name: "Van Gogh",
1933
- lotteryNumbers: [
1934
- 40,
1935
- 60,
1936
- 80
1937
- ]
1938
- } }
1939
- },
1940
- {
1941
- card: ringo,
1942
- data: { search_doc: {
1943
- name: "Ringo",
1944
- lotteryNumbers: [
1945
- 10,
1946
- 20,
1947
- 30
1948
- ]
1949
- } }
1950
- }
1951
- ]);
1952
- let type = await personCardType(testCards);
1953
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1954
- on: type,
1955
- range: { lotteryNumbers: { gt: 50 } }
1956
- } });
1957
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1958
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1959
- });
1960
- (0, import_qunit.test)(`can filter using 'gt' thru a plural composite field`, async function(assert) {
1961
- let { mango, vangogh, ringo } = testCards;
1962
- let mangoDoc = {
1963
- name: "Mango",
1964
- age: 35
1965
- };
1966
- let vanGoghDoc = {
1967
- name: "Van Gogh",
1968
- age: 30
1969
- };
1970
- let ringoDoc = {
1971
- name: "Ringo",
1972
- age: 25
1973
- };
1974
- await setupIndex(dbAdapter, [
1975
- {
1976
- card: mango,
1977
- data: { search_doc: {
1978
- ...mangoDoc,
1979
- friends: [{ ...vanGoghDoc }]
1980
- } }
1981
- },
1982
- {
1983
- card: vangogh,
1984
- data: { search_doc: {
1985
- ...vanGoghDoc,
1986
- friends: [{ ...ringoDoc }]
1987
- } }
1988
- },
1989
- {
1990
- card: ringo,
1991
- data: { search_doc: {
1992
- ...ringoDoc,
1993
- friends: [{ ...mangoDoc }]
1994
- } }
1995
- }
1996
- ]);
1997
- let type = await personCardType(testCards);
1998
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1999
- on: type,
2000
- range: { "friends.age": { gt: 25 } }
2001
- } });
2002
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
2003
- assert.deepEqual(getIds(cards), [mango.id, ringo.id], "results are correct");
2004
- });
2005
- (0, import_qunit.test)(`can filter using 'lt'`, async function(assert) {
2006
- let { mango, vangogh, ringo } = testCards;
2007
- await setupIndex(dbAdapter, [
2008
- {
2009
- card: mango,
2010
- data: { search_doc: {
2011
- name: "Mango",
2012
- address: {
2013
- street: "123 Main Street",
2014
- city: "Barksville"
2015
- },
2016
- age: 35
2017
- } }
2018
- },
2019
- {
2020
- card: vangogh,
2021
- data: { search_doc: {
2022
- name: "Van Gogh",
2023
- address: {
2024
- street: "456 Grand Blvd",
2025
- city: "Barksville"
2026
- },
2027
- age: 30
2028
- } }
2029
- },
2030
- {
2031
- card: ringo,
2032
- data: { search_doc: {
2033
- name: "Ringo",
2034
- address: {
2035
- street: "100 Treat Street",
2036
- city: "Waggington"
2037
- },
2038
- age: 25
2039
- } }
2040
- }
2041
- ]);
2042
- let type = await personCardType(testCards);
2043
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
2044
- filter: {
2045
- on: type,
2046
- range: { age: { lt: 35 } }
2047
- },
2048
- sort: [{
2049
- on: type,
2050
- by: "age",
2051
- direction: "desc"
2052
- }]
2053
- });
2054
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
2055
- assert.deepEqual(getIds(cards), [vangogh.id, ringo.id], "results are correct");
2056
- });
2057
- (0, import_qunit.test)(`can filter using 'lte'`, async function(assert) {
2058
- let { mango, vangogh, ringo } = testCards;
2059
- await setupIndex(dbAdapter, [
2060
- {
2061
- card: mango,
2062
- data: { search_doc: {
2063
- name: "Mango",
2064
- address: {
2065
- street: "123 Main Street",
2066
- city: "Barksville"
2067
- },
2068
- age: 35
2069
- } }
2070
- },
2071
- {
2072
- card: vangogh,
2073
- data: { search_doc: {
2074
- name: "Van Gogh",
2075
- address: {
2076
- street: "456 Grand Blvd",
2077
- city: "Barksville"
2078
- },
2079
- age: 30
2080
- } }
2081
- },
2082
- {
2083
- card: ringo,
2084
- data: { search_doc: {
2085
- name: "Ringo",
2086
- address: {
2087
- street: "100 Treat Street",
2088
- city: "Waggington"
2089
- },
2090
- age: 25
2091
- } }
2092
- }
2093
- ]);
2094
- let type = await personCardType(testCards);
2095
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
2096
- filter: {
2097
- on: type,
2098
- range: { age: { lte: 35 } }
2099
- },
2100
- sort: [{
2101
- on: type,
2102
- by: "age",
2103
- direction: "desc"
2104
- }]
2105
- });
2106
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
2107
- assert.deepEqual(getIds(cards), [
2108
- mango.id,
2109
- vangogh.id,
2110
- ringo.id
2111
- ], "results are correct");
2112
- });
2113
- (0, import_qunit.test)(`can combine 'range' filter`, async function(assert) {
2114
- let { mango, vangogh, ringo } = testCards;
2115
- await setupIndex(dbAdapter, [
2116
- {
2117
- card: mango,
2118
- data: { search_doc: {
2119
- name: "Mango",
2120
- address: {
2121
- street: "123 Main Street",
2122
- city: "Barksville"
2123
- },
2124
- age: 35
2125
- } }
2126
- },
2127
- {
2128
- card: vangogh,
2129
- data: { search_doc: {
2130
- name: "Van Gogh",
2131
- address: {
2132
- street: "456 Grand Blvd",
2133
- city: "Barksville"
2134
- },
2135
- age: 30
2136
- } }
2137
- },
2138
- {
2139
- card: ringo,
2140
- data: { search_doc: {
2141
- name: "Ringo",
2142
- address: {
2143
- street: "100 Treat Street",
2144
- city: "Waggington"
2145
- },
2146
- age: 25
2147
- } }
2148
- }
2149
- ]);
2150
- let type = await personCardType(testCards);
2151
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
2152
- filter: {
2153
- on: type,
2154
- range: { age: {
2155
- gt: 25,
2156
- lt: 35
2157
- } }
2158
- },
2159
- sort: [{
2160
- on: type,
2161
- by: "age",
2162
- direction: "desc"
2163
- }]
2164
- });
2165
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
2166
- assert.deepEqual(getIds(cards), [vangogh.id], "results are correct");
2167
- });
2168
- (0, import_qunit.test)(`cannot filter 'null' value using 'range'`, async function(assert) {
2169
- let { mango, vangogh, ringo } = testCards;
2170
- await setupIndex(dbAdapter, [
2171
- {
2172
- card: mango,
2173
- data: { search_doc: {
2174
- name: "Mango",
2175
- address: {
2176
- street: "123 Main Street",
2177
- city: "Barksville"
2178
- },
2179
- age: 35
2180
- } }
2181
- },
2182
- {
2183
- card: vangogh,
2184
- data: { search_doc: {
2185
- name: "Van Gogh",
2186
- address: {
2187
- street: "456 Grand Blvd",
2188
- city: "Barksville"
2189
- },
2190
- age: 30
2191
- } }
2192
- },
2193
- {
2194
- card: ringo,
2195
- data: { search_doc: {
2196
- name: "Ringo",
2197
- address: {
2198
- street: "100 Treat Street",
2199
- city: "Waggington"
2200
- },
2201
- age: 25
2202
- } }
2203
- }
2204
- ]);
2205
- let type = await personCardType(testCards);
2206
- assert.rejects(indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2207
- on: type,
2208
- range: { age: { gt: null } }
2209
- } }), `'null' is not a permitted value in a 'range' filter`);
2210
- });
2211
- (0, import_qunit.test)(`'matches' filter returns rows whose markdown contains the query (case-insensitive)`, async function(assert) {
2212
- let { mango, vangogh, ringo } = testCards;
2213
- await setupIndex(dbAdapter, [
2214
- {
2215
- card: mango,
2216
- data: { markdown: "Mango is a friendly puppy who loves to play fetch in the park." }
2217
- },
2218
- {
2219
- card: vangogh,
2220
- data: { markdown: "Van Gogh is a calm dog with a painterly coat." }
2221
- },
2222
- {
2223
- card: ringo,
2224
- data: { markdown: "Ringo plays the drums and enjoys long naps." }
2225
- }
2226
- ]);
2227
- let lower = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "mango" } });
2228
- assert.strictEqual(lower.meta.page.total, 1, "one row matches \"mango\"");
2229
- assert.deepEqual(getIds(lower.cards), [mango.id]);
2230
- let upper = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "MANGO" } });
2231
- assert.strictEqual(upper.meta.page.total, 1, "upper-case query still matches");
2232
- let none = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "xylophone" } });
2233
- assert.strictEqual(none.meta.page.total, 0, "no rows match a missing term");
2234
- });
2235
- (0, import_qunit.test)(`'matches' escapes LIKE wildcards so user input matches literally`, async function(assert) {
2236
- let { mango, vangogh } = testCards;
2237
- await setupIndex(dbAdapter, [{
2238
- card: mango,
2239
- data: { markdown: "Summer sale: 50% off today only." }
2240
- }, {
2241
- card: vangogh,
2242
- data: { markdown: "Fifty kittens lined up on the fence." }
2243
- }]);
2244
- let percent = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "50%" } });
2245
- assert.strictEqual(percent.meta.page.total, 1, "\"50%\" matches the literal \"50%\" row only");
2246
- assert.deepEqual(getIds(percent.cards), [mango.id]);
2247
- let underscore = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "_nothing_" } });
2248
- assert.strictEqual(underscore.meta.page.total, 0, "underscore is treated literally, not as a single-char wildcard");
2249
- });
2250
- (0, import_qunit.test)(`'matches' does not match rows whose markdown is null`, async function(assert) {
2251
- let { mango, vangogh } = testCards;
2252
- await setupIndex(dbAdapter, [{
2253
- card: mango,
2254
- data: { markdown: "Mango likes fetch." }
2255
- }, {
2256
- card: vangogh,
2257
- data: { markdown: null }
2258
- }]);
2259
- let { meta, cards } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "mango" } });
2260
- assert.strictEqual(meta.page.total, 1, "only the non-null row matching \"mango\" is returned");
2261
- assert.deepEqual(getIds(cards), [mango.id]);
2262
- });
2263
- (0, import_qunit.test)(`'matches' empty query matches nothing`, async function(assert) {
2264
- let { mango, ringo } = testCards;
2265
- await setupIndex(dbAdapter, [{
2266
- card: mango,
2267
- data: { markdown: "Mango likes fetch." }
2268
- }, {
2269
- card: ringo,
2270
- data: { markdown: "Ringo likes drums." }
2271
- }]);
2272
- let { meta: emptyMeta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "" } });
2273
- assert.strictEqual(emptyMeta.page.total, 0, "empty query does not match every row");
2274
- let { meta: wsMeta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: " " } });
2275
- assert.strictEqual(wsMeta.page.total, 0, "whitespace-only query does not match every row");
2276
- });
2277
- (0, import_qunit.test)(`'matches' parameterizes the query safely (injection attempt)`, async function(assert) {
2278
- let { mango, vangogh, ringo } = testCards;
2279
- await setupIndex(dbAdapter, [
2280
- {
2281
- card: mango,
2282
- data: { markdown: "Mango likes fetch." }
2283
- },
2284
- {
2285
- card: vangogh,
2286
- data: { markdown: "Van Gogh likes naps." }
2287
- },
2288
- {
2289
- card: ringo,
2290
- data: { markdown: "Ringo likes drums." }
2291
- }
2292
- ]);
2293
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: `'; DROP TABLE boxel_index; --` } });
2294
- assert.strictEqual(meta.page.total, 0, "malicious input is treated as literal LIKE text, not SQL");
2295
- let sanity = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "mango" } });
2296
- assert.strictEqual(sanity.meta.page.total, 1, "boxel_index table is intact after injection attempt");
2297
- });
2298
- (0, import_qunit.test)(`'matches' tolerates unicode and special characters in the query`, async function(assert) {
2299
- let { mango } = testCards;
2300
- await setupIndex(dbAdapter, [{
2301
- card: mango,
2302
- data: { markdown: "Mango likes fetch." }
2303
- }]);
2304
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "café 🦮 \"$1 $2\"" } });
2305
- assert.strictEqual(meta.page.total, 0, "special characters do not throw; no rows match");
2306
- });
2307
- (0, import_qunit.test)(`'matches' composes inside 'every' with eq/contains/range/cardType`, async function(assert) {
2308
- let { mango, vangogh, ringo } = testCards;
2309
- await setupIndex(dbAdapter, [
2310
- {
2311
- card: mango,
2312
- data: {
2313
- search_doc: {
2314
- name: "Mango",
2315
- age: 35
2316
- },
2317
- markdown: "Mango is the name here."
2318
- }
2319
- },
2320
- {
2321
- card: vangogh,
2322
- data: {
2323
- search_doc: {
2324
- name: "Van Gogh",
2325
- age: 30
2326
- },
2327
- markdown: "Van Gogh is here."
2328
- }
2329
- },
2330
- {
2331
- card: ringo,
2332
- data: {
2333
- search_doc: {
2334
- name: "Ringo",
2335
- age: 25
2336
- },
2337
- markdown: "Ringo is here."
2338
- }
2339
- }
2340
- ]);
2341
- let type = await personCardType(testCards);
2342
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2343
- on: type,
2344
- every: [
2345
- { type },
2346
- { matches: "mango" },
2347
- { eq: { name: "Mango" } },
2348
- { contains: { name: "Mang" } },
2349
- { range: { age: { gt: 10 } } }
2350
- ]
2351
- } });
2352
- assert.strictEqual(meta.page.total, 1, `every-composition narrows to the one row matching all predicates`);
2353
- assert.deepEqual(getIds(cards), [mango.id], "correct row returned");
2354
- });
2355
- (0, import_qunit.test)(`'matches' composes inside 'any' alongside other filters`, async function(assert) {
2356
- let { mango, vangogh, ringo } = testCards;
2357
- await setupIndex(dbAdapter, [
2358
- {
2359
- card: mango,
2360
- data: {
2361
- search_doc: { name: "Mango" },
2362
- markdown: "Mango is here."
2363
- }
2364
- },
2365
- {
2366
- card: vangogh,
2367
- data: {
2368
- search_doc: { name: "Van Gogh" },
2369
- markdown: "Van Gogh is here."
2370
- }
2371
- },
2372
- {
2373
- card: ringo,
2374
- data: {
2375
- search_doc: { name: "Ringo" },
2376
- markdown: "Ringo is here."
2377
- }
2378
- }
2379
- ]);
2380
- let type = await personCardType(testCards);
2381
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2382
- on: type,
2383
- any: [{ matches: "ringo" }, { eq: { name: "Mango" } }]
2384
- } });
2385
- assert.strictEqual(meta.page.total, 2, `union of the 'matches' branch and the 'eq' branch`);
2386
- assert.deepEqual(getIds(cards), [mango.id, ringo.id], "results are correct");
2387
- });
2388
- (0, import_qunit.test)(`'matches' composes inside 'not'`, async function(assert) {
2389
- let { mango, vangogh, ringo } = testCards;
2390
- await setupIndex(dbAdapter, [
2391
- {
2392
- card: mango,
2393
- data: {
2394
- search_doc: { name: "Mango" },
2395
- markdown: "Mango is here."
2396
- }
2397
- },
2398
- {
2399
- card: vangogh,
2400
- data: {
2401
- search_doc: { name: "Van Gogh" },
2402
- markdown: "Van Gogh is here."
2403
- }
2404
- },
2405
- {
2406
- card: ringo,
2407
- data: {
2408
- search_doc: { name: "Ringo" },
2409
- markdown: "Ringo is here."
2410
- }
2411
- }
2412
- ]);
2413
- let type = await personCardType(testCards);
2414
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2415
- on: type,
2416
- not: { matches: "mango" }
2417
- } });
2418
- assert.strictEqual(meta.page.total, 2, `'not' drops the one row that matched 'mango'`);
2419
- assert.deepEqual(getIds(cards), [ringo.id, vangogh.id], "non-mango person rows returned");
2420
- });
2421
- (0, import_qunit.test)(`'_matchRelevance' sort orders matched rows ahead of non-matched (SQLite 1/0 fallback)`, async function(assert) {
2422
- let { mango, vangogh, ringo } = testCards;
2423
- await setupIndex(dbAdapter, [
2424
- {
2425
- card: mango,
2426
- data: {
2427
- search_doc: { name: "Mango" },
2428
- markdown: "Mango is here."
2429
- }
2430
- },
2431
- {
2432
- card: vangogh,
2433
- data: {
2434
- search_doc: { name: "Van Gogh" },
2435
- markdown: "Van Gogh is here."
2436
- }
2437
- },
2438
- {
2439
- card: ringo,
2440
- data: {
2441
- search_doc: { name: "Ringo" },
2442
- markdown: "Ringo is here."
2443
- }
2444
- }
2445
- ]);
2446
- let query = { filter: {
2447
- on: await personCardType(testCards),
2448
- any: [{ matches: "ringo" }, { eq: { name: "Mango" } }]
2449
- } };
2450
- let desc = await indexQueryEngine.searchCards(new URL(testRealmURL), {
2451
- ...query,
2452
- sort: [{ by: "_matchRelevance" }]
2453
- });
2454
- assert.deepEqual(getIds(desc.cards), [ringo.id, mango.id], "best match (the matches-branch hit) sorts first by default (desc)");
2455
- let asc = await indexQueryEngine.searchCards(new URL(testRealmURL), {
2456
- ...query,
2457
- sort: [{
2458
- by: "_matchRelevance",
2459
- direction: "asc"
2460
- }]
2461
- });
2462
- assert.deepEqual(getIds(asc.cards), [mango.id, ringo.id], "asc reverses the relevance ordering");
2463
- });
2464
- (0, import_qunit.test)(`'_matchRelevance' sort with no positive 'matches' term throws`, async function(assert) {
2465
- let { mango, vangogh, ringo } = testCards;
2466
- await setupIndex(dbAdapter, [
2467
- {
2468
- card: mango,
2469
- data: { search_doc: { name: "Mango" } }
2470
- },
2471
- {
2472
- card: vangogh,
2473
- data: { search_doc: { name: "Van Gogh" } }
2474
- },
2475
- {
2476
- card: ringo,
2477
- data: { search_doc: { name: "Ringo" } }
2478
- }
2479
- ]);
2480
- let type = await personCardType(testCards);
2481
- await assert.rejects(indexQueryEngine.searchCards(new URL(testRealmURL), {
2482
- filter: {
2483
- on: type,
2484
- eq: { name: "Mango" }
2485
- },
2486
- sort: [{
2487
- by: "_matchRelevance",
2488
- direction: "desc"
2489
- }]
2490
- }), /requires at least one positive `matches` filter/, "a query with no matches term cannot sort by relevance");
2491
- await assert.rejects(indexQueryEngine.searchCards(new URL(testRealmURL), {
2492
- filter: {
2493
- on: type,
2494
- not: { matches: "mango" }
2495
- },
2496
- sort: [{
2497
- by: "_matchRelevance",
2498
- direction: "desc"
2499
- }]
2500
- }), /requires at least one positive `matches` filter/, "a negated matches term does not count as a positive term");
2501
- });
2502
- (0, import_qunit.test)("can sort using a general field that is not an attribute of a card", async function(assert) {
2503
- await setupIndex(dbAdapter, [
2504
- {
2505
- url: `${testRealmURL}vangogh.json`,
2506
- file_alias: `${testRealmURL}vangogh`,
2507
- type: "instance",
2508
- generation: 1,
2509
- realm_url: testRealmURL,
2510
- deps: [],
2511
- types: [`${testRealmURL}person/Person`, "https://cardstack.com/base/card-api/CardDef"],
2512
- last_modified: "1",
2513
- resource_created_at: "1"
2514
- },
2515
- {
2516
- url: `${testRealmURL}jimmy.json`,
2517
- file_alias: `${testRealmURL}jimmy`,
2518
- type: "instance",
2519
- generation: 1,
2520
- realm_url: testRealmURL,
2521
- deps: [],
2522
- types: [`${testRealmURL}person/Person`, "https://cardstack.com/base/card-api/CardDef"],
2523
- last_modified: "3",
2524
- resource_created_at: "3"
2525
- },
2526
- {
2527
- url: `${testRealmURL}donald.json`,
2528
- file_alias: `${testRealmURL}donald`,
2529
- type: "instance",
2530
- generation: 1,
2531
- realm_url: testRealmURL,
2532
- deps: [],
2533
- types: [`${testRealmURL}person/Person`, "https://cardstack.com/base/card-api/CardDef"],
2534
- last_modified: "2",
2535
- resource_created_at: "2"
2536
- }
2537
- ]);
2538
- let { results } = await indexQueryEngine.search(new URL(testRealmURL), { sort: [{
2539
- by: "lastModified",
2540
- direction: "desc"
2541
- }] }, { includeErrors: true }, { kind: "dataOnly" });
2542
- assert.deepEqual(results.map((r) => r.url), [
2543
- `${testRealmURL}jimmy.json`,
2544
- `${testRealmURL}donald.json`,
2545
- `${testRealmURL}vangogh.json`
2546
- ], "results are correct");
2547
- let { results: results2 } = await indexQueryEngine.search(new URL(testRealmURL), { sort: [{
2548
- by: "lastModified",
2549
- direction: "asc"
2550
- }] }, { includeErrors: true }, { kind: "dataOnly" });
2551
- assert.deepEqual(results2.map((r) => r.url), [
2552
- `${testRealmURL}vangogh.json`,
2553
- `${testRealmURL}donald.json`,
2554
- `${testRealmURL}jimmy.json`
2555
- ], "results are correct");
2556
- let { results: results3 } = await indexQueryEngine.search(new URL(testRealmURL), { sort: [{
2557
- by: "createdAt",
2558
- direction: "desc"
2559
- }] }, { includeErrors: true }, { kind: "dataOnly" });
2560
- assert.deepEqual(results3.map((r) => r.url), [
2561
- `${testRealmURL}jimmy.json`,
2562
- `${testRealmURL}donald.json`,
2563
- `${testRealmURL}vangogh.json`
2564
- ], "results are correct");
2565
- });
2566
- });
2567
- function getIds(resources) {
2568
- return resources.map((r) => r.id);
2569
- }
2570
- function internalKeyToCodeRef(key) {
2571
- let parts = key.split("/");
2572
- let name = parts.pop();
2573
- return {
2574
- module: parts.join("/"),
2575
- name
2576
- };
2577
- }
2578
- async function personCardType(testCards) {
2579
- let { vangogh } = testCards;
2580
- if (!vangogh) throw new Error(`missing the 'vangogh' test card in the--this is the card we use to derive the Person type`);
2581
- return internalKeyToCodeRef([...await getTypes(vangogh)].shift());
2582
- }
2583
- async function SimpleSpecType(testCards) {
2584
- let { stringFieldEntry } = testCards;
2585
- if (!stringFieldEntry) throw new Error(`missing the 'stringFieldEntry' test card in the--this is the card we use to derive the SimpleSpec type`);
2586
- return internalKeyToCodeRef([...await getTypes(stringFieldEntry)].shift());
2587
- }
2588
- async function eventType(testCards) {
2589
- let { mangoBirthday } = testCards;
2590
- if (!mangoBirthday) throw new Error(`missing the 'mangoBirthday' test card in the--this is the card we use to derive the Event type`);
2591
- return internalKeyToCodeRef([...await getTypes(mangoBirthday)].shift());
2592
- }
2593
- //#endregion