@cardstack/boxel-cli 0.9.0 → 0.10.0-unstable.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (995) hide show
  1. package/README.md +12 -0
  2. package/bundled-test-harness/assets/account-switch-failed-GCSVbJML.js +23 -0
  3. package/bundled-test-harness/assets/account-switch-failed-GsWni_Gk.css +18 -0
  4. package/bundled-test-harness/assets/account-switch-failed-test-CdZWNths.js +45 -0
  5. package/bundled-test-harness/assets/add-workspace-c7L50Gx8.js +141 -0
  6. package/bundled-test-harness/assets/add-workspace-test-BZxHa6Pe.js +72 -0
  7. package/bundled-test-harness/assets/advanced-color-picker-0pGF-3WG.js +504 -0
  8. package/bundled-test-harness/assets/advanced-color-picker-pbO4HWc_.js +2 -0
  9. package/bundled-test-harness/assets/ai-assistant-test-Dnm4o9vK.js +2211 -0
  10. package/bundled-test-harness/assets/ai-module-creation-test-C6253CMt.js +151 -0
  11. package/bundled-test-harness/assets/aibot-message-miKyGeKk.js +278 -0
  12. package/bundled-test-harness/assets/app-i8pGdQkw.js +22855 -0
  13. package/bundled-test-harness/assets/app-zC7o6PyQ.css +2718 -0
  14. package/bundled-test-harness/assets/audio-file-def-DHnydP0t.js +133 -0
  15. package/bundled-test-harness/assets/auth-container-BP2gSoo4.css +51 -0
  16. package/bundled-test-harness/assets/auth-container-DN94iVfX.js +24 -0
  17. package/bundled-test-harness/assets/avif-meta-extractor-Bo5zRX1V.js +162 -0
  18. package/bundled-test-harness/assets/base64-image-B0RYxzHT.js +2 -0
  19. package/bundled-test-harness/assets/base64-image-Bxjqdwew.js +262 -0
  20. package/bundled-test-harness/assets/big-integer-7RLj5_7H.js +89 -0
  21. package/bundled-test-harness/assets/big-integer-C9sJxKVy.js +2 -0
  22. package/bundled-test-harness/assets/binary-upload-dedupe-test-DZo3EaV0.js +308 -0
  23. package/bundled-test-harness/assets/boolean-CcKPYUph.js +94 -0
  24. package/bundled-test-harness/assets/boolean-DvsSmtM7.js +2 -0
  25. package/bundled-test-harness/assets/brand-functional-palette-KpVSY2Sa.js +137 -0
  26. package/bundled-test-harness/assets/brand-logo-DDiOec0t.js +295 -0
  27. package/bundled-test-harness/assets/broken-link-template-test-DAngUbFJ.js +192 -0
  28. package/bundled-test-harness/assets/bundled-base-C_lumba6.js +254 -0
  29. package/bundled-test-harness/assets/bundled-base-modules-test-CSF7Rl4Z.js +54 -0
  30. package/bundled-test-harness/assets/buried-stack-item-scroll-test-B0J_EP88.js +236 -0
  31. package/bundled-test-harness/assets/bxl-expression-test-Dej7WgI6.js +250 -0
  32. package/bundled-test-harness/assets/can-invoke-test-elyUcOKT.js +401 -0
  33. package/bundled-test-harness/assets/card-api-CjWXCkqh.js +8 -0
  34. package/bundled-test-harness/assets/card-api-Dzje0smT.js +4393 -0
  35. package/bundled-test-harness/assets/card-api-test-DA8d4Ooc.js +198 -0
  36. package/bundled-test-harness/assets/card-basics-test-mp1Odo-l.js +5364 -0
  37. package/bundled-test-harness/assets/card-chooser-paging-test-y8OfboYd.js +235 -0
  38. package/bundled-test-harness/assets/card-chooser-test-nmg2zkDj.js +393 -0
  39. package/bundled-test-harness/assets/card-collection-BXiO3i7R.js +118 -0
  40. package/bundled-test-harness/assets/card-context-search-results-Dbhn7lvW.js +30 -0
  41. package/bundled-test-harness/assets/card-context-search-results-test-DVXT-YC5.js +184 -0
  42. package/bundled-test-harness/assets/card-def-field-def-relationships-test-mX4rxrtO.js +562 -0
  43. package/bundled-test-harness/assets/card-delete-test-BxFsqFnX.js +466 -0
  44. package/bundled-test-harness/assets/card-error-C-7hjxu9.js +72 -0
  45. package/bundled-test-harness/assets/card-error-awaiting-index-test-BvfY2eaW.js +53 -0
  46. package/bundled-test-harness/assets/card-error-detail-nMwopDir.js +271 -0
  47. package/bundled-test-harness/assets/card-info-CTFxdohf.js +2 -0
  48. package/bundled-test-harness/assets/card-list-B9QrkJ97.js +2 -0
  49. package/bundled-test-harness/assets/card-list-XbwLCXZS.js +202 -0
  50. package/bundled-test-harness/assets/card-resource-JGLjQUy6.js +86 -0
  51. package/bundled-test-harness/assets/cards-grid-CWG41hZE.js +344 -0
  52. package/bundled-test-harness/assets/cards-grid-DSpX99p6.js +2 -0
  53. package/bundled-test-harness/assets/cards-grid-layout-Bht0LwZy.js +2 -0
  54. package/bundled-test-harness/assets/cards-grid-layout-CdpKlHUb.js +111 -0
  55. package/bundled-test-harness/assets/check-correctness-test-C4BrUeKA.js +554 -0
  56. package/bundled-test-harness/assets/clip-BEVvLrXx.js +2 -0
  57. package/bundled-test-harness/assets/clip-CoB714qX.js +92 -0
  58. package/bundled-test-harness/assets/code-ref-C2uguisI.js +2 -0
  59. package/bundled-test-harness/assets/code-ref-Cy7sV5a4.js +138 -0
  60. package/bundled-test-harness/assets/code-submode-availability-test-BsA_Ul01.js +198 -0
  61. package/bundled-test-harness/assets/code-submode-test-DkBhpEPB.js +1839 -0
  62. package/bundled-test-harness/assets/codeblocks-test-B1eZ2_JF.js +418 -0
  63. package/bundled-test-harness/assets/codemirror-editor-C6pxSm5y.js +2 -0
  64. package/bundled-test-harness/assets/codemirror-editor-DzM46Cd8.js +701 -0
  65. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-BemP-ZdG.js +366 -0
  66. package/bundled-test-harness/assets/color-C-jGNFWZ.js +2 -0
  67. package/bundled-test-harness/assets/color-field-test-DPIRaBec.js +212 -0
  68. package/bundled-test-harness/assets/color-picker-field-Bv4IjS-d.js +139 -0
  69. package/bundled-test-harness/assets/color-picker-field-D1bYCQIg.js +2 -0
  70. package/bundled-test-harness/assets/color-wheel-picker-IIaCQplL.js +283 -0
  71. package/bundled-test-harness/assets/color-wheel-picker-Kw-UN3kV.js +2 -0
  72. package/bundled-test-harness/assets/color-zzCBneih.js +65 -0
  73. package/bundled-test-harness/assets/command-data-BMBtjT1E.js +95 -0
  74. package/bundled-test-harness/assets/command-data-BXC5Z0oA.js +2 -0
  75. package/bundled-test-harness/assets/compaction-test-CxUKnxlQ.js +150 -0
  76. package/bundled-test-harness/assets/components-Ct_agx0G.js +14294 -0
  77. package/bundled-test-harness/assets/computed-test-C-lpGQQ3.js +1320 -0
  78. package/bundled-test-harness/assets/container-BdPu8rvc.css +5565 -0
  79. package/bundled-test-harness/assets/container-Dj-5prh9.js +11288 -0
  80. package/bundled-test-harness/assets/contains-many-component-CAWqzX8W.js +2 -0
  81. package/bundled-test-harness/assets/contrast-checker-addon-BTLD7oMx.js +2 -0
  82. package/bundled-test-harness/assets/contrast-checker-addon-DBzizR04.js +71 -0
  83. package/bundled-test-harness/assets/convert-to-class-name-test-zZuKxYvF.js +17 -0
  84. package/bundled-test-harness/assets/coordinate-Bw8va6tO.js +48 -0
  85. package/bundled-test-harness/assets/copy-file-to-realm-test-DtCKPzqj.js +148 -0
  86. package/bundled-test-harness/assets/country-B_tWpLlO.js +199 -0
  87. package/bundled-test-harness/assets/create-file-modal-D-VPyEYp.js +570 -0
  88. package/bundled-test-harness/assets/create-listing-modal-test-hyLkQY0u.js +273 -0
  89. package/bundled-test-harness/assets/create-listing-pr-request-test-rjWFA_5S.js +117 -0
  90. package/bundled-test-harness/assets/create-spec-test-HKIxZGxK.js +256 -0
  91. package/bundled-test-harness/assets/create-specs-9-ELVyJP.js +215 -0
  92. package/bundled-test-harness/assets/create-submission-workflow-test-DNZrbRX8.js +132 -0
  93. package/bundled-test-harness/assets/credential-fields-test-xPEdA911.js +157 -0
  94. package/bundled-test-harness/assets/css-value-Du3HL39X.js +48 -0
  95. package/bundled-test-harness/assets/csv-file-def-EHRmilrp.js +277 -0
  96. package/bundled-test-harness/assets/currency-y6ZCHIqG.js +134 -0
  97. package/bundled-test-harness/assets/date-B27PrSFT.js +183 -0
  98. package/bundled-test-harness/assets/date-CiP5Eb9i.js +2 -0
  99. package/bundled-test-harness/assets/date-time-fields-test-Clf5vxRW.js +359 -0
  100. package/bundled-test-harness/assets/datetime-BEbR9YgU.js +201 -0
  101. package/bundled-test-harness/assets/datetime-DPnrt1wl.js +2 -0
  102. package/bundled-test-harness/assets/datetime-stamp-AuT7F7qn.js +2 -0
  103. package/bundled-test-harness/assets/datetime-stamp-CGwP2P3f.js +81 -0
  104. package/bundled-test-harness/assets/day-BFLxZ9bQ.js +2 -0
  105. package/bundled-test-harness/assets/day-CQoEkqgE.js +113 -0
  106. package/bundled-test-harness/assets/debug-message-test-CzgOpfcI.js +117 -0
  107. package/bundled-test-harness/assets/dist-B-fYvxfL.js +389 -0
  108. package/bundled-test-harness/assets/dist-C2IXvIKX.js +323 -0
  109. package/bundled-test-harness/assets/dist-CdNZu43l.js +1710 -0
  110. package/bundled-test-harness/assets/docx-file-def-BQMw460_.js +60 -0
  111. package/bundled-test-harness/assets/docx-meta-extractor-DBlmH_kV.js +60 -0
  112. package/bundled-test-harness/assets/docx-meta-extractor-Dw4gZ0ae.js +2 -0
  113. package/bundled-test-harness/assets/duration-B0SnEiw1.js +184 -0
  114. package/bundled-test-harness/assets/duration-DbjJTFeA.js +2 -0
  115. package/bundled-test-harness/assets/email-C-8cyWiQ.js +80 -0
  116. package/bundled-test-harness/assets/email-field-test-BOBmvQqx.js +75 -0
  117. package/bundled-test-harness/assets/email-xUgCst-p.js +2 -0
  118. package/bundled-test-harness/assets/enum-BWiCyJlu.js +167 -0
  119. package/bundled-test-harness/assets/enum-CzYjivhO.js +2 -0
  120. package/bundled-test-harness/assets/enum-field-test-Bea9EsQR.js +953 -0
  121. package/bundled-test-harness/assets/error-display-test-Cbl2D_0c.js +343 -0
  122. package/bundled-test-harness/assets/ethereum-address-Bw_J05bD.js +78 -0
  123. package/bundled-test-harness/assets/ethereum-address-C9wHMBt3.js +2 -0
  124. package/bundled-test-harness/assets/expiration-warning-BHcJEjZt.js +90 -0
  125. package/bundled-test-harness/assets/expiration-warning-_G8SKZd0.js +2 -0
  126. package/bundled-test-harness/assets/externals-CKblKBo1.js +4393 -0
  127. package/bundled-test-harness/assets/fallback-banner-BqCrvTDt.js +24 -0
  128. package/bundled-test-harness/assets/fallback-banner-live-delete-test-D_AYMvf6.js +207 -0
  129. package/bundled-test-harness/assets/fallback-banner-test-B8Ne9a5g.js +225 -0
  130. package/bundled-test-harness/assets/fallback-banner-test-C7oaSxd1.js +53 -0
  131. package/bundled-test-harness/assets/fallback-models-test-DY-PvU9k.js +161 -0
  132. package/bundled-test-harness/assets/field-component-Bj8YthPE.js +2 -0
  133. package/bundled-test-harness/assets/field-configuration-test-B5LztQ47.js +548 -0
  134. package/bundled-test-harness/assets/field-edit-Cx_haspD.js +36 -0
  135. package/bundled-test-harness/assets/field-edit-DQZWUz3F.js +2 -0
  136. package/bundled-test-harness/assets/field-markdown-domain-test-DnqK3CrE.js +616 -0
  137. package/bundled-test-harness/assets/field-markdown-oversize-test-BEpbXIvl.js +88 -0
  138. package/bundled-test-harness/assets/field-markdown-primitives-test-BDORWoOk.js +365 -0
  139. package/bundled-test-harness/assets/field-markdown-specialized-test-BmIzadYq.js +534 -0
  140. package/bundled-test-harness/assets/field-test-helpers-CRF9-jFw.js +45 -0
  141. package/bundled-test-harness/assets/file-api-DPMJghBY.js +7 -0
  142. package/bundled-test-harness/assets/file-attachment-test-DFLXg3xV.js +796 -0
  143. package/bundled-test-harness/assets/file-chooser-panel-test-B4DzCWkt.js +153 -0
  144. package/bundled-test-harness/assets/file-chooser-test-DpjOWgpB.js +504 -0
  145. package/bundled-test-harness/assets/file-def-edit-Bstl7Kkl.js +2 -0
  146. package/bundled-test-harness/assets/file-def-edit-C1dzJxmQ.js +26 -0
  147. package/bundled-test-harness/assets/file-def-embedded-CUy4G7Vc.js +2 -0
  148. package/bundled-test-harness/assets/file-def-embedded-DJs6P5t0.js +38 -0
  149. package/bundled-test-harness/assets/file-def-fitted-BlrBFfLh.js +38 -0
  150. package/bundled-test-harness/assets/file-def-fitted-Bo5Qfkyf.js +2 -0
  151. package/bundled-test-harness/assets/file-def-isolated-BsHydanv.js +38 -0
  152. package/bundled-test-harness/assets/file-def-isolated-Dp-Lc99-.js +2 -0
  153. package/bundled-test-harness/assets/file-def-serialization-test-CISKpt_o.js +89 -0
  154. package/bundled-test-harness/assets/file-menu-items-7_ltrFZq.js +117 -0
  155. package/bundled-test-harness/assets/file-menu-items-BnRG9ydE.js +2 -0
  156. package/bundled-test-harness/assets/file-preview-stage-CV3qZpiK.js +72 -0
  157. package/bundled-test-harness/assets/file-preview-stage-DTA5X8rX.js +2 -0
  158. package/bundled-test-harness/assets/file-shell-embedded-BpmiVzIG.js +2 -0
  159. package/bundled-test-harness/assets/file-shell-embedded-CEv0-6OE.js +68 -0
  160. package/bundled-test-harness/assets/file-shell-fitted-C6k3GnMc.js +2 -0
  161. package/bundled-test-harness/assets/file-shell-fitted-iSTg3PJa.js +98 -0
  162. package/bundled-test-harness/assets/file-shell-isolated-C-pEod2J.js +195 -0
  163. package/bundled-test-harness/assets/file-shell-isolated-DI9oU7ix.js +2 -0
  164. package/bundled-test-harness/assets/file-tree-from-index-BtOOMqnb.js +151 -0
  165. package/bundled-test-harness/assets/file-tree-from-index-test-T8w3hPw_.js +96 -0
  166. package/bundled-test-harness/assets/film-5n9_gRqZ.js +4074 -0
  167. package/bundled-test-harness/assets/film-Ca2Vzlfu.js +13 -0
  168. package/bundled-test-harness/assets/film-DEvhBbBu.js +2 -0
  169. package/bundled-test-harness/assets/fitted-6OGuHgoU.js +2 -0
  170. package/bundled-test-harness/assets/fitted-B2l1jlSp.js +34 -0
  171. package/bundled-test-harness/assets/flac-meta-extractor-BoJqvmDC.js +99 -0
  172. package/bundled-test-harness/assets/font-file-def-Czzt5paT.js +64 -0
  173. package/bundled-test-harness/assets/font-meta-extractor-DQYT_e5b.js +2 -0
  174. package/bundled-test-harness/assets/font-meta-extractor-IHD-pG8V.js +303 -0
  175. package/bundled-test-harness/assets/formatted-aibot-message-test-Djsl8RzE.js +109 -0
  176. package/bundled-test-harness/assets/from-elsewhere-BXcLYxxu.js +131 -0
  177. package/bundled-test-harness/assets/frontmatter-field-CciolgL3.js +41 -0
  178. package/bundled-test-harness/assets/garbage-collection-test-BTOLAfB6.js +403 -0
  179. package/bundled-test-harness/assets/gauge-C1loqGq3.js +2 -0
  180. package/bundled-test-harness/assets/gauge-u8dxl90d.js +106 -0
  181. package/bundled-test-harness/assets/general-test-Cd5WtVvd.js +926 -0
  182. package/bundled-test-harness/assets/get-relationship-membership-state-test-DJAuhOVM.js +1308 -0
  183. package/bundled-test-harness/assets/gif-meta-extractor-tSaPtuYW.js +114 -0
  184. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-DNSy5l59.js +160 -0
  185. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-B6BbQxYq.js +74 -0
  186. package/bundled-test-harness/assets/helper-m6jA5HmU.js +478 -0
  187. package/bundled-test-harness/assets/host-submode-test-CsgdksBi.js +1243 -0
  188. package/bundled-test-harness/assets/html-file-def-yKtdMSa-.js +82 -0
  189. package/bundled-test-harness/assets/hydratable-card-CxNfbqly.js +147 -0
  190. package/bundled-test-harness/assets/hydratable-card-test-NJ4CI4ey.js +426 -0
  191. package/bundled-test-harness/assets/icons-B3SAtRoj.js +894 -0
  192. package/bundled-test-harness/assets/image-file-def-B0rpS3Yy.js +3 -0
  193. package/bundled-test-harness/assets/image-file-def-DUFmjNL8.js +65 -0
  194. package/bundled-test-harness/assets/image-olOUqgMQ.js +47 -0
  195. package/bundled-test-harness/assets/index-changes-test-D7OE-99k.js +367 -0
  196. package/bundled-test-harness/assets/index-query-engine-test-BBKqgSmg.js +2593 -0
  197. package/bundled-test-harness/assets/inspector-test-DV6Ms2uz.js +1930 -0
  198. package/bundled-test-harness/assets/instance-filter-matcher-test-Bs4kf7E8.js +788 -0
  199. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DIfgRhIN.js +475 -0
  200. package/bundled-test-harness/assets/interact-submode-setup-D4M_e580.js +566 -0
  201. package/bundled-test-harness/assets/is-component-declaration-test-jPGRTVh1.js +50 -0
  202. package/bundled-test-harness/assets/iso-bmff-DHtkSbQM.js +205 -0
  203. package/bundled-test-harness/assets/iso-bmff-zmOHoSVg.js +2 -0
  204. package/bundled-test-harness/assets/isolated-and-edit-BAnwcK1T.js +2 -0
  205. package/bundled-test-harness/assets/job-priority-header-test-7j2f3Dtl.js +81 -0
  206. package/bundled-test-harness/assets/job-scoped-instance-residency-test-DPzVQUL3.js +103 -0
  207. package/bundled-test-harness/assets/join-the-community-Ft5fjeIA.js +86 -0
  208. package/bundled-test-harness/assets/jpg-meta-extractor-Dsq6rZ8F.js +88 -0
  209. package/bundled-test-harness/assets/json-field-CxOZvp3k.js +19 -0
  210. package/bundled-test-harness/assets/json-field-ojdwGD6T.js +2 -0
  211. package/bundled-test-harness/assets/json-file-def-Da_5-zSM.js +298 -0
  212. package/bundled-test-harness/assets/last-modified-date-BnyJsc04.js +43 -0
  213. package/bundled-test-harness/assets/last-modified-date-test-DFl2mo1B.js +28 -0
  214. package/bundled-test-harness/assets/links-to-editor-DO24-71w.js +2 -0
  215. package/bundled-test-harness/assets/links-to-many-component-C7DabwAY.js +2 -0
  216. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-D4lDhvnQ.js +398 -0
  217. package/bundled-test-harness/assets/linksto-error-sentinel-test-oWgDz00K.js +238 -0
  218. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-CpSl7zJ7.js +354 -0
  219. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-DJY3J8Xl.js +303 -0
  220. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BxzfoONe.js +197 -0
  221. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DyE99km_.js +260 -0
  222. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-dcWAAgxt.js +196 -0
  223. package/bundled-test-harness/assets/llm-model-DrswiczZ.js +64 -0
  224. package/bundled-test-harness/assets/login-C-EIG0-Q.css +543 -0
  225. package/bundled-test-harness/assets/login-CNeL-9IC.js +408 -0
  226. package/bundled-test-harness/assets/login-error-text-test-CEH2tjNP.js +51 -0
  227. package/bundled-test-harness/assets/login-test-BpMx7qwV.js +246 -0
  228. package/bundled-test-harness/assets/m4a-meta-extractor-BJkMHUIK.js +204 -0
  229. package/bundled-test-harness/assets/main-BaUgfpPE.js +5 -0
  230. package/bundled-test-harness/assets/markdown-ByEGbwov.js +7 -0
  231. package/bundled-test-harness/assets/markdown-KJzgTg-A.js +2 -0
  232. package/bundled-test-harness/assets/markdown-editor-mode-select-BUGPXaSE.js +2 -0
  233. package/bundled-test-harness/assets/markdown-editor-mode-select-DBk8dG0O.js +54 -0
  234. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-BIlEmna9.js +470 -0
  235. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B6rscKpk.js +447 -0
  236. package/bundled-test-harness/assets/markdown-embed-preview-test-CTQw1wq-.js +368 -0
  237. package/bundled-test-harness/assets/markdown-fallback-BVsco6gJ.js +2 -0
  238. package/bundled-test-harness/assets/markdown-fallback-test-C_CIFEzH.js +316 -0
  239. package/bundled-test-harness/assets/markdown-highlighting-test-D6YvywF5.js +244 -0
  240. package/bundled-test-harness/assets/markdown-preview-1TSMSUv0.js +64 -0
  241. package/bundled-test-harness/assets/markdown-preview-jbuUjLoD.js +72 -0
  242. package/bundled-test-harness/assets/markdown-preview-test-zuU5uoA_.js +238 -0
  243. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-CoicGRkb.js +146 -0
  244. package/bundled-test-harness/assets/menu-items-DZ_uOoYu.js +2 -0
  245. package/bundled-test-harness/assets/message-tool-test-K6LgTq5d.js +33 -0
  246. package/bundled-test-harness/assets/metadata-fields-WiOuUCDl.js +1415 -0
  247. package/bundled-test-harness/assets/metadata-fields-iu5AfQp3.js +2 -0
  248. package/bundled-test-harness/assets/midi-audio-def-CD2-4Wjx.js +52 -0
  249. package/bundled-test-harness/assets/midi-meta-extractor-CE3sLiEV.js +284 -0
  250. package/bundled-test-harness/assets/midi-meta-extractor-O7c8LHYV.js +2 -0
  251. package/bundled-test-harness/assets/migrate-skill-test-Beh-AeSN.js +161 -0
  252. package/bundled-test-harness/assets/mini-BNXINKKF.js +85 -0
  253. package/bundled-test-harness/assets/mini-C43Q4BWp.js +1519 -0
  254. package/bundled-test-harness/assets/mini-card-chooser-test-B1GMp-31.js +272 -0
  255. package/bundled-test-harness/assets/mini-file-chooser-test-CbI1vrQn.js +201 -0
  256. package/bundled-test-harness/assets/missing-template-BPhJRbDs.js +48 -0
  257. package/bundled-test-harness/assets/missing-template-DP-Pi-HQ.js +2 -0
  258. package/bundled-test-harness/assets/modal-KpPz2f8x.js +322 -0
  259. package/bundled-test-harness/assets/modal-container-0Efz_h2z.js +40 -0
  260. package/bundled-test-harness/assets/model-cost-tier-test-D-5VSjh6.js +173 -0
  261. package/bundled-test-harness/assets/module-contents-service-BRkTETb6.js +256 -0
  262. package/bundled-test-harness/assets/moment-Cln59YUK.js +3474 -0
  263. package/bundled-test-harness/assets/monaco-AbHCoDJY.js +143 -0
  264. package/bundled-test-harness/assets/monaco-test-DCPi18sy.js +100 -0
  265. package/bundled-test-harness/assets/monaco-test-waiter-lvFEYpFj.js +190 -0
  266. package/bundled-test-harness/assets/month-1eUIsvWN.js +2 -0
  267. package/bundled-test-harness/assets/month-BeUdWMWQ.js +123 -0
  268. package/bundled-test-harness/assets/month-day-Bbsd8YbR.js +192 -0
  269. package/bundled-test-harness/assets/month-day-Dks5STJu.js +2 -0
  270. package/bundled-test-harness/assets/month-year-pL_rpUhX.js +2 -0
  271. package/bundled-test-harness/assets/month-year-wH_YnYgL.js +93 -0
  272. package/bundled-test-harness/assets/mp3-meta-extractor-C3u34UHM.js +476 -0
  273. package/bundled-test-harness/assets/mp4-meta-extractor-Bj3F7dxs.js +188 -0
  274. package/bundled-test-harness/assets/multiple-stacks-test-mkNdTUMI.js +208 -0
  275. package/bundled-test-harness/assets/nested-query-field-render-test-BQLn3wg9.js +249 -0
  276. package/bundled-test-harness/assets/no-stacks-test-DpwZQAJ-.js +48 -0
  277. package/bundled-test-harness/assets/number-DZa-fHpu.js +151 -0
  278. package/bundled-test-harness/assets/number-Dvua76YP.js +3 -0
  279. package/bundled-test-harness/assets/number-field-test-BiaH2eaB.js +184 -0
  280. package/bundled-test-harness/assets/number-input-D5nDYDkK.js +82 -0
  281. package/bundled-test-harness/assets/office-extract-JzYva33g.js +27 -0
  282. package/bundled-test-harness/assets/office-extract-XMpsyYRh.js +2 -0
  283. package/bundled-test-harness/assets/ogg-meta-extractor-DJosZ9LA.js +225 -0
  284. package/bundled-test-harness/assets/on-key-BBVkS8Bi.js +472 -0
  285. package/bundled-test-harness/assets/ooxml-BlAE2w4d.js +172 -0
  286. package/bundled-test-harness/assets/ooxml-D-p8OmuM.js +2 -0
  287. package/bundled-test-harness/assets/open-image-in-new-tab-test-DWBU5pw9.js +52 -0
  288. package/bundled-test-harness/assets/operation-lowering-test-nzqprueU.js +2812 -0
  289. package/bundled-test-harness/assets/operations-CPvfTuY3.js +766 -0
  290. package/bundled-test-harness/assets/operations-invocation-test-C75T6zn3.js +523 -0
  291. package/bundled-test-harness/assets/operations-query-test-BoCszQEW.js +459 -0
  292. package/bundled-test-harness/assets/operations-test-79ipSnpM.js +2518 -0
  293. package/bundled-test-harness/assets/operations-x3Aw2Nky.js +3 -0
  294. package/bundled-test-harness/assets/operator-mode-acceptance-test-jjsYtt96.js +1188 -0
  295. package/bundled-test-harness/assets/operator-mode-card-chooser-test-hZP9gEQK.js +1036 -0
  296. package/bundled-test-harness/assets/operator-mode-links-test-DN16SuIx.js +793 -0
  297. package/bundled-test-harness/assets/operator-mode-state-service-gwiTSiWX.js +1275 -0
  298. package/bundled-test-harness/assets/operator-mode-state-service-test-Dt2qnKKP.js +206 -0
  299. package/bundled-test-harness/assets/operator-mode-test-BZnnxO9q.js +683 -0
  300. package/bundled-test-harness/assets/operator-mode-ui-test-O--qEo-y.js +1027 -0
  301. package/bundled-test-harness/assets/overlay-menu-items-test-Bl2k0aAa.js +317 -0
  302. package/bundled-test-harness/assets/overlays-CdN_JokA.js +270 -0
  303. package/bundled-test-harness/assets/overlays-clip-test-DpbR1ZTz.js +91 -0
  304. package/bundled-test-harness/assets/overlays-detached-element-test-cLgEGvMs.js +56 -0
  305. package/bundled-test-harness/assets/pane-PYdezM7g.js +330 -0
  306. package/bundled-test-harness/assets/panel-7FDqkxrr.js +474 -0
  307. package/bundled-test-harness/assets/panel-C3E0s49q.js +3540 -0
  308. package/bundled-test-harness/assets/past-sessions-test-BsjEeoze.js +321 -0
  309. package/bundled-test-harness/assets/patch-fields-test-CsixJmSr.js +1014 -0
  310. package/bundled-test-harness/assets/patch-instance-test-CBDgTi0L.js +348 -0
  311. package/bundled-test-harness/assets/pdf-file-def-9VNjnqDa.js +76 -0
  312. package/bundled-test-harness/assets/pdf-meta-extractor-BF4e5kMR.js +156 -0
  313. package/bundled-test-harness/assets/pdf-meta-extractor-D8Bxh2cc.js +2 -0
  314. package/bundled-test-harness/assets/pdf-viewer-Bu413sN8.js +112 -0
  315. package/bundled-test-harness/assets/pdf-viewer-GKDi_xmf.js +2 -0
  316. package/bundled-test-harness/assets/percentage-TOr6qK2T.js +84 -0
  317. package/bundled-test-harness/assets/permission-checking-realm-test-BRNVYszm.js +306 -0
  318. package/bundled-test-harness/assets/phone-number-D5SR8nWu.js +236 -0
  319. package/bundled-test-harness/assets/phone-number-field-test-DffwtqGd.js +73 -0
  320. package/bundled-test-harness/assets/phone-number-hf_xIVGQ.js +2 -0
  321. package/bundled-test-harness/assets/plate-Vojc88hM.js +41 -0
  322. package/bundled-test-harness/assets/plate-dTUzEMj5.js +2 -0
  323. package/bundled-test-harness/assets/player-CmRw0uM5.js +82 -0
  324. package/bundled-test-harness/assets/player-Dt85lPZl.js +2 -0
  325. package/bundled-test-harness/assets/plural-field-components-test-DNpGuH1D.js +198 -0
  326. package/bundled-test-harness/assets/png-image-def-GY7gjqya.js +48 -0
  327. package/bundled-test-harness/assets/png-meta-extractor-4pI611re.js +2 -0
  328. package/bundled-test-harness/assets/png-meta-extractor-CHp_rpAi.js +111 -0
  329. package/bundled-test-harness/assets/policy-scoped-search-test-CipPu7tY.js +339 -0
  330. package/bundled-test-harness/assets/pptx-file-def-lBBiebvn.js +60 -0
  331. package/bundled-test-harness/assets/pptx-meta-extractor-BjJYWiOJ.js +77 -0
  332. package/bundled-test-harness/assets/pptx-meta-extractor-DbT-dPRg.js +2 -0
  333. package/bundled-test-harness/assets/prerender-persistence-block-test-ClHMVvJt.js +124 -0
  334. package/bundled-test-harness/assets/prerender-serialize-cycle-test-LdqaMTK8.js +134 -0
  335. package/bundled-test-harness/assets/preview-CYlam_aW.js +74 -0
  336. package/bundled-test-harness/assets/preview-format-CiSo4kEa.js +41 -0
  337. package/bundled-test-harness/assets/preview-format-test-MsB1TOLB.js +103 -0
  338. package/bundled-test-harness/assets/process-card-B3xBGkv1.js +2 -0
  339. package/bundled-test-harness/assets/process-card-DumVcx9E.js +114 -0
  340. package/bundled-test-harness/assets/process-card-test-C44H8yVy.js +94 -0
  341. package/bundled-test-harness/assets/profile-settings-modal-ipYzrVTz.js +708 -0
  342. package/bundled-test-harness/assets/progress-circle-DJ6WSO2E.js +95 -0
  343. package/bundled-test-harness/assets/progress-circle-q358_9Sn.js +2 -0
  344. package/bundled-test-harness/assets/quarter-BjO5DlU2.js +2 -0
  345. package/bundled-test-harness/assets/quarter-_D72FwfS.js +168 -0
  346. package/bundled-test-harness/assets/query-field-membership-status-test-CzDyfK49.js +323 -0
  347. package/bundled-test-harness/assets/query-field-page-optin-test-B-x3vsmC.js +126 -0
  348. package/bundled-test-harness/assets/query-field-schema-test-DFw6KuYv.js +231 -0
  349. package/bundled-test-harness/assets/query-field-stale-prerender-test-DSQ-cv_O.js +152 -0
  350. package/bundled-test-harness/assets/query-fields-test-DQiMFRCe.js +535 -0
  351. package/bundled-test-harness/assets/rail-CNspDFyn.js +44 -0
  352. package/bundled-test-harness/assets/rail-D2YcQ0VP.js +2 -0
  353. package/bundled-test-harness/assets/realm-82Z5RUM_.js +95 -0
  354. package/bundled-test-harness/assets/realm-config-SgrwqjRu.js +844 -0
  355. package/bundled-test-harness/assets/realm-config-policy-standing-test-C6sQNk2u.js +290 -0
  356. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-DcYXBlvi.js +274 -0
  357. package/bundled-test-harness/assets/realm-config-settings-test-DblJv06X.js +187 -0
  358. package/bundled-test-harness/assets/realm-dropdown-CDvL8k3B.js +560 -0
  359. package/bundled-test-harness/assets/realm-et890flh.js +2 -0
  360. package/bundled-test-harness/assets/realm-field-test-pBK_x-Xw.js +100 -0
  361. package/bundled-test-harness/assets/realm-indexing-test-DSFn2F8F.js +4380 -0
  362. package/bundled-test-harness/assets/realm-policy-test-DYnLqzTS.js +1141 -0
  363. package/bundled-test-harness/assets/realm-test-DOZT2EG5.js +2363 -0
  364. package/bundled-test-harness/assets/realm-url-tooltip-qaXTjRb-.js +56 -0
  365. package/bundled-test-harness/assets/realm-url-tooltip-test-DGTEeLH9.js +78 -0
  366. package/bundled-test-harness/assets/reasoning-test-BRkhvYjr.js +234 -0
  367. package/bundled-test-harness/assets/recent-colors-addon-BreXcpg8.js +2 -0
  368. package/bundled-test-harness/assets/recent-colors-addon-CmCkbJ2_.js +61 -0
  369. package/bundled-test-harness/assets/relationship-loading-state-test-B6UGYKzG.js +290 -0
  370. package/bundled-test-harness/assets/relative-time-BjHvL023.js +2 -0
  371. package/bundled-test-harness/assets/relative-time-ChYKOMIM.js +129 -0
  372. package/bundled-test-harness/assets/remix-card-test-CpV0kKfq.js +58 -0
  373. package/bundled-test-harness/assets/rendered-markdown-CJa7IzCC.js +263 -0
  374. package/bundled-test-harness/assets/rendered-markdown-test-CVKsHS4P.js +587 -0
  375. package/bundled-test-harness/assets/resident-instance-reuse-test-jQfW1NMn.js +82 -0
  376. package/bundled-test-harness/assets/response-field-B2-daCl2.js +38 -0
  377. package/bundled-test-harness/assets/result-tile-BSg4mzbc.js +140 -0
  378. package/bundled-test-harness/assets/rich-markdown-BtP1yamM.js +2 -0
  379. package/bundled-test-harness/assets/rich-markdown-C6rQUngb.js +218 -0
  380. package/bundled-test-harness/assets/rich-markdown-field-test-9yB6ykCe.js +1647 -0
  381. package/bundled-test-harness/assets/room-C7tKd02X.js +1008 -0
  382. package/bundled-test-harness/assets/room-message-test-DsMmRYpV.js +445 -0
  383. package/bundled-test-harness/assets/room-test-golI1H61.js +95 -0
  384. package/bundled-test-harness/assets/run-realm-code-CbXk6bnK.js +1600 -0
  385. package/bundled-test-harness/assets/run-realm-code-test-B9JeesaW.js +2468 -0
  386. package/bundled-test-harness/assets/schema-generation-test-uLLGm5Vh.js +28 -0
  387. package/bundled-test-harness/assets/score-BQhCQdUP.js +2 -0
  388. package/bundled-test-harness/assets/score-CoWEzENH.js +100 -0
  389. package/bundled-test-harness/assets/scrolling-test-WHWEkKeZ.js +384 -0
  390. package/bundled-test-harness/assets/search-BkQYpQDY.js +605 -0
  391. package/bundled-test-harness/assets/search-adorn-test-CW92JPOk.js +136 -0
  392. package/bundled-test-harness/assets/search-entries-BU4w6Ymc.js +472 -0
  393. package/bundled-test-harness/assets/search-entries-result-test-9eydsDtD.js +234 -0
  394. package/bundled-test-harness/assets/search-entries-test-ByUREx0G.js +1486 -0
  395. package/bundled-test-harness/assets/search-result-header-UFkdo0Bx.js +128 -0
  396. package/bundled-test-harness/assets/search-results-DrHTuVRZ.js +266 -0
  397. package/bundled-test-harness/assets/search-results-test-krtQQM57.js +578 -0
  398. package/bundled-test-harness/assets/search-selection-menu-test-DoqSbez7.js +108 -0
  399. package/bundled-test-harness/assets/search-sheet-persistence-test-4ZPaEY-y.js +131 -0
  400. package/bundled-test-harness/assets/search-test-BYpq32RM.js +2241 -0
  401. package/bundled-test-harness/assets/searchable-BXw4T11q.js +192 -0
  402. package/bundled-test-harness/assets/searchable-CVvPDA3Q.js +2 -0
  403. package/bundled-test-harness/assets/searchable-option-test-BhLFI4ei.js +322 -0
  404. package/bundled-test-harness/assets/searchable-search-doc-test-DrNLCF73.js +1271 -0
  405. package/bundled-test-harness/assets/secure-sign-in-VNQhe0ae.js +130 -0
  406. package/bundled-test-harness/assets/secure-sign-in-Za8PX9cD.css +24 -0
  407. package/bundled-test-harness/assets/secure-sign-in-aunWHCrB.js +73 -0
  408. package/bundled-test-harness/assets/secure-sign-in-test-BcY1TcNd.js +32 -0
  409. package/bundled-test-harness/assets/secure-sign-in-test-DRdz89BT.js +245 -0
  410. package/bundled-test-harness/assets/sending-test-mbHpGZUu.js +576 -0
  411. package/bundled-test-harness/assets/serialization-rri-form-audit-test-nypV9J82.js +136 -0
  412. package/bundled-test-harness/assets/serialization-test-aLwrFv4d.js +8758 -0
  413. package/bundled-test-harness/assets/setup-Dgn0s6Zk.js +772 -0
  414. package/bundled-test-harness/assets/shared-link-target-reuse-test-D9MR2UNc.js +207 -0
  415. package/bundled-test-harness/assets/show-card-Dwfk332M.js +67 -0
  416. package/bundled-test-harness/assets/show-card-test-CRPwwJvc.js +365 -0
  417. package/bundled-test-harness/assets/show-file-DLdFPHMR.js +34 -0
  418. package/bundled-test-harness/assets/signed-capture-DUR9PohQ.js +204 -0
  419. package/bundled-test-harness/assets/signed-capture-link-test-DfTAB6OT.js +132 -0
  420. package/bundled-test-harness/assets/single-stack-test-Crr_8nti.js +652 -0
  421. package/bundled-test-harness/assets/skill-DQ00VonZ.js +3 -0
  422. package/bundled-test-harness/assets/skill-reference-LEitQV9i.js +112 -0
  423. package/bundled-test-harness/assets/skill-yZXS1VHQ.js +76 -0
  424. package/bundled-test-harness/assets/skills-test-D3-C-Dbm.js +648 -0
  425. package/bundled-test-harness/assets/slider-picker-B6AxKL2j.js +245 -0
  426. package/bundled-test-harness/assets/slider-picker-C4Tc5o-s.js +2 -0
  427. package/bundled-test-harness/assets/spec-Cl_LB6nC.js +602 -0
  428. package/bundled-test-harness/assets/spinner-BHFM7zcR.js +39 -0
  429. package/bundled-test-harness/assets/spinner-DvAvsyDT.css +21 -0
  430. package/bundled-test-harness/assets/store-BV6WX8oV.js +2205 -0
  431. package/bundled-test-harness/assets/store-module-rebuild-test-HyphFJiF.js +454 -0
  432. package/bundled-test-harness/assets/store-search-test-nUeJ5opb.js +175 -0
  433. package/bundled-test-harness/assets/store-test-BebUIJAg.js +3460 -0
  434. package/bundled-test-harness/assets/string-BHZZwNlZ.js +9 -0
  435. package/bundled-test-harness/assets/submode-switcher-D-U9cXo0.js +169 -0
  436. package/bundled-test-harness/assets/svg-meta-extractor-BsG4w2nX.js +42 -0
  437. package/bundled-test-harness/assets/swatches-picker-4vFztxHo.js +33 -0
  438. package/bundled-test-harness/assets/swatches-picker-C7RE7uJ8.js +2 -0
  439. package/bundled-test-harness/assets/switch-submode-CuA0Zfjn.js +79 -0
  440. package/bundled-test-harness/assets/switch-submode-test-i1Qic_Cp.js +168 -0
  441. package/bundled-test-harness/assets/tag-CZNs3DPN.js +105 -0
  442. package/bundled-test-harness/assets/tests-BneuP252.js +3523 -0
  443. package/bundled-test-harness/assets/text-area-DAShQQBe.js +9 -0
  444. package/bundled-test-harness/assets/text-file-def-D2Rs6nS1.js +151 -0
  445. package/bundled-test-harness/assets/text-input-validator-test-C9IG-1GZ.js +156 -0
  446. package/bundled-test-harness/assets/theme-Dm8LWaRK.js +9 -0
  447. package/bundled-test-harness/assets/theme-card-test-Cbb6tAap.js +621 -0
  448. package/bundled-test-harness/assets/theme-scheme-island-test-DOVLakx3.js +264 -0
  449. package/bundled-test-harness/assets/three-d-model-def-DWSPQGgD.js +70 -0
  450. package/bundled-test-harness/assets/time--_Txqya1.js +126 -0
  451. package/bundled-test-harness/assets/time-DKD7Bdjd.js +2 -0
  452. package/bundled-test-harness/assets/time-slots-BZaugjq_.js +2 -0
  453. package/bundled-test-harness/assets/time-slots-C85M0rWl.js +85 -0
  454. package/bundled-test-harness/assets/timeline-B3KGDm3M.js +2 -0
  455. package/bundled-test-harness/assets/timeline-BMwgaZZu.js +59 -0
  456. package/bundled-test-harness/assets/to-device-streaming-test-CMp5bFiz.js +163 -0
  457. package/bundled-test-harness/assets/token-usage-test-CXA0b8Ep.js +166 -0
  458. package/bundled-test-harness/assets/tool-field-BGLelnsr.js +94 -0
  459. package/bundled-test-harness/assets/tool-field-BOFuDDt3.js +2 -0
  460. package/bundled-test-harness/assets/tools-CTjy7Aub.js +725 -0
  461. package/bundled-test-harness/assets/tools-calling-test--JR-7AK7.js +200 -0
  462. package/bundled-test-harness/assets/tools-test-6yAW3W5I.js +2820 -0
  463. package/bundled-test-harness/assets/tools-test-DhpMUQkz.js +1624 -0
  464. package/bundled-test-harness/assets/ts-file-def-CDbf8aw2.js +159 -0
  465. package/bundled-test-harness/assets/update-room-skills-test-DoKsS_1C.js +240 -0
  466. package/bundled-test-harness/assets/url-D0ooeJxC.js +2 -0
  467. package/bundled-test-harness/assets/url-mFskVPSX.js +96 -0
  468. package/bundled-test-harness/assets/video-file-def-AcmWqzev.js +76 -0
  469. package/bundled-test-harness/assets/wav-meta-extractor-CbTLruQf.js +368 -0
  470. package/bundled-test-harness/assets/webm-meta-extractor-C9JH-CMX.js +178 -0
  471. package/bundled-test-harness/assets/webp-meta-extractor-C6sHm4J7.js +98 -0
  472. package/bundled-test-harness/assets/website-Bxuk_OmR.js +92 -0
  473. package/bundled-test-harness/assets/week-Bxssxce7.js +2 -0
  474. package/bundled-test-harness/assets/week-DQLj9974.js +111 -0
  475. package/bundled-test-harness/assets/welcome-to-boxel-BH82RsW5.js +172 -0
  476. package/bundled-test-harness/assets/workspace-DJ_s2x4g.js +614 -0
  477. package/bundled-test-harness/assets/workspace-a11y-test-BJbZNgoP.js +197 -0
  478. package/bundled-test-harness/assets/workspace-behavior-test-BLBARTfb.js +200 -0
  479. package/bundled-test-harness/assets/workspace-chooser-BpmlVrVn.js +2219 -0
  480. package/bundled-test-harness/assets/workspace-chooser-CqLR2Dzh.css +1296 -0
  481. package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-CmAVNAWC.js +36 -0
  482. package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DEfG7Uh9.js +60 -0
  483. package/bundled-test-harness/assets/workspace-delete-multiple-test-DE7Z8ooj.js +212 -0
  484. package/bundled-test-harness/assets/workspace-delete-summary-test-CwtG_zLH.js +63 -0
  485. package/bundled-test-harness/assets/workspace-timestamp-labels-test-DFAaRmJW.js +58 -0
  486. package/bundled-test-harness/assets/xlsx-file-def-DcvaRYnZ.js +60 -0
  487. package/bundled-test-harness/assets/xlsx-meta-extractor-0RlViVaf.js +101 -0
  488. package/bundled-test-harness/assets/xlsx-meta-extractor-BH30Vuem.js +2 -0
  489. package/bundled-test-harness/assets/year-B_MBk_hE.js +78 -0
  490. package/bundled-test-harness/assets/year-hSpccI9L.js +2 -0
  491. package/bundled-test-harness/assets/zip-file-def-c84iddi9.js +288 -0
  492. package/bundled-test-harness/index.html +78 -68
  493. package/bundled-test-harness/tests/index.html +78 -68
  494. package/bundled-types/host-app/components/matrix/account-switch-failed.gts +2 -2
  495. package/bundled-types/host-app/components/matrix/auth.gts +2 -2
  496. package/bundled-types/host-app/components/matrix/cli-auth.gts +7 -6
  497. package/bundled-types/host-app/components/matrix/forgot-password.gts +43 -129
  498. package/bundled-types/host-app/components/matrix/login.gts +15 -118
  499. package/bundled-types/host-app/components/matrix/register-user.gts +45 -226
  500. package/bundled-types/host-app/components/matrix/secure-sign-in.gts +235 -0
  501. package/bundled-types/host-app/components/operator-mode/container.gts +13 -1
  502. package/bundled-types/host-app/components/operator-mode/profile-info-popover.gts +1 -1
  503. package/bundled-types/host-app/config/environment.ts +1 -1
  504. package/bundled-types/host-app/lib/secure-sign-in.ts +130 -0
  505. package/bundled-types/host-app/services/matrix-service.ts +46 -0
  506. package/bundled-types/host-app/services/monaco-service.ts +0 -5
  507. package/bundled-types/host-app/utils/login-token.ts +23 -10
  508. package/dist/api.js +1 -1
  509. package/dist/index.js +289 -285
  510. package/package.json +1 -1
  511. package/src/build-program.ts +6 -2
  512. package/src/commands/profile.ts +72 -3
  513. package/src/lib/profile-manager.ts +5 -1
  514. package/src/lib/secure-session.ts +29 -0
  515. package/src/lib/sso-login.ts +94 -15
  516. package/bundled-test-harness/assets/account-switch-failed-B3pr_iC3.js +0 -32
  517. package/bundled-test-harness/assets/account-switch-failed-DTGZZo-G.css +0 -61
  518. package/bundled-test-harness/assets/account-switch-failed-test-9ENVgvlx.js +0 -45
  519. package/bundled-test-harness/assets/add-workspace-BAbk0250.js +0 -141
  520. package/bundled-test-harness/assets/add-workspace-test-ChAja_t-.js +0 -72
  521. package/bundled-test-harness/assets/advanced-color-picker-C-xBFJ2S.js +0 -504
  522. package/bundled-test-harness/assets/advanced-color-picker-bWAmCT-8.js +0 -2
  523. package/bundled-test-harness/assets/ai-assistant-test-BJ9yetuC.js +0 -2211
  524. package/bundled-test-harness/assets/ai-module-creation-test-Bw3TKS9d.js +0 -151
  525. package/bundled-test-harness/assets/aibot-message-DkgHT6eJ.js +0 -465
  526. package/bundled-test-harness/assets/app-DW5QjtRp.js +0 -22816
  527. package/bundled-test-harness/assets/app-yCDjO4mk.css +0 -2718
  528. package/bundled-test-harness/assets/audio-file-def-bJ3cXVmC.js +0 -133
  529. package/bundled-test-harness/assets/avif-meta-extractor-CrSDfYEt.js +0 -162
  530. package/bundled-test-harness/assets/base64-image-C7UBjK5W.js +0 -262
  531. package/bundled-test-harness/assets/base64-image-CjWpxROT.js +0 -2
  532. package/bundled-test-harness/assets/big-integer-BBql7oGZ.js +0 -89
  533. package/bundled-test-harness/assets/big-integer-B_TrzRy_.js +0 -2
  534. package/bundled-test-harness/assets/binary-upload-dedupe-test-BiX8kS7D.js +0 -308
  535. package/bundled-test-harness/assets/boolean-9LNUUTfw.js +0 -2
  536. package/bundled-test-harness/assets/boolean-BAmK01TF.js +0 -94
  537. package/bundled-test-harness/assets/brand-functional-palette-CFuoS-LS.js +0 -137
  538. package/bundled-test-harness/assets/brand-logo-By89eknI.js +0 -295
  539. package/bundled-test-harness/assets/broken-link-template-test-odBriDSP.js +0 -192
  540. package/bundled-test-harness/assets/bundled-base-CLQkkmN4.js +0 -254
  541. package/bundled-test-harness/assets/bundled-base-modules-test-BYrTaTwa.js +0 -54
  542. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DU4bM5nd.js +0 -236
  543. package/bundled-test-harness/assets/bxl-expression-test-Cs9JaZbC.js +0 -250
  544. package/bundled-test-harness/assets/can-invoke-test-ccMc06BU.js +0 -401
  545. package/bundled-test-harness/assets/card-api-Bn65NUT0.js +0 -8
  546. package/bundled-test-harness/assets/card-api-test-COrFXu2i.js +0 -198
  547. package/bundled-test-harness/assets/card-api-u1pOrwS6.js +0 -4393
  548. package/bundled-test-harness/assets/card-basics-test-D4rn3iN-.js +0 -5364
  549. package/bundled-test-harness/assets/card-chooser-paging-test-bZhdrUXt.js +0 -235
  550. package/bundled-test-harness/assets/card-chooser-test-D9w1duob.js +0 -393
  551. package/bundled-test-harness/assets/card-collection-ClCV-__1.js +0 -118
  552. package/bundled-test-harness/assets/card-context-search-results-H_rN3Upz.js +0 -30
  553. package/bundled-test-harness/assets/card-context-search-results-test-jciyaouV.js +0 -184
  554. package/bundled-test-harness/assets/card-def-field-def-relationships-test-BVZoQzM8.js +0 -562
  555. package/bundled-test-harness/assets/card-delete-test-CuLcZFnY.js +0 -466
  556. package/bundled-test-harness/assets/card-error-DIOivSkD.js +0 -72
  557. package/bundled-test-harness/assets/card-error-awaiting-index-test-JMwcRONq.js +0 -53
  558. package/bundled-test-harness/assets/card-error-detail-96jWBx6B.js +0 -271
  559. package/bundled-test-harness/assets/card-info-BxPtwG1h.js +0 -2
  560. package/bundled-test-harness/assets/card-list-B34qY3io.js +0 -2
  561. package/bundled-test-harness/assets/card-list-BpCaKkZJ.js +0 -202
  562. package/bundled-test-harness/assets/card-resource-DcPbIwH9.js +0 -86
  563. package/bundled-test-harness/assets/cards-grid-CTN8nBT_.js +0 -344
  564. package/bundled-test-harness/assets/cards-grid-Cx44vL-M.js +0 -2
  565. package/bundled-test-harness/assets/cards-grid-layout-BdL0Uzxl.js +0 -111
  566. package/bundled-test-harness/assets/cards-grid-layout-Dn8Yb4ma.js +0 -2
  567. package/bundled-test-harness/assets/check-correctness-test-BfMV-MC0.js +0 -554
  568. package/bundled-test-harness/assets/clip-CK6mVuyN.js +0 -92
  569. package/bundled-test-harness/assets/clip-CfXD1JTr.js +0 -2
  570. package/bundled-test-harness/assets/code-ref-85Bih6Zl.js +0 -138
  571. package/bundled-test-harness/assets/code-ref-DATHaoyt.js +0 -2
  572. package/bundled-test-harness/assets/code-submode-availability-test-DLYlx0wo.js +0 -198
  573. package/bundled-test-harness/assets/code-submode-test-CDIi7MjD.js +0 -1824
  574. package/bundled-test-harness/assets/codeblocks-test-CNPyTvuv.js +0 -418
  575. package/bundled-test-harness/assets/codemirror-editor-BPOPTR-f.js +0 -2
  576. package/bundled-test-harness/assets/codemirror-editor-DPhG0pec.js +0 -701
  577. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Dk5lFOUq.js +0 -366
  578. package/bundled-test-harness/assets/color-BxN5gRSg.js +0 -65
  579. package/bundled-test-harness/assets/color-CrunRcis.js +0 -2
  580. package/bundled-test-harness/assets/color-field-test-COjFIpXV.js +0 -212
  581. package/bundled-test-harness/assets/color-picker-field-C-GS1CIw.js +0 -139
  582. package/bundled-test-harness/assets/color-picker-field-D3RXhbCK.js +0 -2
  583. package/bundled-test-harness/assets/color-wheel-picker-Bz8cBmf4.js +0 -283
  584. package/bundled-test-harness/assets/color-wheel-picker-DrwPrB8B.js +0 -2
  585. package/bundled-test-harness/assets/command-data-BxXgtNBf.js +0 -2
  586. package/bundled-test-harness/assets/command-data-ZdkcpEgG.js +0 -95
  587. package/bundled-test-harness/assets/compaction-test-DS7DTGT_.js +0 -150
  588. package/bundled-test-harness/assets/components-CbCTWAON.js +0 -17777
  589. package/bundled-test-harness/assets/computed-test-D_OrXDtR.js +0 -1320
  590. package/bundled-test-harness/assets/container-DDolu1gk.js +0 -11109
  591. package/bundled-test-harness/assets/container-DndcCIMv.css +0 -5169
  592. package/bundled-test-harness/assets/contains-many-component-BtgnAXih.js +0 -2
  593. package/bundled-test-harness/assets/contrast-checker-addon-kwtLKWdL.js +0 -2
  594. package/bundled-test-harness/assets/contrast-checker-addon-zFY5cen1.js +0 -71
  595. package/bundled-test-harness/assets/convert-to-class-name-test-BcGWl2K1.js +0 -17
  596. package/bundled-test-harness/assets/coordinate-D72EF1Pl.js +0 -48
  597. package/bundled-test-harness/assets/copy-file-to-realm-test-CYoDX4YV.js +0 -148
  598. package/bundled-test-harness/assets/country-B-iIe5v8.js +0 -199
  599. package/bundled-test-harness/assets/create-file-modal-PpvMksjR.js +0 -570
  600. package/bundled-test-harness/assets/create-listing-modal-test-CQtEf_UD.js +0 -273
  601. package/bundled-test-harness/assets/create-listing-pr-request-test-CDtKWyfk.js +0 -117
  602. package/bundled-test-harness/assets/create-spec-test-Cbqk8I9T.js +0 -256
  603. package/bundled-test-harness/assets/create-specs-CZg2cpnh.js +0 -215
  604. package/bundled-test-harness/assets/create-submission-workflow-test-CYrxF7bg.js +0 -132
  605. package/bundled-test-harness/assets/credential-fields-test-Di4jCJgU.js +0 -157
  606. package/bundled-test-harness/assets/css-value-CceJyI5o.js +0 -48
  607. package/bundled-test-harness/assets/csv-file-def-DJL2aZI9.js +0 -277
  608. package/bundled-test-harness/assets/currency-Bn5WIqzF.js +0 -134
  609. package/bundled-test-harness/assets/date-XI2CVYA2.js +0 -2
  610. package/bundled-test-harness/assets/date-h83UJcFR.js +0 -183
  611. package/bundled-test-harness/assets/date-time-fields-test-Cterr2mj.js +0 -359
  612. package/bundled-test-harness/assets/datetime-DadI80tC.js +0 -201
  613. package/bundled-test-harness/assets/datetime-Dpb_Sejj.js +0 -2
  614. package/bundled-test-harness/assets/datetime-stamp-C4vv397u.js +0 -81
  615. package/bundled-test-harness/assets/datetime-stamp-DIsJdQux.js +0 -2
  616. package/bundled-test-harness/assets/day-C4pZoGNM.js +0 -113
  617. package/bundled-test-harness/assets/day-D0goBhKb.js +0 -2
  618. package/bundled-test-harness/assets/debug-message-test-CV0sj-fl.js +0 -117
  619. package/bundled-test-harness/assets/dist-CAIttNZm.js +0 -1710
  620. package/bundled-test-harness/assets/dist-CLbqnmnm.js +0 -389
  621. package/bundled-test-harness/assets/dist-qkBOmIQy.js +0 -323
  622. package/bundled-test-harness/assets/docx-file-def-hz2tVQKf.js +0 -60
  623. package/bundled-test-harness/assets/docx-meta-extractor-CeRshlxL.js +0 -60
  624. package/bundled-test-harness/assets/docx-meta-extractor-muK5CKF3.js +0 -2
  625. package/bundled-test-harness/assets/duration-BYx1dLfm.js +0 -2
  626. package/bundled-test-harness/assets/duration-FAmTFeUa.js +0 -184
  627. package/bundled-test-harness/assets/email-D-bFy_C1.js +0 -80
  628. package/bundled-test-harness/assets/email-field-test-CY9K2zur.js +0 -75
  629. package/bundled-test-harness/assets/email-j4DZNH2-.js +0 -2
  630. package/bundled-test-harness/assets/enum-B7_baAn_.js +0 -167
  631. package/bundled-test-harness/assets/enum-BQqNzVQS.js +0 -2
  632. package/bundled-test-harness/assets/enum-field-test-BJ9Epz15.js +0 -953
  633. package/bundled-test-harness/assets/error-display-test-CbDWjJ2F.js +0 -343
  634. package/bundled-test-harness/assets/ethereum-address-BOLEnKsm.js +0 -78
  635. package/bundled-test-harness/assets/ethereum-address-s3Kvb2wG.js +0 -2
  636. package/bundled-test-harness/assets/expiration-warning-BaIP1MOZ.js +0 -2
  637. package/bundled-test-harness/assets/expiration-warning-gjEtxPk0.js +0 -90
  638. package/bundled-test-harness/assets/externals-Bih8ejPS.js +0 -4393
  639. package/bundled-test-harness/assets/fallback-banner-MlImHjSD.js +0 -24
  640. package/bundled-test-harness/assets/fallback-banner-live-delete-test-Bm7IKXPf.js +0 -207
  641. package/bundled-test-harness/assets/fallback-banner-test-C7TGA0Ob.js +0 -53
  642. package/bundled-test-harness/assets/fallback-banner-test-lvuaVRXu.js +0 -225
  643. package/bundled-test-harness/assets/fallback-models-test-Dy7iIKUS.js +0 -161
  644. package/bundled-test-harness/assets/field-component-DBoOxTke.js +0 -2
  645. package/bundled-test-harness/assets/field-configuration-test-DnAnzyC-.js +0 -548
  646. package/bundled-test-harness/assets/field-edit-DdJ8Akso.js +0 -2
  647. package/bundled-test-harness/assets/field-edit-XAop92l8.js +0 -36
  648. package/bundled-test-harness/assets/field-markdown-domain-test-cZCqbcjj.js +0 -616
  649. package/bundled-test-harness/assets/field-markdown-oversize-test-BuATetVz.js +0 -88
  650. package/bundled-test-harness/assets/field-markdown-primitives-test-BsubQfhv.js +0 -365
  651. package/bundled-test-harness/assets/field-markdown-specialized-test-4eNLiYpF.js +0 -534
  652. package/bundled-test-harness/assets/field-test-helpers-9I7cHnaU.js +0 -45
  653. package/bundled-test-harness/assets/file-api-CC86I7Er.js +0 -7
  654. package/bundled-test-harness/assets/file-attachment-test-o9191GMb.js +0 -796
  655. package/bundled-test-harness/assets/file-chooser-panel-test-C8aZuJlk.js +0 -153
  656. package/bundled-test-harness/assets/file-chooser-test-B0Tn8CCR.js +0 -504
  657. package/bundled-test-harness/assets/file-def-edit-BSiF2Lje.js +0 -2
  658. package/bundled-test-harness/assets/file-def-edit-C5TYBp_q.js +0 -26
  659. package/bundled-test-harness/assets/file-def-embedded-BLVTCiVB.js +0 -2
  660. package/bundled-test-harness/assets/file-def-embedded-Bep4iD6s.js +0 -38
  661. package/bundled-test-harness/assets/file-def-fitted-BTs-AS78.js +0 -2
  662. package/bundled-test-harness/assets/file-def-fitted-DcPitdYu.js +0 -38
  663. package/bundled-test-harness/assets/file-def-isolated-Kg1YVhm-.js +0 -38
  664. package/bundled-test-harness/assets/file-def-isolated-tK5JWCam.js +0 -2
  665. package/bundled-test-harness/assets/file-def-serialization-test-D4wnd5XK.js +0 -89
  666. package/bundled-test-harness/assets/file-menu-items-CH4-naSK.js +0 -117
  667. package/bundled-test-harness/assets/file-menu-items-emUxx3ZI.js +0 -2
  668. package/bundled-test-harness/assets/file-preview-stage-B1McIWwu.js +0 -2
  669. package/bundled-test-harness/assets/file-preview-stage-BgZLNMN4.js +0 -72
  670. package/bundled-test-harness/assets/file-shell-embedded-BmfuwWfU.js +0 -2
  671. package/bundled-test-harness/assets/file-shell-embedded-zh8CJanA.js +0 -68
  672. package/bundled-test-harness/assets/file-shell-fitted-DSFUNRGJ.js +0 -2
  673. package/bundled-test-harness/assets/file-shell-fitted-DXKDH0fn.js +0 -98
  674. package/bundled-test-harness/assets/file-shell-isolated-0F1MFv4q.js +0 -2
  675. package/bundled-test-harness/assets/file-shell-isolated-DduZZzmi.js +0 -195
  676. package/bundled-test-harness/assets/file-tree-from-index-BzDvvUHy.js +0 -151
  677. package/bundled-test-harness/assets/file-tree-from-index-test-D0hfI4a1.js +0 -96
  678. package/bundled-test-harness/assets/film-BN_HVXBU.js +0 -13
  679. package/bundled-test-harness/assets/film-CKkbUi0L.js +0 -2
  680. package/bundled-test-harness/assets/film-CMNJITZ-.js +0 -4074
  681. package/bundled-test-harness/assets/fitted-CAvdcKpu.js +0 -34
  682. package/bundled-test-harness/assets/fitted-CbKOwd1u.js +0 -2
  683. package/bundled-test-harness/assets/flac-meta-extractor-e8qajPSl.js +0 -99
  684. package/bundled-test-harness/assets/font-file-def-9atde5W8.js +0 -64
  685. package/bundled-test-harness/assets/font-meta-extractor-IralDC8M.js +0 -303
  686. package/bundled-test-harness/assets/font-meta-extractor-zPBVOfoR.js +0 -2
  687. package/bundled-test-harness/assets/formatted-aibot-message-test-CWOiZUng.js +0 -109
  688. package/bundled-test-harness/assets/from-elsewhere-ChxbtsBa.js +0 -131
  689. package/bundled-test-harness/assets/frontmatter-field-cdig7KR9.js +0 -41
  690. package/bundled-test-harness/assets/garbage-collection-test-Dg-ww_Sb.js +0 -403
  691. package/bundled-test-harness/assets/gauge-B45nLOGe.js +0 -106
  692. package/bundled-test-harness/assets/gauge-BK-768BM.js +0 -2
  693. package/bundled-test-harness/assets/general-test-D7cn7PUr.js +0 -926
  694. package/bundled-test-harness/assets/get-relationship-membership-state-test-Skmj9V6y.js +0 -1308
  695. package/bundled-test-harness/assets/gif-meta-extractor-BychhK9q.js +0 -114
  696. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-C09YUmk4.js +0 -160
  697. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DYskx_Kk.js +0 -74
  698. package/bundled-test-harness/assets/helper-BHX0HLF2.js +0 -478
  699. package/bundled-test-harness/assets/host-submode-test-Clw_QnvF.js +0 -1243
  700. package/bundled-test-harness/assets/html-file-def-C0P9giwU.js +0 -82
  701. package/bundled-test-harness/assets/hydratable-card-DnjrxKsT.js +0 -147
  702. package/bundled-test-harness/assets/hydratable-card-test-BAmWHfv1.js +0 -426
  703. package/bundled-test-harness/assets/icons-DBXBZgLe.js +0 -894
  704. package/bundled-test-harness/assets/image-Cip6ojDd.js +0 -47
  705. package/bundled-test-harness/assets/image-file-def-BdQxjZcN.js +0 -65
  706. package/bundled-test-harness/assets/image-file-def-DP4aqWcS.js +0 -3
  707. package/bundled-test-harness/assets/index-changes-test-D8b_56Ke.js +0 -367
  708. package/bundled-test-harness/assets/index-query-engine-test-CCyaUwMX.js +0 -2593
  709. package/bundled-test-harness/assets/inspector-test-BJTVGdOO.js +0 -1930
  710. package/bundled-test-harness/assets/instance-filter-matcher-test-DjsPrXL7.js +0 -788
  711. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DSqM0vxh.js +0 -475
  712. package/bundled-test-harness/assets/interact-submode-setup-DF31UMX-.js +0 -566
  713. package/bundled-test-harness/assets/is-component-declaration-test-Did47eG9.js +0 -50
  714. package/bundled-test-harness/assets/iso-bmff-LuWkGL__.js +0 -205
  715. package/bundled-test-harness/assets/iso-bmff-_flO6c20.js +0 -2
  716. package/bundled-test-harness/assets/isolated-and-edit-frocLHin.js +0 -2
  717. package/bundled-test-harness/assets/job-priority-header-test-DHLAXfp7.js +0 -81
  718. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C1Bt5j98.js +0 -103
  719. package/bundled-test-harness/assets/join-the-community-BBUSO2cs.js +0 -86
  720. package/bundled-test-harness/assets/jpg-meta-extractor-CoybO4Hq.js +0 -88
  721. package/bundled-test-harness/assets/json-field-8sdH5RQb.js +0 -2
  722. package/bundled-test-harness/assets/json-field-BDD3iTUh.js +0 -19
  723. package/bundled-test-harness/assets/json-file-def-BKibsfc6.js +0 -298
  724. package/bundled-test-harness/assets/last-modified-date-CR5jru2m.js +0 -43
  725. package/bundled-test-harness/assets/last-modified-date-test-jJ00YdTm.js +0 -28
  726. package/bundled-test-harness/assets/links-to-editor-rDoCYaN-.js +0 -2
  727. package/bundled-test-harness/assets/links-to-many-component-BqZT88Fb.js +0 -2
  728. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-Cp1Eb_4U.js +0 -398
  729. package/bundled-test-harness/assets/linksto-error-sentinel-test-Bddavnh_.js +0 -238
  730. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-c5WegXnR.js +0 -354
  731. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CWskzfGW.js +0 -303
  732. package/bundled-test-harness/assets/linksto-sentinel-reload-test-ByeVNhr8.js +0 -197
  733. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DP26i6Gb.js +0 -260
  734. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-fDUXx8tO.js +0 -196
  735. package/bundled-test-harness/assets/llm-model-BcLEkTV7.js +0 -64
  736. package/bundled-test-harness/assets/login-CeuuNVvU.css +0 -139
  737. package/bundled-test-harness/assets/login-DV0WlJv-.js +0 -348
  738. package/bundled-test-harness/assets/login-error-text-test-BMGY_9gW.js +0 -51
  739. package/bundled-test-harness/assets/login-test-CL9YpMH5.js +0 -246
  740. package/bundled-test-harness/assets/m4a-meta-extractor-CHO1JQtb.js +0 -204
  741. package/bundled-test-harness/assets/main-CPLT8JNu.js +0 -5
  742. package/bundled-test-harness/assets/markdown-BvBALLGh.js +0 -7
  743. package/bundled-test-harness/assets/markdown-DFezmrFD.js +0 -2
  744. package/bundled-test-harness/assets/markdown-editor-mode-select-Au64bcIO.js +0 -2
  745. package/bundled-test-harness/assets/markdown-editor-mode-select-rK9PP8rv.js +0 -54
  746. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIxizf5k.js +0 -470
  747. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-C7GoNN7l.js +0 -447
  748. package/bundled-test-harness/assets/markdown-embed-preview-test-CDnj4uhd.js +0 -368
  749. package/bundled-test-harness/assets/markdown-fallback-n7PsLNmO.js +0 -2
  750. package/bundled-test-harness/assets/markdown-fallback-test-DTHT6OwQ.js +0 -316
  751. package/bundled-test-harness/assets/markdown-highlighting-test-DJ-4WSE_.js +0 -244
  752. package/bundled-test-harness/assets/markdown-preview-Ccelx5W-.js +0 -64
  753. package/bundled-test-harness/assets/markdown-preview-JXuMC_ve.js +0 -72
  754. package/bundled-test-harness/assets/markdown-preview-test-ByZqrpPk.js +0 -238
  755. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-DAHGeL4K.js +0 -146
  756. package/bundled-test-harness/assets/menu-items-DzJm9H_H.js +0 -2
  757. package/bundled-test-harness/assets/message-tool-test-lmdrIEdY.js +0 -33
  758. package/bundled-test-harness/assets/metadata-fields-BZZr4Qe5.js +0 -2
  759. package/bundled-test-harness/assets/metadata-fields-BtdjGsKE.js +0 -1415
  760. package/bundled-test-harness/assets/midi-audio-def-uYbYFmFi.js +0 -52
  761. package/bundled-test-harness/assets/midi-meta-extractor-DNI5gc1q.js +0 -284
  762. package/bundled-test-harness/assets/midi-meta-extractor-DbKZ4fMG.js +0 -2
  763. package/bundled-test-harness/assets/migrate-skill-test-DI1xceiL.js +0 -161
  764. package/bundled-test-harness/assets/mini-CNoDyHqG.js +0 -1519
  765. package/bundled-test-harness/assets/mini-DexlIeKK.js +0 -85
  766. package/bundled-test-harness/assets/mini-card-chooser-test-DT5eIf1_.js +0 -272
  767. package/bundled-test-harness/assets/mini-file-chooser-test-DTQnKTZJ.js +0 -201
  768. package/bundled-test-harness/assets/missing-template-DL2mwddM.js +0 -2
  769. package/bundled-test-harness/assets/missing-template-ltqlJ4JC.js +0 -48
  770. package/bundled-test-harness/assets/modal-container-DRnt95-S.js +0 -40
  771. package/bundled-test-harness/assets/modal-zE95eEFp.js +0 -322
  772. package/bundled-test-harness/assets/model-cost-tier-test-CcFz7hcv.js +0 -173
  773. package/bundled-test-harness/assets/module-contents-service-Dk_zWt-V.js +0 -256
  774. package/bundled-test-harness/assets/month-BqReBYWo.js +0 -2
  775. package/bundled-test-harness/assets/month-RhvmIp40.js +0 -123
  776. package/bundled-test-harness/assets/month-day-XFAQA72z.js +0 -2
  777. package/bundled-test-harness/assets/month-day-XzKpk6nz.js +0 -192
  778. package/bundled-test-harness/assets/month-year-BeuNr2Cl.js +0 -2
  779. package/bundled-test-harness/assets/month-year-DhU7hATV.js +0 -93
  780. package/bundled-test-harness/assets/mp3-meta-extractor-Dx2RnJc5.js +0 -476
  781. package/bundled-test-harness/assets/mp4-meta-extractor--k0m8KsT.js +0 -188
  782. package/bundled-test-harness/assets/multiple-stacks-test-bC24IWcJ.js +0 -208
  783. package/bundled-test-harness/assets/nested-query-field-render-test-qxElXx1e.js +0 -249
  784. package/bundled-test-harness/assets/no-stacks-test-Br7IGAgV.js +0 -48
  785. package/bundled-test-harness/assets/number-73SsCMEF.js +0 -3
  786. package/bundled-test-harness/assets/number-CicTBWQd.js +0 -151
  787. package/bundled-test-harness/assets/number-field-test-kV5zXo1J.js +0 -184
  788. package/bundled-test-harness/assets/number-input-CQy4xUeA.js +0 -82
  789. package/bundled-test-harness/assets/office-extract-Bo8sbNkK.js +0 -27
  790. package/bundled-test-harness/assets/office-extract-CfBaoRMD.js +0 -2
  791. package/bundled-test-harness/assets/ogg-meta-extractor-aIf5q_Rq.js +0 -225
  792. package/bundled-test-harness/assets/on-key-C8acaldQ.js +0 -472
  793. package/bundled-test-harness/assets/ooxml-Bu3iZezv.js +0 -172
  794. package/bundled-test-harness/assets/ooxml-jQPBQK25.js +0 -2
  795. package/bundled-test-harness/assets/open-image-in-new-tab-test-CP7q3kMm.js +0 -52
  796. package/bundled-test-harness/assets/operation-lowering-test-9Mdr0hRT.js +0 -2812
  797. package/bundled-test-harness/assets/operations-R9b661Qn.js +0 -3
  798. package/bundled-test-harness/assets/operations-Zv_V3Api.js +0 -766
  799. package/bundled-test-harness/assets/operations-invocation-test-BJPpWb2H.js +0 -523
  800. package/bundled-test-harness/assets/operations-query-test-DufdmPQF.js +0 -459
  801. package/bundled-test-harness/assets/operations-test-CzT051YH.js +0 -2518
  802. package/bundled-test-harness/assets/operator-mode-acceptance-test-ByOIOcD0.js +0 -1188
  803. package/bundled-test-harness/assets/operator-mode-card-chooser-test-CNhR9mvv.js +0 -1036
  804. package/bundled-test-harness/assets/operator-mode-links-test-CuxSVTPR.js +0 -793
  805. package/bundled-test-harness/assets/operator-mode-state-service-CCeHt5SH.js +0 -1275
  806. package/bundled-test-harness/assets/operator-mode-state-service-test-C8TI9WWg.js +0 -206
  807. package/bundled-test-harness/assets/operator-mode-test-DG-mG8Tn.js +0 -683
  808. package/bundled-test-harness/assets/operator-mode-ui-test-DB7xhjS0.js +0 -1027
  809. package/bundled-test-harness/assets/overlay-menu-items-test-C6rcdF_S.js +0 -317
  810. package/bundled-test-harness/assets/overlays-D2zmPxzK.js +0 -270
  811. package/bundled-test-harness/assets/overlays-clip-test-Clpq3JzQ.js +0 -91
  812. package/bundled-test-harness/assets/overlays-detached-element-test-BtsTeJch.js +0 -56
  813. package/bundled-test-harness/assets/pane-f-IYhcWT.js +0 -330
  814. package/bundled-test-harness/assets/panel-B3PCSBbf.js +0 -3540
  815. package/bundled-test-harness/assets/panel-Ban7zCBP.js +0 -474
  816. package/bundled-test-harness/assets/past-sessions-test-uM2m-oKV.js +0 -321
  817. package/bundled-test-harness/assets/patch-fields-test-COPjDhnt.js +0 -1014
  818. package/bundled-test-harness/assets/patch-instance-test-CRb3dfby.js +0 -348
  819. package/bundled-test-harness/assets/pdf-file-def-J_yOUU8_.js +0 -76
  820. package/bundled-test-harness/assets/pdf-meta-extractor-83T5Bdo7.js +0 -156
  821. package/bundled-test-harness/assets/pdf-meta-extractor-INFIklMy.js +0 -2
  822. package/bundled-test-harness/assets/pdf-viewer-B4rRluWA.js +0 -2
  823. package/bundled-test-harness/assets/pdf-viewer-vYem8ozk.js +0 -112
  824. package/bundled-test-harness/assets/percentage-ChagfNRG.js +0 -84
  825. package/bundled-test-harness/assets/permission-checking-realm-test-Dmb2a428.js +0 -306
  826. package/bundled-test-harness/assets/phone-number-BiD2eaSd.js +0 -236
  827. package/bundled-test-harness/assets/phone-number-C-wt4_UK.js +0 -2
  828. package/bundled-test-harness/assets/phone-number-field-test-BHzAmuBP.js +0 -73
  829. package/bundled-test-harness/assets/plate-CqN2nM6P.js +0 -41
  830. package/bundled-test-harness/assets/plate-DaIfpORN.js +0 -2
  831. package/bundled-test-harness/assets/player-CGt5fTd5.js +0 -2
  832. package/bundled-test-harness/assets/player-CN0l44LK.js +0 -82
  833. package/bundled-test-harness/assets/plural-field-components-test-CO2g2opW.js +0 -198
  834. package/bundled-test-harness/assets/png-image-def-B_oou2wS.js +0 -48
  835. package/bundled-test-harness/assets/png-meta-extractor-BfPz1qP_.js +0 -2
  836. package/bundled-test-harness/assets/png-meta-extractor-C8ai8sPw.js +0 -111
  837. package/bundled-test-harness/assets/policy-scoped-search-test-BRRp2a1A.js +0 -339
  838. package/bundled-test-harness/assets/pptx-file-def-C3qYEHDM.js +0 -60
  839. package/bundled-test-harness/assets/pptx-meta-extractor-8IuoBq4I.js +0 -77
  840. package/bundled-test-harness/assets/pptx-meta-extractor-BPhy9RMM.js +0 -2
  841. package/bundled-test-harness/assets/prerender-persistence-block-test-Cteb_Rs_.js +0 -124
  842. package/bundled-test-harness/assets/prerender-serialize-cycle-test-CH7b6Ra9.js +0 -134
  843. package/bundled-test-harness/assets/preview-CmERZpI6.js +0 -74
  844. package/bundled-test-harness/assets/preview-format-BPMlCSbb.js +0 -41
  845. package/bundled-test-harness/assets/preview-format-test-B7sA8fbZ.js +0 -103
  846. package/bundled-test-harness/assets/process-card-CtDzDB-_.js +0 -2
  847. package/bundled-test-harness/assets/process-card-erbWKY5h.js +0 -114
  848. package/bundled-test-harness/assets/process-card-test-DXOt1jDW.js +0 -94
  849. package/bundled-test-harness/assets/profile-settings-modal-11BrR058.js +0 -708
  850. package/bundled-test-harness/assets/progress-circle-Cd79Zqh2.js +0 -2
  851. package/bundled-test-harness/assets/progress-circle-sc-W5aUl.js +0 -95
  852. package/bundled-test-harness/assets/quarter-B61kCpcD.js +0 -168
  853. package/bundled-test-harness/assets/quarter-d5jkTzcz.js +0 -2
  854. package/bundled-test-harness/assets/query-field-membership-status-test-BmpVfohw.js +0 -323
  855. package/bundled-test-harness/assets/query-field-page-optin-test-9_Cce-OJ.js +0 -126
  856. package/bundled-test-harness/assets/query-field-schema-test-CwV7xanX.js +0 -231
  857. package/bundled-test-harness/assets/query-field-stale-prerender-test-RkdnZ-VV.js +0 -152
  858. package/bundled-test-harness/assets/query-fields-test-BLxYkTAM.js +0 -535
  859. package/bundled-test-harness/assets/rail-CFPU0tFe.js +0 -2
  860. package/bundled-test-harness/assets/rail-CQ53Dakr.js +0 -44
  861. package/bundled-test-harness/assets/realm-DdVH9lSZ.js +0 -95
  862. package/bundled-test-harness/assets/realm-DdsFw3b-.js +0 -2
  863. package/bundled-test-harness/assets/realm-config-DIslxoB7.js +0 -844
  864. package/bundled-test-harness/assets/realm-config-policy-standing-test-b4WxNDor.js +0 -290
  865. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-C-rcvkkD.js +0 -274
  866. package/bundled-test-harness/assets/realm-config-settings-test-DDUkM3zw.js +0 -187
  867. package/bundled-test-harness/assets/realm-dropdown-1j55Dy-1.js +0 -560
  868. package/bundled-test-harness/assets/realm-field-test-D-uEtFKO.js +0 -100
  869. package/bundled-test-harness/assets/realm-indexing-test-U9m0epR-.js +0 -4380
  870. package/bundled-test-harness/assets/realm-policy-test-DhKabhlk.js +0 -1141
  871. package/bundled-test-harness/assets/realm-test-BX6C9SS5.js +0 -2363
  872. package/bundled-test-harness/assets/realm-url-tooltip-BjjcKqBx.js +0 -56
  873. package/bundled-test-harness/assets/realm-url-tooltip-test-DW0ZwEEE.js +0 -78
  874. package/bundled-test-harness/assets/reasoning-test-BWT94KXG.js +0 -234
  875. package/bundled-test-harness/assets/recent-colors-addon-CfgmgilF.js +0 -61
  876. package/bundled-test-harness/assets/recent-colors-addon-D--Ry3Pf.js +0 -2
  877. package/bundled-test-harness/assets/relationship-loading-state-test-C5R6jao_.js +0 -290
  878. package/bundled-test-harness/assets/relative-time-Bq7pqums.js +0 -2
  879. package/bundled-test-harness/assets/relative-time-D0QyW4ig.js +0 -129
  880. package/bundled-test-harness/assets/remix-card-test-Cy0h3Xdf.js +0 -58
  881. package/bundled-test-harness/assets/rendered-markdown-Hw_EF8SO.js +0 -263
  882. package/bundled-test-harness/assets/rendered-markdown-test-CqeF-UZd.js +0 -587
  883. package/bundled-test-harness/assets/resident-instance-reuse-test-BiI6L40n.js +0 -82
  884. package/bundled-test-harness/assets/response-field-BCxG5phG.js +0 -38
  885. package/bundled-test-harness/assets/result-tile-DMzRnTP8.js +0 -140
  886. package/bundled-test-harness/assets/rich-markdown-C4RUl7L0.js +0 -2
  887. package/bundled-test-harness/assets/rich-markdown-DxQSCg-o.js +0 -218
  888. package/bundled-test-harness/assets/rich-markdown-field-test-B7wpedKs.js +0 -1647
  889. package/bundled-test-harness/assets/room-D0M0Zwrs.js +0 -1008
  890. package/bundled-test-harness/assets/room-message-test-BWWd4xC8.js +0 -445
  891. package/bundled-test-harness/assets/room-test-DFH-nOwi.js +0 -95
  892. package/bundled-test-harness/assets/run-realm-code-DyVyEDBl.js +0 -1600
  893. package/bundled-test-harness/assets/run-realm-code-test-BpxF-tOz.js +0 -2468
  894. package/bundled-test-harness/assets/schema-generation-test-DjaJqpYP.js +0 -28
  895. package/bundled-test-harness/assets/score-Cfp34BE7.js +0 -2
  896. package/bundled-test-harness/assets/score-DIWWpeyf.js +0 -100
  897. package/bundled-test-harness/assets/scrolling-test-hA_uBwBg.js +0 -384
  898. package/bundled-test-harness/assets/search-C0-b7dJI.js +0 -605
  899. package/bundled-test-harness/assets/search-adorn-test-C6KP3AwA.js +0 -136
  900. package/bundled-test-harness/assets/search-entries-BfPq5sPS.js +0 -472
  901. package/bundled-test-harness/assets/search-entries-result-test-Bl9u_BOD.js +0 -234
  902. package/bundled-test-harness/assets/search-entries-test-BDC_lS43.js +0 -1486
  903. package/bundled-test-harness/assets/search-result-header-DCAze_cg.js +0 -128
  904. package/bundled-test-harness/assets/search-results-Dd0enVun.js +0 -266
  905. package/bundled-test-harness/assets/search-results-test-T5KEEII4.js +0 -578
  906. package/bundled-test-harness/assets/search-selection-menu-test-CCssnBq1.js +0 -108
  907. package/bundled-test-harness/assets/search-sheet-persistence-test-BzQiO-FK.js +0 -131
  908. package/bundled-test-harness/assets/search-test-fyCWb24m.js +0 -2241
  909. package/bundled-test-harness/assets/searchable-BkgeKQMl.js +0 -2
  910. package/bundled-test-harness/assets/searchable-D_6p6fyb.js +0 -192
  911. package/bundled-test-harness/assets/searchable-option-test-CnCUYGaq.js +0 -322
  912. package/bundled-test-harness/assets/searchable-search-doc-test-B8Q0D98v.js +0 -1271
  913. package/bundled-test-harness/assets/sending-test-D5PGBDys.js +0 -576
  914. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BRJ1cJ31.js +0 -136
  915. package/bundled-test-harness/assets/serialization-test-DM6hK258.js +0 -8758
  916. package/bundled-test-harness/assets/setup-C_GgVgzM.js +0 -772
  917. package/bundled-test-harness/assets/shared-link-target-reuse-test-Be-lSKib.js +0 -207
  918. package/bundled-test-harness/assets/show-card-BFG6KR1m.js +0 -67
  919. package/bundled-test-harness/assets/show-card-test-l0wMrfZq.js +0 -365
  920. package/bundled-test-harness/assets/show-file-B8-FRVHj.js +0 -34
  921. package/bundled-test-harness/assets/signed-capture-D_Q44TQ7.js +0 -204
  922. package/bundled-test-harness/assets/signed-capture-link-test-DOS5xpYv.js +0 -132
  923. package/bundled-test-harness/assets/single-stack-test-BIEtzHVS.js +0 -652
  924. package/bundled-test-harness/assets/skill-BUTGmSsm.js +0 -76
  925. package/bundled-test-harness/assets/skill-Bo7R_2Ud.js +0 -3
  926. package/bundled-test-harness/assets/skill-reference-Cs64py3k.js +0 -112
  927. package/bundled-test-harness/assets/skills-test-CXxSIkYa.js +0 -648
  928. package/bundled-test-harness/assets/slider-picker-C81errGI.js +0 -245
  929. package/bundled-test-harness/assets/slider-picker-mvKsy6cR.js +0 -2
  930. package/bundled-test-harness/assets/spec-B55lJurX.js +0 -602
  931. package/bundled-test-harness/assets/store-DyQ0KiyI.js +0 -2205
  932. package/bundled-test-harness/assets/store-module-rebuild-test-C7532_bS.js +0 -454
  933. package/bundled-test-harness/assets/store-search-test-80NMJuoW.js +0 -175
  934. package/bundled-test-harness/assets/store-test-dHiWXXMs.js +0 -3460
  935. package/bundled-test-harness/assets/string-DHlQEHYm.js +0 -9
  936. package/bundled-test-harness/assets/submode-switcher-DQv-CD6G.js +0 -169
  937. package/bundled-test-harness/assets/svg-meta-extractor-Uw_EJytF.js +0 -42
  938. package/bundled-test-harness/assets/swatches-picker-CaEoibN1.js +0 -33
  939. package/bundled-test-harness/assets/swatches-picker-gPl50JbP.js +0 -2
  940. package/bundled-test-harness/assets/switch-submode-BKDnJd4m.js +0 -79
  941. package/bundled-test-harness/assets/switch-submode-test-_E2mVk4z.js +0 -168
  942. package/bundled-test-harness/assets/tag-B60lDr-j.js +0 -105
  943. package/bundled-test-harness/assets/tests-BBBgPBB6.js +0 -3520
  944. package/bundled-test-harness/assets/text-area-CJjWmwpi.js +0 -9
  945. package/bundled-test-harness/assets/text-file-def-u_dl0i2z.js +0 -151
  946. package/bundled-test-harness/assets/text-input-validator-test-BTwnkSS2.js +0 -156
  947. package/bundled-test-harness/assets/theme-BK-fAHVn.js +0 -9
  948. package/bundled-test-harness/assets/theme-card-test-BQmT7rqr.js +0 -621
  949. package/bundled-test-harness/assets/theme-scheme-island-test-Oi3aeyp1.js +0 -264
  950. package/bundled-test-harness/assets/three-d-model-def-B4KckPVC.js +0 -70
  951. package/bundled-test-harness/assets/time-BcuaSkHg.js +0 -126
  952. package/bundled-test-harness/assets/time-f7Irg7Z7.js +0 -2
  953. package/bundled-test-harness/assets/time-slots-ClYIZN53.js +0 -2
  954. package/bundled-test-harness/assets/time-slots-TI1aaqRN.js +0 -85
  955. package/bundled-test-harness/assets/timeline-Cof9eyq0.js +0 -59
  956. package/bundled-test-harness/assets/timeline-DFWQtCWE.js +0 -2
  957. package/bundled-test-harness/assets/to-device-streaming-test-BDrUUlOt.js +0 -163
  958. package/bundled-test-harness/assets/token-usage-test-CiZo03fY.js +0 -166
  959. package/bundled-test-harness/assets/tool-field-BXHr9r0w.js +0 -94
  960. package/bundled-test-harness/assets/tool-field-CoRO5C4R.js +0 -2
  961. package/bundled-test-harness/assets/tools-CmVaYDIS.js +0 -725
  962. package/bundled-test-harness/assets/tools-calling-test-B454__XF.js +0 -200
  963. package/bundled-test-harness/assets/tools-test-CLu51dJO.js +0 -1624
  964. package/bundled-test-harness/assets/tools-test-XGRAvVug.js +0 -2820
  965. package/bundled-test-harness/assets/ts-file-def-C05BDwdg.js +0 -159
  966. package/bundled-test-harness/assets/update-room-skills-test-jOvP14JX.js +0 -240
  967. package/bundled-test-harness/assets/url-BFf2CNo-.js +0 -2
  968. package/bundled-test-harness/assets/url-CYm-CeXp.js +0 -96
  969. package/bundled-test-harness/assets/video-file-def-B2UIrOFS.js +0 -76
  970. package/bundled-test-harness/assets/wav-meta-extractor-BNkv7e2f.js +0 -368
  971. package/bundled-test-harness/assets/webm-meta-extractor-C933kYyc.js +0 -178
  972. package/bundled-test-harness/assets/webp-meta-extractor-BLz0z1pZ.js +0 -98
  973. package/bundled-test-harness/assets/website-BuOMUW1v.js +0 -92
  974. package/bundled-test-harness/assets/week-Bo0666ji.js +0 -111
  975. package/bundled-test-harness/assets/week-CaVFA8Vc.js +0 -2
  976. package/bundled-test-harness/assets/welcome-to-boxel-PWard7GF.js +0 -172
  977. package/bundled-test-harness/assets/workspace-KXfFTQNV.js +0 -614
  978. package/bundled-test-harness/assets/workspace-a11y-test-Buwb-rfO.js +0 -197
  979. package/bundled-test-harness/assets/workspace-behavior-test-CbgFUOOo.js +0 -200
  980. package/bundled-test-harness/assets/workspace-chooser-BmQvhhrl.js +0 -2248
  981. package/bundled-test-harness/assets/workspace-chooser-Cu84Gd_E.css +0 -1317
  982. package/bundled-test-harness/assets/workspace-chooser-catalog-order-test-rcRw6sni.js +0 -36
  983. package/bundled-test-harness/assets/workspace-chooser-unreachable-notice-test-DUXnBIdY.js +0 -60
  984. package/bundled-test-harness/assets/workspace-delete-multiple-test-DjRKhZ2g.js +0 -212
  985. package/bundled-test-harness/assets/workspace-delete-summary-test-CvkLVYyN.js +0 -63
  986. package/bundled-test-harness/assets/workspace-timestamp-labels-test-AYJT4inv.js +0 -58
  987. package/bundled-test-harness/assets/xlsx-file-def-DuKdbGrJ.js +0 -60
  988. package/bundled-test-harness/assets/xlsx-meta-extractor-Bz-C2JWP.js +0 -101
  989. package/bundled-test-harness/assets/xlsx-meta-extractor-ClwwgABg.js +0 -2
  990. package/bundled-test-harness/assets/year-B6ctHikl.js +0 -2
  991. package/bundled-test-harness/assets/year-C11uAQE6.js +0 -78
  992. package/bundled-test-harness/assets/zip-file-def-B8XN-OS_.js +0 -288
  993. package/bundled-types/host-app/components/matrix/auth-button.gts +0 -39
  994. package/bundled-types/host-app/components/matrix/auth-container.gts +0 -69
  995. package/bundled-types/host-app/components/matrix/auth-form-field.gts +0 -43
