@cardstack/boxel-cli 0.3.2-unstable.59 → 0.3.2-unstable.60

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 (921) hide show
  1. package/api.ts +3 -3
  2. package/bundled-realms/base/command.gts +73 -0
  3. package/bundled-test-harness/assets/adapter-TgpmkD23.js +2 -0
  4. package/bundled-test-harness/assets/add-field-to-card-definition-command-test-BVVD6_Wq.js +111 -0
  5. package/bundled-test-harness/assets/add-workspace-test-BvvYJ2Fk.js +71 -0
  6. package/bundled-test-harness/assets/ai-assistant-Ba_RBqf6.js +129 -0
  7. package/bundled-test-harness/assets/ai-assistant-panel-service-test-DK87n1hh.js +95 -0
  8. package/bundled-test-harness/assets/ai-assistant-test-CZATBlJS.js +2137 -0
  9. package/bundled-test-harness/assets/ai-function-generation-test-e58MHziu.js +996 -0
  10. package/bundled-test-harness/assets/ai-module-creation-test-CEieL3Fa.js +150 -0
  11. package/bundled-test-harness/assets/aibot-message-DhTbAqNk.js +1185 -0
  12. package/bundled-test-harness/assets/amd-transpile-test-CSk5COu7.js +425 -0
  13. package/bundled-test-harness/assets/app-Btfy4HWI.js +21464 -0
  14. package/bundled-test-harness/assets/apply-boxel-formatting-test-BHTP9NBp.js +134 -0
  15. package/bundled-test-harness/assets/apply-markdown-edit-test-BETCndeK.js +230 -0
  16. package/bundled-test-harness/assets/apply-search-replace-block-test-KNolar0-.js +630 -0
  17. package/bundled-test-harness/assets/arc-CA8yZ0zo.js +199 -0
  18. package/bundled-test-harness/assets/architecture-7EHR7CIX-C5JFMGdb.js +3 -0
  19. package/bundled-test-harness/assets/architectureDiagram-3BPJPVTR-CmVPjKgm.js +7400 -0
  20. package/bundled-test-harness/assets/auth-error-guard-test-D0rKESg_.js +30 -0
  21. package/bundled-test-harness/assets/auth-service-worker-test-DGg_vbKo.js +538 -0
  22. package/bundled-test-harness/assets/authed-fetch-test-CHF3eh_H.js +75 -0
  23. package/bundled-test-harness/assets/avif-image-def-test-p9tiyh4_.js +186 -0
  24. package/bundled-test-harness/assets/base-realm-Chjzrp6m.js +2 -0
  25. package/bundled-test-harness/assets/base-realm-DpSTsZxD.js +140 -0
  26. package/bundled-test-harness/assets/basic-test-D7qEz4hw.js +128 -0
  27. package/bundled-test-harness/assets/bfm-card-references-test-D-m1YnL8.js +577 -0
  28. package/bundled-test-harness/assets/binary-upload-dedupe-test-8RKK73EG.js +308 -0
  29. package/bundled-test-harness/assets/blockDiagram-GPEHLZMM-BdVFTa2C.js +4355 -0
  30. package/bundled-test-harness/assets/bot-registration-test-9zYny2wR.js +99 -0
  31. package/bundled-test-harness/assets/box-test-0T92xi3A.js +51 -0
  32. package/bundled-test-harness/assets/brand-guide-attachments-test-5ZtPn4cC.js +87 -0
  33. package/bundled-test-harness/assets/brand-guide-custom-css-test-CKKSgKyp.js +135 -0
  34. package/bundled-test-harness/assets/brand-logo-mark-field-test-nlNNQ3rw.js +87 -0
  35. package/bundled-test-harness/assets/broken-link-template-test-BGIExVof.js +345 -0
  36. package/bundled-test-harness/assets/browser-index-BaR-gTqG.js +3 -0
  37. package/bundled-test-harness/assets/browser-index-G4NKYBAj.js +8802 -0
  38. package/bundled-test-harness/assets/c4Diagram-AAUBKEIU-DyugX7zz.js +3764 -0
  39. package/bundled-test-harness/assets/cached-fetch-test-MtqvDphJ.js +93 -0
  40. package/bundled-test-harness/assets/can-read-realm-test-BZmwIOqS.js +58 -0
  41. package/bundled-test-harness/assets/cancel-indexing-job-test-BsQtQbDu.js +71 -0
  42. package/bundled-test-harness/assets/card-api-test-BxQ8f0-c.js +196 -0
  43. package/bundled-test-harness/assets/card-basics-test-B-uBZ8o4.js +4895 -0
  44. package/bundled-test-harness/assets/card-catalog-test-YmwmyIKf.js +377 -0
  45. package/bundled-test-harness/assets/card-copy-test-LoqdH1CQ.js +777 -0
  46. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DvtBA1jv.js +560 -0
  47. package/bundled-test-harness/assets/card-def-menu-items-test-DHnd0LuM.js +182 -0
  48. package/bundled-test-harness/assets/card-delete-test-vKF0Jf1X.js +412 -0
  49. package/bundled-test-harness/assets/card-directory-name-test-CbCuPwSz.js +71 -0
  50. package/bundled-test-harness/assets/card-playground-test-CRIP3b5-.js +1497 -0
  51. package/bundled-test-harness/assets/card-prerender-ClYlSOBU.js +12661 -0
  52. package/bundled-test-harness/assets/card-search-adorn-test-Mggk5ZgY.js +128 -0
  53. package/bundled-test-harness/assets/card-search-query-builder-test-Cdl12s50.js +88 -0
  54. package/bundled-test-harness/assets/card-search-selection-menu-test-CtuCCLoB.js +108 -0
  55. package/bundled-test-harness/assets/channel-BKUMepxs.js +8 -0
  56. package/bundled-test-harness/assets/check-correctness-test-DBh8DT_f.js +252 -0
  57. package/bundled-test-harness/assets/chunk-2J33WTMH-ClrRoNQU.js +31 -0
  58. package/bundled-test-harness/assets/chunk-3OPIFGDE-g_0Oh8jN.js +5548 -0
  59. package/bundled-test-harness/assets/chunk-4BX2VUAB-D2LCc7Y9.js +11 -0
  60. package/bundled-test-harness/assets/chunk-4EGX6M5U-D8vRS5IG.js +44 -0
  61. package/bundled-test-harness/assets/chunk-55IACEB6-C5j4VAmb.js +10 -0
  62. package/bundled-test-harness/assets/chunk-5DO6E6H7-CPb3jsP0.js +27 -0
  63. package/bundled-test-harness/assets/chunk-5ZQYHXKU-BlVb7vgG.js +1767 -0
  64. package/bundled-test-harness/assets/chunk-727SXJPM-C_NVCDMC.js +3877 -0
  65. package/bundled-test-harness/assets/chunk-AQP2D5EJ-CpwrMix_.js +2622 -0
  66. package/bundled-test-harness/assets/chunk-BR22UD5L-AF0NWdjT.js +85 -0
  67. package/bundled-test-harness/assets/chunk-BSJP7CBP-Dgun5vYb.js +114 -0
  68. package/bundled-test-harness/assets/chunk-CSCIHK7Q-D7nFiAZ-.js +6144 -0
  69. package/bundled-test-harness/assets/chunk-FHYWG6QK-2nuXS9PL.js +27 -0
  70. package/bundled-test-harness/assets/chunk-FMBD7UC4-O-Y8VK1S.js +20 -0
  71. package/bundled-test-harness/assets/chunk-KSCS5N6A-Du5-DprU.js +871 -0
  72. package/bundled-test-harness/assets/chunk-L5ZTLDWV-C2lDtkix.js +43 -0
  73. package/bundled-test-harness/assets/chunk-LZXEDZCA-qAMsMZkF.js +65 -0
  74. package/bundled-test-harness/assets/chunk-MPE355IW-DcT_60Oq.js +27 -0
  75. package/bundled-test-harness/assets/chunk-MZUSXYTE-BsH_YmnC.js +36 -0
  76. package/bundled-test-harness/assets/chunk-N66VUXT2-DMyMHgoS.js +70 -0
  77. package/bundled-test-harness/assets/chunk-ND2GUHAM-DO1Znn8O.js +93 -0
  78. package/bundled-test-harness/assets/chunk-NZK2D7GU-B1YWBxHm.js +89 -0
  79. package/bundled-test-harness/assets/chunk-O5CBEL6O-CZVSBsRq.js +2395 -0
  80. package/bundled-test-harness/assets/chunk-PUPMXCY4-DzOK-Vbt.js +27 -0
  81. package/bundled-test-harness/assets/chunk-QZHKN3VN-DJFnRn99.js +20 -0
  82. package/bundled-test-harness/assets/chunk-UIBZB4QT-5KIxBxjk.js +27 -0
  83. package/bundled-test-harness/assets/chunk-WCWK7LTN-BsQwhliq.js +36 -0
  84. package/bundled-test-harness/assets/chunk-WU5MYG2G-DUVb5MAo.js +12 -0
  85. package/bundled-test-harness/assets/chunk-XPW4576I-DLaJYAOU.js +2341 -0
  86. package/bundled-test-harness/assets/classDiagram-4FO5ZUOK-DjP2uozG.js +31 -0
  87. package/bundled-test-harness/assets/classDiagram-v2-Q7XG4LA2-Dt6ps5uz.js +31 -0
  88. package/bundled-test-harness/assets/code-equality-assertion-BBezFT13.js +474 -0
  89. package/bundled-test-harness/assets/code-patches-test-DzoQGARM.js +1128 -0
  90. package/bundled-test-harness/assets/code-patching-test-D8r-pJ5w.js +114 -0
  91. package/bundled-test-harness/assets/code-ref-test-DU3HChNz.js +138 -0
  92. package/bundled-test-harness/assets/code-semantics-service-test-DArUotKy.js +65 -0
  93. package/bundled-test-harness/assets/code-submode-test-h5wWKsz2.js +1762 -0
  94. package/bundled-test-harness/assets/codeblocks-test-FbuwTy5v.js +492 -0
  95. package/bundled-test-harness/assets/codemirror-context-DVlC9C78.js +2 -0
  96. package/bundled-test-harness/assets/codemirror-editor-test-JDT9uwqM.js +1176 -0
  97. package/bundled-test-harness/assets/color-field-test-BssRlQAX.js +213 -0
  98. package/bundled-test-harness/assets/command-definitions-test-J21kOxBs.js +72 -0
  99. package/bundled-test-harness/assets/commands-DAo0DgCX.js +1379 -0
  100. package/bundled-test-harness/assets/commands-calling-test-C3deVvv_.js +200 -0
  101. package/bundled-test-harness/assets/commands-test--0zViqs2.js +1041 -0
  102. package/bundled-test-harness/assets/commands-test-BwNn2npL.js +1145 -0
  103. package/bundled-test-harness/assets/computed-test-BD_KrZmc.js +882 -0
  104. package/bundled-test-harness/assets/container-C8gu0I0Q.js +14605 -0
  105. package/bundled-test-harness/assets/convert-to-class-name-test-CX21VRzM.js +17 -0
  106. package/bundled-test-harness/assets/copy-and-edit-test-BUy_o8XJ.js +291 -0
  107. package/bundled-test-harness/assets/copy-card-test-LWbugEPe.js +156 -0
  108. package/bundled-test-harness/assets/copy-file-to-realm-test-BS25EUGV.js +99 -0
  109. package/bundled-test-harness/assets/copy-source-test-Dh33cqM8.js +56 -0
  110. package/bundled-test-harness/assets/cose-bilkent-S5V4N54A-CjAFDdpS.js +4275 -0
  111. package/bundled-test-harness/assets/create-file-test-DOc3YYij.js +963 -0
  112. package/bundled-test-harness/assets/create-file-test-DgUya7-i.js +397 -0
  113. package/bundled-test-harness/assets/create-listing-modal-test-DZxZBYS7.js +194 -0
  114. package/bundled-test-harness/assets/create-listing-pr-request-Aw0ms76l.js +64 -0
  115. package/bundled-test-harness/assets/create-listing-pr-request-test-CFvqkgky.js +117 -0
  116. package/bundled-test-harness/assets/create-spec-test-BTRt8oe8.js +239 -0
  117. package/bundled-test-harness/assets/csv-file-def-test-BVffg8wL.js +101 -0
  118. package/bundled-test-harness/assets/dagre-BM42HDAG-GoRrN65x.js +606 -0
  119. package/bundled-test-harness/assets/dagre-ByxOOmYM.js +4195 -0
  120. package/bundled-test-harness/assets/date-time-fields-test-BEcfCqgB.js +322 -0
  121. package/bundled-test-harness/assets/debug-message-test-CAxbe6x2.js +119 -0
  122. package/bundled-test-harness/assets/diagram-2AECGRRQ-B6-pvp9H.js +279 -0
  123. package/bundled-test-harness/assets/diagram-5GNKFQAL-C9M7hXIc.js +142 -0
  124. package/bundled-test-harness/assets/diagram-KO2AKTUF-BNJvCLGK.js +551 -0
  125. package/bundled-test-harness/assets/diagram-LMA3HP47-hlJyTtqP.js +184 -0
  126. package/bundled-test-harness/assets/diagram-OG6HWLK6-BvPoB3IH.js +857 -0
  127. package/bundled-test-harness/assets/diffing-test-De9Ev_Fr.js +210 -0
  128. package/bundled-test-harness/assets/dist-BsEojs3T.js +232 -0
  129. package/bundled-test-harness/assets/dist-CY3T64Hs.js +105 -0
  130. package/bundled-test-harness/assets/dist-q2xz8RMj.js +2 -0
  131. package/bundled-test-harness/assets/editor-test-DOI_TvWQ.js +551 -0
  132. package/bundled-test-harness/assets/editor.main-CpuM6HrX.js +43566 -0
  133. package/bundled-test-harness/assets/editor.main-DkMgS1qm.js +3 -0
  134. package/bundled-test-harness/assets/email-field-test-t-80Z94b.js +74 -0
  135. package/bundled-test-harness/assets/enum-field-test-DVp-2pip.js +909 -0
  136. package/bundled-test-harness/assets/erDiagram-TEJ5UH35-CYniRkua.js +2041 -0
  137. package/bundled-test-harness/assets/error-display-test-IuRxKyLz.js +343 -0
  138. package/bundled-test-harness/assets/evaluate-module-test-DdnfbFp-.js +66 -0
  139. package/bundled-test-harness/assets/eventmodeling-FCH6USID-BO089-Cs.js +3 -0
  140. package/bundled-test-harness/assets/execute-atomic-operations-test-CgbvrBlu.js +75 -0
  141. package/bundled-test-harness/assets/externals-5atxeNU4.js +5533 -0
  142. package/bundled-test-harness/assets/extract-css-variables-test-Cii-CYfc.js +169 -0
  143. package/bundled-test-harness/assets/fallback-banner-test-CUUd-Wuu.js +227 -0
  144. package/bundled-test-harness/assets/fallback-banner-test-D4NWyahM.js +53 -0
  145. package/bundled-test-harness/assets/fallback-models-test-2MJ1jAs8.js +163 -0
  146. package/bundled-test-harness/assets/fetch-card-json-test-Cruqsq6S.js +63 -0
  147. package/bundled-test-harness/assets/fetcher-test-CkHlbTzz.js +85 -0
  148. package/bundled-test-harness/assets/field-configuration-test-CqwsGNib.js +535 -0
  149. package/bundled-test-harness/assets/field-markdown-domain-test-DPjz8i4Y.js +615 -0
  150. package/bundled-test-harness/assets/field-markdown-primitives-test-Dw07UtT7.js +362 -0
  151. package/bundled-test-harness/assets/field-markdown-specialized-test-C-t34PAw.js +527 -0
  152. package/bundled-test-harness/assets/field-path-parser-test-BeNjacPu.js +387 -0
  153. package/bundled-test-harness/assets/field-playground-test-BILTGxqr.js +902 -0
  154. package/bundled-test-harness/assets/field-support-predicates-test-Df24w0Wa.js +170 -0
  155. package/bundled-test-harness/assets/field-test-helpers-P22hxBNz.js +45 -0
  156. package/bundled-test-harness/assets/file-attachment-test-Cjg4NBeM.js +635 -0
  157. package/bundled-test-harness/assets/file-chooser-test-Cl0XujPT.js +439 -0
  158. package/bundled-test-harness/assets/file-def-live-reload-test-D4Obzi12.js +50 -0
  159. package/bundled-test-harness/assets/file-def-manager-DUgR-gjs.js +470 -0
  160. package/bundled-test-harness/assets/file-def-manager-canonicalize-test-D_LWVsvz.js +451 -0
  161. package/bundled-test-harness/assets/file-def-menu-items-test-xvsUTOK4.js +114 -0
  162. package/bundled-test-harness/assets/file-def-navigation-test-DxPceB7E.js +109 -0
  163. package/bundled-test-harness/assets/file-def-serialization-test-CpwbDb8p.js +87 -0
  164. package/bundled-test-harness/assets/file-def-test-CEnKcvW9.js +219 -0
  165. package/bundled-test-harness/assets/file-tree-test-DE2aH6iq.js +773 -0
  166. package/bundled-test-harness/assets/flac-audio-def-test-BCg7LnR6.js +138 -0
  167. package/bundled-test-harness/assets/flowDiagram-I6XJVG4X-Xv8-LIxQ.js +4883 -0
  168. package/bundled-test-harness/assets/formatted-aibot-message-test-CsxFn62P.js +366 -0
  169. package/bundled-test-harness/assets/formatted-user-message-test-DjZc8qnA.js +43 -0
  170. package/bundled-test-harness/assets/freestyle-test-QEZaZCNJ.js +17 -0
  171. package/bundled-test-harness/assets/full-reindex-realm-test-C_c2OTTD.js +103 -0
  172. package/bundled-test-harness/assets/ganttDiagram-6RSMTGT7-DmvkzS5w.js +4060 -0
  173. package/bundled-test-harness/assets/garbage-collection-test-BVuvfidI.js +373 -0
  174. package/bundled-test-harness/assets/general-test-Ydis4jEq.js +926 -0
  175. package/bundled-test-harness/assets/generate-css-variables-test-CZCmgTAO.js +88 -0
  176. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-x_szhkSN.js +67 -0
  177. package/bundled-test-harness/assets/get-available-realm-identifiers-test-DvRnwCHR.js +49 -0
  178. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-46TE-XA0.js +49 -0
  179. package/bundled-test-harness/assets/get-default-writable-realm-test-DaAkxTNh.js +56 -0
  180. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-9XEGHVOV.js +55 -0
  181. package/bundled-test-harness/assets/get-relationship-membership-state-test-BY4gk5JZ.js +1306 -0
  182. package/bundled-test-harness/assets/get-type-refs-from-filter-test-BynlX0JE.js +136 -0
  183. package/bundled-test-harness/assets/get-user-system-card-test-D98Xxn1k.js +52 -0
  184. package/bundled-test-harness/assets/gif-image-def-test-FwKGFGWw.js +161 -0
  185. package/bundled-test-harness/assets/gitGraph-WXDBUCRP-Bmn0Z_Xi.js +3 -0
  186. package/bundled-test-harness/assets/gitGraphDiagram-PVQCEYII-BAo0G82W.js +1150 -0
  187. package/bundled-test-harness/assets/gts-file-def-test-ivEk8Muv.js +99 -0
  188. package/bundled-test-harness/assets/head-format-preview-test-CNhvk724.js +156 -0
  189. package/bundled-test-harness/assets/helpers-BH4Yfo_2.js +5 -0
  190. package/bundled-test-harness/assets/host-mode-test-BRNndb2h.js +391 -0
  191. package/bundled-test-harness/assets/host-submode-test-DHd0x-6x.js +904 -0
  192. package/bundled-test-harness/assets/index-query-engine-test-7Fzc09fG.js +2548 -0
  193. package/bundled-test-harness/assets/index-writer-test-D3cL2q2N.js +1842 -0
  194. package/bundled-test-harness/assets/indexeddb-crypto-store-C09Shau-.js +49434 -0
  195. package/bundled-test-harness/assets/info-J43DQDTF-Dz5b1Xgc.js +3 -0
  196. package/bundled-test-harness/assets/infoDiagram-5YYISTIA-Dl8XvIfi.js +23 -0
  197. package/bundled-test-harness/assets/inspector-test-CVZVQdIJ.js +1776 -0
  198. package/bundled-test-harness/assets/instance-filter-matcher-test-C-4z6qUt.js +564 -0
  199. package/bundled-test-harness/assets/instantiate-card-test-eQ22Vt_m.js +104 -0
  200. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-hXPsRPMU.js +497 -0
  201. package/bundled-test-harness/assets/interact-submode-setup-D55IIVc5.js +558 -0
  202. package/bundled-test-harness/assets/interact-submode-test-BwrtFe2m.js +725 -0
  203. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-BMk7yd-D.js +101 -0
  204. package/bundled-test-harness/assets/invite-user-to-room-test-B5B0umJQ.js +67 -0
  205. package/bundled-test-harness/assets/ishikawaDiagram-YF4QCWOH-BrO7NAng.js +1009 -0
  206. package/bundled-test-harness/assets/isolated-render-test-DX1wdHoS.js +51 -0
  207. package/bundled-test-harness/assets/item-button-QkVr-FW0.js +203 -0
  208. package/bundled-test-harness/assets/javascript-BWNQhcCY.js +75 -0
  209. package/bundled-test-harness/assets/job-priority-header-test-CuBZloLK.js +81 -0
  210. package/bundled-test-harness/assets/journeyDiagram-JHISSGLW-B7BT66v0.js +1256 -0
  211. package/bundled-test-harness/assets/jpg-image-def-test-DEx462nY.js +430 -0
  212. package/bundled-test-harness/assets/json-file-def-test-Cray6ly6.js +92 -0
  213. package/bundled-test-harness/assets/kanban-definition-UN3LZRKU-C0E5Vmr_.js +1284 -0
  214. package/bundled-test-harness/assets/last-modified-date-test-BzE25NOB.js +18 -0
  215. package/bundled-test-harness/assets/limited-set-test-NwGNoXKc.js +123 -0
  216. package/bundled-test-harness/assets/line-BbGOk93s.js +55 -0
  217. package/bundled-test-harness/assets/linear-CHTo-YQl.js +417 -0
  218. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CZdgRM1b.js +315 -0
  219. package/bundled-test-harness/assets/linksto-error-sentinel-test-DhsHO7Xs.js +236 -0
  220. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-mt-RrRta.js +303 -0
  221. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CdGUXZsi.js +301 -0
  222. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DOJ_6Gwf.js +258 -0
  223. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-BZC-gslF.js +194 -0
  224. package/bundled-test-harness/assets/live-prerendered-search-BSkwf5AH.js +639 -0
  225. package/bundled-test-harness/assets/live-test-DTfxZnsy.js +100 -0
  226. package/bundled-test-harness/assets/live-test-WOMYpc1I.js +2 -0
  227. package/bundled-test-harness/assets/loader-icon-error-test-F_ukQytn.js +62 -0
  228. package/bundled-test-harness/assets/loader-parallel-prefetch-test-DpNaFnhc.js +257 -0
  229. package/bundled-test-harness/assets/loader-retry-test-EQ2X0bFS.js +173 -0
  230. package/bundled-test-harness/assets/loader-test-BYkWAwc4.js +245 -0
  231. package/bundled-test-harness/assets/loading-test-jfWH_OpH.js +63 -0
  232. package/bundled-test-harness/assets/login-error-text-test-Cldr1X6h.js +51 -0
  233. package/bundled-test-harness/assets/m4a-audio-def-test-BQ1WKApD.js +185 -0
  234. package/bundled-test-harness/assets/main-ByAsLO_g.js +5 -0
  235. package/bundled-test-harness/assets/markdown-fallback-test-dtTaGP1s.js +316 -0
  236. package/bundled-test-harness/assets/markdown-file-def-test-shW9Xxd1.js +286 -0
  237. package/bundled-test-harness/assets/markdown-helpers-test-B6H7p4ay.js +183 -0
  238. package/bundled-test-harness/assets/markdown-highlighting-test-ZIrFNHRe.js +244 -0
  239. package/bundled-test-harness/assets/markdown-preview-KII3nJ2M.js +69 -0
  240. package/bundled-test-harness/assets/markdown-preview-test-De-IaUbK.js +237 -0
  241. package/bundled-test-harness/assets/marked-sync-CGSehq4u.js +2 -0
  242. package/bundled-test-harness/assets/marked-sync-DenC7QgC.js +2561 -0
  243. package/bundled-test-harness/assets/marked-sync-test-jZBr20Hq.js +146 -0
  244. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-Ax4kyAMt.js +33 -0
  245. package/bundled-test-harness/assets/mermaid-parser.core-B_3tzKUl.js +114 -0
  246. package/bundled-test-harness/assets/mermaid.core-D2hqA7Hq.js +1700 -0
  247. package/bundled-test-harness/assets/message-service-subscription-test-B42KnJ91.js +113 -0
  248. package/bundled-test-harness/assets/mindmap-definition-RKZ34NQL-IZz7Qpd0.js +1347 -0
  249. package/bundled-test-harness/assets/mock-matrix-BhFWlMMr.js +14292 -0
  250. package/bundled-test-harness/assets/mock-matrix-CrtMntcN.js +2 -0
  251. package/bundled-test-harness/assets/module-transpile-cache-test-BtWN4OiM.js +66 -0
  252. package/bundled-test-harness/assets/monaco.contribution-B1hOUP3w.js +2 -0
  253. package/bundled-test-harness/assets/monaco.contribution-DhNsYtZe.js +2 -0
  254. package/bundled-test-harness/assets/monaco.contribution-DvJDImx2.js +103 -0
  255. package/bundled-test-harness/assets/monaco.contribution-yXcOyzue.js +243 -0
  256. package/bundled-test-harness/assets/mp3-audio-def-test-D365TuA7.js +129 -0
  257. package/bundled-test-harness/assets/mutex-test-DY09HLvv.js +71 -0
  258. package/bundled-test-harness/assets/number-field-test-wYaQjnzA.js +153 -0
  259. package/bundled-test-harness/assets/ogg-audio-def-test-Dl01PP31.js +191 -0
  260. package/bundled-test-harness/assets/open-create-listing-modal-test-D8C2PUFv.js +117 -0
  261. package/bundled-test-harness/assets/open-workspace-test-DN2n8IkC.js +48 -0
  262. package/bundled-test-harness/assets/operator-mode-acceptance-test-B_hzJZo4.js +1044 -0
  263. package/bundled-test-harness/assets/operator-mode-card-catalog-test-Hrrnkdt9.js +989 -0
  264. package/bundled-test-harness/assets/operator-mode-links-test-DC6sc9TZ.js +797 -0
  265. package/bundled-test-harness/assets/operator-mode-state-service-test-Aqz9_v0U.js +122 -0
  266. package/bundled-test-harness/assets/operator-mode-test-CLgpZGEM.js +617 -0
  267. package/bundled-test-harness/assets/operator-mode-ui-test-CDRrORfC.js +985 -0
  268. package/bundled-test-harness/assets/ordinal-BIRuJQBH.js +85 -0
  269. package/bundled-test-harness/assets/overlay-menu-items-test-of24KuXp.js +316 -0
  270. package/bundled-test-harness/assets/packet-YPE3B663-hs92geQG.js +3 -0
  271. package/bundled-test-harness/assets/panel-rIdTMDfK.js +3371 -0
  272. package/bundled-test-harness/assets/past-sessions-test-ZKr4ACF0.js +321 -0
  273. package/bundled-test-harness/assets/patch-code-test-BZa-Itrt.js +203 -0
  274. package/bundled-test-harness/assets/patch-fields-test-BkaHs-zo.js +992 -0
  275. package/bundled-test-harness/assets/patch-instance-test-CRMgg52p.js +287 -0
  276. package/bundled-test-harness/assets/persist-module-inspector-view-test-CqNy2RXR.js +62 -0
  277. package/bundled-test-harness/assets/phone-number-field-test-CV6gntON.js +72 -0
  278. package/bundled-test-harness/assets/pie-LRSECV5Y-DcM5pWE3.js +3 -0
  279. package/bundled-test-harness/assets/pieDiagram-4H26LBE5-CtO8RHpU.js +253 -0
  280. package/bundled-test-harness/assets/plan-install-test-lfBTuWXU.js +417 -0
  281. package/bundled-test-harness/assets/playground-VscW9KdT.js +57 -0
  282. package/bundled-test-harness/assets/png-image-def-test-CRspcIHP.js +222 -0
  283. package/bundled-test-harness/assets/prerender-file-extract-test-D3SpxfMI.js +176 -0
  284. package/bundled-test-harness/assets/prerender-html-test-WWptGXJ0.js +615 -0
  285. package/bundled-test-harness/assets/prerender-meta-test-DwQEGN6j.js +388 -0
  286. package/bundled-test-harness/assets/prerender-module-test-BM1AOwRF.js +195 -0
  287. package/bundled-test-harness/assets/prerendered-card-search-test-BVJ8IHLe.js +708 -0
  288. package/bundled-test-harness/assets/preview-format-test-DDpiXDN_.js +103 -0
  289. package/bundled-test-harness/assets/preview-test-D2UV1C5D.js +455 -0
  290. package/bundled-test-harness/assets/published-realm-url-DUIZzAJ5.js +52 -0
  291. package/bundled-test-harness/assets/published-realm-url-test-CIgSf4Ub.js +137 -0
  292. package/bundled-test-harness/assets/qs-test-Bi679H5w.js +36 -0
  293. package/bundled-test-harness/assets/quadrantDiagram-W4KKPZXB-GOTAKsCo.js +2324 -0
  294. package/bundled-test-harness/assets/query-field-barrier-test-BlOuVxdS.js +118 -0
  295. package/bundled-test-harness/assets/query-field-error-sentinel-test-BsB76iUQ.js +202 -0
  296. package/bundled-test-harness/assets/query-field-normalization-test-B2YodJCr.js +271 -0
  297. package/bundled-test-harness/assets/query-field-schema-test-CQhJASFx.js +231 -0
  298. package/bundled-test-harness/assets/query-fields-test-CaZ19leM.js +535 -0
  299. package/bundled-test-harness/assets/queue-test-DrSip6mJ.js +216 -0
  300. package/bundled-test-harness/assets/radar-GUYGQ44K-BkAe1nkp.js +3 -0
  301. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D8yB-OL9.js +91 -0
  302. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-K3M0-lBD.js +45 -0
  303. package/bundled-test-harness/assets/read-source-test-CKlb0ORb.js +67 -0
  304. package/bundled-test-harness/assets/read-text-file-test-CJdasDDU.js +124 -0
  305. package/bundled-test-harness/assets/realm-DhUCLR5r.js +884 -0
  306. package/bundled-test-harness/assets/realm-field-test-kFgxphDI.js +101 -0
  307. package/bundled-test-harness/assets/realm-index-card-id-test-DAnMAqw4.js +18 -0
  308. package/bundled-test-harness/assets/realm-indexing-test-BQkX-Dat.js +4018 -0
  309. package/bundled-test-harness/assets/realm-paths-test-CmEi9rzu.js +33 -0
  310. package/bundled-test-harness/assets/realm-querying-test-eq3qSXLu.js +1062 -0
  311. package/bundled-test-harness/assets/realm-test-DLQAtdMt.js +2409 -0
  312. package/bundled-test-harness/assets/reasoning-test-CwTfyDlj.js +234 -0
  313. package/bundled-test-harness/assets/recent-files-test-MVIGLp8S.js +449 -0
  314. package/bundled-test-harness/assets/reindex-realm-test-BwLgJeB3.js +119 -0
  315. package/bundled-test-harness/assets/relationship-loading-state-test-B4Ca43yD.js +289 -0
  316. package/bundled-test-harness/assets/render-component-BKEihV4U.js +2 -0
  317. package/bundled-test-harness/assets/render-error-test-DWD6tfNe.js +22 -0
  318. package/bundled-test-harness/assets/render-service-test-BjuoVrUK.js +87 -0
  319. package/bundled-test-harness/assets/render-timer-stub-test-BgUY5u3X.js +84 -0
  320. package/bundled-test-harness/assets/rendered-markdown-DOP-s6fW.js +211 -0
  321. package/bundled-test-harness/assets/rendered-markdown-test-CD02UYwA.js +360 -0
  322. package/bundled-test-harness/assets/requirementDiagram-4Y6WPE33-DJIy7eR9.js +2550 -0
  323. package/bundled-test-harness/assets/rich-markdown-field-test-BJeQx1tL.js +806 -0
  324. package/bundled-test-harness/assets/room-message-test-CjD7FlPD.js +171 -0
  325. package/bundled-test-harness/assets/rust-crypto-GS0FFZ7H.js +16141 -0
  326. package/bundled-test-harness/assets/sanitize-module-list-test-gi0pcqSy.js +68 -0
  327. package/bundled-test-harness/assets/sankeyDiagram-5OEKKPKP-wBsbt1Mr.js +1357 -0
  328. package/bundled-test-harness/assets/schema-editor-test-BSqu8W3e.js +784 -0
  329. package/bundled-test-harness/assets/schema-generation-test-DVFuSsLl.js +28 -0
  330. package/bundled-test-harness/assets/scrolling-test-CpzkRiBS.js +292 -0
  331. package/bundled-test-harness/assets/search-and-choose-test-DVWX4XRb.js +156 -0
  332. package/bundled-test-harness/assets/search-cache-key-test-BMnYM4a5.js +79 -0
  333. package/bundled-test-harness/assets/search-command-test-kEfT0AO7.js +135 -0
  334. package/bundled-test-harness/assets/search-correlation-id-test-D08FtVUZ.js +101 -0
  335. package/bundled-test-harness/assets/search-data-test-CTrBEc1m.js +243 -0
  336. package/bundled-test-harness/assets/search-google-images-test-UnKG8qCp.js +168 -0
  337. package/bundled-test-harness/assets/search-in-flight-key-test-9Va-JXFz.js +79 -0
  338. package/bundled-test-harness/assets/search-test-COlO2lZi.js +847 -0
  339. package/bundled-test-harness/assets/send-ai-assistant-message-test-BPjOjt2R.js +52 -0
  340. package/bundled-test-harness/assets/send-bot-trigger-event-test-BB4lHbB_.js +56 -0
  341. package/bundled-test-harness/assets/send-request-via-proxy-test-U8frmHZA.js +333 -0
  342. package/bundled-test-harness/assets/sending-test-DjEzksEX.js +317 -0
  343. package/bundled-test-harness/assets/sequenceDiagram-3UESZ5HK-QAEjhoay.js +5551 -0
  344. package/bundled-test-harness/assets/serialization-test-DHdLriC8.js +8283 -0
  345. package/bundled-test-harness/assets/set-user-system-card-test-C8I1lDBh.js +59 -0
  346. package/bundled-test-harness/assets/setup-BkuybBki.js +769 -0
  347. package/bundled-test-harness/assets/setup-gxkWJKID.js +2 -0
  348. package/bundled-test-harness/assets/show-card-test-DHKQ6AI4.js +362 -0
  349. package/bundled-test-harness/assets/skills-test-DlMgZrPV.js +568 -0
  350. package/bundled-test-harness/assets/spec-test-s9Zj7x2E.js +1012 -0
  351. package/bundled-test-harness/assets/stateDiagram-AJRCARHV-nEhf3efZ.js +363 -0
  352. package/bundled-test-harness/assets/stateDiagram-v2-BHNVJYJU-tZz_3w-7.js +29 -0
  353. package/bundled-test-harness/assets/store-add-test-D44FWRl3.js +52 -0
  354. package/bundled-test-harness/assets/store-test-TTmNBs5v.js +1562 -0
  355. package/bundled-test-harness/assets/summarize-session-test-DHAuNb5K.js +169 -0
  356. package/bundled-test-harness/assets/svg-image-def-test-C2_GGzR6.js +164 -0
  357. package/bundled-test-harness/assets/switch-submode-test-CfGaoxVe.js +168 -0
  358. package/bundled-test-harness/assets/test-realm-service-worker-C21o7yvW.js +73 -0
  359. package/bundled-test-harness/assets/tests-BSt6h9iC.js +2771 -0
  360. package/bundled-test-harness/assets/text-file-def-test-CR4QO7e_.js +93 -0
  361. package/bundled-test-harness/assets/text-input-validator-test-DYS3mFj9.js +155 -0
  362. package/bundled-test-harness/assets/text-suggestion-test-GUxJ7WtF.js +339 -0
  363. package/bundled-test-harness/assets/theme-card-test-Ba2KqFB8.js +573 -0
  364. package/bundled-test-harness/assets/timeline-definition-PNZ67QCA-BQYyTIei.js +1545 -0
  365. package/bundled-test-harness/assets/transform-cards-test-DyA8eCom.js +341 -0
  366. package/bundled-test-harness/assets/treeView-BLDUP644-Z4ezSvef.js +3 -0
  367. package/bundled-test-harness/assets/treemap-LRROVOQU-Bf5rk_He.js +3 -0
  368. package/bundled-test-harness/assets/ts-file-def-test-Cxnc6H74.js +90 -0
  369. package/bundled-test-harness/assets/tsMode-oJEHe-CR.js +968 -0
  370. package/bundled-test-harness/assets/typescript-DLbb7q56.js +2 -0
  371. package/bundled-test-harness/assets/update-room-skills-test-B7VLHU3-.js +197 -0
  372. package/bundled-test-harness/assets/url-test-w-69Zycf.js +103 -0
  373. package/bundled-test-harness/assets/use-ai-assistant-test-DJkFz7_b.js +330 -0
  374. package/bundled-test-harness/assets/validate-realm-test-BioLutB8.js +53 -0
  375. package/bundled-test-harness/assets/vennDiagram-CIIHVFJN-9eLwsQET.js +2833 -0
  376. package/bundled-test-harness/assets/wardley-L42UT6IY-qNP5_917.js +3 -0
  377. package/bundled-test-harness/assets/wardleyDiagram-YWT4CUSO-DZhEm4N4.js +872 -0
  378. package/bundled-test-harness/assets/wav-audio-def-test-DqsTEBw8.js +155 -0
  379. package/bundled-test-harness/assets/webp-image-def-test-23wOLPMu.js +225 -0
  380. package/bundled-test-harness/assets/workspace-chooser-delete-test-Q6S_nGDT.js +189 -0
  381. package/bundled-test-harness/assets/workspace-chooser-test-CzsvY1v_.js +235 -0
  382. package/bundled-test-harness/assets/workspace-delete-multiple-test-BNFHkJpQ.js +213 -0
  383. package/bundled-test-harness/assets/workspace-delete-summary-test-DLzNdjvC.js +63 -0
  384. package/bundled-test-harness/assets/write-binary-file-test-PHHt9fVI.js +100 -0
  385. package/bundled-test-harness/assets/write-text-file-test-DuHe6tR5.js +172 -0
  386. package/bundled-test-harness/assets/xychartDiagram-2RQKCTM6-bflHQbEv.js +2551 -0
  387. package/bundled-test-harness/index.html +24 -23
  388. package/bundled-test-harness/tests/index.html +31 -30
  389. package/bundled-types/base/command.d.ts +48 -0
  390. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +17 -26
  391. package/bundled-types/host-app/lib/published-realm-url.ts +135 -0
  392. package/package.json +2 -2
  393. package/src/build-program.ts +12 -12
  394. package/src/commands/consolidate-workspaces.ts +1 -1
  395. package/src/commands/file/delete.ts +4 -4
  396. package/src/commands/file/index.ts +6 -6
  397. package/src/commands/file/lint.ts +4 -4
  398. package/src/commands/file/list.ts +3 -3
  399. package/src/commands/file/read.ts +3 -3
  400. package/src/commands/file/touch.ts +6 -6
  401. package/src/commands/file/write.ts +3 -3
  402. package/src/commands/lint.ts +6 -6
  403. package/src/commands/parse.ts +6 -6
  404. package/src/commands/profile.ts +4 -4
  405. package/src/commands/read-transpiled.ts +6 -3
  406. package/src/commands/realm/cancel-indexing.ts +3 -3
  407. package/src/commands/realm/create.ts +2 -2
  408. package/src/commands/realm/history.ts +4 -4
  409. package/src/commands/realm/index.ts +15 -15
  410. package/src/commands/realm/indexing-errors.ts +3 -3
  411. package/src/commands/realm/list.ts +2 -2
  412. package/src/commands/realm/milestone.ts +4 -4
  413. package/src/commands/realm/publish.ts +4 -4
  414. package/src/commands/realm/pull.ts +6 -6
  415. package/src/commands/realm/push.ts +7 -7
  416. package/src/commands/realm/remove.ts +3 -3
  417. package/src/commands/realm/status.ts +8 -8
  418. package/src/commands/realm/sync.ts +9 -9
  419. package/src/commands/realm/unpublish.ts +3 -3
  420. package/src/commands/realm/wait-for-ready.ts +2 -2
  421. package/src/commands/realm/watch/index.ts +2 -2
  422. package/src/commands/realm/watch/start.ts +13 -10
  423. package/src/commands/realm/watch/stop.ts +2 -2
  424. package/src/commands/run-command.ts +6 -3
  425. package/src/commands/search.ts +3 -3
  426. package/src/commands/test.ts +5 -5
  427. package/src/index.ts +2 -2
  428. package/src/lib/auth-resolver.ts +3 -3
  429. package/src/lib/boxel-cli-client.ts +18 -15
  430. package/src/lib/checkpoint-manager.ts +1 -1
  431. package/src/lib/find-checkpoint.ts +1 -1
  432. package/src/lib/profile-manager.ts +4 -4
  433. package/src/lib/realm-local-paths.ts +1 -1
  434. package/src/lib/realm-sync-base.ts +1 -1
  435. package/src/lib/seed-auth.ts +1 -1
  436. package/src/lib/sync-logic.ts +1 -1
  437. package/src/lib/watch-process-registry.ts +1 -1
  438. package/bundled-test-harness/assets/adapter-C8oDflNN.js +0 -2
  439. package/bundled-test-harness/assets/add-field-to-card-definition-command-test-Cs670972.js +0 -111
  440. package/bundled-test-harness/assets/add-workspace-test-BviDAUBK.js +0 -71
  441. package/bundled-test-harness/assets/ai-assistant-B5fp2iOz.js +0 -129
  442. package/bundled-test-harness/assets/ai-assistant-panel-service-test-NpHZzZAz.js +0 -95
  443. package/bundled-test-harness/assets/ai-assistant-test-jPV29jEw.js +0 -2137
  444. package/bundled-test-harness/assets/ai-function-generation-test-QRPcE9tQ.js +0 -996
  445. package/bundled-test-harness/assets/ai-module-creation-test-DyuyfnkY.js +0 -150
  446. package/bundled-test-harness/assets/aibot-message-Dwxp5hTW.js +0 -1185
  447. package/bundled-test-harness/assets/amd-transpile-test-CF7Lkbif.js +0 -425
  448. package/bundled-test-harness/assets/app-CgP2IpNG.js +0 -21464
  449. package/bundled-test-harness/assets/apply-boxel-formatting-test-BXyZ3z0I.js +0 -134
  450. package/bundled-test-harness/assets/apply-markdown-edit-test-C6bcaj3a.js +0 -230
  451. package/bundled-test-harness/assets/apply-search-replace-block-test-BSwC4J9g.js +0 -630
  452. package/bundled-test-harness/assets/arc-DNRb_8LA.js +0 -199
  453. package/bundled-test-harness/assets/architecture-7EHR7CIX-BtVh_LBJ.js +0 -3
  454. package/bundled-test-harness/assets/architectureDiagram-3BPJPVTR-D9UYbaKj.js +0 -7400
  455. package/bundled-test-harness/assets/auth-error-guard-test-Bvu8E7Wy.js +0 -30
  456. package/bundled-test-harness/assets/auth-service-worker-test-CC6DzdfK.js +0 -538
  457. package/bundled-test-harness/assets/authed-fetch-test-CfF-IBHI.js +0 -75
  458. package/bundled-test-harness/assets/avif-image-def-test-B9L2z0nR.js +0 -186
  459. package/bundled-test-harness/assets/base-realm-43wjttN2.js +0 -140
  460. package/bundled-test-harness/assets/base-realm-CJ5x9iyX.js +0 -2
  461. package/bundled-test-harness/assets/basic-test-B64a5zCK.js +0 -128
  462. package/bundled-test-harness/assets/bfm-card-references-test-cLQVLpth.js +0 -577
  463. package/bundled-test-harness/assets/binary-upload-dedupe-test-By7Y1iQ3.js +0 -308
  464. package/bundled-test-harness/assets/blockDiagram-GPEHLZMM-LgOorG2O.js +0 -4355
  465. package/bundled-test-harness/assets/bot-registration-test-DOjf0P1R.js +0 -99
  466. package/bundled-test-harness/assets/box-test-Cd1-RcXg.js +0 -51
  467. package/bundled-test-harness/assets/brand-guide-attachments-test-DxRqP8fo.js +0 -87
  468. package/bundled-test-harness/assets/brand-guide-custom-css-test-DBpZiHzJ.js +0 -135
  469. package/bundled-test-harness/assets/brand-logo-mark-field-test-61k4e5Om.js +0 -87
  470. package/bundled-test-harness/assets/broken-link-template-test-A1P4flQ5.js +0 -345
  471. package/bundled-test-harness/assets/browser-index-Bzhpucwe.js +0 -3
  472. package/bundled-test-harness/assets/browser-index-D0mzSWYV.js +0 -8802
  473. package/bundled-test-harness/assets/c4Diagram-AAUBKEIU-1iq94vGa.js +0 -3764
  474. package/bundled-test-harness/assets/cached-fetch-test-ByQ-5OQI.js +0 -93
  475. package/bundled-test-harness/assets/can-read-realm-test-VFLHJdEv.js +0 -58
  476. package/bundled-test-harness/assets/cancel-indexing-job-test-n3Os4ZaX.js +0 -71
  477. package/bundled-test-harness/assets/card-api-test-DvNfLv3V.js +0 -196
  478. package/bundled-test-harness/assets/card-basics-test-CKzZuFdw.js +0 -4895
  479. package/bundled-test-harness/assets/card-catalog-test-JFvkVHED.js +0 -377
  480. package/bundled-test-harness/assets/card-copy-test-iwrFA72s.js +0 -777
  481. package/bundled-test-harness/assets/card-def-field-def-relationships-test-D5s2RH5t.js +0 -560
  482. package/bundled-test-harness/assets/card-def-menu-items-test-XcmkT4NF.js +0 -182
  483. package/bundled-test-harness/assets/card-delete-test-jtAOHk1Y.js +0 -412
  484. package/bundled-test-harness/assets/card-directory-name-test-veQEp5FJ.js +0 -71
  485. package/bundled-test-harness/assets/card-playground-test-P7Ed0tO4.js +0 -1497
  486. package/bundled-test-harness/assets/card-prerender-DXG8cQEv.js +0 -12661
  487. package/bundled-test-harness/assets/card-search-adorn-test-BX0-IJHB.js +0 -128
  488. package/bundled-test-harness/assets/card-search-query-builder-test-D01uixke.js +0 -88
  489. package/bundled-test-harness/assets/card-search-selection-menu-test-DMTeZFmW.js +0 -108
  490. package/bundled-test-harness/assets/channel-BvoW_rbI.js +0 -8
  491. package/bundled-test-harness/assets/check-correctness-test-D7QB1GTo.js +0 -252
  492. package/bundled-test-harness/assets/chunk-2J33WTMH-BbxCvOlt.js +0 -31
  493. package/bundled-test-harness/assets/chunk-3OPIFGDE-DHY3s0oT.js +0 -5548
  494. package/bundled-test-harness/assets/chunk-4BX2VUAB-CRivrLQ6.js +0 -11
  495. package/bundled-test-harness/assets/chunk-4EGX6M5U-qWzlMeqd.js +0 -44
  496. package/bundled-test-harness/assets/chunk-55IACEB6-DOl6NECJ.js +0 -10
  497. package/bundled-test-harness/assets/chunk-5DO6E6H7-scwNnzDb.js +0 -27
  498. package/bundled-test-harness/assets/chunk-5ZQYHXKU-BeETnugr.js +0 -1767
  499. package/bundled-test-harness/assets/chunk-727SXJPM-BlycTxFE.js +0 -3877
  500. package/bundled-test-harness/assets/chunk-AQP2D5EJ-BE3Clw-g.js +0 -2622
  501. package/bundled-test-harness/assets/chunk-BR22UD5L-BTPKlhWA.js +0 -85
  502. package/bundled-test-harness/assets/chunk-BSJP7CBP-BIhtUfvc.js +0 -114
  503. package/bundled-test-harness/assets/chunk-CSCIHK7Q-DnRAp6Bv.js +0 -6144
  504. package/bundled-test-harness/assets/chunk-FHYWG6QK-DpIXIGDC.js +0 -27
  505. package/bundled-test-harness/assets/chunk-FMBD7UC4-B36w3LIg.js +0 -20
  506. package/bundled-test-harness/assets/chunk-KSCS5N6A-gbz9p9BU.js +0 -871
  507. package/bundled-test-harness/assets/chunk-L5ZTLDWV-HNfH9U8K.js +0 -43
  508. package/bundled-test-harness/assets/chunk-LZXEDZCA-CbKHJfzx.js +0 -65
  509. package/bundled-test-harness/assets/chunk-MPE355IW-BGVbCTZH.js +0 -27
  510. package/bundled-test-harness/assets/chunk-MZUSXYTE-DoCjuxcJ.js +0 -36
  511. package/bundled-test-harness/assets/chunk-N66VUXT2-BX17MI-i.js +0 -70
  512. package/bundled-test-harness/assets/chunk-ND2GUHAM-IpeiJZYz.js +0 -93
  513. package/bundled-test-harness/assets/chunk-NZK2D7GU-CH-Gg7qc.js +0 -89
  514. package/bundled-test-harness/assets/chunk-O5CBEL6O-D2JbLgI8.js +0 -2395
  515. package/bundled-test-harness/assets/chunk-PUPMXCY4-DS4ZxM2V.js +0 -27
  516. package/bundled-test-harness/assets/chunk-QZHKN3VN-WLHeRUJ3.js +0 -20
  517. package/bundled-test-harness/assets/chunk-UIBZB4QT-DNIJBpkq.js +0 -27
  518. package/bundled-test-harness/assets/chunk-WCWK7LTN-CqRJ3WOy.js +0 -36
  519. package/bundled-test-harness/assets/chunk-WU5MYG2G-CtItCLbE.js +0 -12
  520. package/bundled-test-harness/assets/chunk-XPW4576I-D2Q7Qo8n.js +0 -2341
  521. package/bundled-test-harness/assets/classDiagram-4FO5ZUOK-CnNFReKQ.js +0 -31
  522. package/bundled-test-harness/assets/classDiagram-v2-Q7XG4LA2-BlhpbohY.js +0 -31
  523. package/bundled-test-harness/assets/code-equality-assertion-C-2g5YGf.js +0 -474
  524. package/bundled-test-harness/assets/code-patches-test-DaV4Mon_.js +0 -1128
  525. package/bundled-test-harness/assets/code-patching-test-CcbWlImN.js +0 -114
  526. package/bundled-test-harness/assets/code-ref-test-8Yj8gbww.js +0 -138
  527. package/bundled-test-harness/assets/code-semantics-service-test-C3srTfDz.js +0 -65
  528. package/bundled-test-harness/assets/code-submode-test-BUhjvWtB.js +0 -1762
  529. package/bundled-test-harness/assets/codeblocks-test-3zAp0_GA.js +0 -492
  530. package/bundled-test-harness/assets/codemirror-context-C7KmSAyy.js +0 -2
  531. package/bundled-test-harness/assets/codemirror-editor-test-WojU4k2h.js +0 -1176
  532. package/bundled-test-harness/assets/color-field-test-yESUakoE.js +0 -213
  533. package/bundled-test-harness/assets/command-definitions-test-UsXsAhn7.js +0 -72
  534. package/bundled-test-harness/assets/commands-CBDBujm_.js +0 -1379
  535. package/bundled-test-harness/assets/commands-calling-test-DJTl0EbL.js +0 -200
  536. package/bundled-test-harness/assets/commands-test-DW2gupNS.js +0 -1041
  537. package/bundled-test-harness/assets/commands-test-DjLnuojW.js +0 -1145
  538. package/bundled-test-harness/assets/computed-test-0n5g8Ez5.js +0 -882
  539. package/bundled-test-harness/assets/container-D8y7fmir.js +0 -14602
  540. package/bundled-test-harness/assets/convert-to-class-name-test-DSIflIV2.js +0 -17
  541. package/bundled-test-harness/assets/copy-and-edit-test-BuK1ZHr-.js +0 -291
  542. package/bundled-test-harness/assets/copy-card-test-DnDC4_7J.js +0 -156
  543. package/bundled-test-harness/assets/copy-file-to-realm-test-CFd_3Iff.js +0 -99
  544. package/bundled-test-harness/assets/copy-source-test-38yUGJor.js +0 -56
  545. package/bundled-test-harness/assets/cose-bilkent-S5V4N54A-DXA1S87S.js +0 -4275
  546. package/bundled-test-harness/assets/create-file-test-B2oem0-V.js +0 -963
  547. package/bundled-test-harness/assets/create-file-test-BHk00RtD.js +0 -397
  548. package/bundled-test-harness/assets/create-listing-modal-test-L-71-Uo2.js +0 -194
  549. package/bundled-test-harness/assets/create-listing-pr-request-CZaLsHhE.js +0 -64
  550. package/bundled-test-harness/assets/create-listing-pr-request-test-OGzk4Q2E.js +0 -117
  551. package/bundled-test-harness/assets/create-spec-test-BsM7VKuH.js +0 -239
  552. package/bundled-test-harness/assets/csv-file-def-test-BhJalhE-.js +0 -101
  553. package/bundled-test-harness/assets/dagre-BIk_r1iU.js +0 -4195
  554. package/bundled-test-harness/assets/dagre-BM42HDAG-FaUWeGOj.js +0 -606
  555. package/bundled-test-harness/assets/date-time-fields-test-Cs5T6Xk1.js +0 -322
  556. package/bundled-test-harness/assets/debug-message-test-WlHe7pJF.js +0 -119
  557. package/bundled-test-harness/assets/diagram-2AECGRRQ-DLve-IVM.js +0 -279
  558. package/bundled-test-harness/assets/diagram-5GNKFQAL-CJG1RTLk.js +0 -142
  559. package/bundled-test-harness/assets/diagram-KO2AKTUF-DYGDq3dD.js +0 -551
  560. package/bundled-test-harness/assets/diagram-LMA3HP47-BNRYdpMl.js +0 -184
  561. package/bundled-test-harness/assets/diagram-OG6HWLK6-BlJH5g83.js +0 -857
  562. package/bundled-test-harness/assets/diffing-test-DO54USSm.js +0 -210
  563. package/bundled-test-harness/assets/dist-BDRmXkWl.js +0 -232
  564. package/bundled-test-harness/assets/dist-BfNSLd0O.js +0 -105
  565. package/bundled-test-harness/assets/dist-BoireClP.js +0 -2
  566. package/bundled-test-harness/assets/editor-test-DChC9LuR.js +0 -551
  567. package/bundled-test-harness/assets/editor.main-BiohyrHK.js +0 -3
  568. package/bundled-test-harness/assets/editor.main-CMU_0pR1.js +0 -43566
  569. package/bundled-test-harness/assets/email-field-test-DWIFSfZ-.js +0 -74
  570. package/bundled-test-harness/assets/enum-field-test-BUc6l4us.js +0 -909
  571. package/bundled-test-harness/assets/erDiagram-TEJ5UH35-pOJ2novh.js +0 -2041
  572. package/bundled-test-harness/assets/error-display-test-CHSE6h6Z.js +0 -343
  573. package/bundled-test-harness/assets/evaluate-module-test-Caa5n0B9.js +0 -66
  574. package/bundled-test-harness/assets/eventmodeling-FCH6USID-B6XXU7R3.js +0 -3
  575. package/bundled-test-harness/assets/execute-atomic-operations-test-CT060oDk.js +0 -75
  576. package/bundled-test-harness/assets/externals-Do1fVZ4j.js +0 -5533
  577. package/bundled-test-harness/assets/extract-css-variables-test-DzjAsMgg.js +0 -169
  578. package/bundled-test-harness/assets/fallback-banner-test-CmxysrDn.js +0 -227
  579. package/bundled-test-harness/assets/fallback-banner-test-DJ4cO8PB.js +0 -53
  580. package/bundled-test-harness/assets/fallback-models-test-r5upJFeA.js +0 -163
  581. package/bundled-test-harness/assets/fetch-card-json-test-Di1wmvy5.js +0 -63
  582. package/bundled-test-harness/assets/fetcher-test-DjzNl_7F.js +0 -85
  583. package/bundled-test-harness/assets/field-configuration-test-C3vr-HhG.js +0 -535
  584. package/bundled-test-harness/assets/field-markdown-domain-test-DG2U4qIm.js +0 -615
  585. package/bundled-test-harness/assets/field-markdown-primitives-test-Bay2v8nT.js +0 -362
  586. package/bundled-test-harness/assets/field-markdown-specialized-test-Bl0Sl4sc.js +0 -527
  587. package/bundled-test-harness/assets/field-path-parser-test-bxxwUjcm.js +0 -387
  588. package/bundled-test-harness/assets/field-playground-test-Bcjfws4m.js +0 -902
  589. package/bundled-test-harness/assets/field-support-predicates-test-DYTqOGvv.js +0 -170
  590. package/bundled-test-harness/assets/field-test-helpers-DYSfSGdh.js +0 -45
  591. package/bundled-test-harness/assets/file-attachment-test-6ypDRDS7.js +0 -635
  592. package/bundled-test-harness/assets/file-chooser-test-mtmcHTFP.js +0 -439
  593. package/bundled-test-harness/assets/file-def-live-reload-test-CX1-lOv6.js +0 -50
  594. package/bundled-test-harness/assets/file-def-manager-DNHII2oj.js +0 -470
  595. package/bundled-test-harness/assets/file-def-manager-canonicalize-test-i_7UVakF.js +0 -451
  596. package/bundled-test-harness/assets/file-def-menu-items-test-Dw458iku.js +0 -114
  597. package/bundled-test-harness/assets/file-def-navigation-test-B3Ztr1Rd.js +0 -109
  598. package/bundled-test-harness/assets/file-def-serialization-test-C_gV8AkU.js +0 -87
  599. package/bundled-test-harness/assets/file-def-test-vXXJmtxX.js +0 -219
  600. package/bundled-test-harness/assets/file-tree-test-BJCiw9jm.js +0 -773
  601. package/bundled-test-harness/assets/flac-audio-def-test-BX3SE1vW.js +0 -138
  602. package/bundled-test-harness/assets/flowDiagram-I6XJVG4X-7Q5ROn4X.js +0 -4883
  603. package/bundled-test-harness/assets/formatted-aibot-message-test-DyqUz2nt.js +0 -366
  604. package/bundled-test-harness/assets/formatted-user-message-test-aqAzqvBP.js +0 -43
  605. package/bundled-test-harness/assets/freestyle-test-CLRrZkAE.js +0 -17
  606. package/bundled-test-harness/assets/full-reindex-realm-test-ClqPVQ0c.js +0 -103
  607. package/bundled-test-harness/assets/ganttDiagram-6RSMTGT7-BkDoIAAE.js +0 -4060
  608. package/bundled-test-harness/assets/garbage-collection-test-Ba2dD3qS.js +0 -373
  609. package/bundled-test-harness/assets/general-test-D0zhs14K.js +0 -926
  610. package/bundled-test-harness/assets/generate-css-variables-test-CKrXSlHs.js +0 -88
  611. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-fSAdGJeT.js +0 -67
  612. package/bundled-test-harness/assets/get-available-realm-identifiers-test-BXMUW65I.js +0 -49
  613. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-DKEq6Zcq.js +0 -49
  614. package/bundled-test-harness/assets/get-default-writable-realm-test-Dp4nBIRP.js +0 -56
  615. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-DYNnMgD-.js +0 -55
  616. package/bundled-test-harness/assets/get-relationship-membership-state-test-k9EUNWeq.js +0 -1306
  617. package/bundled-test-harness/assets/get-type-refs-from-filter-test-BPuivF-v.js +0 -136
  618. package/bundled-test-harness/assets/get-user-system-card-test-DSHv00O7.js +0 -52
  619. package/bundled-test-harness/assets/gif-image-def-test-LuDSr5Kz.js +0 -161
  620. package/bundled-test-harness/assets/gitGraph-WXDBUCRP-BrG_LYEh.js +0 -3
  621. package/bundled-test-harness/assets/gitGraphDiagram-PVQCEYII-QJjQcX4J.js +0 -1150
  622. package/bundled-test-harness/assets/gts-file-def-test-bS3ML062.js +0 -99
  623. package/bundled-test-harness/assets/head-format-preview-test-B8IPh71E.js +0 -156
  624. package/bundled-test-harness/assets/helpers-wSIq-bau.js +0 -5
  625. package/bundled-test-harness/assets/host-mode-test-D44nXoQZ.js +0 -391
  626. package/bundled-test-harness/assets/host-submode-test-CefkXg9F.js +0 -904
  627. package/bundled-test-harness/assets/index-query-engine-test-DJnDqmfK.js +0 -2548
  628. package/bundled-test-harness/assets/index-writer-test-BcrCMj37.js +0 -1842
  629. package/bundled-test-harness/assets/indexeddb-crypto-store-RTTNdynf.js +0 -49434
  630. package/bundled-test-harness/assets/info-J43DQDTF-DhDzvz9k.js +0 -3
  631. package/bundled-test-harness/assets/infoDiagram-5YYISTIA-8TmRFIRz.js +0 -23
  632. package/bundled-test-harness/assets/inspector-test-D4iMBlbL.js +0 -1776
  633. package/bundled-test-harness/assets/instance-filter-matcher-test-CYT6N3hN.js +0 -564
  634. package/bundled-test-harness/assets/instantiate-card-test-j1JS5lDe.js +0 -104
  635. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-B-aXzOh6.js +0 -497
  636. package/bundled-test-harness/assets/interact-submode-setup-VMwOUl3u.js +0 -558
  637. package/bundled-test-harness/assets/interact-submode-test-D5lNNXdq.js +0 -725
  638. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-71Ze8eGV.js +0 -101
  639. package/bundled-test-harness/assets/invite-user-to-room-test-UfjsvwVp.js +0 -67
  640. package/bundled-test-harness/assets/ishikawaDiagram-YF4QCWOH-7UALIGwM.js +0 -1009
  641. package/bundled-test-harness/assets/isolated-render-test-C2IL-Fz3.js +0 -51
  642. package/bundled-test-harness/assets/item-button-6g7XYj56.js +0 -203
  643. package/bundled-test-harness/assets/javascript-BwLQ7_Nc.js +0 -75
  644. package/bundled-test-harness/assets/job-priority-header-test-C3FfKLPP.js +0 -81
  645. package/bundled-test-harness/assets/journeyDiagram-JHISSGLW-t4gEZYup.js +0 -1256
  646. package/bundled-test-harness/assets/jpg-image-def-test-BTBk9lk5.js +0 -430
  647. package/bundled-test-harness/assets/json-file-def-test-BpU_Eidn.js +0 -92
  648. package/bundled-test-harness/assets/kanban-definition-UN3LZRKU-C_KHB3_r.js +0 -1284
  649. package/bundled-test-harness/assets/last-modified-date-test-fE7IP0q0.js +0 -18
  650. package/bundled-test-harness/assets/limited-set-test-uu2vX1Sv.js +0 -123
  651. package/bundled-test-harness/assets/line-BiZHXOjs.js +0 -55
  652. package/bundled-test-harness/assets/linear-DUaMMmmA.js +0 -417
  653. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-qZeqQ1gt.js +0 -315
  654. package/bundled-test-harness/assets/linksto-error-sentinel-test-BaV3I8Xx.js +0 -236
  655. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-BvJi1vCb.js +0 -303
  656. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CK60Cugk.js +0 -301
  657. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-BWxdEO9D.js +0 -258
  658. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CIsLhqR2.js +0 -194
  659. package/bundled-test-harness/assets/live-prerendered-search-jZe3I16p.js +0 -639
  660. package/bundled-test-harness/assets/live-test-CF_R5WGr.js +0 -2
  661. package/bundled-test-harness/assets/live-test-jO7lXuyB.js +0 -100
  662. package/bundled-test-harness/assets/loader-icon-error-test-N4JYZuTx.js +0 -62
  663. package/bundled-test-harness/assets/loader-parallel-prefetch-test-DteeG7mU.js +0 -257
  664. package/bundled-test-harness/assets/loader-retry-test-DYVgpS_I.js +0 -173
  665. package/bundled-test-harness/assets/loader-test-DLI8JIx-.js +0 -245
  666. package/bundled-test-harness/assets/loading-test-D4ZBtRYf.js +0 -63
  667. package/bundled-test-harness/assets/login-error-text-test-Dcq7q3EY.js +0 -51
  668. package/bundled-test-harness/assets/m4a-audio-def-test-BKqGO-CW.js +0 -185
  669. package/bundled-test-harness/assets/main-BjBdsiQT.js +0 -5
  670. package/bundled-test-harness/assets/markdown-fallback-test-BBj80dZZ.js +0 -316
  671. package/bundled-test-harness/assets/markdown-file-def-test-BnMF5rQF.js +0 -286
  672. package/bundled-test-harness/assets/markdown-helpers-test-DnuuSLfS.js +0 -183
  673. package/bundled-test-harness/assets/markdown-highlighting-test-CWRp2Rce.js +0 -244
  674. package/bundled-test-harness/assets/markdown-preview-test-Bf5OqKGf.js +0 -237
  675. package/bundled-test-harness/assets/markdown-preview-yYHtwNeI.js +0 -69
  676. package/bundled-test-harness/assets/marked-sync-2EfimW4i.js +0 -2
  677. package/bundled-test-harness/assets/marked-sync-DZOVFLjK.js +0 -2561
  678. package/bundled-test-harness/assets/marked-sync-test-BaaYbZNF.js +0 -146
  679. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-CdEy3ASW.js +0 -33
  680. package/bundled-test-harness/assets/mermaid-parser.core-CKNAdXJW.js +0 -114
  681. package/bundled-test-harness/assets/mermaid.core-C0mfwy8A.js +0 -1700
  682. package/bundled-test-harness/assets/message-service-subscription-test-pGz_7rz3.js +0 -113
  683. package/bundled-test-harness/assets/mindmap-definition-RKZ34NQL-ClcHxkdY.js +0 -1347
  684. package/bundled-test-harness/assets/mock-matrix-D7JHfFtT.js +0 -2
  685. package/bundled-test-harness/assets/mock-matrix-DqDbNhEj.js +0 -14292
  686. package/bundled-test-harness/assets/module-transpile-cache-test-D0M-fPxs.js +0 -66
  687. package/bundled-test-harness/assets/monaco.contribution-BEs3qwfd.js +0 -103
  688. package/bundled-test-harness/assets/monaco.contribution-Dpx8UiPl.js +0 -2
  689. package/bundled-test-harness/assets/monaco.contribution-RF_qxJYG.js +0 -2
  690. package/bundled-test-harness/assets/monaco.contribution-jPVrF29f.js +0 -243
  691. package/bundled-test-harness/assets/mp3-audio-def-test-CxeRk1bl.js +0 -129
  692. package/bundled-test-harness/assets/mutex-test-D1xyxTj2.js +0 -71
  693. package/bundled-test-harness/assets/number-field-test-gjAGDy6P.js +0 -153
  694. package/bundled-test-harness/assets/ogg-audio-def-test-B6Ww3Ixr.js +0 -191
  695. package/bundled-test-harness/assets/open-create-listing-modal-test-uN58T3rI.js +0 -117
  696. package/bundled-test-harness/assets/open-workspace-test-DXVsvBFJ.js +0 -48
  697. package/bundled-test-harness/assets/operator-mode-acceptance-test-BxIq2xSS.js +0 -1044
  698. package/bundled-test-harness/assets/operator-mode-card-catalog-test-xFYx9_ng.js +0 -989
  699. package/bundled-test-harness/assets/operator-mode-links-test-qhXWmz-S.js +0 -797
  700. package/bundled-test-harness/assets/operator-mode-state-service-test-BdA_uvaY.js +0 -122
  701. package/bundled-test-harness/assets/operator-mode-test-D3EyTwq3.js +0 -617
  702. package/bundled-test-harness/assets/operator-mode-ui-test-CSrk6Q0A.js +0 -985
  703. package/bundled-test-harness/assets/ordinal-DO1mUmjg.js +0 -85
  704. package/bundled-test-harness/assets/overlay-menu-items-test-CuqqLsQT.js +0 -316
  705. package/bundled-test-harness/assets/packet-YPE3B663--JkMNy78.js +0 -3
  706. package/bundled-test-harness/assets/panel-C2rtbx32.js +0 -3371
  707. package/bundled-test-harness/assets/past-sessions-test-B9SCbbXz.js +0 -316
  708. package/bundled-test-harness/assets/patch-code-test-CcFr9pDb.js +0 -203
  709. package/bundled-test-harness/assets/patch-fields-test-BW1gzcJM.js +0 -992
  710. package/bundled-test-harness/assets/patch-instance-test-DKqA9gQ6.js +0 -287
  711. package/bundled-test-harness/assets/persist-module-inspector-view-test-D1eKBUkt.js +0 -62
  712. package/bundled-test-harness/assets/phone-number-field-test-D1is5RWv.js +0 -72
  713. package/bundled-test-harness/assets/pie-LRSECV5Y-BDVv8Wdy.js +0 -3
  714. package/bundled-test-harness/assets/pieDiagram-4H26LBE5-CSYI-nMz.js +0 -253
  715. package/bundled-test-harness/assets/plan-install-test-DB-PrjPR.js +0 -417
  716. package/bundled-test-harness/assets/playground-B0iQV7dU.js +0 -57
  717. package/bundled-test-harness/assets/png-image-def-test-DnOsJGs6.js +0 -222
  718. package/bundled-test-harness/assets/prerender-file-extract-test-DhOLozj2.js +0 -176
  719. package/bundled-test-harness/assets/prerender-html-test-DKVhQZA9.js +0 -615
  720. package/bundled-test-harness/assets/prerender-meta-test-CnRNyqSz.js +0 -388
  721. package/bundled-test-harness/assets/prerender-module-test-D163QcrZ.js +0 -195
  722. package/bundled-test-harness/assets/prerendered-card-search-test-DX-8yabJ.js +0 -708
  723. package/bundled-test-harness/assets/preview-format-test-H7bnpdlC.js +0 -103
  724. package/bundled-test-harness/assets/preview-test-B7u6uWJR.js +0 -455
  725. package/bundled-test-harness/assets/qs-test-COb0mre6.js +0 -36
  726. package/bundled-test-harness/assets/quadrantDiagram-W4KKPZXB-2Y2ben29.js +0 -2324
  727. package/bundled-test-harness/assets/query-field-barrier-test-Cypj-MhK.js +0 -118
  728. package/bundled-test-harness/assets/query-field-error-sentinel-test-Dnqn8TdN.js +0 -202
  729. package/bundled-test-harness/assets/query-field-normalization-test-B7D8SHBP.js +0 -271
  730. package/bundled-test-harness/assets/query-field-schema-test-DIYY3-c8.js +0 -231
  731. package/bundled-test-harness/assets/query-fields-test-k-VBF9PE.js +0 -535
  732. package/bundled-test-harness/assets/queue-test-B_74vXZE.js +0 -216
  733. package/bundled-test-harness/assets/radar-GUYGQ44K-Cn2A0VBR.js +0 -3
  734. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-SyL9F_La.js +0 -91
  735. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-nLPp49U2.js +0 -45
  736. package/bundled-test-harness/assets/read-source-test-DBELJkhN.js +0 -67
  737. package/bundled-test-harness/assets/read-text-file-test-CP1JuWlX.js +0 -124
  738. package/bundled-test-harness/assets/realm-Dr4iygv_.js +0 -884
  739. package/bundled-test-harness/assets/realm-field-test-Cice2mYk.js +0 -101
  740. package/bundled-test-harness/assets/realm-index-card-id-test-BzpozdWc.js +0 -18
  741. package/bundled-test-harness/assets/realm-indexing-test-C0YSXziR.js +0 -4018
  742. package/bundled-test-harness/assets/realm-paths-test-DV_g07rF.js +0 -33
  743. package/bundled-test-harness/assets/realm-querying-test-B526abM0.js +0 -1062
  744. package/bundled-test-harness/assets/realm-test-D8UN5X-w.js +0 -2409
  745. package/bundled-test-harness/assets/reasoning-test-ClIOvdkX.js +0 -234
  746. package/bundled-test-harness/assets/recent-files-test-C2J_dJUD.js +0 -449
  747. package/bundled-test-harness/assets/reindex-realm-test-DMphy1g6.js +0 -119
  748. package/bundled-test-harness/assets/relationship-loading-state-test-BWrZdLlZ.js +0 -289
  749. package/bundled-test-harness/assets/render-component-BII_KnyK.js +0 -2
  750. package/bundled-test-harness/assets/render-error-test-BUAJJlUi.js +0 -22
  751. package/bundled-test-harness/assets/render-service-test-BKkCjErY.js +0 -87
  752. package/bundled-test-harness/assets/render-timer-stub-test-TUDMWJ8v.js +0 -84
  753. package/bundled-test-harness/assets/rendered-markdown-ColekGTF.js +0 -211
  754. package/bundled-test-harness/assets/rendered-markdown-test-B4CWIo02.js +0 -360
  755. package/bundled-test-harness/assets/requirementDiagram-4Y6WPE33-CTICatxk.js +0 -2550
  756. package/bundled-test-harness/assets/rich-markdown-field-test-B5u6D3Nk.js +0 -806
  757. package/bundled-test-harness/assets/room-message-test-0eJSqQfu.js +0 -171
  758. package/bundled-test-harness/assets/rust-crypto-B0m3j_yZ.js +0 -16141
  759. package/bundled-test-harness/assets/sanitize-module-list-test-rH6OqjKh.js +0 -68
  760. package/bundled-test-harness/assets/sankeyDiagram-5OEKKPKP-hBIg6-LP.js +0 -1357
  761. package/bundled-test-harness/assets/schema-editor-test-DH4MLFCD.js +0 -784
  762. package/bundled-test-harness/assets/schema-generation-test-BZMkX7VA.js +0 -28
  763. package/bundled-test-harness/assets/scrolling-test-CFTyLG8X.js +0 -292
  764. package/bundled-test-harness/assets/search-and-choose-test-CcbVyp4c.js +0 -156
  765. package/bundled-test-harness/assets/search-cache-key-test-BYt46iNT.js +0 -79
  766. package/bundled-test-harness/assets/search-command-test-BRIJPr54.js +0 -135
  767. package/bundled-test-harness/assets/search-correlation-id-test-B298Tfux.js +0 -101
  768. package/bundled-test-harness/assets/search-data-test-DHV2Fd4S.js +0 -243
  769. package/bundled-test-harness/assets/search-google-images-test-CNrazllP.js +0 -168
  770. package/bundled-test-harness/assets/search-in-flight-key-test-Dy3bU2c1.js +0 -79
  771. package/bundled-test-harness/assets/search-test-DL1-gD-G.js +0 -847
  772. package/bundled-test-harness/assets/send-ai-assistant-message-test-CyEkQ5pD.js +0 -52
  773. package/bundled-test-harness/assets/send-bot-trigger-event-test-CAsK28m-.js +0 -56
  774. package/bundled-test-harness/assets/send-request-via-proxy-test-DpMlRvPv.js +0 -333
  775. package/bundled-test-harness/assets/sending-test-BOeGYcTU.js +0 -317
  776. package/bundled-test-harness/assets/sequenceDiagram-3UESZ5HK-DQMiI040.js +0 -5551
  777. package/bundled-test-harness/assets/serialization-test-gY2QQVxS.js +0 -8283
  778. package/bundled-test-harness/assets/set-user-system-card-test-BE3y5GNK.js +0 -59
  779. package/bundled-test-harness/assets/setup-B8O9JQKq.js +0 -769
  780. package/bundled-test-harness/assets/setup-BMqGUBDK.js +0 -2
  781. package/bundled-test-harness/assets/show-card-test-BfJNnWMy.js +0 -362
  782. package/bundled-test-harness/assets/skills-test-CqhnZxBi.js +0 -568
  783. package/bundled-test-harness/assets/spec-test-BUKNn_1q.js +0 -1012
  784. package/bundled-test-harness/assets/stateDiagram-AJRCARHV-BoOij2yt.js +0 -363
  785. package/bundled-test-harness/assets/stateDiagram-v2-BHNVJYJU-Dosil5p2.js +0 -29
  786. package/bundled-test-harness/assets/store-add-test-BR1M-IDR.js +0 -52
  787. package/bundled-test-harness/assets/store-test-DaqI-HRh.js +0 -1562
  788. package/bundled-test-harness/assets/summarize-session-test-BMg54JGF.js +0 -169
  789. package/bundled-test-harness/assets/svg-image-def-test-xNyIKRPV.js +0 -164
  790. package/bundled-test-harness/assets/switch-submode-test-BKvpODUD.js +0 -168
  791. package/bundled-test-harness/assets/test-realm-service-worker-DK4SmTM5.js +0 -73
  792. package/bundled-test-harness/assets/tests-x4_eRjiT.js +0 -2770
  793. package/bundled-test-harness/assets/text-file-def-test-CsXiyVfI.js +0 -93
  794. package/bundled-test-harness/assets/text-input-validator-test-D4s_laO7.js +0 -155
  795. package/bundled-test-harness/assets/text-suggestion-test-CkLf1xuS.js +0 -339
  796. package/bundled-test-harness/assets/theme-card-test-D-6L6OfD.js +0 -573
  797. package/bundled-test-harness/assets/timeline-definition-PNZ67QCA-DD2d81uJ.js +0 -1545
  798. package/bundled-test-harness/assets/transform-cards-test-CRZF2gqZ.js +0 -341
  799. package/bundled-test-harness/assets/treeView-BLDUP644-CUm8wuM-.js +0 -3
  800. package/bundled-test-harness/assets/treemap-LRROVOQU-lbLrY2PE.js +0 -3
  801. package/bundled-test-harness/assets/ts-file-def-test-CDo6ojCf.js +0 -90
  802. package/bundled-test-harness/assets/tsMode-BPQoRibc.js +0 -968
  803. package/bundled-test-harness/assets/typescript-BaU6yDhK.js +0 -2
  804. package/bundled-test-harness/assets/update-room-skills-test-BnSgVFwT.js +0 -197
  805. package/bundled-test-harness/assets/url-test-CK-HB0qu.js +0 -103
  806. package/bundled-test-harness/assets/use-ai-assistant-test-BuJXEP8H.js +0 -330
  807. package/bundled-test-harness/assets/validate-realm-test-Cx7MOtS8.js +0 -53
  808. package/bundled-test-harness/assets/vennDiagram-CIIHVFJN-DtXtzGwZ.js +0 -2833
  809. package/bundled-test-harness/assets/wardley-L42UT6IY-D8aCp_Ox.js +0 -3
  810. package/bundled-test-harness/assets/wardleyDiagram-YWT4CUSO-D-73g3bB.js +0 -872
  811. package/bundled-test-harness/assets/wav-audio-def-test-DIo2GzQL.js +0 -155
  812. package/bundled-test-harness/assets/webp-image-def-test-BQsV0_De.js +0 -225
  813. package/bundled-test-harness/assets/workspace-chooser-delete-test-peDXmnQf.js +0 -189
  814. package/bundled-test-harness/assets/workspace-chooser-test-DS2RtTEF.js +0 -235
  815. package/bundled-test-harness/assets/workspace-delete-multiple-test-DTbjRSzN.js +0 -213
  816. package/bundled-test-harness/assets/workspace-delete-summary-test-B--ink4m.js +0 -63
  817. package/bundled-test-harness/assets/write-binary-file-test-A3TQ5lFn.js +0 -100
  818. package/bundled-test-harness/assets/write-text-file-test-D_rjNDsT.js +0 -172
  819. package/bundled-test-harness/assets/xychartDiagram-2RQKCTM6-D1aoqDp-.js +0 -2551
  820. /package/bundled-test-harness/assets/{abap-CLdVBGqB.js → abap-FZAuBTMl.js} +0 -0
  821. /package/bundled-test-harness/assets/{apex-DV8eHjgQ.js → apex-CAO3qFTc.js} +0 -0
  822. /package/bundled-test-harness/assets/{array-DsDWWqmW.js → array-CRfHnEm4.js} +0 -0
  823. /package/bundled-test-harness/assets/{azcli-C4pZYsiJ.js → azcli-Bnu7jG0Y.js} +0 -0
  824. /package/bundled-test-harness/assets/{bat-DBoaeFpB.js → bat-DdE54Pqq.js} +0 -0
  825. /package/bundled-test-harness/assets/{bicep-VlrJhbeK.js → bicep-Dp4vFp3K.js} +0 -0
  826. /package/bundled-test-harness/assets/{cameligo-jyzrvLUm.js → cameligo-Cym4x98m.js} +0 -0
  827. /package/bundled-test-harness/assets/{chunk-NNHCCRGN-Be15HUz2.js → chunk-NNHCCRGN-PWOfDYpb.js} +0 -0
  828. /package/bundled-test-harness/assets/{clojure-bzahmEtz.js → clojure-B47IJ25u.js} +0 -0
  829. /package/bundled-test-harness/assets/{codemirror-context-BauLYUNt.js → codemirror-context-oJy03XqC.js} +0 -0
  830. /package/bundled-test-harness/assets/{coffee-CMADdzOH.js → coffee-CZlkBXT8.js} +0 -0
  831. /package/bundled-test-harness/assets/{cpp-CEJwzcLE.js → cpp-mX4KaA7p.js} +0 -0
  832. /package/bundled-test-harness/assets/{csharp-XYqm0UE0.js → csharp-C-OeDGwk.js} +0 -0
  833. /package/bundled-test-harness/assets/{csp-82fNWQc2.js → csp-AS2OEE8R.js} +0 -0
  834. /package/bundled-test-harness/assets/{css-B5b0ooFS.js → css-C-TQxhWe.js} +0 -0
  835. /package/bundled-test-harness/assets/{cssMode-DTKuqAkO.js → cssMode-C87GnEsk.js} +0 -0
  836. /package/bundled-test-harness/assets/{cypher-Df9GkdDY.js → cypher-T6F_0eIM.js} +0 -0
  837. /package/bundled-test-harness/assets/{cytoscape.esm-D0iwZ9Jj.js → cytoscape.esm-Bc2V-MhP.js} +0 -0
  838. /package/bundled-test-harness/assets/{dart-C4JY9dMc.js → dart-DzVesk0n.js} +0 -0
  839. /package/bundled-test-harness/assets/{defaultLocale-BtLxQtxy.js → defaultLocale-CAoL4lzt.js} +0 -0
  840. /package/bundled-test-harness/assets/{dist-D-PuK2H3.js → dist-BZ5MfZEJ.js} +0 -0
  841. /package/bundled-test-harness/assets/{dockerfile-Ck0tNttO.js → dockerfile-BH0_bQxC.js} +0 -0
  842. /package/bundled-test-harness/assets/{ecl-BpeXqJR_.js → ecl-KIxjxrJo.js} +0 -0
  843. /package/bundled-test-harness/assets/{elixir-HmBzrXaX.js → elixir-CPPdtCW1.js} +0 -0
  844. /package/bundled-test-harness/assets/{flow9-DhsfsDhH.js → flow9-Dxho7Ldf.js} +0 -0
  845. /package/bundled-test-harness/assets/{freemarker2-D3Yd6nGl.js → freemarker2-DP1aOr3_.js} +0 -0
  846. /package/bundled-test-harness/assets/{fsharp-D56OprHc.js → fsharp-ozN53Joe.js} +0 -0
  847. /package/bundled-test-harness/assets/{go-BITsFLfX.js → go-DPj6Rbqe.js} +0 -0
  848. /package/bundled-test-harness/assets/{graphlib-qkaQhadO.js → graphlib-DOITgaas.js} +0 -0
  849. /package/bundled-test-harness/assets/{graphql-CJJVsEX1.js → graphql-C8_-AnBG.js} +0 -0
  850. /package/bundled-test-harness/assets/{handlebars-Dvw6QbL7.js → handlebars-B2gYBZpU.js} +0 -0
  851. /package/bundled-test-harness/assets/{hcl-DSTZcJuq.js → hcl-r3d7BhXB.js} +0 -0
  852. /package/bundled-test-harness/assets/{helpers-D_JZYUOQ.js → helpers-CItTycq2.js} +0 -0
  853. /package/bundled-test-harness/assets/{html-Bik3qLmc.js → html-DhN1Nxr0.js} +0 -0
  854. /package/bundled-test-harness/assets/{htmlMode-DPCaR3Ab.js → htmlMode-BnBg5hCh.js} +0 -0
  855. /package/bundled-test-harness/assets/{ini-li-kC8ZU.js → ini-CzzRigmS.js} +0 -0
  856. /package/bundled-test-harness/assets/{init-Bq7IGMcH.js → init-Bd2YUhsG.js} +0 -0
  857. /package/bundled-test-harness/assets/{java-CETpuNN7.js → java-BgeDsIoV.js} +0 -0
  858. /package/bundled-test-harness/assets/{jsonMode-CZ3hOG-W.js → jsonMode-sRb0gsB8.js} +0 -0
  859. /package/bundled-test-harness/assets/{julia-hgihs1aN.js → julia-u3K1H5Ts.js} +0 -0
  860. /package/bundled-test-harness/assets/{katex-DqhsSYO4.js → katex-CHY7BUZt.js} +0 -0
  861. /package/bundled-test-harness/assets/{kotlin-CKfyb82K.js → kotlin-DfqmlJ10.js} +0 -0
  862. /package/bundled-test-harness/assets/{less-xB5yXbw8.js → less-CSzH7DPY.js} +0 -0
  863. /package/bundled-test-harness/assets/{lexon-BLwrXVrI.js → lexon-DwPTpxXt.js} +0 -0
  864. /package/bundled-test-harness/assets/{liquid-Bf2lpknJ.js → liquid-95J9g5Vk.js} +0 -0
  865. /package/bundled-test-harness/assets/{lua-Ch5i3IrF.js → lua-CGw6zbeh.js} +0 -0
  866. /package/bundled-test-harness/assets/{m3-D5tNlhaF.js → m3-BfgwloGF.js} +0 -0
  867. /package/bundled-test-harness/assets/{markdown-Dzc9uMky.js → markdown-RZRK7Mc9.js} +0 -0
  868. /package/bundled-test-harness/assets/{mdx-xsI4TJrf.js → mdx-BYD-W2sn.js} +0 -0
  869. /package/bundled-test-harness/assets/{mips-CmdzHkQm.js → mips-DAySN5Lp.js} +0 -0
  870. /package/bundled-test-harness/assets/{msdax-CAZvxB9E.js → msdax-Cy0COjTJ.js} +0 -0
  871. /package/bundled-test-harness/assets/{mysql-CyVS-z5H.js → mysql-CfGw9jyw.js} +0 -0
  872. /package/bundled-test-harness/assets/{objective-c-CCG8cTc_.js → objective-c-B4uU-8T-.js} +0 -0
  873. /package/bundled-test-harness/assets/{pascal-c8B45FOC.js → pascal-CGDuZzXi.js} +0 -0
  874. /package/bundled-test-harness/assets/{pascaligo-CCqwSqBv.js → pascaligo-eg02k4VJ.js} +0 -0
  875. /package/bundled-test-harness/assets/{path-CsS38UoK.js → path-Dxiz9G2t.js} +0 -0
  876. /package/bundled-test-harness/assets/{perl-JUICYbO2.js → perl-BiT-JJJw.js} +0 -0
  877. /package/bundled-test-harness/assets/{pgsql-aNRiL0Cg.js → pgsql-DAMjrVBF.js} +0 -0
  878. /package/bundled-test-harness/assets/{php-B0YZj_Vw.js → php-kOSUYQyc.js} +0 -0
  879. /package/bundled-test-harness/assets/{pla-D3Zb3KCn.js → pla-BShYV-HC.js} +0 -0
  880. /package/bundled-test-harness/assets/{postiats-ks1KABlA.js → postiats-9Xamd4W2.js} +0 -0
  881. /package/bundled-test-harness/assets/{powerquery-D35K_osc.js → powerquery-l2Nw525Q.js} +0 -0
  882. /package/bundled-test-harness/assets/{powershell-DXQo6KTk.js → powershell-B5rdEn86.js} +0 -0
  883. /package/bundled-test-harness/assets/{protobuf-CFDvn49_.js → protobuf-DjFcruCV.js} +0 -0
  884. /package/bundled-test-harness/assets/{pug-CGdWzJm1.js → pug-d79Nz4-Z.js} +0 -0
  885. /package/bundled-test-harness/assets/{python-BHLYjYlP.js → python-d8oxFZIM.js} +0 -0
  886. /package/bundled-test-harness/assets/{qsharp-BIq3i63T.js → qsharp-CeTlfxZW.js} +0 -0
  887. /package/bundled-test-harness/assets/{qunit-2hoQyeAZ.js → qunit-Cqwmt9Vl.js} +0 -0
  888. /package/bundled-test-harness/assets/{r-CBvzvDSA.js → r-BOu7JTro.js} +0 -0
  889. /package/bundled-test-harness/assets/{razor-JQ0RiIvo.js → razor-ZatoG_Is.js} +0 -0
  890. /package/bundled-test-harness/assets/{recent-files-cards-BQMviQb1.js → recent-files-cards-C3vIjaKb.js} +0 -0
  891. /package/bundled-test-harness/assets/{redis-BmSHTqTU.js → redis-DdXYPyQE.js} +0 -0
  892. /package/bundled-test-harness/assets/{redshift-B1NmQEH7.js → redshift-DswnW-YX.js} +0 -0
  893. /package/bundled-test-harness/assets/{render-component-g_fhz2dX.js → render-component-Bs21y6iv.js} +0 -0
  894. /package/bundled-test-harness/assets/{restructuredtext-Br9BtTbk.js → restructuredtext-C75vUmvX.js} +0 -0
  895. /package/bundled-test-harness/assets/{rough.esm-D8VnzNsL.js → rough.esm-B83ARgx6.js} +0 -0
  896. /package/bundled-test-harness/assets/{ruby-D9_-y1I3.js → ruby-D77950a-.js} +0 -0
  897. /package/bundled-test-harness/assets/{rust-1Jjr1EOs.js → rust-C_G4PKsG.js} +0 -0
  898. /package/bundled-test-harness/assets/{sb-X2JE4zEr.js → sb-Cz3P8_Gp.js} +0 -0
  899. /package/bundled-test-harness/assets/{scala-qFJERKkR.js → scala-DYqUg04P.js} +0 -0
  900. /package/bundled-test-harness/assets/{scheme-D-WJPStO.js → scheme-B31XEGu5.js} +0 -0
  901. /package/bundled-test-harness/assets/{scss-DysfZiXA.js → scss-CtvB8On5.js} +0 -0
  902. /package/bundled-test-harness/assets/{shell-C0Iu3NNJ.js → shell-C2QqpcPN.js} +0 -0
  903. /package/bundled-test-harness/assets/{solidity-Bato3Qrk.js → solidity-FHrhZFd-.js} +0 -0
  904. /package/bundled-test-harness/assets/{sophia-DI0cKdK8.js → sophia-Cxv5FOXb.js} +0 -0
  905. /package/bundled-test-harness/assets/{sparql-BTJMtwoD.js → sparql-CgGkGeQB.js} +0 -0
  906. /package/bundled-test-harness/assets/{sql-R6uHqFYU.js → sql-S6Dos2P0.js} +0 -0
  907. /package/bundled-test-harness/assets/{src-CdPyB7gY.js → src-CvuaVSsl.js} +0 -0
  908. /package/bundled-test-harness/assets/{st-CoyBvq37.js → st-Bfa7LAWp.js} +0 -0
  909. /package/bundled-test-harness/assets/{swift-Bj-haAlF.js → swift-BQD5Ef-A.js} +0 -0
  910. /package/bundled-test-harness/assets/{systemverilog-B-x1NEFI.js → systemverilog-DaNkPux4.js} +0 -0
  911. /package/bundled-test-harness/assets/{tcl-DAUdSQgz.js → tcl-gOPgCDyb.js} +0 -0
  912. /package/bundled-test-harness/assets/{test-support-BHjxBpDK.js → test-support-BEQX5x9U.js} +0 -0
  913. /package/bundled-test-harness/assets/{test-support-yKvYEh-u.js → test-support-BL4XKobD.js} +0 -0
  914. /package/bundled-test-harness/assets/{twig-B0sJ-GzS.js → twig-Bk4gPn5b.js} +0 -0
  915. /package/bundled-test-harness/assets/{typescript-DTMIM5Gl.js → typescript-pPYlxWzr.js} +0 -0
  916. /package/bundled-test-harness/assets/{typespec-6yo9VQxY.js → typespec-D9Zz743B.js} +0 -0
  917. /package/bundled-test-harness/assets/{vb-Bh2IfdtJ.js → vb-ziqHIsJV.js} +0 -0
  918. /package/bundled-test-harness/assets/{view-card-demo-U_AOj-RK.js → view-card-demo-CSIVYD3T.js} +0 -0
  919. /package/bundled-test-harness/assets/{wgsl-DsvJnCCt.js → wgsl-BXiwkiJL.js} +0 -0
  920. /package/bundled-test-harness/assets/{xml-CisPXcjD.js → xml-a_tUOik-.js} +0 -0
  921. /package/bundled-test-harness/assets/{yaml-DkHUoYI5.js → yaml-B3H8LDzK.js} +0 -0