@@ -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 { Ar as testRealmURL, Ia as fetcher, Ms as Loader, Sa as maybeHandleScopedCSSRequest, Ss as wrapper_default, aa as IndexQueryEngine, da as jobStagingId, ja as VirtualNetwork, jo as identifyCard, ls as getFieldDefinitions, on as format, ps as FilterRefersToNonexistentTypeError, sa as isFilterRefersToNonsearchableFieldError, u as internalKeyFor } from "./runtime-common-ClpqhbwG.js";
4
- import { y as rri } from "./paths-BYHDgqsT.js";
5
- import { D as baseRealm, O as baseRealmRRI } from "./constants-CqKWhRfY.js";
6
- import { t as config } from "./environment-DIUJgBKt.js";
7
- import { t as shimExternals } from "./externals-Bih8ejPS.js";
8
- import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
9
- import { at as setupIndex, b as getDbAdapter, it as serializeCard, rt as getTypes } from "./mock-matrix-DPQ0j2MD.js";
10
- import { t as p } from "./helpers-DA4ARnVh.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
- loader.shimModule(`${testRealmURL}address`, { Address });
211
- loader.shimModule(`${testRealmURL}person`, { Person });
212
- loader.shimModule(`${testRealmURL}fancy-person`, { FancyPerson });
213
- loader.shimModule(`${testRealmURL}cat`, { Cat });
214
- loader.shimModule(`${testRealmURL}spec`, { SimpleSpec });
215
- loader.shimModule(`${testRealmURL}event`, { Event });
216
- loader.shimModule(`${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