@@ -1,2548 +0,0 @@
1
- import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
- import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime-CYyqkz5q-z3Y1hsJm.js";
3
- import { Fi as Loader, Jr as wrapper_default, Lr as getFieldDefinitions, X as IndexQueryEngine, Zn as testRealmURL, _t as fetcher, gt as maybeHandleScopedCSSRequest, o as internalKeyFor, ua as rri, v as VirtualNetwork, vi as baseRealm, vr as identifyCard, zr as FilterRefersToNonexistentTypeError } from "./runtime-common-C7uLt5dN.js";
4
- import { d as format } from "./esm-CCOu76Mh.js";
5
- import { t as config } from "./environment-DTzm0NP_.js";
6
- import { t as shimExternals } from "./externals-Do1fVZ4j.js";
7
- import { t as require_qunit } from "./qunit-2hoQyeAZ.js";
8
- import { $ as setupIndex, Q as serializeCard, Z as getTypes, v as getDbAdapter } from "./mock-matrix-DqDbNhEj.js";
9
- import { t as p } from "./helpers-D_JZYUOQ.js";
10
- //#region tests/unit/index-query-engine-test.ts
11
- var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
12
- var cardApi;
13
- var string;
14
- var date;
15
- var number;
16
- var boolean;
17
- var codeRef;
18
- var { resolvedBaseRealmURL } = config;
19
- (0, import_qunit.module)("Unit | query", function(hooks) {
20
- let dbAdapter;
21
- let indexQueryEngine;
22
- let loader;
23
- let testCards = {};
24
- let virtualNetwork;
25
- hooks.before(async function() {
26
- dbAdapter = await getDbAdapter();
27
- });
28
- hooks.beforeEach(async function() {
29
- virtualNetwork = new VirtualNetwork();
30
- virtualNetwork.addURLMapping(new URL(baseRealm.url), new URL(resolvedBaseRealmURL));
31
- virtualNetwork.addImportMap("@cardstack/boxel-icons/", (rest) => {
32
- return `${config.iconsURL}/@cardstack/boxel-icons/v1/icons/${rest}.js`;
33
- });
34
- shimExternals(virtualNetwork);
35
- loader = new Loader(fetcher(virtualNetwork.fetch, [async (req, next) => {
36
- return await maybeHandleScopedCSSRequest(req) || next(req);
37
- }]), virtualNetwork.resolveImport, { virtualNetwork });
38
- cardApi = await loader.import(`${baseRealm.url}card-api`);
39
- string = await loader.import(`${baseRealm.url}string`);
40
- date = await loader.import(`${baseRealm.url}date`);
41
- number = await loader.import(`${baseRealm.url}number`);
42
- boolean = await loader.import(`${baseRealm.url}boolean`);
43
- codeRef = await loader.import(`${baseRealm.url}code-ref`);
44
- let { field, contains, containsMany, linksToMany, linksTo, CardDef, FieldDef, setCardAsSavedForTest } = cardApi;
45
- let { default: StringField } = string;
46
- let { default: CodeRefField } = codeRef;
47
- let { default: DateField } = date;
48
- let { default: NumberField } = number;
49
- let { default: BooleanField } = boolean;
50
- class Address extends FieldDef {
51
- static {
52
- decorateFieldV2(this.prototype, "street", [field], function() {
53
- return contains(StringField);
54
- });
55
- }
56
- #street = (initializeDeferredDecorator(this, "street"), void 0);
57
- static {
58
- decorateFieldV2(this.prototype, "city", [field], function() {
59
- return contains(StringField);
60
- });
61
- }
62
- #city = (initializeDeferredDecorator(this, "city"), void 0);
63
- static {
64
- decorateFieldV2(this.prototype, "number", [field], function() {
65
- return contains(NumberField);
66
- });
67
- }
68
- #number = (initializeDeferredDecorator(this, "number"), void 0);
69
- }
70
- class Person extends CardDef {
71
- static {
72
- decorateFieldV2(this.prototype, "name", [field], function() {
73
- return contains(StringField);
74
- });
75
- }
76
- #name = (initializeDeferredDecorator(this, "name"), void 0);
77
- static {
78
- decorateFieldV2(this.prototype, "nickNames", [field], function() {
79
- return containsMany(StringField);
80
- });
81
- }
82
- #nickNames = (initializeDeferredDecorator(this, "nickNames"), void 0);
83
- static {
84
- decorateFieldV2(this.prototype, "address", [field], function() {
85
- return contains(Address);
86
- });
87
- }
88
- #address = (initializeDeferredDecorator(this, "address"), void 0);
89
- static {
90
- decorateFieldV2(this.prototype, "bestFriend", [field], function() {
91
- return linksTo(() => Person);
92
- });
93
- }
94
- #bestFriend = (initializeDeferredDecorator(this, "bestFriend"), void 0);
95
- static {
96
- decorateFieldV2(this.prototype, "friends", [field], function() {
97
- return linksToMany(() => Person);
98
- });
99
- }
100
- #friends = (initializeDeferredDecorator(this, "friends"), void 0);
101
- static {
102
- decorateFieldV2(this.prototype, "age", [field], function() {
103
- return contains(NumberField);
104
- });
105
- }
106
- #age = (initializeDeferredDecorator(this, "age"), void 0);
107
- static {
108
- decorateFieldV2(this.prototype, "isHairy", [field], function() {
109
- return contains(BooleanField);
110
- });
111
- }
112
- #isHairy = (initializeDeferredDecorator(this, "isHairy"), void 0);
113
- static {
114
- decorateFieldV2(this.prototype, "lotteryNumbers", [field], function() {
115
- return containsMany(NumberField);
116
- });
117
- }
118
- #lotteryNumbers = (initializeDeferredDecorator(this, "lotteryNumbers"), void 0);
119
- }
120
- class FancyPerson extends Person {
121
- static {
122
- decorateFieldV2(this.prototype, "favoriteColor", [field], function() {
123
- return contains(StringField);
124
- });
125
- }
126
- #favoriteColor = (initializeDeferredDecorator(this, "favoriteColor"), void 0);
127
- }
128
- class Cat extends CardDef {
129
- static {
130
- decorateFieldV2(this.prototype, "name", [field], function() {
131
- return contains(StringField);
132
- });
133
- }
134
- #name = (initializeDeferredDecorator(this, "name"), void 0);
135
- }
136
- class SimpleSpec extends CardDef {
137
- static {
138
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
139
- return contains(StringField);
140
- });
141
- }
142
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
143
- static {
144
- decorateFieldV2(this.prototype, "ref", [field], function() {
145
- return contains(CodeRefField);
146
- });
147
- }
148
- #ref = (initializeDeferredDecorator(this, "ref"), void 0);
149
- }
150
- class Event extends CardDef {
151
- static {
152
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
153
- return contains(StringField);
154
- });
155
- }
156
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
157
- static {
158
- decorateFieldV2(this.prototype, "venue", [field], function() {
159
- return contains(StringField);
160
- });
161
- }
162
- #venue = (initializeDeferredDecorator(this, "venue"), void 0);
163
- static {
164
- decorateFieldV2(this.prototype, "date", [field], function() {
165
- return contains(DateField);
166
- });
167
- }
168
- #date = (initializeDeferredDecorator(this, "date"), void 0);
169
- }
170
- loader.shimModule(`${testRealmURL}address`, { Address });
171
- loader.shimModule(`${testRealmURL}person`, { Person });
172
- loader.shimModule(`${testRealmURL}fancy-person`, { FancyPerson });
173
- loader.shimModule(`${testRealmURL}cat`, { Cat });
174
- loader.shimModule(`${testRealmURL}spec`, { SimpleSpec });
175
- loader.shimModule(`${testRealmURL}event`, { Event });
176
- let stringFieldEntry = new SimpleSpec({
177
- cardTitle: "String Field",
178
- ref: {
179
- module: `${baseRealm.url}string`,
180
- name: "default"
181
- }
182
- });
183
- let numberFieldEntry = new SimpleSpec({
184
- cardTitle: "Number Field",
185
- ref: {
186
- module: `${baseRealm.url}number`,
187
- name: "default"
188
- }
189
- });
190
- let ringo = new Person({
191
- name: "Ringo",
192
- address: new Address({
193
- street: "100 Treat Street",
194
- city: "Waggington"
195
- })
196
- });
197
- let vangogh = new Person({
198
- name: "Van Gogh",
199
- address: new Address({
200
- street: "456 Grand Blvd",
201
- city: "Barksville"
202
- }),
203
- bestFriend: ringo,
204
- friends: [ringo]
205
- });
206
- testCards = {
207
- mango: new FancyPerson({
208
- name: "Mango",
209
- address: new Address({
210
- street: "123 Main Street",
211
- city: "Barksville"
212
- }),
213
- bestFriend: vangogh,
214
- friends: [vangogh, ringo]
215
- }),
216
- vangogh,
217
- ringo,
218
- paper: new Cat({ name: "Paper" }),
219
- mangoBirthday: new Event({
220
- cardTitle: "Mango's Birthday",
221
- venue: "Dog Park",
222
- date: p("2024-10-30")
223
- }),
224
- vangoghBirthday: new Event({
225
- cardTitle: "Van Gogh's Birthday",
226
- venue: "Backyard",
227
- date: p("2024-11-19")
228
- }),
229
- stringFieldEntry,
230
- numberFieldEntry
231
- };
232
- for (let [name, card] of Object.entries(testCards)) {
233
- card.id = rri(`${testRealmURL}${name}`);
234
- setCardAsSavedForTest(card);
235
- }
236
- let api = await loader.import(`${baseRealm.url}card-api`);
237
- async function buildDefinition(cardDef) {
238
- let { fields, fieldDefs } = getFieldDefinitions(api, cardDef);
239
- return {
240
- codeRef: identifyCard(cardDef),
241
- displayName: cardDef.displayName,
242
- fields,
243
- fieldDefs
244
- };
245
- }
246
- await dbAdapter.reset();
247
- indexQueryEngine = new IndexQueryEngine(dbAdapter, {
248
- async lookupDefinition(codeRef) {
249
- switch (internalKeyFor(codeRef, void 0, virtualNetwork)) {
250
- case `${testRealmURL}address/Address`: return await buildDefinition(Address);
251
- case `${testRealmURL}person/Person`: return await buildDefinition(Person);
252
- case `${testRealmURL}fancy-person/FancyPerson`: return await buildDefinition(FancyPerson);
253
- case `${testRealmURL}cat/Cat`: return await buildDefinition(Cat);
254
- case `${testRealmURL}spec/SimpleSpec`: return await buildDefinition(SimpleSpec);
255
- case `${testRealmURL}event/Event`: return await buildDefinition(Event);
256
- default: throw new FilterRefersToNonexistentTypeError(codeRef, { cause: `Definition for ${wrapper_default(codeRef)} not found` });
257
- }
258
- },
259
- async lookupCachedDefinition() {},
260
- async invalidate(_realmURL) {
261
- return [];
262
- },
263
- async clearRealmDefinitions(_realmURL) {},
264
- async getCachedDefinitions() {},
265
- async populateDefinitionCacheEntry() {},
266
- async getCachedDefinitionsBatch() {
267
- return {};
268
- },
269
- registerRealm() {},
270
- async clearAllDefinitions() {},
271
- forRealm() {
272
- return this;
273
- }
274
- }, virtualNetwork);
275
- });
276
- (0, import_qunit.test)("can get all cards with empty filter", async function(assert) {
277
- let { mango, vangogh, paper } = testCards;
278
- await setupIndex(dbAdapter, [
279
- mango,
280
- vangogh,
281
- paper
282
- ]);
283
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {});
284
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
285
- assert.deepEqual(results, [
286
- await serializeCard(mango),
287
- await serializeCard(paper),
288
- await serializeCard(vangogh)
289
- ], "results are correct");
290
- });
291
- (0, import_qunit.test)("deleted cards are not included in results", async function(assert) {
292
- let { mango, vangogh, paper } = testCards;
293
- await setupIndex(dbAdapter, [
294
- {
295
- card: mango,
296
- data: { is_deleted: false }
297
- },
298
- {
299
- card: vangogh,
300
- data: { is_deleted: null }
301
- },
302
- {
303
- card: paper,
304
- data: { is_deleted: true }
305
- }
306
- ]);
307
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {});
308
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
309
- });
310
- (0, import_qunit.test)("error docs are not included in results", async function(assert) {
311
- let { mango, vangogh } = testCards;
312
- await setupIndex(dbAdapter, [
313
- {
314
- url: `${testRealmURL}1.json`,
315
- type: "instance",
316
- has_error: true,
317
- realm_version: 1,
318
- realm_url: testRealmURL,
319
- pristine_doc: void 0,
320
- types: [],
321
- error_doc: {
322
- message: "test error",
323
- status: 500,
324
- additionalErrors: []
325
- }
326
- },
327
- {
328
- url: `${testRealmURL}mango.json`,
329
- type: "instance",
330
- realm_version: 1,
331
- realm_url: testRealmURL,
332
- pristine_doc: await serializeCard(mango),
333
- types: await getTypes(mango),
334
- error_doc: void 0
335
- },
336
- {
337
- url: `${testRealmURL}vangogh.json`,
338
- type: "instance",
339
- realm_version: 1,
340
- realm_url: testRealmURL,
341
- pristine_doc: await serializeCard(vangogh),
342
- types: await getTypes(vangogh),
343
- error_doc: void 0
344
- }
345
- ]);
346
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {});
347
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
348
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
349
- });
350
- (0, import_qunit.test)("can filter by type", async function(assert) {
351
- let { mango, vangogh, paper } = testCards;
352
- await setupIndex(dbAdapter, [
353
- mango,
354
- vangogh,
355
- paper
356
- ]);
357
- let type = await personCardType(testCards);
358
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { type } });
359
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
360
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
361
- });
362
- (0, import_qunit.test)(`can filter using 'eq'`, async function(assert) {
363
- let { mango, vangogh, paper } = testCards;
364
- await setupIndex(dbAdapter, [
365
- {
366
- card: mango,
367
- data: { search_doc: { name: "Mango" } }
368
- },
369
- {
370
- card: vangogh,
371
- data: { search_doc: { name: "Van Gogh" } }
372
- },
373
- {
374
- card: paper,
375
- data: { search_doc: { name: "Mango" } }
376
- }
377
- ]);
378
- let type = await personCardType(testCards);
379
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
380
- eq: { name: "Mango" },
381
- on: type
382
- } });
383
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
384
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
385
- });
386
- (0, import_qunit.test)(`can filter using 'eq' thru nested fields`, async function(assert) {
387
- let { mango, vangogh, ringo } = testCards;
388
- await setupIndex(dbAdapter, [
389
- {
390
- card: mango,
391
- data: { search_doc: {
392
- name: "Mango",
393
- address: {
394
- street: "123 Main Street",
395
- city: "Barksville"
396
- }
397
- } }
398
- },
399
- {
400
- card: vangogh,
401
- data: { search_doc: {
402
- name: "Van Gogh",
403
- address: {
404
- street: "456 Grand Blvd",
405
- city: "Barksville"
406
- }
407
- } }
408
- },
409
- {
410
- card: ringo,
411
- data: { search_doc: {
412
- name: "Ringo",
413
- address: {
414
- street: "100 Treat Street",
415
- city: "Waggington"
416
- }
417
- } }
418
- }
419
- ]);
420
- let type = await personCardType(testCards);
421
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
422
- on: type,
423
- eq: { "address.city": "Barksville" }
424
- } });
425
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
426
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
427
- });
428
- (0, import_qunit.test)(`can use 'eq' to match multiple fields`, async function(assert) {
429
- let { mango, vangogh } = testCards;
430
- await setupIndex(dbAdapter, [{
431
- card: mango,
432
- data: { search_doc: {
433
- name: "Mango",
434
- nickNames: ["Mang Mang", "Baby"]
435
- } }
436
- }, {
437
- card: vangogh,
438
- data: { search_doc: {
439
- name: "Van Gogh",
440
- nickNames: ["Big boy", "Farty"]
441
- } }
442
- }]);
443
- let type = await personCardType(testCards);
444
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
445
- on: type,
446
- eq: {
447
- name: "Van Gogh",
448
- nickNames: "Farty"
449
- }
450
- } });
451
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
452
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
453
- });
454
- (0, import_qunit.test)(`can use 'eq' to find 'null' values`, async function(assert) {
455
- let { mango, vangogh, ringo } = testCards;
456
- await setupIndex(dbAdapter, [
457
- {
458
- card: mango,
459
- data: { search_doc: { name: "Mango" } }
460
- },
461
- {
462
- card: vangogh,
463
- data: { search_doc: { name: "Van Gogh" } }
464
- },
465
- {
466
- card: ringo,
467
- data: { search_doc: { name: null } }
468
- }
469
- ]);
470
- let type = await personCardType(testCards);
471
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
472
- on: type,
473
- eq: { name: null }
474
- } });
475
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
476
- assert.deepEqual(getIds(results), [ringo.id], "results are correct");
477
- });
478
- (0, import_qunit.test)(`can use 'eq' to match against number type`, async function(assert) {
479
- let { mango, vangogh } = testCards;
480
- await setupIndex(dbAdapter, [{
481
- card: mango,
482
- data: { search_doc: {
483
- name: "Mango",
484
- age: 4
485
- } }
486
- }, {
487
- card: vangogh,
488
- data: { search_doc: {
489
- name: "Van Gogh",
490
- age: 8
491
- } }
492
- }]);
493
- let type = await personCardType(testCards);
494
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
495
- on: type,
496
- eq: { age: 4 }
497
- } });
498
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
499
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
500
- });
501
- (0, import_qunit.test)(`can use 'eq' to match against boolean type`, async function(assert) {
502
- let { mango, vangogh, ringo } = testCards;
503
- await setupIndex(dbAdapter, [
504
- {
505
- card: mango,
506
- data: { search_doc: {
507
- name: "Mango",
508
- isHairy: false
509
- } }
510
- },
511
- {
512
- card: vangogh,
513
- data: { search_doc: {
514
- name: "Van Gogh",
515
- isHairy: true
516
- } }
517
- },
518
- {
519
- card: ringo,
520
- data: { search_doc: {
521
- name: "Van Gogh",
522
- isHairy: null
523
- } }
524
- }
525
- ]);
526
- let type = await personCardType(testCards);
527
- {
528
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
529
- on: type,
530
- eq: { isHairy: false }
531
- } });
532
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
533
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
534
- }
535
- {
536
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
537
- on: type,
538
- eq: { isHairy: true }
539
- } });
540
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
541
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
542
- }
543
- {
544
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
545
- on: type,
546
- eq: { isHairy: null }
547
- } });
548
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
549
- assert.deepEqual(getIds(results), [ringo.id], "results are correct");
550
- }
551
- });
552
- (0, import_qunit.test)("can filter eq from a code ref query value", async function(assert) {
553
- let { stringFieldEntry, numberFieldEntry } = testCards;
554
- await setupIndex(dbAdapter, [{
555
- card: stringFieldEntry,
556
- data: { search_doc: {
557
- cardTitle: stringFieldEntry.cardTitle,
558
- ref: internalKeyFor(stringFieldEntry.ref, void 0, virtualNetwork)
559
- } }
560
- }, {
561
- card: numberFieldEntry,
562
- data: { search_doc: {
563
- cardTitle: numberFieldEntry.cardTitle,
564
- ref: internalKeyFor(numberFieldEntry.ref, void 0, virtualNetwork)
565
- } }
566
- }]);
567
- let type = await SimpleSpecType(testCards);
568
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
569
- on: type,
570
- eq: { ref: {
571
- module: `${baseRealm.url}string`,
572
- name: "default"
573
- } }
574
- } });
575
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
576
- assert.deepEqual(getIds(results), [stringFieldEntry.id], "results are correct");
577
- });
578
- (0, import_qunit.test)("can filter eq from a date query value", async function(assert) {
579
- let { mangoBirthday, vangoghBirthday } = testCards;
580
- await setupIndex(dbAdapter, [{
581
- card: mangoBirthday,
582
- data: { search_doc: {
583
- cardTitle: mangoBirthday.cardTitle,
584
- venue: mangoBirthday.venue,
585
- date: format(mangoBirthday.date, "yyyy-MM-dd")
586
- } }
587
- }, {
588
- card: vangoghBirthday,
589
- data: { search_doc: {
590
- cardTitle: vangoghBirthday.cardTitle,
591
- venue: vangoghBirthday.venue,
592
- date: format(vangoghBirthday.date, "yyyy-MM-dd")
593
- } }
594
- }]);
595
- let type = await eventType(testCards);
596
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
597
- on: type,
598
- eq: { date: "2024-10-30" }
599
- } });
600
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
601
- assert.deepEqual(getIds(results), [mangoBirthday.id], "results are correct");
602
- });
603
- (0, import_qunit.test)(`can filter using 'in'`, async function(assert) {
604
- let { mango, vangogh, ringo } = testCards;
605
- await setupIndex(dbAdapter, [
606
- {
607
- card: mango,
608
- data: { search_doc: { name: "Mango" } }
609
- },
610
- {
611
- card: vangogh,
612
- data: { search_doc: { name: "Van Gogh" } }
613
- },
614
- {
615
- card: ringo,
616
- data: { search_doc: { name: "Ringo" } }
617
- }
618
- ]);
619
- let type = await personCardType(testCards);
620
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
621
- in: { name: ["Mango", "Ringo"] },
622
- on: type
623
- } });
624
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
625
- assert.deepEqual(getIds(results), [mango.id, ringo.id], "results are correct");
626
- });
627
- (0, import_qunit.test)(`can filter using 'in' with a single value`, async function(assert) {
628
- let { mango, vangogh } = testCards;
629
- await setupIndex(dbAdapter, [{
630
- card: mango,
631
- data: { search_doc: { name: "Mango" } }
632
- }, {
633
- card: vangogh,
634
- data: { search_doc: { name: "Van Gogh" } }
635
- }]);
636
- let type = await personCardType(testCards);
637
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
638
- in: { name: ["Mango"] },
639
- on: type
640
- } });
641
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
642
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
643
- });
644
- (0, import_qunit.test)(`can filter using 'in' with an empty array`, async function(assert) {
645
- let { mango, vangogh } = testCards;
646
- await setupIndex(dbAdapter, [{
647
- card: mango,
648
- data: { search_doc: { name: "Mango" } }
649
- }, {
650
- card: vangogh,
651
- data: { search_doc: { name: "Van Gogh" } }
652
- }]);
653
- let type = await personCardType(testCards);
654
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
655
- in: { name: [] },
656
- on: type
657
- } });
658
- assert.strictEqual(meta.page.total, 0, "the total results meta is correct");
659
- assert.deepEqual(getIds(results), [], "results are correct");
660
- });
661
- (0, import_qunit.test)(`can filter using 'in' with null values`, async function(assert) {
662
- let { mango, vangogh, ringo } = testCards;
663
- await setupIndex(dbAdapter, [
664
- {
665
- card: mango,
666
- data: { search_doc: { name: "Mango" } }
667
- },
668
- {
669
- card: vangogh,
670
- data: { search_doc: { name: null } }
671
- },
672
- {
673
- card: ringo,
674
- data: { search_doc: { name: "Ringo" } }
675
- }
676
- ]);
677
- let type = await personCardType(testCards);
678
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
679
- in: { name: ["Mango", null] },
680
- on: type
681
- } });
682
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
683
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
684
- });
685
- (0, import_qunit.test)(`can filter using 'in' thru nested fields`, async function(assert) {
686
- let { mango, vangogh, ringo } = testCards;
687
- await setupIndex(dbAdapter, [
688
- {
689
- card: mango,
690
- data: { search_doc: {
691
- name: "Mango",
692
- address: { city: "Barksville" }
693
- } }
694
- },
695
- {
696
- card: vangogh,
697
- data: { search_doc: {
698
- name: "Van Gogh",
699
- address: { city: "Barksville" }
700
- } }
701
- },
702
- {
703
- card: ringo,
704
- data: { search_doc: {
705
- name: "Ringo",
706
- address: { city: "Waggington" }
707
- } }
708
- }
709
- ]);
710
- let type = await personCardType(testCards);
711
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
712
- on: type,
713
- in: { "address.city": ["Waggington"] }
714
- } });
715
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
716
- assert.deepEqual(getIds(results), [ringo.id], "results are correct");
717
- });
718
- (0, import_qunit.test)(`can negate an 'in' filter with 'not'`, async function(assert) {
719
- let { mango, vangogh, ringo } = testCards;
720
- await setupIndex(dbAdapter, [
721
- {
722
- card: mango,
723
- data: { search_doc: { name: "Mango" } }
724
- },
725
- {
726
- card: vangogh,
727
- data: { search_doc: { name: "Van Gogh" } }
728
- },
729
- {
730
- card: ringo,
731
- data: { search_doc: { name: "Ringo" } }
732
- }
733
- ]);
734
- let type = await personCardType(testCards);
735
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
736
- on: type,
737
- not: { in: { name: ["Mango", "Ringo"] } }
738
- } });
739
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
740
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
741
- });
742
- (0, import_qunit.test)(`can filter using 'in' with the id field`, async function(assert) {
743
- let { mango, vangogh, ringo } = testCards;
744
- await setupIndex(dbAdapter, [
745
- {
746
- card: mango,
747
- data: { search_doc: {
748
- id: mango.id,
749
- name: "Mango"
750
- } }
751
- },
752
- {
753
- card: vangogh,
754
- data: { search_doc: {
755
- id: vangogh.id,
756
- name: "Van Gogh"
757
- } }
758
- },
759
- {
760
- card: ringo,
761
- data: { search_doc: {
762
- id: ringo.id,
763
- name: "Ringo"
764
- } }
765
- }
766
- ]);
767
- let type = await personCardType(testCards);
768
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
769
- on: type,
770
- in: { id: [mango.id, ringo.id] }
771
- } });
772
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
773
- assert.deepEqual(getIds(results), [mango.id, ringo.id], "results are correct");
774
- });
775
- (0, import_qunit.test)(`can search with a 'not' filter`, async function(assert) {
776
- let { mango, vangogh, ringo } = testCards;
777
- await setupIndex(dbAdapter, [
778
- {
779
- card: mango,
780
- data: { search_doc: { name: "Mango" } }
781
- },
782
- {
783
- card: vangogh,
784
- data: { search_doc: { name: "Van Gogh" } }
785
- },
786
- {
787
- card: ringo,
788
- data: { search_doc: { name: "Ringo" } }
789
- }
790
- ]);
791
- let type = await personCardType(testCards);
792
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
793
- on: type,
794
- not: { eq: { name: "Mango" } }
795
- } });
796
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
797
- assert.deepEqual(getIds(results), [ringo.id, vangogh.id], "results are correct");
798
- });
799
- (0, import_qunit.test)("can handle a filter with double negatives", async function(assert) {
800
- let { mango, vangogh, ringo } = testCards;
801
- await setupIndex(dbAdapter, [
802
- {
803
- card: mango,
804
- data: { search_doc: { name: "Mango" } }
805
- },
806
- {
807
- card: vangogh,
808
- data: { search_doc: { name: "Van Gogh" } }
809
- },
810
- {
811
- card: ringo,
812
- data: { search_doc: { name: "Ringo" } }
813
- }
814
- ]);
815
- let type = await personCardType(testCards);
816
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
817
- on: type,
818
- not: { not: { not: { eq: { name: "Mango" } } } }
819
- } });
820
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
821
- assert.deepEqual(getIds(results), [ringo.id, vangogh.id], "results are correct");
822
- });
823
- (0, import_qunit.test)(`can use a 'contains' filter`, async function(assert) {
824
- let { mango, vangogh, ringo } = testCards;
825
- await setupIndex(dbAdapter, [
826
- {
827
- card: mango,
828
- data: { search_doc: { name: "Mango" } }
829
- },
830
- {
831
- card: vangogh,
832
- data: { search_doc: { name: "Van Gogh" } }
833
- },
834
- {
835
- card: ringo,
836
- data: { search_doc: { name: "Ringo" } }
837
- }
838
- ]);
839
- let type = await personCardType(testCards);
840
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
841
- on: type,
842
- contains: { name: "ngo" }
843
- } });
844
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
845
- assert.deepEqual(getIds(results), [mango.id, ringo.id], "results are correct");
846
- });
847
- (0, import_qunit.test)(`contains filter is case insensitive`, async function(assert) {
848
- let { mango, vangogh, ringo } = testCards;
849
- await setupIndex(dbAdapter, [
850
- {
851
- card: mango,
852
- data: { search_doc: { name: "Mango" } }
853
- },
854
- {
855
- card: vangogh,
856
- data: { search_doc: { name: "Van Gogh" } }
857
- },
858
- {
859
- card: ringo,
860
- data: { search_doc: { name: "Ringo" } }
861
- }
862
- ]);
863
- let type = await personCardType(testCards);
864
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
865
- on: type,
866
- contains: { name: "mang" }
867
- } });
868
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
869
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
870
- });
871
- (0, import_qunit.test)(`can use 'contains' to match multiple fields`, async function(assert) {
872
- let { mango, vangogh } = testCards;
873
- await setupIndex(dbAdapter, [{
874
- card: mango,
875
- data: { search_doc: {
876
- name: "Mango",
877
- nickNames: ["Mang Mang", "Pee Baby"]
878
- } }
879
- }, {
880
- card: vangogh,
881
- data: { search_doc: {
882
- name: "Van Gogh",
883
- nickNames: ["Big Baby", "Farty"]
884
- } }
885
- }]);
886
- let type = await personCardType(testCards);
887
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
888
- on: type,
889
- contains: {
890
- name: "ngo",
891
- nickNames: "Baby"
892
- }
893
- } });
894
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
895
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
896
- });
897
- (0, import_qunit.test)(`can use a 'contains' filter to match 'null'`, async function(assert) {
898
- let { mango, vangogh } = testCards;
899
- await setupIndex(dbAdapter, [{
900
- card: mango,
901
- data: { search_doc: { name: "Mango" } }
902
- }, {
903
- card: vangogh,
904
- data: { search_doc: { name: null } }
905
- }]);
906
- let type = await personCardType(testCards);
907
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
908
- on: type,
909
- contains: { name: null }
910
- } });
911
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
912
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
913
- });
914
- (0, import_qunit.test)(`can use 'every' to combine multiple filters`, async function(assert) {
915
- let { mango, vangogh, ringo } = testCards;
916
- await setupIndex(dbAdapter, [
917
- {
918
- card: mango,
919
- data: { search_doc: {
920
- name: "Mango",
921
- address: {
922
- street: "123 Main Street",
923
- city: "Barksville"
924
- }
925
- } }
926
- },
927
- {
928
- card: vangogh,
929
- data: { search_doc: {
930
- name: "Van Gogh",
931
- address: {
932
- street: "456 Grand Blvd",
933
- city: "Barksville"
934
- }
935
- } }
936
- },
937
- {
938
- card: ringo,
939
- data: { search_doc: {
940
- name: "Ringo",
941
- address: {
942
- street: "100 Treat Street",
943
- city: "Waggington"
944
- }
945
- } }
946
- }
947
- ]);
948
- let type = await personCardType(testCards);
949
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
950
- on: type,
951
- every: [{ eq: { "address.city": "Barksville" } }, { not: { eq: { "address.street": "456 Grand Blvd" } } }]
952
- } });
953
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
954
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
955
- });
956
- (0, import_qunit.test)(`can use 'any' to combine multiple filters`, async function(assert) {
957
- let { mango, vangogh, ringo } = testCards;
958
- await setupIndex(dbAdapter, [
959
- {
960
- card: mango,
961
- data: { search_doc: { name: "Mango" } }
962
- },
963
- {
964
- card: vangogh,
965
- data: { search_doc: { name: "Van Gogh" } }
966
- },
967
- {
968
- card: ringo,
969
- data: { search_doc: { name: "Ringo" } }
970
- }
971
- ]);
972
- let type = await personCardType(testCards);
973
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
974
- on: type,
975
- any: [{ eq: { name: "Mango" } }, { eq: { name: "Van Gogh" } }]
976
- } });
977
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
978
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
979
- });
980
- (0, import_qunit.test)(`returns empty results when query refers to missing card`, async function(assert) {
981
- await setupIndex(dbAdapter, []);
982
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
983
- on: {
984
- module: `${testRealmURL}nonexistent`,
985
- name: "Nonexistent"
986
- },
987
- eq: { nonExistentField: "hello" }
988
- } });
989
- assert.strictEqual(cards.length, 0, "no cards are returned");
990
- assert.strictEqual(meta.page.total, 0, "total count is zero");
991
- });
992
- (0, import_qunit.test)(`gives a good error when query refers to missing field`, async function(assert) {
993
- await setupIndex(dbAdapter, []);
994
- let type = await personCardType(testCards);
995
- try {
996
- await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
997
- on: type,
998
- eq: {
999
- name: "Cardy",
1000
- nonExistentField: "hello"
1001
- }
1002
- } });
1003
- throw new Error("failed to throw expected exception");
1004
- } catch (err) {
1005
- assert.strictEqual(err.message, `Your filter refers to a nonexistent field "nonExistentField" on type ${wrapper_default(type)}`);
1006
- }
1007
- });
1008
- (0, import_qunit.test)(`it can filter on a plural primitive field using 'eq'`, async function(assert) {
1009
- let { mango, vangogh } = testCards;
1010
- await setupIndex(dbAdapter, [{
1011
- card: mango,
1012
- data: { search_doc: {
1013
- name: "Mango",
1014
- nickNames: ["Mang Mang", "Baby"]
1015
- } }
1016
- }, {
1017
- card: vangogh,
1018
- data: { search_doc: {
1019
- name: "Van Gogh",
1020
- nickNames: ["Big boy", "Farty"]
1021
- } }
1022
- }]);
1023
- let type = await personCardType(testCards);
1024
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1025
- on: type,
1026
- eq: { nickNames: "Farty" }
1027
- } });
1028
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1029
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1030
- });
1031
- (0, import_qunit.test)(`it can filter on a nested field within a plural composite field using 'eq'`, async function(assert) {
1032
- let { mango, vangogh } = testCards;
1033
- await setupIndex(dbAdapter, [{
1034
- card: mango,
1035
- data: { search_doc: {
1036
- name: "Mango",
1037
- friends: [{ name: "Van Gogh" }, { name: "Ringo" }]
1038
- } }
1039
- }, {
1040
- card: vangogh,
1041
- data: { search_doc: {
1042
- name: "Van Gogh",
1043
- friends: [{ name: "Ringo" }]
1044
- } }
1045
- }]);
1046
- let type = await personCardType(testCards);
1047
- {
1048
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1049
- on: type,
1050
- eq: { "friends.name": "Van Gogh" }
1051
- } });
1052
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1053
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1054
- }
1055
- {
1056
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1057
- on: type,
1058
- eq: { "friends.name": "Ringo" }
1059
- } });
1060
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1061
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
1062
- }
1063
- });
1064
- (0, import_qunit.test)("it can match a null in a plural field", async function(assert) {
1065
- let { mango, vangogh } = testCards;
1066
- await setupIndex(dbAdapter, [{
1067
- card: mango,
1068
- data: { search_doc: {
1069
- name: "Mango",
1070
- nickNames: ["Mang Mang", "Baby"]
1071
- } }
1072
- }, {
1073
- card: vangogh,
1074
- data: { search_doc: {
1075
- name: "Van Gogh",
1076
- nickNames: null
1077
- } }
1078
- }]);
1079
- let type = await personCardType(testCards);
1080
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1081
- on: type,
1082
- eq: { nickNames: null }
1083
- } });
1084
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1085
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1086
- });
1087
- (0, import_qunit.test)("it can match a leaf plural field nested in a plural composite field", async function(assert) {
1088
- let { mango, vangogh } = testCards;
1089
- await setupIndex(dbAdapter, [{
1090
- card: mango,
1091
- data: { search_doc: {
1092
- name: "Mango",
1093
- friends: [{
1094
- name: "Van Gogh",
1095
- nickNames: ["Big Baby", "Farty"]
1096
- }, {
1097
- name: "Ringo",
1098
- nickNames: ["Mang Mang", "Baby"]
1099
- }]
1100
- } }
1101
- }, {
1102
- card: vangogh,
1103
- data: { search_doc: {
1104
- name: "Van Gogh",
1105
- friends: [{
1106
- name: "Ringo",
1107
- nickNames: ["Ring Ring"]
1108
- }]
1109
- } }
1110
- }]);
1111
- let type = await personCardType(testCards);
1112
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1113
- on: type,
1114
- eq: { "friends.nickNames": "Baby" }
1115
- } });
1116
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1117
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1118
- });
1119
- (0, import_qunit.test)("it can match thru a plural nested composite field that is field of a singular composite field", async function(assert) {
1120
- let { mango, vangogh } = testCards;
1121
- await setupIndex(dbAdapter, [{
1122
- card: mango,
1123
- data: { search_doc: {
1124
- name: "Mango",
1125
- bestFriend: {
1126
- name: "Van Gogh",
1127
- friends: [{ name: "Ringo" }, { name: "Van Gogh" }]
1128
- }
1129
- } }
1130
- }, {
1131
- card: vangogh,
1132
- data: { search_doc: {
1133
- name: "Van Gogh",
1134
- bestFriend: {
1135
- name: "Ringo",
1136
- friends: [{ name: "Lucky" }]
1137
- }
1138
- } }
1139
- }]);
1140
- let type = await personCardType(testCards);
1141
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1142
- on: type,
1143
- eq: { "bestFriend.friends.name": "Lucky" }
1144
- } });
1145
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1146
- assert.deepEqual(getIds(results), [vangogh.id], "results are correct");
1147
- });
1148
- (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) {
1149
- let { mango } = testCards;
1150
- await setupIndex(dbAdapter, [{
1151
- card: mango,
1152
- data: { search_doc: {
1153
- name: "Mango",
1154
- friends: [{
1155
- name: "Ringo",
1156
- bestFriend: { name: "Mango" }
1157
- }, {
1158
- name: "Van Gogh",
1159
- bestFriend: { name: "Mango" }
1160
- }]
1161
- } }
1162
- }]);
1163
- let type = await personCardType(testCards);
1164
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1165
- on: type,
1166
- eq: { "friends.bestFriend.name": "Mango" }
1167
- } });
1168
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1169
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1170
- });
1171
- (0, import_qunit.test)("can perform query against WIP version of the index", async function(assert) {
1172
- let { mango, vangogh, ringo } = testCards;
1173
- await setupIndex(dbAdapter, [{
1174
- realm_url: testRealmURL,
1175
- current_version: 1
1176
- }], {
1177
- working: [
1178
- {
1179
- card: mango,
1180
- data: {
1181
- realm_version: 1,
1182
- search_doc: { name: "Mango" }
1183
- }
1184
- },
1185
- {
1186
- card: vangogh,
1187
- data: {
1188
- realm_version: 2,
1189
- search_doc: { name: "Mango" }
1190
- }
1191
- },
1192
- {
1193
- card: ringo,
1194
- data: {
1195
- realm_version: 2,
1196
- search_doc: { name: "Ringo" }
1197
- }
1198
- }
1199
- ],
1200
- production: [
1201
- {
1202
- card: mango,
1203
- data: {
1204
- realm_version: 1,
1205
- search_doc: { name: "Mango" }
1206
- }
1207
- },
1208
- {
1209
- card: vangogh,
1210
- data: {
1211
- realm_version: 1,
1212
- search_doc: { name: "Van Gogh" }
1213
- }
1214
- },
1215
- {
1216
- card: ringo,
1217
- data: {
1218
- realm_version: 1,
1219
- search_doc: { name: "Mango" }
1220
- }
1221
- }
1222
- ]
1223
- });
1224
- let type = await personCardType(testCards);
1225
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1226
- on: type,
1227
- eq: { name: "Mango" }
1228
- } }, { useWorkInProgressIndex: true });
1229
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1230
- assert.deepEqual(getIds(results), [mango.id, vangogh.id], "results are correct");
1231
- });
1232
- (0, import_qunit.test)("can perform query against \"production\" version of the index", async function(assert) {
1233
- let { mango, vangogh, ringo } = testCards;
1234
- await setupIndex(dbAdapter, [{
1235
- realm_url: testRealmURL,
1236
- current_version: 1
1237
- }], {
1238
- working: [
1239
- {
1240
- card: mango,
1241
- data: {
1242
- realm_version: 1,
1243
- search_doc: { name: "Mango" }
1244
- }
1245
- },
1246
- {
1247
- card: vangogh,
1248
- data: {
1249
- realm_version: 2,
1250
- search_doc: { name: "Mango" }
1251
- }
1252
- },
1253
- {
1254
- card: ringo,
1255
- data: {
1256
- realm_version: 1,
1257
- search_doc: { name: "Ringo" }
1258
- }
1259
- }
1260
- ],
1261
- production: [
1262
- {
1263
- card: mango,
1264
- data: {
1265
- realm_version: 1,
1266
- search_doc: { name: "Mango" }
1267
- }
1268
- },
1269
- {
1270
- card: vangogh,
1271
- data: {
1272
- realm_version: 1,
1273
- search_doc: { name: "Van Gogh" }
1274
- }
1275
- },
1276
- {
1277
- card: ringo,
1278
- data: {
1279
- realm_version: 1,
1280
- search_doc: { name: "Ringo" }
1281
- }
1282
- }
1283
- ]
1284
- });
1285
- let type = await personCardType(testCards);
1286
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1287
- on: type,
1288
- eq: { name: "Mango" }
1289
- } });
1290
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1291
- assert.deepEqual(getIds(results), [mango.id], "results are correct");
1292
- });
1293
- (0, import_qunit.test)("can sort search results", async function(assert) {
1294
- let { mango, vangogh, ringo } = testCards;
1295
- await setupIndex(dbAdapter, [
1296
- {
1297
- card: mango,
1298
- data: { search_doc: { name: "Mango" } }
1299
- },
1300
- {
1301
- card: vangogh,
1302
- data: { search_doc: { name: "Van Gogh" } }
1303
- },
1304
- {
1305
- card: ringo,
1306
- data: { search_doc: { name: "Ringo" } }
1307
- }
1308
- ]);
1309
- let type = await personCardType(testCards);
1310
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { sort: [{
1311
- on: type,
1312
- by: "name"
1313
- }] });
1314
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1315
- assert.deepEqual(getIds(results), [
1316
- mango.id,
1317
- ringo.id,
1318
- vangogh.id
1319
- ], "results are correct");
1320
- });
1321
- (0, import_qunit.test)("can sort descending", async function(assert) {
1322
- let { mango, vangogh, ringo } = testCards;
1323
- await setupIndex(dbAdapter, [
1324
- {
1325
- card: mango,
1326
- data: { search_doc: { name: "Mango" } }
1327
- },
1328
- {
1329
- card: vangogh,
1330
- data: { search_doc: { name: "Van Gogh" } }
1331
- },
1332
- {
1333
- card: ringo,
1334
- data: { search_doc: { name: "Ringo" } }
1335
- }
1336
- ]);
1337
- let type = await personCardType(testCards);
1338
- let { cards: results, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { sort: [{
1339
- on: type,
1340
- by: "name",
1341
- direction: "desc"
1342
- }] });
1343
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1344
- assert.deepEqual(getIds(results), [
1345
- vangogh.id,
1346
- ringo.id,
1347
- mango.id
1348
- ], "results are correct");
1349
- });
1350
- (0, import_qunit.test)("nulls are sorted to the end of search results", async function(assert) {
1351
- let { mango, vangogh, ringo } = testCards;
1352
- await setupIndex(dbAdapter, [
1353
- {
1354
- card: mango,
1355
- data: { search_doc: { name: "Mango" } }
1356
- },
1357
- {
1358
- card: vangogh,
1359
- data: { search_doc: { name: null } }
1360
- },
1361
- {
1362
- card: ringo,
1363
- data: { search_doc: { name: "Ringo" } }
1364
- }
1365
- ]);
1366
- let type = await personCardType(testCards);
1367
- let { cards: results } = await indexQueryEngine.searchCards(new URL(testRealmURL), { sort: [{
1368
- on: type,
1369
- by: "name"
1370
- }] });
1371
- assert.deepEqual(getIds(results), [
1372
- mango.id,
1373
- ringo.id,
1374
- vangogh.id
1375
- ], "results are correct");
1376
- });
1377
- (0, import_qunit.test)(`can filter using 'gt'`, async function(assert) {
1378
- let { mango, vangogh, ringo } = testCards;
1379
- await setupIndex(dbAdapter, [
1380
- {
1381
- card: mango,
1382
- data: { search_doc: {
1383
- name: "Mango",
1384
- address: {
1385
- street: "123 Main Street",
1386
- city: "Barksville"
1387
- },
1388
- age: 35
1389
- } }
1390
- },
1391
- {
1392
- card: vangogh,
1393
- data: { search_doc: {
1394
- name: "Van Gogh",
1395
- address: {
1396
- street: "456 Grand Blvd",
1397
- city: "Barksville"
1398
- },
1399
- age: 30
1400
- } }
1401
- },
1402
- {
1403
- card: ringo,
1404
- data: { search_doc: {
1405
- name: "Ringo",
1406
- address: {
1407
- street: "100 Treat Street",
1408
- city: "Waggington"
1409
- },
1410
- age: 25
1411
- } }
1412
- }
1413
- ]);
1414
- let type = await personCardType(testCards);
1415
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1416
- on: type,
1417
- range: { age: { gt: 25 } }
1418
- } });
1419
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1420
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1421
- });
1422
- (0, import_qunit.test)(`range filter works when both 'type' and 'on' are provided`, async function(assert) {
1423
- let { mango, vangogh, ringo } = testCards;
1424
- await setupIndex(dbAdapter, [
1425
- {
1426
- card: mango,
1427
- data: { search_doc: {
1428
- name: "Mango",
1429
- address: {
1430
- street: "123 Main Street",
1431
- city: "Barksville"
1432
- },
1433
- age: 35
1434
- } }
1435
- },
1436
- {
1437
- card: vangogh,
1438
- data: { search_doc: {
1439
- name: "Van Gogh",
1440
- address: {
1441
- street: "456 Grand Blvd",
1442
- city: "Barksville"
1443
- },
1444
- age: 30
1445
- } }
1446
- },
1447
- {
1448
- card: ringo,
1449
- data: { search_doc: {
1450
- name: "Ringo",
1451
- address: {
1452
- street: "100 Treat Street",
1453
- city: "Waggington"
1454
- },
1455
- age: 25
1456
- } }
1457
- }
1458
- ]);
1459
- let type = await personCardType(testCards);
1460
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1461
- on: type,
1462
- type,
1463
- range: { age: { gt: 25 } }
1464
- } });
1465
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1466
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1467
- });
1468
- (0, import_qunit.test)(`eq filter works when both 'type' and 'on' are provided`, async function(assert) {
1469
- let { mango, vangogh, ringo } = testCards;
1470
- await setupIndex(dbAdapter, [
1471
- {
1472
- card: mango,
1473
- data: { search_doc: { name: "Mango" } }
1474
- },
1475
- {
1476
- card: vangogh,
1477
- data: { search_doc: { name: "Van Gogh" } }
1478
- },
1479
- {
1480
- card: ringo,
1481
- data: { search_doc: { name: "Ringo" } }
1482
- }
1483
- ]);
1484
- let type = await personCardType(testCards);
1485
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1486
- on: type,
1487
- type,
1488
- eq: { name: "Mango" }
1489
- } });
1490
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1491
- assert.deepEqual(getIds(cards), [mango.id], "results are correct");
1492
- });
1493
- (0, import_qunit.test)(`contains filter works when both 'type' and 'on' are provided`, async function(assert) {
1494
- let { mango, vangogh, ringo } = testCards;
1495
- await setupIndex(dbAdapter, [
1496
- {
1497
- card: mango,
1498
- data: { search_doc: {
1499
- name: "Mango",
1500
- address: { city: "Barksville" }
1501
- } }
1502
- },
1503
- {
1504
- card: vangogh,
1505
- data: { search_doc: {
1506
- name: "Van Gogh",
1507
- address: { city: "Barksville" }
1508
- } }
1509
- },
1510
- {
1511
- card: ringo,
1512
- data: { search_doc: {
1513
- name: "Ringo",
1514
- address: { city: "Waggington" }
1515
- } }
1516
- }
1517
- ]);
1518
- let type = await personCardType(testCards);
1519
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1520
- on: type,
1521
- type,
1522
- contains: { "address.city": "Barks" }
1523
- } });
1524
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1525
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1526
- });
1527
- (0, import_qunit.test)(`not filter works when both 'type' and 'on' are provided`, async function(assert) {
1528
- let { mango, vangogh, ringo } = testCards;
1529
- await setupIndex(dbAdapter, [
1530
- {
1531
- card: mango,
1532
- data: { search_doc: { name: "Mango" } }
1533
- },
1534
- {
1535
- card: vangogh,
1536
- data: { search_doc: { name: "Van Gogh" } }
1537
- },
1538
- {
1539
- card: ringo,
1540
- data: { search_doc: { name: "Ringo" } }
1541
- }
1542
- ]);
1543
- let type = await personCardType(testCards);
1544
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1545
- filter: {
1546
- on: type,
1547
- type,
1548
- not: { eq: { name: "Mango" } }
1549
- },
1550
- sort: [{
1551
- on: type,
1552
- by: "name",
1553
- direction: "asc"
1554
- }]
1555
- });
1556
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1557
- assert.deepEqual(getIds(cards), [ringo.id, vangogh.id], "results are correct");
1558
- });
1559
- (0, import_qunit.test)(`'on' takes precedence over 'type' when they differ`, async function(assert) {
1560
- let { mango, vangogh, ringo, paper } = testCards;
1561
- await setupIndex(dbAdapter, [
1562
- {
1563
- card: mango,
1564
- data: { search_doc: {
1565
- name: "Mango",
1566
- address: {
1567
- street: "123 Main Street",
1568
- city: "Barksville"
1569
- },
1570
- age: 35
1571
- } }
1572
- },
1573
- {
1574
- card: vangogh,
1575
- data: { search_doc: {
1576
- name: "Van Gogh",
1577
- address: {
1578
- street: "456 Grand Blvd",
1579
- city: "Barksville"
1580
- },
1581
- age: 30
1582
- } }
1583
- },
1584
- {
1585
- card: ringo,
1586
- data: { search_doc: {
1587
- name: "Ringo",
1588
- address: {
1589
- street: "100 Treat Street",
1590
- city: "Waggington"
1591
- },
1592
- age: 25
1593
- } }
1594
- },
1595
- {
1596
- card: paper,
1597
- data: { search_doc: {
1598
- name: "Paper",
1599
- age: 99
1600
- } }
1601
- }
1602
- ]);
1603
- let personType = await personCardType(testCards);
1604
- let catType = internalKeyToCodeRef([...await getTypes(paper)].shift());
1605
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1606
- on: personType,
1607
- type: catType,
1608
- range: { age: { gt: 25 } }
1609
- } });
1610
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1611
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are drawn from the on type and ignore conflicting type");
1612
- });
1613
- (0, import_qunit.test)(`can filter using 'gte'`, async function(assert) {
1614
- let { mango, vangogh, ringo } = testCards;
1615
- await setupIndex(dbAdapter, [
1616
- {
1617
- card: mango,
1618
- data: { search_doc: {
1619
- name: "Mango",
1620
- address: {
1621
- street: "123 Main Street",
1622
- city: "Barksville"
1623
- },
1624
- age: 35
1625
- } }
1626
- },
1627
- {
1628
- card: vangogh,
1629
- data: { search_doc: {
1630
- name: "Van Gogh",
1631
- address: {
1632
- street: "456 Grand Blvd",
1633
- city: "Barksville"
1634
- },
1635
- age: 30
1636
- } }
1637
- },
1638
- {
1639
- card: ringo,
1640
- data: { search_doc: {
1641
- name: "Ringo",
1642
- address: {
1643
- street: "100 Treat Street",
1644
- city: "Waggington"
1645
- },
1646
- age: 25
1647
- } }
1648
- }
1649
- ]);
1650
- let type = await personCardType(testCards);
1651
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1652
- filter: {
1653
- on: type,
1654
- range: { age: { gte: 25 } }
1655
- },
1656
- sort: [{
1657
- on: type,
1658
- by: "age",
1659
- direction: "desc"
1660
- }]
1661
- });
1662
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1663
- assert.deepEqual(getIds(cards), [
1664
- mango.id,
1665
- vangogh.id,
1666
- ringo.id
1667
- ], "results are correct");
1668
- });
1669
- (0, import_qunit.test)(`can filter using 'gt' thru nested fields`, async function(assert) {
1670
- let { mango, vangogh, ringo } = testCards;
1671
- await setupIndex(dbAdapter, [
1672
- {
1673
- card: mango,
1674
- data: { search_doc: {
1675
- name: "Mango",
1676
- address: {
1677
- street: "123 Main Street",
1678
- city: "Barksville",
1679
- number: 123
1680
- }
1681
- } }
1682
- },
1683
- {
1684
- card: vangogh,
1685
- data: { search_doc: {
1686
- name: "Van Gogh",
1687
- address: {
1688
- street: "456 Grand Blvd",
1689
- city: "Barksville",
1690
- number: 456
1691
- }
1692
- } }
1693
- },
1694
- {
1695
- card: ringo,
1696
- data: { search_doc: {
1697
- name: "Ringo",
1698
- address: {
1699
- street: "100 Treat Street",
1700
- city: "Waggington",
1701
- number: 100
1702
- }
1703
- } }
1704
- }
1705
- ]);
1706
- let type = await personCardType(testCards);
1707
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1708
- on: type,
1709
- range: { "address.number": { gt: 100 } }
1710
- } });
1711
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1712
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1713
- });
1714
- (0, import_qunit.test)(`can filter using 'gt' thru a plural primitive field`, async function(assert) {
1715
- let { mango, vangogh, ringo } = testCards;
1716
- await setupIndex(dbAdapter, [
1717
- {
1718
- card: mango,
1719
- data: { search_doc: {
1720
- name: "Mango",
1721
- lotteryNumbers: [
1722
- 20,
1723
- 50,
1724
- 70
1725
- ]
1726
- } }
1727
- },
1728
- {
1729
- card: vangogh,
1730
- data: { search_doc: {
1731
- name: "Van Gogh",
1732
- lotteryNumbers: [
1733
- 40,
1734
- 60,
1735
- 80
1736
- ]
1737
- } }
1738
- },
1739
- {
1740
- card: ringo,
1741
- data: { search_doc: {
1742
- name: "Ringo",
1743
- lotteryNumbers: [
1744
- 10,
1745
- 20,
1746
- 30
1747
- ]
1748
- } }
1749
- }
1750
- ]);
1751
- let type = await personCardType(testCards);
1752
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1753
- on: type,
1754
- range: { lotteryNumbers: { gt: 50 } }
1755
- } });
1756
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1757
- assert.deepEqual(getIds(cards), [mango.id, vangogh.id], "results are correct");
1758
- });
1759
- (0, import_qunit.test)(`can filter using 'gt' thru a plural composite field`, async function(assert) {
1760
- let { mango, vangogh, ringo } = testCards;
1761
- let mangoDoc = {
1762
- name: "Mango",
1763
- age: 35
1764
- };
1765
- let vanGoghDoc = {
1766
- name: "Van Gogh",
1767
- age: 30
1768
- };
1769
- let ringoDoc = {
1770
- name: "Ringo",
1771
- age: 25
1772
- };
1773
- await setupIndex(dbAdapter, [
1774
- {
1775
- card: mango,
1776
- data: { search_doc: {
1777
- ...mangoDoc,
1778
- friends: [{ ...vanGoghDoc }]
1779
- } }
1780
- },
1781
- {
1782
- card: vangogh,
1783
- data: { search_doc: {
1784
- ...vanGoghDoc,
1785
- friends: [{ ...ringoDoc }]
1786
- } }
1787
- },
1788
- {
1789
- card: ringo,
1790
- data: { search_doc: {
1791
- ...ringoDoc,
1792
- friends: [{ ...mangoDoc }]
1793
- } }
1794
- }
1795
- ]);
1796
- let type = await personCardType(testCards);
1797
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
1798
- on: type,
1799
- range: { "friends.age": { gt: 25 } }
1800
- } });
1801
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1802
- assert.deepEqual(getIds(cards), [mango.id, ringo.id], "results are correct");
1803
- });
1804
- (0, import_qunit.test)(`can filter using 'lt'`, async function(assert) {
1805
- let { mango, vangogh, ringo } = testCards;
1806
- await setupIndex(dbAdapter, [
1807
- {
1808
- card: mango,
1809
- data: { search_doc: {
1810
- name: "Mango",
1811
- address: {
1812
- street: "123 Main Street",
1813
- city: "Barksville"
1814
- },
1815
- age: 35
1816
- } }
1817
- },
1818
- {
1819
- card: vangogh,
1820
- data: { search_doc: {
1821
- name: "Van Gogh",
1822
- address: {
1823
- street: "456 Grand Blvd",
1824
- city: "Barksville"
1825
- },
1826
- age: 30
1827
- } }
1828
- },
1829
- {
1830
- card: ringo,
1831
- data: { search_doc: {
1832
- name: "Ringo",
1833
- address: {
1834
- street: "100 Treat Street",
1835
- city: "Waggington"
1836
- },
1837
- age: 25
1838
- } }
1839
- }
1840
- ]);
1841
- let type = await personCardType(testCards);
1842
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1843
- filter: {
1844
- on: type,
1845
- range: { age: { lt: 35 } }
1846
- },
1847
- sort: [{
1848
- on: type,
1849
- by: "age",
1850
- direction: "desc"
1851
- }]
1852
- });
1853
- assert.strictEqual(meta.page.total, 2, "the total results meta is correct");
1854
- assert.deepEqual(getIds(cards), [vangogh.id, ringo.id], "results are correct");
1855
- });
1856
- (0, import_qunit.test)(`can filter using 'lte'`, async function(assert) {
1857
- let { mango, vangogh, ringo } = testCards;
1858
- await setupIndex(dbAdapter, [
1859
- {
1860
- card: mango,
1861
- data: { search_doc: {
1862
- name: "Mango",
1863
- address: {
1864
- street: "123 Main Street",
1865
- city: "Barksville"
1866
- },
1867
- age: 35
1868
- } }
1869
- },
1870
- {
1871
- card: vangogh,
1872
- data: { search_doc: {
1873
- name: "Van Gogh",
1874
- address: {
1875
- street: "456 Grand Blvd",
1876
- city: "Barksville"
1877
- },
1878
- age: 30
1879
- } }
1880
- },
1881
- {
1882
- card: ringo,
1883
- data: { search_doc: {
1884
- name: "Ringo",
1885
- address: {
1886
- street: "100 Treat Street",
1887
- city: "Waggington"
1888
- },
1889
- age: 25
1890
- } }
1891
- }
1892
- ]);
1893
- let type = await personCardType(testCards);
1894
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1895
- filter: {
1896
- on: type,
1897
- range: { age: { lte: 35 } }
1898
- },
1899
- sort: [{
1900
- on: type,
1901
- by: "age",
1902
- direction: "desc"
1903
- }]
1904
- });
1905
- assert.strictEqual(meta.page.total, 3, "the total results meta is correct");
1906
- assert.deepEqual(getIds(cards), [
1907
- mango.id,
1908
- vangogh.id,
1909
- ringo.id
1910
- ], "results are correct");
1911
- });
1912
- (0, import_qunit.test)(`can combine 'range' filter`, async function(assert) {
1913
- let { mango, vangogh, ringo } = testCards;
1914
- await setupIndex(dbAdapter, [
1915
- {
1916
- card: mango,
1917
- data: { search_doc: {
1918
- name: "Mango",
1919
- address: {
1920
- street: "123 Main Street",
1921
- city: "Barksville"
1922
- },
1923
- age: 35
1924
- } }
1925
- },
1926
- {
1927
- card: vangogh,
1928
- data: { search_doc: {
1929
- name: "Van Gogh",
1930
- address: {
1931
- street: "456 Grand Blvd",
1932
- city: "Barksville"
1933
- },
1934
- age: 30
1935
- } }
1936
- },
1937
- {
1938
- card: ringo,
1939
- data: { search_doc: {
1940
- name: "Ringo",
1941
- address: {
1942
- street: "100 Treat Street",
1943
- city: "Waggington"
1944
- },
1945
- age: 25
1946
- } }
1947
- }
1948
- ]);
1949
- let type = await personCardType(testCards);
1950
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), {
1951
- filter: {
1952
- on: type,
1953
- range: { age: {
1954
- gt: 25,
1955
- lt: 35
1956
- } }
1957
- },
1958
- sort: [{
1959
- on: type,
1960
- by: "age",
1961
- direction: "desc"
1962
- }]
1963
- });
1964
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
1965
- assert.deepEqual(getIds(cards), [vangogh.id], "results are correct");
1966
- });
1967
- (0, import_qunit.test)(`cannot filter 'null' value using 'range'`, async function(assert) {
1968
- let { mango, vangogh, ringo } = testCards;
1969
- await setupIndex(dbAdapter, [
1970
- {
1971
- card: mango,
1972
- data: { search_doc: {
1973
- name: "Mango",
1974
- address: {
1975
- street: "123 Main Street",
1976
- city: "Barksville"
1977
- },
1978
- age: 35
1979
- } }
1980
- },
1981
- {
1982
- card: vangogh,
1983
- data: { search_doc: {
1984
- name: "Van Gogh",
1985
- address: {
1986
- street: "456 Grand Blvd",
1987
- city: "Barksville"
1988
- },
1989
- age: 30
1990
- } }
1991
- },
1992
- {
1993
- card: ringo,
1994
- data: { search_doc: {
1995
- name: "Ringo",
1996
- address: {
1997
- street: "100 Treat Street",
1998
- city: "Waggington"
1999
- },
2000
- age: 25
2001
- } }
2002
- }
2003
- ]);
2004
- let type = await personCardType(testCards);
2005
- assert.rejects(indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2006
- on: type,
2007
- range: { age: { gt: null } }
2008
- } }), `'null' is not a permitted value in a 'range' filter`);
2009
- });
2010
- (0, import_qunit.test)(`'matches' filter returns rows whose markdown contains the query (case-insensitive)`, async function(assert) {
2011
- let { mango, vangogh, ringo } = testCards;
2012
- await setupIndex(dbAdapter, [
2013
- {
2014
- card: mango,
2015
- data: { markdown: "Mango is a friendly puppy who loves to play fetch in the park." }
2016
- },
2017
- {
2018
- card: vangogh,
2019
- data: { markdown: "Van Gogh is a calm dog with a painterly coat." }
2020
- },
2021
- {
2022
- card: ringo,
2023
- data: { markdown: "Ringo plays the drums and enjoys long naps." }
2024
- }
2025
- ]);
2026
- let lower = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "mango" } });
2027
- assert.strictEqual(lower.meta.page.total, 1, "one row matches \"mango\"");
2028
- assert.deepEqual(getIds(lower.cards), [mango.id]);
2029
- let upper = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "MANGO" } });
2030
- assert.strictEqual(upper.meta.page.total, 1, "upper-case query still matches");
2031
- let none = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "xylophone" } });
2032
- assert.strictEqual(none.meta.page.total, 0, "no rows match a missing term");
2033
- });
2034
- (0, import_qunit.test)(`'matches' escapes LIKE wildcards so user input matches literally`, async function(assert) {
2035
- let { mango, vangogh } = testCards;
2036
- await setupIndex(dbAdapter, [{
2037
- card: mango,
2038
- data: { markdown: "Summer sale: 50% off today only." }
2039
- }, {
2040
- card: vangogh,
2041
- data: { markdown: "Fifty kittens lined up on the fence." }
2042
- }]);
2043
- let percent = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "50%" } });
2044
- assert.strictEqual(percent.meta.page.total, 1, "\"50%\" matches the literal \"50%\" row only");
2045
- assert.deepEqual(getIds(percent.cards), [mango.id]);
2046
- let underscore = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "_nothing_" } });
2047
- assert.strictEqual(underscore.meta.page.total, 0, "underscore is treated literally, not as a single-char wildcard");
2048
- });
2049
- (0, import_qunit.test)(`'matches' does not match rows whose markdown is null`, async function(assert) {
2050
- let { mango, vangogh } = testCards;
2051
- await setupIndex(dbAdapter, [{
2052
- card: mango,
2053
- data: { markdown: "Mango likes fetch." }
2054
- }, {
2055
- card: vangogh,
2056
- data: { markdown: null }
2057
- }]);
2058
- let { meta, cards } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "mango" } });
2059
- assert.strictEqual(meta.page.total, 1, "only the non-null row matching \"mango\" is returned");
2060
- assert.deepEqual(getIds(cards), [mango.id]);
2061
- });
2062
- (0, import_qunit.test)(`'matches' empty query matches nothing`, async function(assert) {
2063
- let { mango, ringo } = testCards;
2064
- await setupIndex(dbAdapter, [{
2065
- card: mango,
2066
- data: { markdown: "Mango likes fetch." }
2067
- }, {
2068
- card: ringo,
2069
- data: { markdown: "Ringo likes drums." }
2070
- }]);
2071
- let { meta: emptyMeta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "" } });
2072
- assert.strictEqual(emptyMeta.page.total, 0, "empty query does not match every row");
2073
- let { meta: wsMeta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: " " } });
2074
- assert.strictEqual(wsMeta.page.total, 0, "whitespace-only query does not match every row");
2075
- });
2076
- (0, import_qunit.test)(`'matches' parameterizes the query safely (injection attempt)`, async function(assert) {
2077
- let { mango, vangogh, ringo } = testCards;
2078
- await setupIndex(dbAdapter, [
2079
- {
2080
- card: mango,
2081
- data: { markdown: "Mango likes fetch." }
2082
- },
2083
- {
2084
- card: vangogh,
2085
- data: { markdown: "Van Gogh likes naps." }
2086
- },
2087
- {
2088
- card: ringo,
2089
- data: { markdown: "Ringo likes drums." }
2090
- }
2091
- ]);
2092
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: `'; DROP TABLE boxel_index; --` } });
2093
- assert.strictEqual(meta.page.total, 0, "malicious input is treated as literal LIKE text, not SQL");
2094
- let sanity = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "mango" } });
2095
- assert.strictEqual(sanity.meta.page.total, 1, "boxel_index table is intact after injection attempt");
2096
- });
2097
- (0, import_qunit.test)(`'matches' tolerates unicode and special characters in the query`, async function(assert) {
2098
- let { mango } = testCards;
2099
- await setupIndex(dbAdapter, [{
2100
- card: mango,
2101
- data: { markdown: "Mango likes fetch." }
2102
- }]);
2103
- let { meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: { matches: "café 🦮 \"$1 $2\"" } });
2104
- assert.strictEqual(meta.page.total, 0, "special characters do not throw; no rows match");
2105
- });
2106
- (0, import_qunit.test)(`'matches' composes inside 'every' with eq/contains/range/cardType`, async function(assert) {
2107
- let { mango, vangogh, ringo } = testCards;
2108
- await setupIndex(dbAdapter, [
2109
- {
2110
- card: mango,
2111
- data: {
2112
- search_doc: {
2113
- name: "Mango",
2114
- age: 35
2115
- },
2116
- markdown: "Mango is the name here."
2117
- }
2118
- },
2119
- {
2120
- card: vangogh,
2121
- data: {
2122
- search_doc: {
2123
- name: "Van Gogh",
2124
- age: 30
2125
- },
2126
- markdown: "Van Gogh is here."
2127
- }
2128
- },
2129
- {
2130
- card: ringo,
2131
- data: {
2132
- search_doc: {
2133
- name: "Ringo",
2134
- age: 25
2135
- },
2136
- markdown: "Ringo is here."
2137
- }
2138
- }
2139
- ]);
2140
- let type = await personCardType(testCards);
2141
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2142
- on: type,
2143
- every: [
2144
- { type },
2145
- { matches: "mango" },
2146
- { eq: { name: "Mango" } },
2147
- { contains: { name: "Mang" } },
2148
- { range: { age: { gt: 10 } } }
2149
- ]
2150
- } });
2151
- assert.strictEqual(meta.page.total, 1, `every-composition narrows to the one row matching all predicates`);
2152
- assert.deepEqual(getIds(cards), [mango.id], "correct row returned");
2153
- });
2154
- (0, import_qunit.test)(`'matches' composes inside 'any' alongside other filters`, async function(assert) {
2155
- let { mango, vangogh, ringo } = testCards;
2156
- await setupIndex(dbAdapter, [
2157
- {
2158
- card: mango,
2159
- data: {
2160
- search_doc: { name: "Mango" },
2161
- markdown: "Mango is here."
2162
- }
2163
- },
2164
- {
2165
- card: vangogh,
2166
- data: {
2167
- search_doc: { name: "Van Gogh" },
2168
- markdown: "Van Gogh is here."
2169
- }
2170
- },
2171
- {
2172
- card: ringo,
2173
- data: {
2174
- search_doc: { name: "Ringo" },
2175
- markdown: "Ringo is here."
2176
- }
2177
- }
2178
- ]);
2179
- let type = await personCardType(testCards);
2180
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2181
- on: type,
2182
- any: [{ matches: "ringo" }, { eq: { name: "Mango" } }]
2183
- } });
2184
- assert.strictEqual(meta.page.total, 2, `union of the 'matches' branch and the 'eq' branch`);
2185
- assert.deepEqual(getIds(cards), [mango.id, ringo.id], "results are correct");
2186
- });
2187
- (0, import_qunit.test)(`'matches' composes inside 'not'`, async function(assert) {
2188
- let { mango, vangogh, ringo } = testCards;
2189
- await setupIndex(dbAdapter, [
2190
- {
2191
- card: mango,
2192
- data: {
2193
- search_doc: { name: "Mango" },
2194
- markdown: "Mango is here."
2195
- }
2196
- },
2197
- {
2198
- card: vangogh,
2199
- data: {
2200
- search_doc: { name: "Van Gogh" },
2201
- markdown: "Van Gogh is here."
2202
- }
2203
- },
2204
- {
2205
- card: ringo,
2206
- data: {
2207
- search_doc: { name: "Ringo" },
2208
- markdown: "Ringo is here."
2209
- }
2210
- }
2211
- ]);
2212
- let type = await personCardType(testCards);
2213
- let { cards, meta } = await indexQueryEngine.searchCards(new URL(testRealmURL), { filter: {
2214
- on: type,
2215
- not: { matches: "mango" }
2216
- } });
2217
- assert.strictEqual(meta.page.total, 2, `'not' drops the one row that matched 'mango'`);
2218
- assert.deepEqual(getIds(cards), [ringo.id, vangogh.id], "non-mango person rows returned");
2219
- });
2220
- (0, import_qunit.test)("can sort using a general field that is not an attribute of a card", async function(assert) {
2221
- await setupIndex(dbAdapter, [
2222
- {
2223
- url: `${testRealmURL}vangogh.json`,
2224
- file_alias: `${testRealmURL}vangogh`,
2225
- type: "instance",
2226
- realm_version: 1,
2227
- realm_url: testRealmURL,
2228
- deps: [],
2229
- types: [`${testRealmURL}person/Person`, "https://cardstack.com/base/card-api/CardDef"],
2230
- last_modified: "1",
2231
- resource_created_at: "1"
2232
- },
2233
- {
2234
- url: `${testRealmURL}jimmy.json`,
2235
- file_alias: `${testRealmURL}jimmy`,
2236
- type: "instance",
2237
- realm_version: 1,
2238
- realm_url: testRealmURL,
2239
- deps: [],
2240
- types: [`${testRealmURL}person/Person`, "https://cardstack.com/base/card-api/CardDef"],
2241
- last_modified: "3",
2242
- resource_created_at: "3"
2243
- },
2244
- {
2245
- url: `${testRealmURL}donald.json`,
2246
- file_alias: `${testRealmURL}donald`,
2247
- type: "instance",
2248
- realm_version: 1,
2249
- realm_url: testRealmURL,
2250
- deps: [],
2251
- types: [`${testRealmURL}person/Person`, "https://cardstack.com/base/card-api/CardDef"],
2252
- last_modified: "2",
2253
- resource_created_at: "2"
2254
- }
2255
- ]);
2256
- let { prerenderedCards: results } = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { sort: [{
2257
- by: "lastModified",
2258
- direction: "desc"
2259
- }] }, { htmlFormat: "embedded" });
2260
- assert.deepEqual(results.map((r) => r.url), [
2261
- `${testRealmURL}jimmy.json`,
2262
- `${testRealmURL}donald.json`,
2263
- `${testRealmURL}vangogh.json`
2264
- ], "results are correct");
2265
- let { prerenderedCards: results2 } = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { sort: [{
2266
- by: "lastModified",
2267
- direction: "asc"
2268
- }] }, { htmlFormat: "embedded" });
2269
- assert.deepEqual(results2.map((r) => r.url), [
2270
- `${testRealmURL}vangogh.json`,
2271
- `${testRealmURL}donald.json`,
2272
- `${testRealmURL}jimmy.json`
2273
- ], "results are correct");
2274
- let { prerenderedCards: results3 } = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { sort: [{
2275
- by: "createdAt",
2276
- direction: "desc"
2277
- }] }, { htmlFormat: "embedded" });
2278
- assert.deepEqual(results3.map((r) => r.url), [
2279
- `${testRealmURL}jimmy.json`,
2280
- `${testRealmURL}donald.json`,
2281
- `${testRealmURL}vangogh.json`
2282
- ], "results are correct");
2283
- });
2284
- (0, import_qunit.test)("can get prerendered cards from the indexer", async function(assert) {
2285
- let personCard = await personCardType(testCards);
2286
- let personKey = internalKeyFor(personCard, void 0, virtualNetwork);
2287
- let fancyPersonCard = await fancyPersonCardType(testCards);
2288
- let fancyPersonKey = internalKeyFor(fancyPersonCard, void 0, virtualNetwork);
2289
- await setupIndex(dbAdapter, [
2290
- {
2291
- url: `${testRealmURL}vangogh.json`,
2292
- file_alias: `${testRealmURL}vangogh`,
2293
- type: "instance",
2294
- realm_version: 1,
2295
- realm_url: testRealmURL,
2296
- deps: [],
2297
- types: [personKey, "https://cardstack.com/base/card-api/CardDef"],
2298
- embedded_html: {
2299
- [personKey]: "<div>Van Gogh (Person embedded template)</div>",
2300
- "https://cardstack.com/base/card-api/CardDef": "<div>Van Gogh (CardDef embedded template)</div>"
2301
- },
2302
- fitted_html: {
2303
- [personKey]: "<div>Van Gogh (Person fitted template)</div>",
2304
- "https://cardstack.com/base/card-api/CardDef": "<div>Van Gogh (CardDef fitted template)</div>"
2305
- },
2306
- atom_html: "Van Gogh",
2307
- search_doc: { name: "Van Gogh" }
2308
- },
2309
- {
2310
- url: `${testRealmURL}jimmy.json`,
2311
- file_alias: `${testRealmURL}jimmy`,
2312
- type: "instance",
2313
- realm_version: 1,
2314
- realm_url: testRealmURL,
2315
- deps: [],
2316
- types: [personKey, "https://cardstack.com/base/card-api/CardDef"],
2317
- embedded_html: {
2318
- [personKey]: "<div>Jimmy (Person embedded template)</div>",
2319
- "https://cardstack.com/base/card-api/CardDef": "<div>Jimmy (CardDef embedded template)</div>"
2320
- },
2321
- fitted_html: {
2322
- [personKey]: "<div>Jimmy (Person fitted template)</div>",
2323
- "https://cardstack.com/base/card-api/CardDef": "<div>Jimmy (CardDef fitted template)</div>"
2324
- },
2325
- atom_html: "Jimmy",
2326
- head_html: "<title>Jimmy</title>",
2327
- search_doc: { name: "Jimmy" }
2328
- },
2329
- {
2330
- url: `${testRealmURL}donald.json`,
2331
- file_alias: `${testRealmURL}donald`,
2332
- type: "instance",
2333
- realm_version: 1,
2334
- realm_url: testRealmURL,
2335
- deps: [],
2336
- types: [
2337
- fancyPersonKey,
2338
- personKey,
2339
- "https://cardstack.com/base/card-api/CardDef"
2340
- ],
2341
- embedded_html: {
2342
- [fancyPersonKey]: "<div>Donald (FancyPerson embedded template)</div>",
2343
- [personKey]: "<div>Donald (Person embedded template)</div>",
2344
- "https://cardstack.com/base/card-api/CardDef": "<div>Donald (CardDef embedded template)</div>"
2345
- },
2346
- fitted_html: {
2347
- [fancyPersonKey]: "<div>Donald (FancyPerson fitted template)</div>",
2348
- [personKey]: "<div>Donald (Person fitted template)</div>",
2349
- "https://cardstack.com/base/card-api/CardDef": "<div>Donald (CardDef fitted template)</div>"
2350
- },
2351
- atom_html: "Donald",
2352
- search_doc: { name: "Donald" }
2353
- }
2354
- ]);
2355
- let { prerenderedCards, meta } = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), {}, { htmlFormat: "embedded" });
2356
- assert.strictEqual(meta.page.total, 3, "meta total results meta is correct");
2357
- assert.strictEqual(prerenderedCards.length, 3, "the actual returned total results are correct");
2358
- assert.strictEqual(prerenderedCards[0].url, "http://test-realm/test/donald.json");
2359
- assert.strictEqual(prerenderedCards[0].html, "<div>Donald (FancyPerson embedded template)</div>");
2360
- assert.deepEqual(prerenderedCards[0].usedRenderType, fancyPersonCard);
2361
- assert.strictEqual(prerenderedCards[1].url, "http://test-realm/test/jimmy.json");
2362
- assert.strictEqual(prerenderedCards[1].html, "<div>Jimmy (Person embedded template)</div>");
2363
- assert.deepEqual(prerenderedCards[1].usedRenderType, personCard);
2364
- assert.strictEqual(prerenderedCards[2].url, "http://test-realm/test/vangogh.json");
2365
- assert.strictEqual(prerenderedCards[2].html, "<div>Van Gogh (Person embedded template)</div>");
2366
- assert.deepEqual(prerenderedCards[2].usedRenderType, personCard);
2367
- ({prerenderedCards, meta} = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { filter: {
2368
- on: fancyPersonCard,
2369
- not: { eq: { name: "Richard" } }
2370
- } }, { htmlFormat: "embedded" }));
2371
- assert.strictEqual(prerenderedCards.length, 1, "the actual returned total results are correct (there is only one FancyPerson)");
2372
- assert.strictEqual(prerenderedCards[0].url, "http://test-realm/test/donald.json");
2373
- assert.strictEqual(prerenderedCards[0].html, "<div>Donald (FancyPerson embedded template)</div>");
2374
- assert.deepEqual(prerenderedCards[0].usedRenderType, fancyPersonCard);
2375
- ({prerenderedCards, meta} = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { filter: {
2376
- on: fancyPersonCard,
2377
- eq: { name: "Donald" }
2378
- } }, { htmlFormat: "atom" }));
2379
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
2380
- assert.strictEqual(prerenderedCards[0].url, `${testRealmURL}donald.json`);
2381
- assert.strictEqual(prerenderedCards[0].html, "Donald");
2382
- assert.deepEqual(prerenderedCards[0].usedRenderType, fancyPersonCard);
2383
- ({prerenderedCards, meta} = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { filter: {
2384
- on: personCard,
2385
- eq: { name: "Jimmy" }
2386
- } }, { htmlFormat: "head" }));
2387
- assert.strictEqual(meta.page.total, 1, "the total results meta is correct");
2388
- assert.strictEqual(prerenderedCards[0].url, `${testRealmURL}jimmy.json`);
2389
- assert.strictEqual(prerenderedCards[0].html, "<title>Jimmy</title>");
2390
- assert.deepEqual(prerenderedCards[0].usedRenderType, personCard);
2391
- ({prerenderedCards, meta} = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { filter: {
2392
- on: fancyPersonCard,
2393
- not: { eq: { name: "Richard" } }
2394
- } }, {
2395
- htmlFormat: "embedded",
2396
- renderType: personCard
2397
- }));
2398
- assert.strictEqual(prerenderedCards.length, 1, "the actual returned total results are correct (there is only one FancyPerson)");
2399
- assert.strictEqual(prerenderedCards[0].url, "http://test-realm/test/donald.json");
2400
- assert.strictEqual(prerenderedCards[0].html, "<div>Donald (Person embedded template)</div>");
2401
- assert.deepEqual(prerenderedCards[0].usedRenderType, personCard);
2402
- });
2403
- (0, import_qunit.test)("can get prerendered cards in an error state from the indexer", async function(assert) {
2404
- let personKey = internalKeyFor(await personCardType(testCards), void 0, virtualNetwork);
2405
- let fancyPersonCard = await fancyPersonCardType(testCards);
2406
- let fancyPersonKey = internalKeyFor(fancyPersonCard, void 0, virtualNetwork);
2407
- await setupIndex(dbAdapter, [
2408
- {
2409
- url: `${testRealmURL}vangogh.json`,
2410
- file_alias: `${testRealmURL}vangogh`,
2411
- type: "instance",
2412
- realm_version: 1,
2413
- realm_url: testRealmURL,
2414
- deps: [],
2415
- types: [personKey, "https://cardstack.com/base/card-api/CardDef"],
2416
- embedded_html: {
2417
- [personKey]: "<div>Van Gogh (Person embedded template)</div>",
2418
- "https://cardstack.com/base/card-api/CardDef": "<div>Van Gogh (CardDef embedded template)</div>"
2419
- },
2420
- fitted_html: {
2421
- [personKey]: "<div>Van Gogh (Person fitted template)</div>",
2422
- "https://cardstack.com/base/card-api/CardDef": "<div>Van Gogh (CardDef fitted template)</div>"
2423
- },
2424
- atom_html: "Van Gogh",
2425
- search_doc: { name: "Van Gogh" }
2426
- },
2427
- {
2428
- url: `${testRealmURL}jimmy.json`,
2429
- file_alias: `${testRealmURL}jimmy`,
2430
- type: "instance",
2431
- realm_version: 1,
2432
- realm_url: testRealmURL,
2433
- deps: [],
2434
- types: [
2435
- fancyPersonKey,
2436
- personKey,
2437
- "https://cardstack.com/base/card-api/CardDef"
2438
- ],
2439
- embedded_html: {
2440
- [fancyPersonKey]: "<div>Jimmy (FancyPerson embedded template)</div>",
2441
- [personKey]: "<div>Jimmy (Person embedded template)</div>",
2442
- "https://cardstack.com/base/card-api/CardDef": "<div>Jimmy (CardDef embedded template)</div>"
2443
- },
2444
- fitted_html: {
2445
- [fancyPersonKey]: "<div>Jimmy (FancyPerson fitted template)</div>",
2446
- [personKey]: "<div>Jimmy (Person fitted template)</div>",
2447
- "https://cardstack.com/base/card-api/CardDef": "<div>Jimmy (CardDef fitted template)</div>"
2448
- },
2449
- atom_html: "Jimmy",
2450
- search_doc: { name: "Jimmy" }
2451
- },
2452
- {
2453
- url: `${testRealmURL}donald.json`,
2454
- file_alias: `${testRealmURL}donald`,
2455
- type: "instance",
2456
- has_error: true,
2457
- realm_version: 1,
2458
- realm_url: testRealmURL,
2459
- deps: [],
2460
- types: [
2461
- fancyPersonKey,
2462
- personKey,
2463
- "https://cardstack.com/base/card-api/CardDef"
2464
- ],
2465
- embedded_html: {
2466
- [fancyPersonKey]: "<div>Donald (FancyPerson embedded template)</div>",
2467
- [personKey]: "<div>Donald (Person embedded template)</div>",
2468
- "https://cardstack.com/base/card-api/CardDef": "<div>Donald (CardDef embedded template)</div>"
2469
- },
2470
- fitted_html: {
2471
- [fancyPersonKey]: "<div>Donald (FancyPerson fitted template)</div>",
2472
- [personKey]: "<div>Donald (Person fitted template)</div>",
2473
- "https://cardstack.com/base/card-api/CardDef": "<div>Donald (CardDef fitted template)</div>"
2474
- },
2475
- atom_html: "Donald",
2476
- search_doc: { name: "Donald" }
2477
- },
2478
- {
2479
- url: `${testRealmURL}paper.json`,
2480
- file_alias: `${testRealmURL}paper`,
2481
- type: "instance",
2482
- has_error: true,
2483
- realm_version: 1,
2484
- realm_url: testRealmURL,
2485
- deps: [],
2486
- types: null,
2487
- embedded_html: {
2488
- [fancyPersonKey]: "<div>Paper (FancyPerson embedded template)</div>",
2489
- [personKey]: "<div>Paper (Person embedded template)</div>",
2490
- "https://cardstack.com/base/card-api/CardDef": "<div>Paper (CardDef embedded template)</div>"
2491
- },
2492
- fitted_html: {
2493
- [fancyPersonKey]: "<div>Paper (FancyPerson fitted template)</div>",
2494
- [personKey]: "<div>Paper (Person fitted template)</div>",
2495
- "https://cardstack.com/base/card-api/CardDef": "<div>Paper (CardDef fitted template)</div>"
2496
- },
2497
- atom_html: "Paper",
2498
- search_doc: { name: "Paper" }
2499
- }
2500
- ]);
2501
- let { prerenderedCards } = await indexQueryEngine.searchPrerendered(new URL(testRealmURL), { filter: {
2502
- on: fancyPersonCard,
2503
- not: { eq: { name: "Richard" } }
2504
- } }, {
2505
- htmlFormat: "embedded",
2506
- includeErrors: true
2507
- });
2508
- assert.strictEqual(prerenderedCards.length, 2, "the actual returned total results are correct");
2509
- assert.strictEqual(prerenderedCards[0].url, "http://test-realm/test/donald.json");
2510
- assert.strictEqual(prerenderedCards[0].html, "<div>Donald (FancyPerson embedded template)</div>");
2511
- assert.true(prerenderedCards[0].isError, "card is in error state");
2512
- assert.strictEqual(prerenderedCards[1].url, "http://test-realm/test/jimmy.json");
2513
- assert.strictEqual(prerenderedCards[1].html, "<div>Jimmy (FancyPerson embedded template)</div>");
2514
- assert.notOk(prerenderedCards[1].isError, "card is not in an error state");
2515
- });
2516
- });
2517
- function getIds(resources) {
2518
- return resources.map((r) => r.id);
2519
- }
2520
- function internalKeyToCodeRef(key) {
2521
- let parts = key.split("/");
2522
- let name = parts.pop();
2523
- return {
2524
- module: parts.join("/"),
2525
- name
2526
- };
2527
- }
2528
- async function personCardType(testCards) {
2529
- let { vangogh } = testCards;
2530
- if (!vangogh) throw new Error(`missing the 'vangogh' test card in the--this is the card we use to derive the Person type`);
2531
- return internalKeyToCodeRef([...await getTypes(vangogh)].shift());
2532
- }
2533
- async function fancyPersonCardType(testCards) {
2534
- let { mango } = testCards;
2535
- if (!mango) throw new Error(`missing the 'mango' test card in the--this is the card we use to derive the FancyPerson type`);
2536
- return internalKeyToCodeRef([...await getTypes(mango)].shift());
2537
- }
2538
- async function SimpleSpecType(testCards) {
2539
- let { stringFieldEntry } = testCards;
2540
- if (!stringFieldEntry) throw new Error(`missing the 'stringFieldEntry' test card in the--this is the card we use to derive the SimpleSpec type`);
2541
- return internalKeyToCodeRef([...await getTypes(stringFieldEntry)].shift());
2542
- }
2543
- async function eventType(testCards) {
2544
- let { mangoBirthday } = testCards;
2545
- if (!mangoBirthday) throw new Error(`missing the 'mangoBirthday' test card in the--this is the card we use to derive the Event type`);
2546
- return internalKeyToCodeRef([...await getTypes(mangoBirthday)].shift());
2547
- }
2548
- //#endregion