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

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 (1058) hide show
  1. package/bundled-realms/pretui/components/doc-report.gts +2 -2
  2. package/bundled-realms/pretui/components/doc-report.usage.gts +3 -3
  3. package/bundled-realms/pretui/components/form-field.md +1 -1
  4. package/bundled-realms/pretui/components/icon-button.md +1 -1
  5. package/bundled-realms/pretui/components/popup.md +1 -1
  6. package/bundled-realms/pretui/components/switch.gts +13 -0
  7. package/bundled-realms/pretui/components/switch.md +5 -3
  8. package/bundled-realms/pretui/components/theme-frame.gts +49 -22
  9. package/bundled-realms/pretui/components/tooltip.gts +141 -42
  10. package/bundled-realms/pretui/components/tooltip.md +10 -12
  11. package/bundled-realms/pretui/components/tooltip.usage.gts +3 -5
  12. package/bundled-realms/pretui/docs/structure.md +1 -1
  13. package/bundled-realms/pretui/internal/overlay.gts +4 -2
  14. package/bundled-realms/pretui/pretui-css.gts +6 -2
  15. package/bundled-realms/pretui/theme-scoped-css.gts +262 -0
  16. package/bundled-test-harness/assets/account-switch-failed-test-DwAZq6Sc.js +45 -0
  17. package/bundled-test-harness/assets/adapter-C_6pnsx1.js +2 -0
  18. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-zMYtJWBv.js +112 -0
  19. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-CwhAV-Ow.js +130 -0
  20. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DNgclkGJ.js +46 -0
  21. package/bundled-test-harness/assets/ai-assistant-test-DGYFiRTb.js +2223 -0
  22. package/bundled-test-harness/assets/ai-function-generation-test-Dj6WzKkh.js +1176 -0
  23. package/bundled-test-harness/assets/ai-module-creation-test-C4zhhxaZ.js +151 -0
  24. package/bundled-test-harness/assets/aibot-message-BShcljQ9.js +1312 -0
  25. package/bundled-test-harness/assets/app-DiEYqT6T.js +14146 -0
  26. package/bundled-test-harness/assets/apply-markdown-edit-test-CPhfeg1i.js +230 -0
  27. package/bundled-test-harness/assets/ask-user-picker-NVRkhKwt.js +370 -0
  28. package/bundled-test-harness/assets/ask-user-picker-test-SsZqFm9W.js +39 -0
  29. package/bundled-test-harness/assets/assistant-transcript-test-DesuBCIB.js +57 -0
  30. package/bundled-test-harness/assets/audio-metadata-extractor-test-8JM6oZXG.js +1176 -0
  31. package/bundled-test-harness/assets/authed-fetch-test-yPTMe-9V.js +73 -0
  32. package/bundled-test-harness/assets/avif-image-def-test-Kyknj908.js +187 -0
  33. package/bundled-test-harness/assets/basic-test-D9OrrMaq.js +139 -0
  34. package/bundled-test-harness/assets/binary-upload-dedupe-test-C0RFmHma.js +308 -0
  35. package/bundled-test-harness/assets/bot-registration-test-Bk2lTaCW.js +97 -0
  36. package/bundled-test-harness/assets/box-test-BbV9sMyU.js +50 -0
  37. package/bundled-test-harness/assets/brand-guide-attachments-test-z4wTsKbI.js +84 -0
  38. package/bundled-test-harness/assets/brand-guide-custom-css-test-BlSJE8xo.js +196 -0
  39. package/bundled-test-harness/assets/brand-guide-edit-test-DJ1OQ6IB.js +140 -0
  40. package/bundled-test-harness/assets/brand-logo-mark-field-test-ux7eetkO.js +86 -0
  41. package/bundled-test-harness/assets/broken-link-template-test-CqB3MWyw.js +192 -0
  42. package/bundled-test-harness/assets/bundled-base-modules-test-B2oNLZSJ.js +54 -0
  43. package/bundled-test-harness/assets/bundled-base-oracle-test-DelPfFjn.js +37 -0
  44. package/bundled-test-harness/assets/buried-stack-item-scroll-test-Ixsl1tS0.js +236 -0
  45. package/bundled-test-harness/assets/button-BvYQm_A1.js +141 -0
  46. package/bundled-test-harness/assets/bxl-cyclic-graph-test-p23WCLRW.js +47 -0
  47. package/bundled-test-harness/assets/bxl-expression-test-CVTQYT_C.js +250 -0
  48. package/bundled-test-harness/assets/bxl-indexing-test-D_A7X2sr.js +212 -0
  49. package/bundled-test-harness/assets/bxl-platform-module-test-Cltfyybp.js +71 -0
  50. package/bundled-test-harness/assets/can-invoke-test-CVfE1l1V.js +455 -0
  51. package/bundled-test-harness/assets/can-read-realm-test-CIz6WX_K.js +56 -0
  52. package/bundled-test-harness/assets/cancel-indexing-job-test-0LlrOgYK.js +69 -0
  53. package/bundled-test-harness/assets/capture-test-diHIWmh0.js +360 -0
  54. package/bundled-test-harness/assets/card-api-test-Ci9b0ghP.js +198 -0
  55. package/bundled-test-harness/assets/card-basics-test-RKQoQWZD.js +5364 -0
  56. package/bundled-test-harness/assets/card-chooser-paging-test-BN21sDpP.js +235 -0
  57. package/bundled-test-harness/assets/card-chooser-test-C9jDiIgM.js +393 -0
  58. package/bundled-test-harness/assets/card-context-search-results-KmkXJbmC.js +30 -0
  59. package/bundled-test-harness/assets/card-context-search-results-test-CpMr8OlX.js +184 -0
  60. package/bundled-test-harness/assets/card-def-field-def-relationships-test-D_30xak6.js +562 -0
  61. package/bundled-test-harness/assets/card-def-menu-items-test-ohuHc0b4.js +228 -0
  62. package/bundled-test-harness/assets/card-delete-test-BlsD9Xw4.js +466 -0
  63. package/bundled-test-harness/assets/card-error-3q1o3i0e.js +72 -0
  64. package/bundled-test-harness/assets/card-error-awaiting-index-test-DPgYKfbF.js +53 -0
  65. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-CVfeJyjt.js +219 -0
  66. package/bundled-test-harness/assets/card-playground-test-D-7bi4PQ.js +1491 -0
  67. package/bundled-test-harness/assets/card-prerender-DemTfK_a.js +12939 -0
  68. package/bundled-test-harness/assets/card-thunk-error-test-DCBh1vRT.js +48 -0
  69. package/bundled-test-harness/assets/card-type-service-test-DXPrfVYk.js +161 -0
  70. package/bundled-test-harness/assets/check-correctness-test-DjE7r1X2.js +1093 -0
  71. package/bundled-test-harness/assets/check-domain-availability-test-U10xSKbY.js +98 -0
  72. package/bundled-test-harness/assets/chip-0r_r9SC8.js +44 -0
  73. package/bundled-test-harness/assets/choreo-CZUXQKjf.js +1110 -0
  74. package/bundled-test-harness/assets/choreo-D8RcLuoq.js +2 -0
  75. package/bundled-test-harness/assets/choreo-feature-reel-test-DRGloCAJ.js +155 -0
  76. package/bundled-test-harness/assets/choreo-gallery-build-order-test-BR-r7gaw.js +436 -0
  77. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CWRLfcNT.js +399 -0
  78. package/bundled-test-harness/assets/choreo-gallery-cover-test-BT05gNKC.js +214 -0
  79. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-WJ7FmjYi.js +133 -0
  80. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-C-yxdVT_.js +42 -0
  81. package/bundled-test-harness/assets/choreo-gallery-drift-test-HX1mK3od.js +620 -0
  82. package/bundled-test-harness/assets/choreo-gallery-escort-test-jZEVk_V4.js +187 -0
  83. package/bundled-test-harness/assets/choreo-gallery-films-test-DLDQzsxb.js +140 -0
  84. package/bundled-test-harness/assets/choreo-gallery-filter-test-BJv8KEeP.js +46 -0
  85. package/bundled-test-harness/assets/choreo-gallery-fold-test-BssKC8A8.js +180 -0
  86. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-DS41eNNV.js +114 -0
  87. package/bundled-test-harness/assets/choreo-gallery-guides-test-DTj7yEKp.js +321 -0
  88. package/bundled-test-harness/assets/choreo-gallery-hang-test-BqJLmeFF.js +426 -0
  89. package/bundled-test-harness/assets/choreo-gallery-highlight-test-B1Q7-ICm.js +60 -0
  90. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-7My9lVam.js +370 -0
  91. package/bundled-test-harness/assets/choreo-gallery-interruption-test-BlIAaGrw.js +176 -0
  92. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-C9NnYIP8.js +104 -0
  93. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CWzXkvbW.js +193 -0
  94. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-CwdiZWeI.js +111 -0
  95. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-D55fxwTn.js +127 -0
  96. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-D8Wxv0lb.js +100 -0
  97. package/bundled-test-harness/assets/choreo-gallery-presentation-test-BLoWfp6G.js +157 -0
  98. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-D5XxTBDS.js +145 -0
  99. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-DrHTTvss.js +89 -0
  100. package/bundled-test-harness/assets/choreo-gallery-sheet-test-BFVdnM_b.js +48 -0
  101. package/bundled-test-harness/assets/choreo-gallery-site-test-BhEBHdvI.js +237 -0
  102. package/bundled-test-harness/assets/choreo-gallery-stage-DcKKsdcu.js +256 -0
  103. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-Fcc6SC3F.js +102 -0
  104. package/bundled-test-harness/assets/choreo-gallery-stages-test-Cb-ADpxK.js +35 -0
  105. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-DMJ6C9FW.js +138 -0
  106. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CAjSUdLJ.js +144 -0
  107. package/bundled-test-harness/assets/choreo-gallery-theater-test-B-3IZMj9.js +252 -0
  108. package/bundled-test-harness/assets/choreo-gallery-tuning-test-BVxK5Ry_.js +95 -0
  109. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-uWBH1EKE.js +88 -0
  110. package/bundled-test-harness/assets/choreo-gallery-wires-test-Bo4Sd1Vn.js +148 -0
  111. package/bundled-test-harness/assets/client-telemetry-test-DFM4mML2.js +340 -0
  112. package/bundled-test-harness/assets/clip-DY6N6K67.js +92 -0
  113. package/bundled-test-harness/assets/clip-DzXoPdp-.js +2 -0
  114. package/bundled-test-harness/assets/code-block-DRE8KQZQ.js +502 -0
  115. package/bundled-test-harness/assets/code-ref-test-CDcqE8_C.js +163 -0
  116. package/bundled-test-harness/assets/code-submode-availability-test-DPTqZYYm.js +198 -0
  117. package/bundled-test-harness/assets/code-submode-test-AHV4mzJ4.js +1839 -0
  118. package/bundled-test-harness/assets/codeblocks-test-D6ijVvEL.js +418 -0
  119. package/bundled-test-harness/assets/codemirror-editor-test-BeAMVivu.js +1512 -0
  120. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bnb7_KUT.js +366 -0
  121. package/bundled-test-harness/assets/color-field-test-CR6gGEqE.js +212 -0
  122. package/bundled-test-harness/assets/compaction-test-CjEsY0uG.js +150 -0
  123. package/bundled-test-harness/assets/computed-test-DtyZGgdc.js +1320 -0
  124. package/bundled-test-harness/assets/container-BYGZImLU.css +5101 -0
  125. package/bundled-test-harness/assets/container-CBZZ8uFw.js +10925 -0
  126. package/bundled-test-harness/assets/content-preview-components-test-BztI4fz-.js +462 -0
  127. package/bundled-test-harness/assets/copy-and-edit-test-Cqw7kcur.js +292 -0
  128. package/bundled-test-harness/assets/copy-card-test-D5m3eVEH.js +218 -0
  129. package/bundled-test-harness/assets/copy-file-to-realm-test-FPY-6Ddm.js +148 -0
  130. package/bundled-test-harness/assets/copy-source-test-9pJD-qey.js +56 -0
  131. package/bundled-test-harness/assets/create-file-test-DjMf88u_.js +1086 -0
  132. package/bundled-test-harness/assets/create-file-test-XbgOqg38.js +464 -0
  133. package/bundled-test-harness/assets/create-listing-modal-test-De7b4vu3.js +273 -0
  134. package/bundled-test-harness/assets/create-listing-pr-request-test-CBtIV0Z8.js +117 -0
  135. package/bundled-test-harness/assets/create-spec-test-4xR0gM7E.js +256 -0
  136. package/bundled-test-harness/assets/create-submission-workflow-test-DQpWrpGT.js +132 -0
  137. package/bundled-test-harness/assets/create-workspace-test-BQAudgpS.js +104 -0
  138. package/bundled-test-harness/assets/credential-fields-test-DXKBdbZD.js +200 -0
  139. package/bundled-test-harness/assets/csv-file-def-test-Cnp4y834.js +102 -0
  140. package/bundled-test-harness/assets/dashboard-CmuOhIYC.js +3628 -0
  141. package/bundled-test-harness/assets/dashboard-CzN49x74.css +2400 -0
  142. package/bundled-test-harness/assets/dashboard-add-workspace-test-T32hWB-g.js +50 -0
  143. package/bundled-test-harness/assets/dashboard-agents-test-BN5maCgQ.js +334 -0
  144. package/bundled-test-harness/assets/dashboard-archive-test-BzwUte_Z.js +128 -0
  145. package/bundled-test-harness/assets/dashboard-delete-test-D2Gcp81V.js +163 -0
  146. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-BgKNIr35.js +71 -0
  147. package/bundled-test-harness/assets/dashboard-duplicate-test-D7JEWylc.js +222 -0
  148. package/bundled-test-harness/assets/dashboard-get-started-test-DOGPzGoA.js +374 -0
  149. package/bundled-test-harness/assets/dashboard-ir2bakJS.js +142 -0
  150. package/bundled-test-harness/assets/dashboard-pinned-cards-test-Bn_P9xJU.js +220 -0
  151. package/bundled-test-harness/assets/dashboard-publish-test-64sGQ0nG.js +70 -0
  152. package/bundled-test-harness/assets/dashboard-reindex-test-DJjYq1ct.js +115 -0
  153. package/bundled-test-harness/assets/dashboard-section-rail-test-ZkAhWu5V.js +169 -0
  154. package/bundled-test-harness/assets/dashboard-state-test-BbkpPB5L.js +162 -0
  155. package/bundled-test-harness/assets/dashboard-test-CBLdPrSt.js +545 -0
  156. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DFT3R1Zx.js +62 -0
  157. package/bundled-test-harness/assets/dashboard-workspace-test-DqBdCFo2.js +537 -0
  158. package/bundled-test-harness/assets/dashboard-workspaces-section-test-CH1HDfxR.js +410 -0
  159. package/bundled-test-harness/assets/data-file-def-preview-test-CNsZwQEJ.js +155 -0
  160. package/bundled-test-harness/assets/date-time-fields-test-CEFaZTnF.js +359 -0
  161. package/bundled-test-harness/assets/debug-message-test-Ck3BfFv3.js +117 -0
  162. package/bundled-test-harness/assets/declared-captures-test-C-0yPRU7.js +879 -0
  163. package/bundled-test-harness/assets/delete-workspace-test-CZOwGy78.js +102 -0
  164. package/bundled-test-harness/assets/diffing-test-BEKI905O.js +210 -0
  165. package/bundled-test-harness/assets/download-file-to-realm-test-C1kAGDll.js +119 -0
  166. package/bundled-test-harness/assets/editor-test-C9x5ZY6g.js +688 -0
  167. package/bundled-test-harness/assets/edits-D76-aanh.js +651 -0
  168. package/bundled-test-harness/assets/email-field-test-LGkrB_2B.js +75 -0
  169. package/bundled-test-harness/assets/enum-field-test-CPyV1J-m.js +935 -0
  170. package/bundled-test-harness/assets/error-display-test-bWuUtfIG.js +343 -0
  171. package/bundled-test-harness/assets/evaluate-module-test-CbS5h8t3.js +91 -0
  172. package/bundled-test-harness/assets/execute-atomic-operations-test-B4Kfco0k.js +113 -0
  173. package/bundled-test-harness/assets/externals-k-2ZBepK.js +4393 -0
  174. package/bundled-test-harness/assets/fallback-banner-live-delete-test-CuFiH1D8.js +207 -0
  175. package/bundled-test-harness/assets/fallback-banner-test-CqSRN7D8.js +225 -0
  176. package/bundled-test-harness/assets/fallback-banner-test-DQkrFE4-.js +53 -0
  177. package/bundled-test-harness/assets/fallback-models-test-BWekNxC0.js +161 -0
  178. package/bundled-test-harness/assets/fetch-card-json-test-DULUqUEu.js +61 -0
  179. package/bundled-test-harness/assets/field-configuration-test-BXZq28xa.js +551 -0
  180. package/bundled-test-harness/assets/field-markdown-domain-test-DdXCifs6.js +616 -0
  181. package/bundled-test-harness/assets/field-markdown-oversize-test-DouPPTHX.js +88 -0
  182. package/bundled-test-harness/assets/field-markdown-primitives-test-DSRGJeyl.js +365 -0
  183. package/bundled-test-harness/assets/field-markdown-specialized-test-DlTYLl_s.js +534 -0
  184. package/bundled-test-harness/assets/field-playground-test-NhS4VvoN.js +894 -0
  185. package/bundled-test-harness/assets/field-support-predicates-test-DWpyT1Qf.js +167 -0
  186. package/bundled-test-harness/assets/file-attachment-test-LwZf-BSY.js +796 -0
  187. package/bundled-test-harness/assets/file-chooser-panel-test-DuAqD9bn.js +153 -0
  188. package/bundled-test-harness/assets/file-chooser-test-CjaXXwpT.js +504 -0
  189. package/bundled-test-harness/assets/file-def-format-templates-test-BDs4OmHq.js +380 -0
  190. package/bundled-test-harness/assets/file-def-live-reload-test-BqTdnq-W.js +124 -0
  191. package/bundled-test-harness/assets/file-def-menu-items-test-DqdINXsD.js +138 -0
  192. package/bundled-test-harness/assets/file-def-navigation-test-BPGr0SQy.js +109 -0
  193. package/bundled-test-harness/assets/file-def-serialization-test-CvjW-FlC.js +89 -0
  194. package/bundled-test-harness/assets/file-def-test-C-Yv_NjS.js +216 -0
  195. package/bundled-test-harness/assets/file-preview-live-reload-test-MzwGwasU.js +310 -0
  196. package/bundled-test-harness/assets/file-resource-primitives-test-D3GmfqNs.js +255 -0
  197. package/bundled-test-harness/assets/file-tree-from-index-test-CfldnUgm.js +96 -0
  198. package/bundled-test-harness/assets/file-tree-test--0ZCPRe9.js +851 -0
  199. package/bundled-test-harness/assets/file-view-model-test-BDIAeBV8.js +346 -0
  200. package/bundled-test-harness/assets/filedef-export-shape-test-B2tgU404.js +61 -0
  201. package/bundled-test-harness/assets/film-Bf73ypzi.js +4074 -0
  202. package/bundled-test-harness/assets/film-C54lhaiU.js +2 -0
  203. package/bundled-test-harness/assets/film-DPcMEHYu.js +13 -0
  204. package/bundled-test-harness/assets/flac-audio-def-test-ByoXMoQ1.js +143 -0
  205. package/bundled-test-harness/assets/font-metadata-extractor-test-hawLTDTG.js +415 -0
  206. package/bundled-test-harness/assets/formatted-aibot-message-test-BahBj3x8.js +109 -0
  207. package/bundled-test-harness/assets/formatted-user-message-test-CodbrU3t.js +43 -0
  208. package/bundled-test-harness/assets/freestyle-test-faQhSciz.js +17 -0
  209. package/bundled-test-harness/assets/full-reindex-realm-test-CE5RJTIC.js +101 -0
  210. package/bundled-test-harness/assets/garbage-collection-test-v-3sev77.js +403 -0
  211. package/bundled-test-harness/assets/general-test-DKZPBtSb.js +923 -0
  212. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-CucWyrkH.js +65 -0
  213. package/bundled-test-harness/assets/generic-file-def-preview-test-_EDRsebi.js +71 -0
  214. package/bundled-test-harness/assets/get-available-realm-identifiers-test-CV023yek.js +47 -0
  215. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test--DOu3DyV.js +47 -0
  216. package/bundled-test-harness/assets/get-default-writable-realm-test-Bic8jl6R.js +54 -0
  217. package/bundled-test-harness/assets/get-published-realms-test-DrA5YcFN.js +71 -0
  218. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-jfU6SIWn.js +54 -0
  219. package/bundled-test-harness/assets/get-relationship-membership-state-test-Ccy2Z7MN.js +1308 -0
  220. package/bundled-test-harness/assets/get-user-system-card-test-Bmq2lmWv.js +67 -0
  221. package/bundled-test-harness/assets/gif-image-def-test-N1mMQC-X.js +188 -0
  222. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BkUDjiTs.js +160 -0
  223. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-DsFWCzTs.js +74 -0
  224. package/bundled-test-harness/assets/gts-file-def-test-BL1jpQ9J.js +100 -0
  225. package/bundled-test-harness/assets/head-format-preview-test-BVCaPQqc.js +158 -0
  226. package/bundled-test-harness/assets/helpers-Ds68JxHe.js +5 -0
  227. package/bundled-test-harness/assets/host-mode-service-B4bisRdR.js +262 -0
  228. package/bundled-test-harness/assets/host-mode-test-BmkN2PCJ.js +831 -0
  229. package/bundled-test-harness/assets/host-submode-test-C6SxQ796.js +1392 -0
  230. package/bundled-test-harness/assets/html-component-test-CNQ9wF0Q.js +65 -0
  231. package/bundled-test-harness/assets/html-def-test-BcaCVVQq.js +160 -0
  232. package/bundled-test-harness/assets/html-meta-extractor-test-BU1hjkTp.js +60 -0
  233. package/bundled-test-harness/assets/hydratable-card-test-CX6MWiti.js +426 -0
  234. package/bundled-test-harness/assets/icon-button-C1zH38Nc.js +67 -0
  235. package/bundled-test-harness/assets/image-metadata-extractor-test-CakSBPZ_.js +1109 -0
  236. package/bundled-test-harness/assets/index-changes-test-D8RtgfyG.js +367 -0
  237. package/bundled-test-harness/assets/index-query-engine-test-BETfoYOK.js +2593 -0
  238. package/bundled-test-harness/assets/index-writer-test-B_bR2fjw.js +3040 -0
  239. package/bundled-test-harness/assets/inspector-test-BwPXJj1S.js +2058 -0
  240. package/bundled-test-harness/assets/instance-filter-matcher-test-BSVCg59b.js +788 -0
  241. package/bundled-test-harness/assets/instantiate-card-test-BVQhZjpq.js +164 -0
  242. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DzQLG41H.js +475 -0
  243. package/bundled-test-harness/assets/interact-submode-setup-C5bKXq73.js +566 -0
  244. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-Cd3dpjhB.js +99 -0
  245. package/bundled-test-harness/assets/invite-user-to-room-test-Brabz1tt.js +142 -0
  246. package/bundled-test-harness/assets/invoke-card-operation-test-C1Q1FUf4.js +333 -0
  247. package/bundled-test-harness/assets/isolated-render-test-BLJfS7BU.js +51 -0
  248. package/bundled-test-harness/assets/job-scoped-doc-cache-test-Bgv5woaB.js +181 -0
  249. package/bundled-test-harness/assets/job-scoped-instance-residency-test-C_bB6KpR.js +103 -0
  250. package/bundled-test-harness/assets/jpg-image-def-test-gdLIKocD.js +697 -0
  251. package/bundled-test-harness/assets/json-file-def-test-CPYMRBY-.js +95 -0
  252. package/bundled-test-harness/assets/key-notices-badge-test-DemslfLw.js +155 -0
  253. package/bundled-test-harness/assets/key-readiness-test-5tq5JycL.js +190 -0
  254. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-BbhDZ2PH.js +398 -0
  255. package/bundled-test-harness/assets/linksto-error-sentinel-test-C2t7fFPi.js +238 -0
  256. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test--U_UvUty.js +354 -0
  257. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-Dj3Xy0ZF.js +303 -0
  258. package/bundled-test-harness/assets/linksto-sentinel-reload-test-D0dK4Jjs.js +197 -0
  259. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test---IYiXok.js +260 -0
  260. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CT04MhES.js +196 -0
  261. package/bundled-test-harness/assets/lint-and-fix-test-aadgx7rX.js +51 -0
  262. package/bundled-test-harness/assets/live-test-BGij_vuc.js +100 -0
  263. package/bundled-test-harness/assets/live-test-CppvValf.js +2 -0
  264. package/bundled-test-harness/assets/load-default-skills-test-Cp2m_ebp.js +74 -0
  265. package/bundled-test-harness/assets/loader-parallel-prefetch-test-vU_26Jqu.js +257 -0
  266. package/bundled-test-harness/assets/loader-test-CTaw8K_B.js +482 -0
  267. package/bundled-test-harness/assets/loading-test-DGGt4qZZ.js +63 -0
  268. package/bundled-test-harness/assets/m4a-audio-def-test-DAiReOXH.js +190 -0
  269. package/bundled-test-harness/assets/main-bXHwJ0CN.js +5 -0
  270. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-CIXq9FqR.js +470 -0
  271. package/bundled-test-harness/assets/markdown-embed-chooser-test-zFGh9WfP.js +334 -0
  272. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-Byn_WFwY.js +447 -0
  273. package/bundled-test-harness/assets/markdown-embed-preview-test-Y3iFMttg.js +368 -0
  274. package/bundled-test-harness/assets/markdown-fallback-test-Br1TPkLZ.js +316 -0
  275. package/bundled-test-harness/assets/markdown-file-def-test-Crm2MAnq.js +380 -0
  276. package/bundled-test-harness/assets/markdown-helpers-test-CZ9Vvywc.js +188 -0
  277. package/bundled-test-harness/assets/markdown-highlighting-test-CFMkoVDl.js +244 -0
  278. package/bundled-test-harness/assets/markdown-preview-lOh-MyqF.js +72 -0
  279. package/bundled-test-harness/assets/markdown-preview-test-B8w0fFIy.js +238 -0
  280. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-aH6HQly1.js +146 -0
  281. package/bundled-test-harness/assets/markdown-skill-search-test-CiNLQs-5.js +80 -0
  282. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-DaA8w1Jj.js +63 -0
  283. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-21GIlf55.js +300 -0
  284. package/bundled-test-harness/assets/matrix-service-personal-realm-test-jn9DUENm.js +125 -0
  285. package/bundled-test-harness/assets/matrix-service-realm-servers-test-eNZVJakl.js +55 -0
  286. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-Cabm8_dY.js +132 -0
  287. package/bundled-test-harness/assets/matrix-service-relogin-test-C77EFgjc.js +59 -0
  288. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-BgM0fPiO.js +35 -0
  289. package/bundled-test-harness/assets/menu-Cl50TSFe.js +3561 -0
  290. package/bundled-test-harness/assets/message-service-subscription-test-CfEqH2jP.js +110 -0
  291. package/bundled-test-harness/assets/message-service-test-DsTzH1In.js +144 -0
  292. package/bundled-test-harness/assets/message-tool-test-C5xVfTtj.js +33 -0
  293. package/bundled-test-harness/assets/midi-audio-def-test-goLRCNCZ.js +182 -0
  294. package/bundled-test-harness/assets/migrate-skill-test-yPCbVfxG.js +161 -0
  295. package/bundled-test-harness/assets/mini-YXjrY_tH.js +1404 -0
  296. package/bundled-test-harness/assets/mini-card-chooser-test-DrllikHB.js +272 -0
  297. package/bundled-test-harness/assets/mini-file-chooser-test-BfqayhmI.js +201 -0
  298. package/bundled-test-harness/assets/mock-matrix-C7BrPS6S.js +2 -0
  299. package/bundled-test-harness/assets/mock-matrix-FjsXmU7-.js +15107 -0
  300. package/bundled-test-harness/assets/modal-BgaZavcs.js +322 -0
  301. package/bundled-test-harness/assets/model-cost-tier-test-BGg-sJML.js +174 -0
  302. package/bundled-test-harness/assets/model-file-extract-test-CjEBupY5.js +206 -0
  303. package/bundled-test-harness/assets/module-transpile-cache-test-XW6DDsmz.js +67 -0
  304. package/bundled-test-harness/assets/monaco-test-DkoRuFiQ.js +100 -0
  305. package/bundled-test-harness/assets/mp3-audio-def-test-v369NNsQ.js +133 -0
  306. package/bundled-test-harness/assets/multiple-stacks-test-CJpYPWdM.js +208 -0
  307. package/bundled-test-harness/assets/nested-query-field-render-test-CfDrBcUN.js +249 -0
  308. package/bundled-test-harness/assets/no-stacks-test-MmsJeLpz.js +48 -0
  309. package/bundled-test-harness/assets/number-field-test-A7B2r0M5.js +184 -0
  310. package/bundled-test-harness/assets/office-file-def-test-BNRvFmCB.js +263 -0
  311. package/bundled-test-harness/assets/office-metadata-extractor-test-zlDoEIEp.js +218 -0
  312. package/bundled-test-harness/assets/office-poster-capture-test-DdFEaOxR.js +203 -0
  313. package/bundled-test-harness/assets/ogg-audio-def-test-kk91BzQY.js +196 -0
  314. package/bundled-test-harness/assets/open-create-listing-modal-test-D1Dl1pov.js +131 -0
  315. package/bundled-test-harness/assets/open-image-in-new-tab-test-DyCmdMyO.js +52 -0
  316. package/bundled-test-harness/assets/open-secure-window-test-dz1vPudF.js +253 -0
  317. package/bundled-test-harness/assets/open-workspace-test-BvTcskzP.js +46 -0
  318. package/bundled-test-harness/assets/operation-lowering-test-omU66bkJ.js +2957 -0
  319. package/bundled-test-harness/assets/operations-invocation-test-BMj42rQe.js +523 -0
  320. package/bundled-test-harness/assets/operations-optimistic-test-KJLyzT8v.js +203 -0
  321. package/bundled-test-harness/assets/operations-query-test-J3HcnaoK.js +459 -0
  322. package/bundled-test-harness/assets/operations-store-reconciliation-test-CkbGBMBQ.js +406 -0
  323. package/bundled-test-harness/assets/operations-test-C7zXXpRW.js +2518 -0
  324. package/bundled-test-harness/assets/operator-mode-acceptance-test-BPolI_RD.js +1195 -0
  325. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DjTQgizt.js +1036 -0
  326. package/bundled-test-harness/assets/operator-mode-links-test-DSEqy5Db.js +797 -0
  327. package/bundled-test-harness/assets/operator-mode-test-CB7BNDNE.js +696 -0
  328. package/bundled-test-harness/assets/operator-mode-ui-test-C1OhF1il.js +1045 -0
  329. package/bundled-test-harness/assets/overlay-D2rQi8lJ.js +427 -0
  330. package/bundled-test-harness/assets/overlay-menu-items-test-CPN31yBJ.js +331 -0
  331. package/bundled-test-harness/assets/overlays-B-qMEPhY.js +2 -0
  332. package/bundled-test-harness/assets/overlays-DSf2je0c.js +75 -0
  333. package/bundled-test-harness/assets/overlays-detached-element-test-C73nMXes.js +56 -0
  334. package/bundled-test-harness/assets/panel-DjrC7DxA.js +15124 -0
  335. package/bundled-test-harness/assets/past-sessions-test-BSIS2Hlq.js +321 -0
  336. package/bundled-test-harness/assets/patch-fields-test-Bp2IE0Jw.js +1014 -0
  337. package/bundled-test-harness/assets/patch-instance-test-DssuRGKP.js +348 -0
  338. package/bundled-test-harness/assets/pdf-file-def-test-Barj9ffD.js +111 -0
  339. package/bundled-test-harness/assets/pdf-metadata-extractor-test-B7KnXcIm.js +130 -0
  340. package/bundled-test-harness/assets/permission-checking-realm-test-BD4O0nen.js +306 -0
  341. package/bundled-test-harness/assets/persist-module-inspector-view-test-BIdbkdPr.js +60 -0
  342. package/bundled-test-harness/assets/persist-scroll-position-test-Bhb7wJiy.js +254 -0
  343. package/bundled-test-harness/assets/phone-number-field-test-C2yuCrXY.js +73 -0
  344. package/bundled-test-harness/assets/pill-menu-test-BIp91YXi.js +60 -0
  345. package/bundled-test-harness/assets/plate-CJq1veVA.js +41 -0
  346. package/bundled-test-harness/assets/plate-CwAvOUfL.js +2 -0
  347. package/bundled-test-harness/assets/player-Digk7omr.js +2 -0
  348. package/bundled-test-harness/assets/player-vsjosoN_.js +82 -0
  349. package/bundled-test-harness/assets/playground-B02e8uqB.js +58 -0
  350. package/bundled-test-harness/assets/plural-field-components-test-C1acuN-A.js +198 -0
  351. package/bundled-test-harness/assets/png-image-def-test-B9QeVo1f.js +266 -0
  352. package/bundled-test-harness/assets/policy-audit-confirmation-test-CeVquvc_.js +155 -0
  353. package/bundled-test-harness/assets/policy-scoped-search-test-SFPiIqR3.js +339 -0
  354. package/bundled-test-harness/assets/prerender-file-extract-test-HSJKAHyO.js +346 -0
  355. package/bundled-test-harness/assets/prerender-html-test-BTAcFCme.js +670 -0
  356. package/bundled-test-harness/assets/prerender-meta-test-Csyz2b21.js +614 -0
  357. package/bundled-test-harness/assets/prerender-module-test-DpTYAbmI.js +409 -0
  358. package/bundled-test-harness/assets/prerender-persistence-block-test-BhIt-7kK.js +124 -0
  359. package/bundled-test-harness/assets/prerender-pre-model-error-test-DxKPQKqx.js +61 -0
  360. package/bundled-test-harness/assets/prerender-serialize-cycle-test-C8V5YWQO.js +134 -0
  361. package/bundled-test-harness/assets/prerendered-html-read-test-Cq7JVGwg.js +191 -0
  362. package/bundled-test-harness/assets/pretui-components-test-Ducr9fLT.css +743 -0
  363. package/bundled-test-harness/assets/pretui-components-test-Hs0uyIUQ.js +992 -0
  364. package/bundled-test-harness/assets/pretui-primitives-CRs8NRm0.js +69 -0
  365. package/bundled-test-harness/assets/preview-format-test-cCqLrfdY.js +103 -0
  366. package/bundled-test-harness/assets/preview-test-BMqJSoR1.js +474 -0
  367. package/bundled-test-harness/assets/process-card-test-578tfDvr.js +94 -0
  368. package/bundled-test-harness/assets/profile-settings-modal-CVnNl7Yu.js +990 -0
  369. package/bundled-test-harness/assets/publish-realm-COoeWexp.js +82 -0
  370. package/bundled-test-harness/assets/publish-realm-test-a5nkx0Ov.js +210 -0
  371. package/bundled-test-harness/assets/query-field-barrier-test-qX3xVPfk.js +113 -0
  372. package/bundled-test-harness/assets/query-field-error-sentinel-test-V6JDPFLX.js +201 -0
  373. package/bundled-test-harness/assets/query-field-membership-status-test-CK7eDf-K.js +323 -0
  374. package/bundled-test-harness/assets/query-field-page-optin-test-B5YBHUvU.js +126 -0
  375. package/bundled-test-harness/assets/query-field-schema-test-D4SjOGlK.js +231 -0
  376. package/bundled-test-harness/assets/query-field-search-throttle-test-BVkm1-D8.js +154 -0
  377. package/bundled-test-harness/assets/query-field-stale-prerender-test-9g7hcD91.js +152 -0
  378. package/bundled-test-harness/assets/query-fields-test-CQYqhzpN.js +535 -0
  379. package/bundled-test-harness/assets/quick-look-test-CE0o6lJ4.js +139 -0
  380. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D0mJorwH.js +91 -0
  381. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-B_F_2GEB.js +45 -0
  382. package/bundled-test-harness/assets/read-source-test-BgJV4B4F.js +67 -0
  383. package/bundled-test-harness/assets/read-text-file-test-DaeLzg4u.js +124 -0
  384. package/bundled-test-harness/assets/realm-C_a9su1j.js +2858 -0
  385. package/bundled-test-harness/assets/realm-api-keys-D5USFOoS.js +2 -0
  386. package/bundled-test-harness/assets/realm-api-keys-m_VOcixC.js +578 -0
  387. package/bundled-test-harness/assets/realm-api-keys-test-BVs7f5Dz.js +109 -0
  388. package/bundled-test-harness/assets/realm-api-keys-test-C_uZnTmq.js +588 -0
  389. package/bundled-test-harness/assets/realm-config-m5eccPW8.js +833 -0
  390. package/bundled-test-harness/assets/realm-config-policy-standing-test-Ber-IXpc.js +290 -0
  391. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-3Xqt5VlM.js +274 -0
  392. package/bundled-test-harness/assets/realm-config-settings-test-CkalhbDF.js +187 -0
  393. package/bundled-test-harness/assets/realm-field-test-B_PUoqnk.js +100 -0
  394. package/bundled-test-harness/assets/realm-indexing-test-8iLjeV_e.js +4380 -0
  395. package/bundled-test-harness/assets/realm-policy-fitted-test-Bptvra0U.js +206 -0
  396. package/bundled-test-harness/assets/realm-policy-test-DwG0qqXE.js +1141 -0
  397. package/bundled-test-harness/assets/realm-querying-test-Dvw26A6Q.js +1067 -0
  398. package/bundled-test-harness/assets/realm-server-form-agnostic-test-DrXQH0UP.js +96 -0
  399. package/bundled-test-harness/assets/realm-server-subscriber-test-Dkj23vQK.js +46 -0
  400. package/bundled-test-harness/assets/realm-service-info-test-CdRlDhj-.js +67 -0
  401. package/bundled-test-harness/assets/realm-test-DGYN48Qx.js +2364 -0
  402. package/bundled-test-harness/assets/realm-token-refresh-test-CEWATL9h.js +153 -0
  403. package/bundled-test-harness/assets/realm-url-tooltip-test-8ZjTNPuy.js +78 -0
  404. package/bundled-test-harness/assets/reasoning-test-BV49AYg2.js +221 -0
  405. package/bundled-test-harness/assets/recent-files-test-Dc6L6Dm4.js +450 -0
  406. package/bundled-test-harness/assets/reindex-realm-test-CFRSt39u.js +117 -0
  407. package/bundled-test-harness/assets/relationship-loading-state-test-FKbtOFUr.js +290 -0
  408. package/bundled-test-harness/assets/remix-card-test-CKGC_Sgq.js +58 -0
  409. package/bundled-test-harness/assets/rendered-markdown-DXiDN91F.js +292 -0
  410. package/bundled-test-harness/assets/rendered-markdown-test-n3MlXmmu.js +587 -0
  411. package/bundled-test-harness/assets/resident-instance-reuse-test-BjdhE6CM.js +82 -0
  412. package/bundled-test-harness/assets/result-tile-o6dtjgX4.js +144 -0
  413. package/bundled-test-harness/assets/rich-markdown-field-test-VXr6l20h.js +1647 -0
  414. package/bundled-test-harness/assets/room-message-test-BrjJ2wMs.js +484 -0
  415. package/bundled-test-harness/assets/run-P_7TsreC.js +4017 -0
  416. package/bundled-test-harness/assets/run-realm-code-DsBUf1si.js +2964 -0
  417. package/bundled-test-harness/assets/run-realm-code-test-cS0DzaKo.js +3844 -0
  418. package/bundled-test-harness/assets/sanitize-module-list-test-CvuOOiUY.js +85 -0
  419. package/bundled-test-harness/assets/save-card-skip-index-wait-test-fpJ1eq32.js +89 -0
  420. package/bundled-test-harness/assets/schema-editor-test-NkKjCgyf.js +785 -0
  421. package/bundled-test-harness/assets/schema-generation-test-Dmg3lWl7.js +28 -0
  422. package/bundled-test-harness/assets/scrolling-test-B0GNYGYc.js +412 -0
  423. package/bundled-test-harness/assets/search-adorn-test-CZebk7_y.js +136 -0
  424. package/bundled-test-harness/assets/search-and-choose-test-Bd4NZUup.js +154 -0
  425. package/bundled-test-harness/assets/search-correlation-id-test-DXKlEO55.js +139 -0
  426. package/bundled-test-harness/assets/search-entries-result-test-QQawA8Fm.js +234 -0
  427. package/bundled-test-harness/assets/search-entries-test-3DlqGPQq.js +1486 -0
  428. package/bundled-test-harness/assets/search-entries-tool-test-D1TvDE9D.js +504 -0
  429. package/bundled-test-harness/assets/search-google-images-test-DqsoQGr1.js +166 -0
  430. package/bundled-test-harness/assets/search-results-DGrNaPxh.js +266 -0
  431. package/bundled-test-harness/assets/search-results-test-CqVHYNRt.js +578 -0
  432. package/bundled-test-harness/assets/search-selection-menu-test-D6bIjKiH.js +108 -0
  433. package/bundled-test-harness/assets/search-sheet-files-test-Bf37TQXo.js +126 -0
  434. package/bundled-test-harness/assets/search-sheet-persistence-test-CV4_XdxR.js +131 -0
  435. package/bundled-test-harness/assets/search-test-Dlb-wg3a.js +2249 -0
  436. package/bundled-test-harness/assets/search-tool-test-BJLgVMoL.js +156 -0
  437. package/bundled-test-harness/assets/searchable-option-test-CcbfMqIL.js +322 -0
  438. package/bundled-test-harness/assets/searchable-search-doc-test-yH9fLGNS.js +1271 -0
  439. package/bundled-test-harness/assets/section-rail-CNFCebtT.js +113 -0
  440. package/bundled-test-harness/assets/section-rail-test-KNJAWWl6.js +256 -0
  441. package/bundled-test-harness/assets/secure-sign-in-Dyljp0Th.js +174 -0
  442. package/bundled-test-harness/assets/secure-sign-in-test-QnqNuTP3.js +373 -0
  443. package/bundled-test-harness/assets/segmented-control-DxJdoJ4Z.js +173 -0
  444. package/bundled-test-harness/assets/select-BiQTg2ts.js +175 -0
  445. package/bundled-test-harness/assets/send-ai-assistant-message-test-CAn7M2dZ.js +52 -0
  446. package/bundled-test-harness/assets/send-bot-trigger-event-test-qBu5E_jy.js +56 -0
  447. package/bundled-test-harness/assets/send-request-via-proxy-test-CLuwLBq_.js +380 -0
  448. package/bundled-test-harness/assets/sending-test-H0AaBSgi.js +659 -0
  449. package/bundled-test-harness/assets/serialization-rri-form-audit-test-hMJukiKt.js +136 -0
  450. package/bundled-test-harness/assets/serialization-test-W5e3wKbz.js +8758 -0
  451. package/bundled-test-harness/assets/set-user-system-card-test-CjgWLkNV.js +59 -0
  452. package/bundled-test-harness/assets/setup-CssMNvui.js +772 -0
  453. package/bundled-test-harness/assets/setup-D8YXvK-p.js +2 -0
  454. package/bundled-test-harness/assets/shared-link-target-reuse-test-D42UO8DC.js +207 -0
  455. package/bundled-test-harness/assets/show-card-test-CHEaS514.js +365 -0
  456. package/bundled-test-harness/assets/signed-capture-link-test-BgEu0F-S.js +132 -0
  457. package/bundled-test-harness/assets/single-stack-test-DYcu_v7Z.js +652 -0
  458. package/bundled-test-harness/assets/skills-test-ChmKhADX.js +648 -0
  459. package/bundled-test-harness/assets/skip-boot-index-guard-test-BzRIncDN.js +46 -0
  460. package/bundled-test-harness/assets/spec-test-BYvFR6Xb.js +1077 -0
  461. package/bundled-test-harness/assets/spinner-Bx9x55NA.js +49 -0
  462. package/bundled-test-harness/assets/src-C1hYFgVl.js +216 -0
  463. package/bundled-test-harness/assets/src-CIlLx7Lu.js +5 -0
  464. package/bundled-test-harness/assets/stick-to-bottom-resize-test-DMHsAG0v.js +56 -0
  465. package/bundled-test-harness/assets/store-add-test-D_9IHQjZ.js +50 -0
  466. package/bundled-test-harness/assets/store-module-rebuild-test-BRGZoLRV.js +454 -0
  467. package/bundled-test-harness/assets/store-search-test-3G8JHuj2.js +175 -0
  468. package/bundled-test-harness/assets/store-test-BiKKDqqW.js +3672 -0
  469. package/bundled-test-harness/assets/structured-theme-test-11TNsgUW.js +377 -0
  470. package/bundled-test-harness/assets/summarize-session-test-CwzD_ZbD.js +172 -0
  471. package/bundled-test-harness/assets/svg-image-def-test-zV6aMK9q.js +167 -0
  472. package/bundled-test-harness/assets/switch-submode-test-DQU2cP5_.js +168 -0
  473. package/bundled-test-harness/assets/sync-openrouter-models-test-xrXVaC2H.js +97 -0
  474. package/bundled-test-harness/assets/test-support-BGl3rthw.js +3 -0
  475. package/bundled-test-harness/assets/test-support-BcBv__98.js +99 -0
  476. package/bundled-test-harness/assets/tests-CmM9imwB.js +3598 -0
  477. package/bundled-test-harness/assets/text-file-def-test-Cyq78UFY.js +94 -0
  478. package/bundled-test-harness/assets/text-input-validator-test-DBj7TaM_.js +156 -0
  479. package/bundled-test-harness/assets/text-suggestion-test-C4XAqWqY.js +340 -0
  480. package/bundled-test-harness/assets/theme-card-test-dVNz4tgU.js +621 -0
  481. package/bundled-test-harness/assets/theme-dashboard-nav-test-DYSn5pqo.js +196 -0
  482. package/bundled-test-harness/assets/theme-scheme-island-test-C1WpkfEP.js +264 -0
  483. package/bundled-test-harness/assets/theme-scoped-css-parity-test-BVluppsE.js +176 -0
  484. package/bundled-test-harness/assets/titles-DCvAhECF.js +52 -0
  485. package/bundled-test-harness/assets/titles-ZPeArtS1.js +2 -0
  486. package/bundled-test-harness/assets/to-device-streaming-test-BJ4J1cXe.js +163 -0
  487. package/bundled-test-harness/assets/token-usage-test-WUf4r4fQ.js +160 -0
  488. package/bundled-test-harness/assets/tools-J_Knr_W6.js +774 -0
  489. package/bundled-test-harness/assets/tools-calling-test-CfqZX0Ed.js +200 -0
  490. package/bundled-test-harness/assets/tools-test-B4x58ZmI.js +1624 -0
  491. package/bundled-test-harness/assets/tools-test-Cvau5219.js +3204 -0
  492. package/bundled-test-harness/assets/tooltip-B0rEgyMW.css +66 -0
  493. package/bundled-test-harness/assets/tooltip-DvUMUgVX.js +195 -0
  494. package/bundled-test-harness/assets/transform-cards-test-CYQbZeD9.js +341 -0
  495. package/bundled-test-harness/assets/ts-file-def-preview-test-m39f8Zio.js +95 -0
  496. package/bundled-test-harness/assets/ts-file-def-test-xIcL5xWe.js +92 -0
  497. package/bundled-test-harness/assets/ttf-font-def-test-ClQ2SzFF.js +206 -0
  498. package/bundled-test-harness/assets/turn-settling-test-DZoL2mRT.js +160 -0
  499. package/bundled-test-harness/assets/turn-summary-Bmt7ZxTS.js +1039 -0
  500. package/bundled-test-harness/assets/unpublish-realm-test-0ToTJczx.js +102 -0
  501. package/bundled-test-harness/assets/update-room-skills-test-o_j8NOUV.js +240 -0
  502. package/bundled-test-harness/assets/use-ai-assistant-test-D7HFpxKJ.js +384 -0
  503. package/bundled-test-harness/assets/user-message-BAOt1hS3.js +262 -0
  504. package/bundled-test-harness/assets/validate-realm-test-e3xIbNLB.js +67 -0
  505. package/bundled-test-harness/assets/video-metadata-extractor-test-D8naLSlg.js +520 -0
  506. package/bundled-test-harness/assets/view-visually-test-BuhGau5E.js +335 -0
  507. package/bundled-test-harness/assets/virtual-network-reset-test-CgaFNGPi.js +96 -0
  508. package/bundled-test-harness/assets/wav-audio-def-test-CWG_UdCh.js +160 -0
  509. package/bundled-test-harness/assets/webp-image-def-test-sN4yw8Zu.js +226 -0
  510. package/bundled-test-harness/assets/workspace-0LfPqbYB.js +445 -0
  511. package/bundled-test-harness/assets/workspace-a11y-test-DQxYDRAP.js +197 -0
  512. package/bundled-test-harness/assets/workspace-actions-jGJSfl8M.js +588 -0
  513. package/bundled-test-harness/assets/workspace-behavior-test-BnF-bmBN.js +338 -0
  514. package/bundled-test-harness/assets/workspace-delete-multiple-test-D-rxPDuT.js +212 -0
  515. package/bundled-test-harness/assets/workspace-delete-summary-test-C2-Mve5R.js +63 -0
  516. package/bundled-test-harness/assets/workspace-hosting-test-BvDKdlOb.js +138 -0
  517. package/bundled-test-harness/assets/workspace-indexing-test-B34T3kqD.js +71 -0
  518. package/bundled-test-harness/assets/workspace-test-CJivgv-m.js +51 -0
  519. package/bundled-test-harness/assets/workspace-test-CuSRpPnQ.js +385 -0
  520. package/bundled-test-harness/assets/workspace-timestamp-labels-test-aWgjdbCp.js +68 -0
  521. package/bundled-test-harness/assets/workspace-unit-test-DHMUf2KT.js +122 -0
  522. package/bundled-test-harness/assets/write-binary-file-test-P-hVQuin.js +124 -0
  523. package/bundled-test-harness/assets/write-text-file-test-fXvJueDd.js +191 -0
  524. package/bundled-test-harness/assets/zip-archive-test-C2P5CUSR.js +285 -0
  525. package/bundled-test-harness/assets/zip-file-def-test-BfJZAmGt.js +164 -0
  526. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  527. package/bundled-test-harness/index.html +48 -48
  528. package/bundled-test-harness/tests/index.html +50 -50
  529. package/bundled-types/boxel-ui/helpers/theme-scoped-css.ts +4 -0
  530. package/bundled-types/choreo/choreo.gts +58 -2
  531. package/bundled-types/choreo/compile.ts +5 -0
  532. package/bundled-types/choreo/layout-probe.ts +100 -0
  533. package/bundled-types/choreo/run.ts +99 -4
  534. package/bundled-types/host-app/components/operator-mode/dashboard/get-started.gts +152 -7
  535. package/bundled-types/host-app/components/operator-mode/dashboard/index.gts +2 -0
  536. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +5 -3
  537. package/bundled-types/host-app/components/operator-mode/dashboard-modals/workspace-modals.gts +5 -22
  538. package/bundled-types/host-app/components/operator-mode/host-submode/publishing-realm-popover.gts +1 -1
  539. package/bundled-types/host-app/components/operator-mode/host-submode.gts +111 -37
  540. package/bundled-types/host-app/components/operator-mode/motion/stack-motion.gts +92 -33
  541. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +1 -0
  542. package/bundled-types/host-app/components/operator-mode/stack-item.gts +2 -2
  543. package/bundled-types/host-app/components/operator-mode/stack.gts +36 -25
  544. package/bundled-types/host-app/components/operator-mode/submode-layout.gts +2 -2
  545. package/bundled-types/host-app/lib/modal-focus-trap.ts +33 -0
  546. package/bundled-types/host-app/lib/workspace-actions.ts +21 -0
  547. package/bundled-types/host-app/services/host-mode-service.ts +39 -0
  548. package/bundled-types/host-app/services/realm.ts +14 -0
  549. package/bundled-types/host-tests/helpers/dashboard.ts +67 -0
  550. package/package.json +1 -1
  551. package/bundled-test-harness/assets/account-switch-failed-test-FytUFiPO.js +0 -45
  552. package/bundled-test-harness/assets/adapter-DvmPwSZv.js +0 -2
  553. package/bundled-test-harness/assets/add-field-to-card-definition-tool-test-DN525jiY.js +0 -112
  554. package/bundled-test-harness/assets/ai-assistant-create-workspace-test-q3tKqVJQ.js +0 -130
  555. package/bundled-test-harness/assets/ai-assistant-panel-relogin-test-DgeXcCyi.js +0 -46
  556. package/bundled-test-harness/assets/ai-assistant-test-lDIGPKFP.js +0 -2223
  557. package/bundled-test-harness/assets/ai-function-generation-test-D5GbLyvL.js +0 -1176
  558. package/bundled-test-harness/assets/ai-module-creation-test-I3-j2beD.js +0 -151
  559. package/bundled-test-harness/assets/aibot-message-Dmsjifs6.js +0 -1312
  560. package/bundled-test-harness/assets/app-BS9_-DhN.js +0 -14146
  561. package/bundled-test-harness/assets/apply-markdown-edit-test-4zlwt0Db.js +0 -230
  562. package/bundled-test-harness/assets/ask-user-picker-Dr-0qpNr.js +0 -370
  563. package/bundled-test-harness/assets/ask-user-picker-test-633AFdmS.js +0 -39
  564. package/bundled-test-harness/assets/assistant-transcript-test-BgRnLvMg.js +0 -57
  565. package/bundled-test-harness/assets/audio-metadata-extractor-test-4xsQqL-0.js +0 -1176
  566. package/bundled-test-harness/assets/authed-fetch-test-663mT5_N.js +0 -73
  567. package/bundled-test-harness/assets/avif-image-def-test-h01BPIJy.js +0 -187
  568. package/bundled-test-harness/assets/basic-test-DiD6T-8Q.js +0 -139
  569. package/bundled-test-harness/assets/binary-upload-dedupe-test-CkjMPO_e.js +0 -308
  570. package/bundled-test-harness/assets/bot-registration-test-CFZHpwdj.js +0 -97
  571. package/bundled-test-harness/assets/box-test-C3pSy5ED.js +0 -50
  572. package/bundled-test-harness/assets/brand-guide-attachments-test-EoC_u7Vc.js +0 -84
  573. package/bundled-test-harness/assets/brand-guide-custom-css-test-Dn3fvblr.js +0 -196
  574. package/bundled-test-harness/assets/brand-guide-edit-test-NeiT3MyK.js +0 -140
  575. package/bundled-test-harness/assets/brand-logo-mark-field-test-C2A1EnBB.js +0 -86
  576. package/bundled-test-harness/assets/broken-link-template-test-CWn6V5zZ.js +0 -192
  577. package/bundled-test-harness/assets/bundled-base-modules-test-D7mLzpsw.js +0 -54
  578. package/bundled-test-harness/assets/bundled-base-oracle-test-I7xCId_k.js +0 -37
  579. package/bundled-test-harness/assets/buried-stack-item-scroll-test-DFBev0h-.js +0 -236
  580. package/bundled-test-harness/assets/button-BeSuhveJ.js +0 -207
  581. package/bundled-test-harness/assets/bxl-cyclic-graph-test-DPykwvvx.js +0 -47
  582. package/bundled-test-harness/assets/bxl-expression-test-LBWJiFb9.js +0 -250
  583. package/bundled-test-harness/assets/bxl-indexing-test-BuZmLk7y.js +0 -212
  584. package/bundled-test-harness/assets/bxl-platform-module-test-BNIvlkCM.js +0 -71
  585. package/bundled-test-harness/assets/can-invoke-test-t-bFIIeX.js +0 -455
  586. package/bundled-test-harness/assets/can-read-realm-test-2Q_MzRT9.js +0 -56
  587. package/bundled-test-harness/assets/cancel-indexing-job-test-QeYxEukn.js +0 -69
  588. package/bundled-test-harness/assets/capture-test-CJmJG8YR.js +0 -360
  589. package/bundled-test-harness/assets/card-api-test-B43I510H.js +0 -198
  590. package/bundled-test-harness/assets/card-basics-test-CBClzP2y.js +0 -5364
  591. package/bundled-test-harness/assets/card-chooser-paging-test-HEVzf6pR.js +0 -235
  592. package/bundled-test-harness/assets/card-chooser-test-GfjBRPFI.js +0 -393
  593. package/bundled-test-harness/assets/card-context-search-results-CoSr4EdS.js +0 -30
  594. package/bundled-test-harness/assets/card-context-search-results-test-BLMlZu9t.js +0 -184
  595. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DEBOzKan.js +0 -562
  596. package/bundled-test-harness/assets/card-def-menu-items-test-88_h8o0D.js +0 -228
  597. package/bundled-test-harness/assets/card-delete-test-DKom1phy.js +0 -466
  598. package/bundled-test-harness/assets/card-error-awaiting-index-test-DEwgFZMP.js +0 -53
  599. package/bundled-test-harness/assets/card-error-r6_cXst9.js +0 -72
  600. package/bundled-test-harness/assets/card-info-thumbnail-picker-test-B7LiY15e.js +0 -219
  601. package/bundled-test-harness/assets/card-playground-test-CgyIJHui.js +0 -1491
  602. package/bundled-test-harness/assets/card-prerender-rPfzpIOU.js +0 -12939
  603. package/bundled-test-harness/assets/card-thunk-error-test-L0pvg4Ce.js +0 -48
  604. package/bundled-test-harness/assets/card-type-service-test-B2dhqxSD.js +0 -161
  605. package/bundled-test-harness/assets/check-correctness-test-DgqaLlCW.js +0 -1093
  606. package/bundled-test-harness/assets/check-domain-availability-test-B0hJHY5l.js +0 -98
  607. package/bundled-test-harness/assets/chip-D01NW3WH.js +0 -44
  608. package/bundled-test-harness/assets/choreo-D2Jl79RU.js +0 -1019
  609. package/bundled-test-harness/assets/choreo-_E8SOEe-.js +0 -2
  610. package/bundled-test-harness/assets/choreo-feature-reel-test-WLjsZDmS.js +0 -155
  611. package/bundled-test-harness/assets/choreo-gallery-build-order-test-6jnS8PsS.js +0 -436
  612. package/bundled-test-harness/assets/choreo-gallery-compositor-test-CbUZsVB6.js +0 -399
  613. package/bundled-test-harness/assets/choreo-gallery-cover-test-CbvAStgk.js +0 -214
  614. package/bundled-test-harness/assets/choreo-gallery-crossing-stage-test-tdjvUSa6.js +0 -133
  615. package/bundled-test-harness/assets/choreo-gallery-demos-alive-test-CsnM3hQK.js +0 -42
  616. package/bundled-test-harness/assets/choreo-gallery-drift-test-DG2LQTa7.js +0 -620
  617. package/bundled-test-harness/assets/choreo-gallery-escort-test-mn3-qXP1.js +0 -187
  618. package/bundled-test-harness/assets/choreo-gallery-films-test-BuktaC0D.js +0 -140
  619. package/bundled-test-harness/assets/choreo-gallery-filter-test-Dd-zpps0.js +0 -46
  620. package/bundled-test-harness/assets/choreo-gallery-fold-test-CWc1ijGc.js +0 -180
  621. package/bundled-test-harness/assets/choreo-gallery-guide-pages-test-tk2QmYPU.js +0 -114
  622. package/bundled-test-harness/assets/choreo-gallery-guides-test-DVbf1zM4.js +0 -321
  623. package/bundled-test-harness/assets/choreo-gallery-hang-test-B7EFp2dx.js +0 -426
  624. package/bundled-test-harness/assets/choreo-gallery-highlight-test-BFgbdesP.js +0 -60
  625. package/bundled-test-harness/assets/choreo-gallery-inline-edit-test-DJb8FC5R.js +0 -370
  626. package/bundled-test-harness/assets/choreo-gallery-interruption-test-DWyMXo5D.js +0 -176
  627. package/bundled-test-harness/assets/choreo-gallery-lone-stack-test-D3b8LsJ6.js +0 -104
  628. package/bundled-test-harness/assets/choreo-gallery-navigation-test-CjjU6Rvn.js +0 -193
  629. package/bundled-test-harness/assets/choreo-gallery-playhead-transport-test-Le_h3QWU.js +0 -111
  630. package/bundled-test-harness/assets/choreo-gallery-poplayout-subtree-test-Cp-DlWj4.js +0 -127
  631. package/bundled-test-harness/assets/choreo-gallery-presence-modes-test-DayS4GCJ.js +0 -100
  632. package/bundled-test-harness/assets/choreo-gallery-presentation-test-DeAfuFS7.js +0 -157
  633. package/bundled-test-harness/assets/choreo-gallery-reduced-motion-test-BgPWpggq.js +0 -145
  634. package/bundled-test-harness/assets/choreo-gallery-sheet-standalone-test-PzyoMNYv.js +0 -89
  635. package/bundled-test-harness/assets/choreo-gallery-sheet-test-CxaiNBkL.js +0 -48
  636. package/bundled-test-harness/assets/choreo-gallery-site-test-6xtSntS5.js +0 -237
  637. package/bundled-test-harness/assets/choreo-gallery-stage-E6Q5r-zU.js +0 -256
  638. package/bundled-test-harness/assets/choreo-gallery-stage-keyboard-test-C7aWMr9a.js +0 -102
  639. package/bundled-test-harness/assets/choreo-gallery-stages-test-CDWWgC61.js +0 -35
  640. package/bundled-test-harness/assets/choreo-gallery-subdivision-test-Bkp15XJv.js +0 -138
  641. package/bundled-test-harness/assets/choreo-gallery-table-plan-test-CcGRi_3O.js +0 -144
  642. package/bundled-test-harness/assets/choreo-gallery-theater-test-Qph5pLT_.js +0 -252
  643. package/bundled-test-harness/assets/choreo-gallery-tuning-test-C4DhFLVA.js +0 -95
  644. package/bundled-test-harness/assets/choreo-gallery-widget-room-test-LK493r1M.js +0 -88
  645. package/bundled-test-harness/assets/choreo-gallery-wires-test-B7SeUCc8.js +0 -148
  646. package/bundled-test-harness/assets/client-telemetry-test-DGmHzAFx.js +0 -340
  647. package/bundled-test-harness/assets/clip-BpYQPVz_.js +0 -2
  648. package/bundled-test-harness/assets/clip-CNaYbIwL.js +0 -92
  649. package/bundled-test-harness/assets/code-block-Cp2CJo5-.js +0 -502
  650. package/bundled-test-harness/assets/code-ref-test-C8JBHDb-.js +0 -163
  651. package/bundled-test-harness/assets/code-submode-availability-test-CzG1Tv6L.js +0 -198
  652. package/bundled-test-harness/assets/code-submode-test-BclVWjm5.js +0 -1839
  653. package/bundled-test-harness/assets/codeblocks-test-CmQlyxN7.js +0 -418
  654. package/bundled-test-harness/assets/codemirror-editor-test-B74H_yn8.js +0 -1512
  655. package/bundled-test-harness/assets/codemirror-embed-toolbar-test-Bz6VEysU.js +0 -366
  656. package/bundled-test-harness/assets/color-field-test-DMCPQKIP.js +0 -212
  657. package/bundled-test-harness/assets/compaction-test-saQCLBrQ.js +0 -150
  658. package/bundled-test-harness/assets/computed-test-C05HliJC.js +0 -1320
  659. package/bundled-test-harness/assets/container-Cqcwrd-m.js +0 -10857
  660. package/bundled-test-harness/assets/container-h3Wc26qn.css +0 -5097
  661. package/bundled-test-harness/assets/content-preview-components-test-DZPj4_CU.js +0 -462
  662. package/bundled-test-harness/assets/copy-and-edit-test-DiXTQNTF.js +0 -292
  663. package/bundled-test-harness/assets/copy-card-test-ys7GquUY.js +0 -218
  664. package/bundled-test-harness/assets/copy-file-to-realm-test-Gn0Wn4vT.js +0 -148
  665. package/bundled-test-harness/assets/copy-source-test-BTLrOmPm.js +0 -56
  666. package/bundled-test-harness/assets/create-file-test-BCeIW-Rt.js +0 -464
  667. package/bundled-test-harness/assets/create-file-test-DbHQ5JsS.js +0 -1086
  668. package/bundled-test-harness/assets/create-listing-modal-test-CeHc4ter.js +0 -273
  669. package/bundled-test-harness/assets/create-listing-pr-request-test-DXbJNfMh.js +0 -117
  670. package/bundled-test-harness/assets/create-spec-test-BDIZoyHT.js +0 -256
  671. package/bundled-test-harness/assets/create-submission-workflow-test-Bix5J-3A.js +0 -132
  672. package/bundled-test-harness/assets/create-workspace-test-BmNnLHwC.js +0 -104
  673. package/bundled-test-harness/assets/credential-fields-test-NK1F4QWn.js +0 -200
  674. package/bundled-test-harness/assets/csv-file-def-test-BSfs4TTP.js +0 -102
  675. package/bundled-test-harness/assets/dashboard-C4T7ffKY.js +0 -3576
  676. package/bundled-test-harness/assets/dashboard-CFeHuP5-.js +0 -81
  677. package/bundled-test-harness/assets/dashboard-DQlpW-ux.css +0 -2392
  678. package/bundled-test-harness/assets/dashboard-add-workspace-test--rr6objf.js +0 -50
  679. package/bundled-test-harness/assets/dashboard-agents-test-D1y8H4xH.js +0 -334
  680. package/bundled-test-harness/assets/dashboard-archive-test-bN4EQaXv.js +0 -128
  681. package/bundled-test-harness/assets/dashboard-delete-test-BvsASb8B.js +0 -163
  682. package/bundled-test-harness/assets/dashboard-duplicate-offer-test-DEsd5ZzZ.js +0 -71
  683. package/bundled-test-harness/assets/dashboard-duplicate-test-BnR0sTgB.js +0 -222
  684. package/bundled-test-harness/assets/dashboard-get-started-test-DG4uUXLv.js +0 -246
  685. package/bundled-test-harness/assets/dashboard-pinned-cards-test-AoGGVRAS.js +0 -220
  686. package/bundled-test-harness/assets/dashboard-reindex-test-BN9a96Xp.js +0 -115
  687. package/bundled-test-harness/assets/dashboard-section-rail-test-B3OT9V2T.js +0 -169
  688. package/bundled-test-harness/assets/dashboard-state-test-BY0Zqrmj.js +0 -162
  689. package/bundled-test-harness/assets/dashboard-test-C13oNpWt.js +0 -545
  690. package/bundled-test-harness/assets/dashboard-unreachable-notice-test-DZIV4x5j.js +0 -62
  691. package/bundled-test-harness/assets/dashboard-workspace-test-CBnOQViI.js +0 -537
  692. package/bundled-test-harness/assets/dashboard-workspaces-section-test-KU8ZVOYp.js +0 -396
  693. package/bundled-test-harness/assets/data-file-def-preview-test-CI5gcdtK.js +0 -155
  694. package/bundled-test-harness/assets/date-time-fields-test-D2CpR_Pb.js +0 -359
  695. package/bundled-test-harness/assets/debug-message-test-Df1kHesw.js +0 -117
  696. package/bundled-test-harness/assets/declared-captures-test-hQ43zuox.js +0 -879
  697. package/bundled-test-harness/assets/delete-workspace-test-BhfMKsix.js +0 -102
  698. package/bundled-test-harness/assets/diffing-test-CHRh55mC.js +0 -210
  699. package/bundled-test-harness/assets/download-file-to-realm-test-CC1HURCi.js +0 -119
  700. package/bundled-test-harness/assets/editor-test-DkeCv28f.js +0 -688
  701. package/bundled-test-harness/assets/edits-BSJqtUXM.js +0 -651
  702. package/bundled-test-harness/assets/email-field-test-DihK0suO.js +0 -75
  703. package/bundled-test-harness/assets/enum-field-test-Gja3bzt5.js +0 -935
  704. package/bundled-test-harness/assets/error-display-test-GhYZu7cp.js +0 -343
  705. package/bundled-test-harness/assets/evaluate-module-test-D_t4CiUq.js +0 -91
  706. package/bundled-test-harness/assets/execute-atomic-operations-test-xtou8Zeg.js +0 -113
  707. package/bundled-test-harness/assets/externals-B02-sD_L.js +0 -4393
  708. package/bundled-test-harness/assets/fallback-banner-live-delete-test-DtxzNXdE.js +0 -207
  709. package/bundled-test-harness/assets/fallback-banner-test-BfmiQ_68.js +0 -53
  710. package/bundled-test-harness/assets/fallback-banner-test-DLtTdmvn.js +0 -225
  711. package/bundled-test-harness/assets/fallback-models-test-BxNJxhfd.js +0 -161
  712. package/bundled-test-harness/assets/fetch-card-json-test-DofKbzvC.js +0 -61
  713. package/bundled-test-harness/assets/field-configuration-test-SUoPaXWy.js +0 -551
  714. package/bundled-test-harness/assets/field-markdown-domain-test-BwtR0dPP.js +0 -616
  715. package/bundled-test-harness/assets/field-markdown-oversize-test-D8UJcBc3.js +0 -88
  716. package/bundled-test-harness/assets/field-markdown-primitives-test-D5_ZdoDO.js +0 -365
  717. package/bundled-test-harness/assets/field-markdown-specialized-test-Dpd5hs04.js +0 -534
  718. package/bundled-test-harness/assets/field-playground-test-CzhYzKGv.js +0 -894
  719. package/bundled-test-harness/assets/field-support-predicates-test-BSvVOFth.js +0 -167
  720. package/bundled-test-harness/assets/file-attachment-test-fM-yFedm.js +0 -796
  721. package/bundled-test-harness/assets/file-chooser-panel-test-CKj8YTdY.js +0 -153
  722. package/bundled-test-harness/assets/file-chooser-test-Bs8jFXqa.js +0 -504
  723. package/bundled-test-harness/assets/file-def-format-templates-test-CxrRoWoD.js +0 -380
  724. package/bundled-test-harness/assets/file-def-live-reload-test-X_8YEkve.js +0 -124
  725. package/bundled-test-harness/assets/file-def-menu-items-test-Dx879o_o.js +0 -138
  726. package/bundled-test-harness/assets/file-def-navigation-test-MMI_EEO1.js +0 -109
  727. package/bundled-test-harness/assets/file-def-serialization-test-B5lguBQD.js +0 -89
  728. package/bundled-test-harness/assets/file-def-test-Di9QWcrj.js +0 -216
  729. package/bundled-test-harness/assets/file-preview-live-reload-test-aqx93A7c.js +0 -310
  730. package/bundled-test-harness/assets/file-resource-primitives-test-a5abpcSB.js +0 -255
  731. package/bundled-test-harness/assets/file-tree-from-index-test-CnruGxJ8.js +0 -96
  732. package/bundled-test-harness/assets/file-tree-test-BCyWDdSE.js +0 -851
  733. package/bundled-test-harness/assets/file-view-model-test-BfpLa01Y.js +0 -346
  734. package/bundled-test-harness/assets/filedef-export-shape-test-CQ9XbrzS.js +0 -61
  735. package/bundled-test-harness/assets/film-CL1zj_bJ.js +0 -2
  736. package/bundled-test-harness/assets/film-Dq_quZ31.js +0 -13
  737. package/bundled-test-harness/assets/film-xbkQa060.js +0 -4074
  738. package/bundled-test-harness/assets/flac-audio-def-test-BmVp9dMx.js +0 -143
  739. package/bundled-test-harness/assets/focus-Dm4wkM72.js +0 -306
  740. package/bundled-test-harness/assets/font-metadata-extractor-test-OWEh9_MS.js +0 -415
  741. package/bundled-test-harness/assets/formatted-aibot-message-test-BpHsWpuV.js +0 -109
  742. package/bundled-test-harness/assets/formatted-user-message-test-DZW5TAr0.js +0 -43
  743. package/bundled-test-harness/assets/freestyle-test-D_uaPU_3.js +0 -17
  744. package/bundled-test-harness/assets/full-reindex-realm-test-C6vHL5kC.js +0 -101
  745. package/bundled-test-harness/assets/garbage-collection-test-D-Ao4t2n.js +0 -403
  746. package/bundled-test-harness/assets/general-test-PSGI8W0z.js +0 -923
  747. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-J-m-0E6W.js +0 -65
  748. package/bundled-test-harness/assets/generic-file-def-preview-test-BAsOhTYU.js +0 -71
  749. package/bundled-test-harness/assets/get-available-realm-identifiers-test-D5PBOr97.js +0 -47
  750. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-NM9UURHE.js +0 -47
  751. package/bundled-test-harness/assets/get-default-writable-realm-test-BxXc9a3J.js +0 -54
  752. package/bundled-test-harness/assets/get-published-realms-test-C8TJEc4-.js +0 -71
  753. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-Dt8CB6lS.js +0 -54
  754. package/bundled-test-harness/assets/get-relationship-membership-state-test-9_8x3myJ.js +0 -1308
  755. package/bundled-test-harness/assets/get-user-system-card-test-k0UO-uba.js +0 -67
  756. package/bundled-test-harness/assets/gif-image-def-test-BWrqPGDX.js +0 -188
  757. package/bundled-test-harness/assets/glimmer-motion-and-choreo-in-cards-test-BgG8QI9E.js +0 -160
  758. package/bundled-test-harness/assets/glimmer-motion-and-choreo-test-BKOvNyCN.js +0 -74
  759. package/bundled-test-harness/assets/gts-file-def-test-BCRHwDeZ.js +0 -100
  760. package/bundled-test-harness/assets/head-format-preview-test-DnfUhniI.js +0 -158
  761. package/bundled-test-harness/assets/helpers-DklkegO_.js +0 -5
  762. package/bundled-test-harness/assets/host-mode-service-vOfN0smp.js +0 -232
  763. package/bundled-test-harness/assets/host-mode-test-CCCJFz6_.js +0 -831
  764. package/bundled-test-harness/assets/host-submode-test-CtCfbuPA.js +0 -1342
  765. package/bundled-test-harness/assets/html-component-test-CWyhb5ZX.js +0 -65
  766. package/bundled-test-harness/assets/html-def-test-Cb8C2lUx.js +0 -160
  767. package/bundled-test-harness/assets/html-meta-extractor-test-BHT9Rtir.js +0 -60
  768. package/bundled-test-harness/assets/hydratable-card-test-DpgpdesD.js +0 -426
  769. package/bundled-test-harness/assets/icon-button-ABCGVF3C.js +0 -67
  770. package/bundled-test-harness/assets/image-metadata-extractor-test-ClhPTouq.js +0 -1109
  771. package/bundled-test-harness/assets/index-changes-test-CgnVr3LH.js +0 -367
  772. package/bundled-test-harness/assets/index-query-engine-test-CQTwju5_.js +0 -2593
  773. package/bundled-test-harness/assets/index-writer-test-IoVOoZT2.js +0 -3040
  774. package/bundled-test-harness/assets/inspector-test-BN2Ieb77.js +0 -2058
  775. package/bundled-test-harness/assets/instance-filter-matcher-test-Bq-_Sy89.js +0 -788
  776. package/bundled-test-harness/assets/instantiate-card-test-DEeDTzFV.js +0 -164
  777. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-DP6kOyJS.js +0 -475
  778. package/bundled-test-harness/assets/interact-submode-setup-B0_cHqH-.js +0 -566
  779. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-9uUD91Pw.js +0 -99
  780. package/bundled-test-harness/assets/invite-user-to-room-test-CcDA45Ac.js +0 -142
  781. package/bundled-test-harness/assets/invoke-card-operation-test-DmUtgueM.js +0 -333
  782. package/bundled-test-harness/assets/isolated-render-test-B2eXNHu6.js +0 -51
  783. package/bundled-test-harness/assets/job-scoped-doc-cache-test-DF9D7cOc.js +0 -181
  784. package/bundled-test-harness/assets/job-scoped-instance-residency-test-CSS8xUU5.js +0 -103
  785. package/bundled-test-harness/assets/jpg-image-def-test-voECMTht.js +0 -697
  786. package/bundled-test-harness/assets/json-file-def-test-8Y4KLjUC.js +0 -95
  787. package/bundled-test-harness/assets/key-notices-badge-test-d1mYqx0e.js +0 -155
  788. package/bundled-test-harness/assets/key-readiness-test-BtCg7PCk.js +0 -190
  789. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CyCMbJnN.js +0 -398
  790. package/bundled-test-harness/assets/linksto-error-sentinel-test-BDW572-v.js +0 -238
  791. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-B4wM97hD.js +0 -354
  792. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-BhJmtJ0_.js +0 -303
  793. package/bundled-test-harness/assets/linksto-sentinel-reload-test-BpBQ5V_i.js +0 -197
  794. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-pkBBl4e9.js +0 -260
  795. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-Bb6wjUdD.js +0 -196
  796. package/bundled-test-harness/assets/lint-and-fix-test-CcMLn-co.js +0 -51
  797. package/bundled-test-harness/assets/live-test-AyBnq7BX.js +0 -2
  798. package/bundled-test-harness/assets/live-test-CgnAcIDw.js +0 -100
  799. package/bundled-test-harness/assets/load-default-skills-test-BIOwtx0Y.js +0 -74
  800. package/bundled-test-harness/assets/loader-parallel-prefetch-test-D5_oRSER.js +0 -257
  801. package/bundled-test-harness/assets/loader-test-DSc_jR1c.js +0 -482
  802. package/bundled-test-harness/assets/loading-test-8pldx7S-.js +0 -63
  803. package/bundled-test-harness/assets/m4a-audio-def-test-BDI5apzM.js +0 -190
  804. package/bundled-test-harness/assets/main-5kHyCkdm.js +0 -5
  805. package/bundled-test-harness/assets/markdown-embed-chooser-modal-test-Wud0s7WZ.js +0 -470
  806. package/bundled-test-harness/assets/markdown-embed-chooser-test-DVzzS-0C.js +0 -334
  807. package/bundled-test-harness/assets/markdown-embed-preview-pane-test-B5W_iqsi.js +0 -447
  808. package/bundled-test-harness/assets/markdown-embed-preview-test-CZF_s0fB.js +0 -368
  809. package/bundled-test-harness/assets/markdown-fallback-test-fT6BS4W7.js +0 -316
  810. package/bundled-test-harness/assets/markdown-file-def-test-B1aTzazR.js +0 -380
  811. package/bundled-test-harness/assets/markdown-helpers-test-gNKZf7Mw.js +0 -188
  812. package/bundled-test-harness/assets/markdown-highlighting-test-Du5_CQmD.js +0 -244
  813. package/bundled-test-harness/assets/markdown-preview-h-_aJhRc.js +0 -72
  814. package/bundled-test-harness/assets/markdown-preview-test-DJvoVsXw.js +0 -238
  815. package/bundled-test-harness/assets/markdown-skill-frontmatter-test-VwJi3Paj.js +0 -146
  816. package/bundled-test-harness/assets/markdown-skill-search-test-ysCdf0xM.js +0 -80
  817. package/bundled-test-harness/assets/matrix-service-account-switch-sessions-test-K2JuMy36.js +0 -63
  818. package/bundled-test-harness/assets/matrix-service-boot-assembly-test-CkdL_-os.js +0 -300
  819. package/bundled-test-harness/assets/matrix-service-personal-realm-test-Dy1DultK.js +0 -125
  820. package/bundled-test-harness/assets/matrix-service-realm-servers-test-DHDDKuEg.js +0 -55
  821. package/bundled-test-harness/assets/matrix-service-realms-list-updated-test-DcTbZpMl.js +0 -132
  822. package/bundled-test-harness/assets/matrix-service-relogin-test-D3NQktoa.js +0 -59
  823. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-6CAflWOA.js +0 -35
  824. package/bundled-test-harness/assets/menu-kUSaJIPq.js +0 -3562
  825. package/bundled-test-harness/assets/message-service-subscription-test-DaQdgDWi.js +0 -110
  826. package/bundled-test-harness/assets/message-service-test-BsGEgM_m.js +0 -144
  827. package/bundled-test-harness/assets/message-tool-test-BB_4kw1V.js +0 -33
  828. package/bundled-test-harness/assets/midi-audio-def-test-BbbkFjqf.js +0 -182
  829. package/bundled-test-harness/assets/migrate-skill-test-X9xImDuq.js +0 -161
  830. package/bundled-test-harness/assets/mini-AwF31elJ.js +0 -1404
  831. package/bundled-test-harness/assets/mini-card-chooser-test-BZtrEiWu.js +0 -272
  832. package/bundled-test-harness/assets/mini-file-chooser-test-MIHW3kCI.js +0 -201
  833. package/bundled-test-harness/assets/mock-matrix-Dd8k0DNa.js +0 -15107
  834. package/bundled-test-harness/assets/mock-matrix-DhPN_34j.js +0 -2
  835. package/bundled-test-harness/assets/modal-LTh3_oHK.js +0 -322
  836. package/bundled-test-harness/assets/model-cost-tier-test-h1IkU9mp.js +0 -174
  837. package/bundled-test-harness/assets/model-file-extract-test-ntSo0wZF.js +0 -206
  838. package/bundled-test-harness/assets/module-transpile-cache-test-CDeRaaeP.js +0 -67
  839. package/bundled-test-harness/assets/monaco-test-C0Fa744D.js +0 -100
  840. package/bundled-test-harness/assets/mp3-audio-def-test-B4j4qR9H.js +0 -133
  841. package/bundled-test-harness/assets/multiple-stacks-test-BhA25ywL.js +0 -208
  842. package/bundled-test-harness/assets/nested-query-field-render-test-S9Y8YNKB.js +0 -249
  843. package/bundled-test-harness/assets/no-stacks-test-B7VciWyg.js +0 -48
  844. package/bundled-test-harness/assets/number-field-test-CS74lDPN.js +0 -184
  845. package/bundled-test-harness/assets/office-file-def-test-2cKc1pmd.js +0 -263
  846. package/bundled-test-harness/assets/office-metadata-extractor-test-DC8Fo-OW.js +0 -218
  847. package/bundled-test-harness/assets/office-poster-capture-test-Ba0_5UrT.js +0 -203
  848. package/bundled-test-harness/assets/ogg-audio-def-test-CIPQ1d4w.js +0 -196
  849. package/bundled-test-harness/assets/open-create-listing-modal-test-bmQkY5Zl.js +0 -131
  850. package/bundled-test-harness/assets/open-image-in-new-tab-test-DBD7_vMH.js +0 -52
  851. package/bundled-test-harness/assets/open-secure-window-test-BgeuYAqz.js +0 -253
  852. package/bundled-test-harness/assets/open-workspace-test-DRHGljV0.js +0 -46
  853. package/bundled-test-harness/assets/operation-lowering-test-CH1c0pSH.js +0 -2957
  854. package/bundled-test-harness/assets/operations-invocation-test-B1YkCLrv.js +0 -523
  855. package/bundled-test-harness/assets/operations-optimistic-test-DAbtOwsC.js +0 -203
  856. package/bundled-test-harness/assets/operations-query-test-9p1ZIDe-.js +0 -459
  857. package/bundled-test-harness/assets/operations-store-reconciliation-test-D0EQh3w2.js +0 -406
  858. package/bundled-test-harness/assets/operations-test-BQhlrfe3.js +0 -2518
  859. package/bundled-test-harness/assets/operator-mode-acceptance-test-DtHnonEb.js +0 -1195
  860. package/bundled-test-harness/assets/operator-mode-card-chooser-test-DQUxZxaq.js +0 -1036
  861. package/bundled-test-harness/assets/operator-mode-links-test-BJ26HllS.js +0 -797
  862. package/bundled-test-harness/assets/operator-mode-test-DIPDI0qt.js +0 -696
  863. package/bundled-test-harness/assets/operator-mode-ui-test-CfA-fAh4.js +0 -1045
  864. package/bundled-test-harness/assets/overlay-DecPh3nt.js +0 -123
  865. package/bundled-test-harness/assets/overlay-menu-items-test-C6XqjLtu.js +0 -331
  866. package/bundled-test-harness/assets/overlays-Ctp8ePzZ.js +0 -75
  867. package/bundled-test-harness/assets/overlays-CzWpSg5T.js +0 -2
  868. package/bundled-test-harness/assets/overlays-detached-element-test-DvL_8Bb5.js +0 -56
  869. package/bundled-test-harness/assets/panel-CImumikB.js +0 -15124
  870. package/bundled-test-harness/assets/past-sessions-test-N6riGN_I.js +0 -321
  871. package/bundled-test-harness/assets/patch-fields-test-D30_-KwQ.js +0 -1014
  872. package/bundled-test-harness/assets/patch-instance-test-C5rGscZq.js +0 -348
  873. package/bundled-test-harness/assets/pdf-file-def-test-DtiqGRvZ.js +0 -111
  874. package/bundled-test-harness/assets/pdf-metadata-extractor-test-FU02KmdV.js +0 -130
  875. package/bundled-test-harness/assets/permission-checking-realm-test-DqdNJDwU.js +0 -306
  876. package/bundled-test-harness/assets/persist-module-inspector-view-test-BHOAgPVy.js +0 -60
  877. package/bundled-test-harness/assets/persist-scroll-position-test-qtmS518r.js +0 -254
  878. package/bundled-test-harness/assets/phone-number-field-test-DhdaM7uL.js +0 -73
  879. package/bundled-test-harness/assets/pill-menu-test-C9Mrrepl.js +0 -60
  880. package/bundled-test-harness/assets/plate-9n-sXyCw.js +0 -41
  881. package/bundled-test-harness/assets/plate-BnZcAk-_.js +0 -2
  882. package/bundled-test-harness/assets/player-Cu5b4LEJ.js +0 -82
  883. package/bundled-test-harness/assets/player-unk2mkxV.js +0 -2
  884. package/bundled-test-harness/assets/playground-BwA8wFGK.js +0 -58
  885. package/bundled-test-harness/assets/plural-field-components-test-CFNQKETg.js +0 -198
  886. package/bundled-test-harness/assets/png-image-def-test-DG5Vhlqb.js +0 -266
  887. package/bundled-test-harness/assets/policy-audit-confirmation-test-yfKU47LR.js +0 -155
  888. package/bundled-test-harness/assets/policy-scoped-search-test-BjQRDYqR.js +0 -339
  889. package/bundled-test-harness/assets/prerender-file-extract-test-CEU4SaAZ.js +0 -346
  890. package/bundled-test-harness/assets/prerender-html-test-CGB3ClCS.js +0 -670
  891. package/bundled-test-harness/assets/prerender-meta-test-xqc4fW_0.js +0 -614
  892. package/bundled-test-harness/assets/prerender-module-test-CI1TmZw-.js +0 -409
  893. package/bundled-test-harness/assets/prerender-persistence-block-test-Da0dJO_N.js +0 -124
  894. package/bundled-test-harness/assets/prerender-pre-model-error-test-BVLyhk8R.js +0 -61
  895. package/bundled-test-harness/assets/prerender-serialize-cycle-test-glJFfxHU.js +0 -134
  896. package/bundled-test-harness/assets/prerendered-html-read-test-Mp4L0VHQ.js +0 -191
  897. package/bundled-test-harness/assets/pretui-components-test-BBpA9UnA.js +0 -991
  898. package/bundled-test-harness/assets/pretui-components-test-BqFq7rw_.css +0 -730
  899. package/bundled-test-harness/assets/preview-format-test-C55Bwcur.js +0 -103
  900. package/bundled-test-harness/assets/preview-test-CTAhRGU8.js +0 -474
  901. package/bundled-test-harness/assets/process-card-test-UjqpuxB7.js +0 -94
  902. package/bundled-test-harness/assets/profile-settings-modal-C8bCgTMK.js +0 -989
  903. package/bundled-test-harness/assets/publish-realm-ixUB4FPK.js +0 -82
  904. package/bundled-test-harness/assets/publish-realm-test-CrrsdL4W.js +0 -210
  905. package/bundled-test-harness/assets/query-field-barrier-test-DjivFE93.js +0 -113
  906. package/bundled-test-harness/assets/query-field-error-sentinel-test-0HwnV4Mw.js +0 -201
  907. package/bundled-test-harness/assets/query-field-membership-status-test-C8yTTBkc.js +0 -323
  908. package/bundled-test-harness/assets/query-field-page-optin-test-D4l_GcII.js +0 -126
  909. package/bundled-test-harness/assets/query-field-schema-test-DDbcNNm5.js +0 -231
  910. package/bundled-test-harness/assets/query-field-search-throttle-test-CXp50Ax0.js +0 -154
  911. package/bundled-test-harness/assets/query-field-stale-prerender-test-DErzt-Cv.js +0 -152
  912. package/bundled-test-harness/assets/query-fields-test-Dz67fdSl.js +0 -535
  913. package/bundled-test-harness/assets/quick-look-test-B1ijDsh_.js +0 -139
  914. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-DJxZ16H_.js +0 -91
  915. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-BoRQkZ8c.js +0 -45
  916. package/bundled-test-harness/assets/read-source-test-Bl-NjchO.js +0 -67
  917. package/bundled-test-harness/assets/read-text-file-test-CP37CZoo.js +0 -124
  918. package/bundled-test-harness/assets/realm-CaK5mkT-.js +0 -2852
  919. package/bundled-test-harness/assets/realm-api-keys-BNUFWbGR.js +0 -579
  920. package/bundled-test-harness/assets/realm-api-keys-CkshxhXC.js +0 -2
  921. package/bundled-test-harness/assets/realm-api-keys-test-BP8xifjn.js +0 -109
  922. package/bundled-test-harness/assets/realm-api-keys-test-CwdK9YXp.js +0 -588
  923. package/bundled-test-harness/assets/realm-config-iKwE3Htp.js +0 -833
  924. package/bundled-test-harness/assets/realm-config-policy-standing-test-BgVEIDnB.js +0 -290
  925. package/bundled-test-harness/assets/realm-config-routing-rule-edit-test-BoJoKzmX.js +0 -274
  926. package/bundled-test-harness/assets/realm-config-settings-test-Kxw-GHye.js +0 -187
  927. package/bundled-test-harness/assets/realm-field-test-CdGOxrFb.js +0 -100
  928. package/bundled-test-harness/assets/realm-indexing-test-CHtsBV2b.js +0 -4380
  929. package/bundled-test-harness/assets/realm-policy-fitted-test--DhNZSdC.js +0 -206
  930. package/bundled-test-harness/assets/realm-policy-test-D7714iVa.js +0 -1141
  931. package/bundled-test-harness/assets/realm-querying-test-Cj1ekZ0H.js +0 -1067
  932. package/bundled-test-harness/assets/realm-server-form-agnostic-test-CZFPNJfD.js +0 -96
  933. package/bundled-test-harness/assets/realm-server-subscriber-test-C86WmBp0.js +0 -46
  934. package/bundled-test-harness/assets/realm-service-info-test-CdgcwKDR.js +0 -67
  935. package/bundled-test-harness/assets/realm-test-DPoLsvKz.js +0 -2364
  936. package/bundled-test-harness/assets/realm-token-refresh-test-Ch35Siwi.js +0 -153
  937. package/bundled-test-harness/assets/realm-url-tooltip-test-x8xWOENK.js +0 -78
  938. package/bundled-test-harness/assets/reasoning-test-BxpE8Jvf.js +0 -221
  939. package/bundled-test-harness/assets/recent-files-test-DTmEzPLq.js +0 -450
  940. package/bundled-test-harness/assets/reindex-realm-test-BQ8KULn4.js +0 -117
  941. package/bundled-test-harness/assets/relationship-loading-state-test-BJoArPWf.js +0 -290
  942. package/bundled-test-harness/assets/remix-card-test-DsTA1KoG.js +0 -58
  943. package/bundled-test-harness/assets/rendered-markdown-DvukulDO.js +0 -292
  944. package/bundled-test-harness/assets/rendered-markdown-test-DxGptXSV.js +0 -587
  945. package/bundled-test-harness/assets/resident-instance-reuse-test-ZWnVu8uj.js +0 -82
  946. package/bundled-test-harness/assets/result-tile-CPyI6Vmv.js +0 -144
  947. package/bundled-test-harness/assets/rich-markdown-field-test-CdygoXIO.js +0 -1647
  948. package/bundled-test-harness/assets/room-message-test-D3NfMqH0.js +0 -484
  949. package/bundled-test-harness/assets/run-D_Px28eF.js +0 -3956
  950. package/bundled-test-harness/assets/run-realm-code-qWCZxmJ7.js +0 -2964
  951. package/bundled-test-harness/assets/run-realm-code-test-UzyeEJq6.js +0 -3844
  952. package/bundled-test-harness/assets/sanitize-module-list-test-Babq44bP.js +0 -85
  953. package/bundled-test-harness/assets/save-card-skip-index-wait-test-BcELXlQ_.js +0 -89
  954. package/bundled-test-harness/assets/schema-editor-test-CEvruZbt.js +0 -785
  955. package/bundled-test-harness/assets/schema-generation-test-hYAMdCrn.js +0 -28
  956. package/bundled-test-harness/assets/scrolling-test-DVIsh-_1.js +0 -412
  957. package/bundled-test-harness/assets/search-adorn-test-CkVhqFd0.js +0 -136
  958. package/bundled-test-harness/assets/search-and-choose-test-DUhOB3FV.js +0 -154
  959. package/bundled-test-harness/assets/search-correlation-id-test-Drn4r26N.js +0 -139
  960. package/bundled-test-harness/assets/search-entries-result-test-DTCRJ_wc.js +0 -234
  961. package/bundled-test-harness/assets/search-entries-test-CE0B47pw.js +0 -1486
  962. package/bundled-test-harness/assets/search-entries-tool-test-C4aG0ckM.js +0 -504
  963. package/bundled-test-harness/assets/search-google-images-test-LyhcB2f3.js +0 -166
  964. package/bundled-test-harness/assets/search-results-D4pSne0x.js +0 -266
  965. package/bundled-test-harness/assets/search-results-test-CRZHhqhn.js +0 -578
  966. package/bundled-test-harness/assets/search-selection-menu-test-B7Y3E_nj.js +0 -108
  967. package/bundled-test-harness/assets/search-sheet-files-test-C2y534g8.js +0 -126
  968. package/bundled-test-harness/assets/search-sheet-persistence-test-DePC59Bk.js +0 -131
  969. package/bundled-test-harness/assets/search-test-Dy8NxFkU.js +0 -2249
  970. package/bundled-test-harness/assets/search-tool-test-lctDaMH3.js +0 -156
  971. package/bundled-test-harness/assets/searchable-option-test-CE64M8oM.js +0 -322
  972. package/bundled-test-harness/assets/searchable-search-doc-test-C6u3mVvT.js +0 -1271
  973. package/bundled-test-harness/assets/section-rail-B_UQX00B.js +0 -113
  974. package/bundled-test-harness/assets/section-rail-test-DIda7MIw.js +0 -256
  975. package/bundled-test-harness/assets/secure-sign-in-CqqqfQG8.js +0 -174
  976. package/bundled-test-harness/assets/secure-sign-in-test-DimbVr_W.js +0 -373
  977. package/bundled-test-harness/assets/segmented-control-iePxSdTS.js +0 -173
  978. package/bundled-test-harness/assets/select-tNs6_xwW.js +0 -175
  979. package/bundled-test-harness/assets/send-ai-assistant-message-test-2GVrMF9Z.js +0 -52
  980. package/bundled-test-harness/assets/send-bot-trigger-event-test-B_3dKfGN.js +0 -56
  981. package/bundled-test-harness/assets/send-request-via-proxy-test-_clNWyYc.js +0 -380
  982. package/bundled-test-harness/assets/sending-test-DCPFXUVg.js +0 -659
  983. package/bundled-test-harness/assets/serialization-rri-form-audit-test-BI0zCs8Y.js +0 -136
  984. package/bundled-test-harness/assets/serialization-test-bjdtVlZL.js +0 -8758
  985. package/bundled-test-harness/assets/set-user-system-card-test-BUv1vL08.js +0 -59
  986. package/bundled-test-harness/assets/setup-BW1mmC7C.js +0 -772
  987. package/bundled-test-harness/assets/setup-DsIcFT-T.js +0 -2
  988. package/bundled-test-harness/assets/shared-link-target-reuse-test-9NeJEjkb.js +0 -207
  989. package/bundled-test-harness/assets/show-card-test-mfyLwusD.js +0 -365
  990. package/bundled-test-harness/assets/signed-capture-link-test-BOtKNCAM.js +0 -132
  991. package/bundled-test-harness/assets/single-stack-test-B4MGjaLk.js +0 -652
  992. package/bundled-test-harness/assets/skills-test-BuP-Yzk1.js +0 -648
  993. package/bundled-test-harness/assets/skip-boot-index-guard-test-Cmrx2-K7.js +0 -46
  994. package/bundled-test-harness/assets/spec-test-BhZDdhVQ.js +0 -1077
  995. package/bundled-test-harness/assets/spinner-CpIBUG9m.js +0 -49
  996. package/bundled-test-harness/assets/src-DGHttmW-.js +0 -216
  997. package/bundled-test-harness/assets/src-DaNDSbp7.js +0 -5
  998. package/bundled-test-harness/assets/stick-to-bottom-resize-test-Dpy3OVum.js +0 -56
  999. package/bundled-test-harness/assets/store-add-test-_IYS8o74.js +0 -50
  1000. package/bundled-test-harness/assets/store-module-rebuild-test-B5VMaICy.js +0 -454
  1001. package/bundled-test-harness/assets/store-search-test-C2VZabrH.js +0 -175
  1002. package/bundled-test-harness/assets/store-test-D6PObxoD.js +0 -3672
  1003. package/bundled-test-harness/assets/structured-theme-test-BHjVeMf-.js +0 -377
  1004. package/bundled-test-harness/assets/summarize-session-test-BFtTuhe0.js +0 -172
  1005. package/bundled-test-harness/assets/svg-image-def-test-BL6lkWUX.js +0 -167
  1006. package/bundled-test-harness/assets/switch-submode-test-6Uv3bZMl.js +0 -168
  1007. package/bundled-test-harness/assets/sync-openrouter-models-test-Dp9E05tL.js +0 -97
  1008. package/bundled-test-harness/assets/test-support-DYm8XZ0E.js +0 -3
  1009. package/bundled-test-harness/assets/test-support-DfnhiIMV.js +0 -99
  1010. package/bundled-test-harness/assets/tests-CZk0Iag2.js +0 -3596
  1011. package/bundled-test-harness/assets/text-file-def-test-CHdC0yIU.js +0 -94
  1012. package/bundled-test-harness/assets/text-input-validator-test-B9ZR8XPU.js +0 -156
  1013. package/bundled-test-harness/assets/text-suggestion-test-CGLspKFQ.js +0 -340
  1014. package/bundled-test-harness/assets/theme-card-test-CXZvSEvG.js +0 -621
  1015. package/bundled-test-harness/assets/theme-dashboard-nav-test-CkEE0ILk.js +0 -196
  1016. package/bundled-test-harness/assets/theme-scheme-island-test-URXTjipF.js +0 -264
  1017. package/bundled-test-harness/assets/titles-C6enAdIv.js +0 -2
  1018. package/bundled-test-harness/assets/titles-Dft1HoUT.js +0 -52
  1019. package/bundled-test-harness/assets/to-device-streaming-test-D33ZOc9o.js +0 -163
  1020. package/bundled-test-harness/assets/token-usage-test-BHQlU4J4.js +0 -160
  1021. package/bundled-test-harness/assets/tools-CrudqfS3.js +0 -774
  1022. package/bundled-test-harness/assets/tools-calling-test-jo7IREau.js +0 -200
  1023. package/bundled-test-harness/assets/tools-test-D1wMfUa0.js +0 -1624
  1024. package/bundled-test-harness/assets/tools-test-Dn1LYsXp.js +0 -3204
  1025. package/bundled-test-harness/assets/tooltip-8Wyz4IIn.css +0 -68
  1026. package/bundled-test-harness/assets/tooltip-CqwLzRz5.js +0 -134
  1027. package/bundled-test-harness/assets/transform-cards-test-BPhwPFtp.js +0 -341
  1028. package/bundled-test-harness/assets/ts-file-def-preview-test-Bq3zTgw8.js +0 -95
  1029. package/bundled-test-harness/assets/ts-file-def-test-GLswMl7O.js +0 -92
  1030. package/bundled-test-harness/assets/ttf-font-def-test-DQulvUWs.js +0 -206
  1031. package/bundled-test-harness/assets/turn-settling-test-BspmOUQP.js +0 -160
  1032. package/bundled-test-harness/assets/turn-summary-9A8nvC0-.js +0 -1039
  1033. package/bundled-test-harness/assets/unpublish-realm-test-SkYPEhDz.js +0 -102
  1034. package/bundled-test-harness/assets/update-room-skills-test-cTxb-WU6.js +0 -240
  1035. package/bundled-test-harness/assets/use-ai-assistant-test-uaqW1T_A.js +0 -384
  1036. package/bundled-test-harness/assets/user-message-BudkIP-3.js +0 -262
  1037. package/bundled-test-harness/assets/validate-realm-test-DxrGgH9n.js +0 -67
  1038. package/bundled-test-harness/assets/video-metadata-extractor-test-B2pe-Iqa.js +0 -520
  1039. package/bundled-test-harness/assets/view-visually-test-PNon6fUo.js +0 -335
  1040. package/bundled-test-harness/assets/virtual-network-reset-test-uYJLaQHf.js +0 -96
  1041. package/bundled-test-harness/assets/wav-audio-def-test-F4OrFFR4.js +0 -160
  1042. package/bundled-test-harness/assets/webp-image-def-test-B0a_-Vya.js +0 -226
  1043. package/bundled-test-harness/assets/workspace-Cyftysy9.js +0 -440
  1044. package/bundled-test-harness/assets/workspace-a11y-test-sKiPDcbl.js +0 -197
  1045. package/bundled-test-harness/assets/workspace-actions-BuawjFmZ.js +0 -561
  1046. package/bundled-test-harness/assets/workspace-behavior-test-CKa-pb3T.js +0 -338
  1047. package/bundled-test-harness/assets/workspace-delete-multiple-test-Dt2weG5R.js +0 -212
  1048. package/bundled-test-harness/assets/workspace-delete-summary-test-CkqgFqZ8.js +0 -63
  1049. package/bundled-test-harness/assets/workspace-hosting-test-Ci7EEtHP.js +0 -138
  1050. package/bundled-test-harness/assets/workspace-indexing-test-BPVxxY6W.js +0 -71
  1051. package/bundled-test-harness/assets/workspace-test-CWr7vFbg.js +0 -385
  1052. package/bundled-test-harness/assets/workspace-test-INNpQovc.js +0 -51
  1053. package/bundled-test-harness/assets/workspace-timestamp-labels-test-CigQb5wr.js +0 -68
  1054. package/bundled-test-harness/assets/workspace-unit-test-BwVKpuXT.js +0 -122
  1055. package/bundled-test-harness/assets/write-binary-file-test-BKP3gv1k.js +0 -124
  1056. package/bundled-test-harness/assets/write-text-file-test-B6ijTKTa.js +0 -191
  1057. package/bundled-test-harness/assets/zip-archive-test-C-PBzkTn.js +0 -285
  1058. package/bundled-test-harness/assets/zip-file-def-test-FyCzJT-9.js +0 -164
@@ -1,4380 +0,0 @@
1
- import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
- import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
3
- import { Br as testRealmURL, Co as SupportedMimeType, Lr as testRRI, l as internalKeyFor, tt as diffDoc, vc as init_md5_esm_bundler, xi as DEFAULT_ANONYMOUS_RATE_LIMIT, yc as md5 } from "./runtime-common-BTaLJEw-.js";
4
- import { T as rri, w as ri } from "./paths-C9-NYXnM.js";
5
- import { it as baseRealmRRI, q as skillCardRef, w as baseCardRef } from "./constants-Icc0nFW-.js";
6
- import { wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
7
- import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
8
- import "./component-BJO47HTh.js";
9
- import { t as Component } from "./dist-CkA1rgqO.js";
10
- import "./template-factory-ds9s0u8l.js";
11
- import { s as REALM_INDEX_BOILERPLATE_HTML } from "./card-prerender-rPfzpIOU.js";
12
- import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
13
- import { F as setupLocalIndexing, H as testModuleRealm, M as setupCardLogs, P as setupIntegrationTestRealm, V as testModuleRRI, d as cardInfo, lt as setupRenderingTest, p as cleanWhiteSpace, t as setupMockMatrix, x as getFileCreatedAt } from "./mock-matrix-Dd8k0DNa.js";
14
- import { r as getService } from "./dist-CPfIHBla.js";
15
- import { A as field, H as linksTo, T as containsMany, U as linksToMany, a as CardDef, l as FieldDef, s as Component$1, w as contains } from "./card-api-Cc8uZunB.js";
16
- import { t as DateTimeField } from "./datetime-CaJus6ZL.js";
17
- import { t as string_default } from "./string-5IAMEUit.js";
18
- import { t as NumberField } from "./number-BYHu62Pt.js";
19
- import { t as searchCardsForTest } from "./search-cards-DxcB56HL.js";
20
- //#region ../runtime-common/helpers/strip-scoped-css-attributes.ts
21
- init_md5_esm_bundler();
22
- var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
23
- function stripScopedCSSAttributes(htmlString) {
24
- return htmlString.replace(/ data-scopedcss-[0-9a-f]{10}-[0-9a-f]{10}/g, "");
25
- }
26
- //#endregion
27
- //#region tests/integration/realm-indexing-test.gts
28
- var loader;
29
- function unwrap(html) {
30
- return html.trim().replace(/^<div ([^>]*>)/, "").trim().replace(/^<!---->/, "").replace(/<\/div>$/, "").trim();
31
- }
32
- function assertInnerHtmlMatches(assert, actual, expected, message) {
33
- let cleanedActual = cleanWhiteSpace(stripScopedCSSAttributes(unwrap(actual)));
34
- let cleanedExpected = cleanWhiteSpace(expected);
35
- assert.strictEqual(cleanedActual, cleanedExpected, message);
36
- }
37
- function expectSearchDoc(assert, actual, expected, message) {
38
- assert.deepEqual(diffDoc(expected, actual ?? {}, false), [], message ?? "indexed search doc matches the searchable-driven generator");
39
- }
40
- (0, import_qunit.module)(`Integration | realm indexing`, function(hooks) {
41
- setupRenderingTest(hooks);
42
- hooks.beforeEach(function() {
43
- loader = getService("loader-service").loader;
44
- });
45
- setupLocalIndexing(hooks);
46
- let mockMatrixUtils = setupMockMatrix(hooks);
47
- setupCardLogs(hooks, async () => await loader.import("@cardstack/base/card-api"));
48
- async function getInstance(realm, url) {
49
- let maybeInstance = await realm.realmIndexQueryEngine.instance(url);
50
- if (maybeInstance?.type === "instance-error") return;
51
- return maybeInstance;
52
- }
53
- (0, import_qunit.test)("full indexing discovers card instances", async function(assert) {
54
- let { realm, adapter } = await setupIntegrationTestRealm({
55
- mockMatrixUtils,
56
- contents: { "empty.json": { data: { meta: { adoptsFrom: {
57
- module: "@cardstack/base/card-api",
58
- name: "CardDef"
59
- } } } } }
60
- });
61
- let queryEngine = realm.realmIndexQueryEngine;
62
- let { data: cards } = await searchCardsForTest(queryEngine, { filter: { type: baseCardRef } });
63
- assert.deepEqual(cards, [{
64
- id: testRRI("empty"),
65
- type: "card",
66
- attributes: {
67
- cardInfo,
68
- cardTitle: "Untitled Card",
69
- cardDescription: null,
70
- cardThumbnailURL: null
71
- },
72
- meta: {
73
- adoptsFrom: {
74
- module: rri("@cardstack/base/card-api"),
75
- name: "CardDef"
76
- },
77
- realmURL: ri("http://test-realm/test/"),
78
- realmInfo: {
79
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
80
- backgroundURL: null,
81
- iconURL: null,
82
- includePrerenderedDefaultRealmIndex: null,
83
- lastPublishedAt: null,
84
- name: "Unnamed Workspace",
85
- publishable: null,
86
- realmUserId: "@realm_server:localhost",
87
- showAsCatalog: null,
88
- visibility: "public"
89
- },
90
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}empty.json`),
91
- resourceCreatedAt: await getFileCreatedAt(realm, "empty.json")
92
- },
93
- links: { self: `${testRealmURL}empty` }
94
- }]);
95
- });
96
- (0, import_qunit.test)("indexing captures file meta content hash", async function(assert) {
97
- let { realm } = await setupIntegrationTestRealm({
98
- mockMatrixUtils,
99
- contents: { "notes.txt": "Hello from the test realm." }
100
- });
101
- await realm.fullIndex();
102
- let { virtualNetwork } = getService("network");
103
- let response = await virtualNetwork.fetch(new URL("notes.txt", testRealmURL), { headers: { Accept: SupportedMimeType.FileMeta } });
104
- assert.true(response.ok, "file meta request succeeds");
105
- let body = await response.json();
106
- assert.strictEqual(body?.data?.type, "file-meta");
107
- let contentHash = body?.data?.attributes?.contentHash;
108
- let expectedHash = md5(new TextEncoder().encode("Hello from the test realm."));
109
- assert.strictEqual(contentHash, expectedHash, "content hash is returned");
110
- });
111
- (0, import_qunit.test)("full indexing stores file entries with search doc and deps", async function(assert) {
112
- let { realm } = await setupIntegrationTestRealm({
113
- mockMatrixUtils,
114
- contents: { "notes.txt": "Hello from the test realm." }
115
- });
116
- await realm.fullIndex();
117
- let fileURL = new URL("notes.txt", testRealmURL);
118
- let fileEntry = await realm.realmIndexQueryEngine.file(fileURL);
119
- assert.ok(fileEntry, "file entry exists");
120
- assert.strictEqual(fileEntry?.type, "file");
121
- assert.strictEqual(fileEntry?.searchDoc?.name, "notes.txt", "search doc includes name");
122
- assert.strictEqual(fileEntry?.searchDoc?.contentType, "text/plain", "search doc includes contentType");
123
- assert.strictEqual(fileEntry?.searchDoc?.contentHash, md5(new TextEncoder().encode("Hello from the test realm.")), "search doc includes contentHash");
124
- assert.ok(fileEntry?.deps?.includes(`${baseRealmRRI}file-api`), "deps include base file-api module");
125
- let includesSelfFileDependency = fileEntry?.deps?.includes(fileURL.href);
126
- assert.false(includesSelfFileDependency, "deps exclude self file URL");
127
- });
128
- (0, import_qunit.test)("full indexing skips over unchanged items in index", async function(assert) {
129
- let { realm, adapter } = await setupIntegrationTestRealm({
130
- mockMatrixUtils,
131
- contents: {
132
- "test1.json": { data: { meta: { adoptsFrom: {
133
- module: "@cardstack/base/card-api",
134
- name: "CardDef"
135
- } } } },
136
- "test2.json": { data: { meta: { adoptsFrom: {
137
- module: "@cardstack/base/card-api",
138
- name: "CardDef"
139
- } } } },
140
- "pet.gts": `
141
- import { contains, field, CardDef } from "@cardstack/base/card-api";
142
- import StringField from "@cardstack/base/string";
143
-
144
- export class Pet extends CardDef {
145
- @field firstName = contains(StringField);
146
- }
147
- `
148
- }
149
- });
150
- assert.deepEqual(realm.realmIndexUpdater.stats, {
151
- filesIndexed: 3,
152
- fileErrors: 0,
153
- instanceErrors: 0,
154
- instancesIndexed: 2,
155
- totalIndexEntries: 5
156
- }, "indexer stats are correct");
157
- await new Promise((r) => setTimeout(r, 1e3));
158
- await adapter.write("test2.json", JSON.stringify({ data: {
159
- attributes: { cardTitle: "test" },
160
- meta: { adoptsFrom: {
161
- module: rri("@cardstack/base/card-api"),
162
- name: "CardDef"
163
- } }
164
- } }));
165
- await realm.fullIndex();
166
- assert.deepEqual(realm.realmIndexUpdater.stats, {
167
- filesIndexed: 1,
168
- fileErrors: 0,
169
- instanceErrors: 0,
170
- instancesIndexed: 1,
171
- totalIndexEntries: 5
172
- }, "indexer stats are correct");
173
- });
174
- (0, import_qunit.test)("a card with a broken linksTo target indexes cleanly, and invalidation fan-out re-indexes it when the target is later created", async function(assert) {
175
- let { realm, adapter } = await setupIntegrationTestRealm({
176
- mockMatrixUtils,
177
- contents: { "Pet/mango.json": { data: {
178
- id: `${testRealmURL}Pet/mango`,
179
- attributes: { firstName: "Mango" },
180
- relationships: { owner: { links: { self: `../Person/owner` } } },
181
- meta: { adoptsFrom: {
182
- module: `${testModuleRealm}pet`,
183
- name: "Pet"
184
- } }
185
- } } }
186
- });
187
- let queryEngine = realm.realmIndexQueryEngine;
188
- {
189
- let mango = await queryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
190
- if (mango?.type === "doc") {
191
- let owner = mango.doc.data.relationships?.owner;
192
- assert.strictEqual((Array.isArray(owner) ? owner[0] : owner)?.links?.self, `../Person/owner`, "broken owner reference is preserved on the wire so the consumer can render the placeholder");
193
- } else assert.ok(false, `mango with a missing linksTo target indexes as a clean instance, got: ${mango?.error?.errorDetail.message}`);
194
- let mangoInstance = await queryEngine.instance(new URL(`${testRealmURL}Pet/mango`));
195
- assert.ok((mangoInstance?.deps ?? []).some((dep) => dep === `${testRealmURL}Person/owner.json` || dep === `${testRealmURL}Person/owner`), "deps include the unresolved owner link so invalidation can reach mango when the target is created");
196
- }
197
- await realm.write("Person/owner.json", JSON.stringify({ data: {
198
- id: testRRI("Person/owner"),
199
- attributes: { firstName: "Hassan" },
200
- meta: { adoptsFrom: {
201
- module: rri(`${testModuleRealm}person`),
202
- name: "Person"
203
- } }
204
- } }));
205
- {
206
- let mango = await queryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
207
- if (mango?.type === "doc") assert.deepEqual(mango.doc.data, {
208
- id: testRRI("Pet/mango"),
209
- type: "card",
210
- links: { self: "./mango" },
211
- attributes: {
212
- cardDescription: null,
213
- firstName: "Mango",
214
- cardTitle: "Mango",
215
- cardThumbnailURL: null,
216
- cardInfo
217
- },
218
- relationships: { owner: { links: { self: `../Person/owner` } } },
219
- meta: {
220
- adoptsFrom: {
221
- module: rri(`${testModuleRealm}pet`),
222
- name: "Pet"
223
- },
224
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Pet/mango.json`),
225
- resourceCreatedAt: await getFileCreatedAt(realm, "Pet/mango.json"),
226
- realmURL: ri("http://test-realm/test/"),
227
- realmInfo: {
228
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
229
- backgroundURL: null,
230
- iconURL: null,
231
- includePrerenderedDefaultRealmIndex: null,
232
- lastPublishedAt: null,
233
- name: "Unnamed Workspace",
234
- publishable: null,
235
- realmUserId: "@realm_server:localhost",
236
- showAsCatalog: null,
237
- visibility: "public"
238
- }
239
- }
240
- });
241
- else assert.ok(false, `search entry was an error: ${mango?.error.errorDetail.message}`);
242
- }
243
- });
244
- (0, import_qunit.test)("can query the \"production\" index while performing indexing operations", async function(assert) {
245
- let { realm } = await setupIntegrationTestRealm({
246
- mockMatrixUtils,
247
- contents: { "Pet/mango.json": { data: {
248
- id: `${testRealmURL}Pet/mango`,
249
- attributes: { firstName: "Mango" },
250
- meta: { adoptsFrom: {
251
- module: `${testModuleRealm}pet`,
252
- name: "Pet"
253
- } }
254
- } } }
255
- });
256
- let queryEngine = realm.realmIndexQueryEngine;
257
- let updateCard = realm.write("Pet/mango.json", JSON.stringify({ data: {
258
- id: testRRI("Pet/mango"),
259
- attributes: { firstName: "Van Gogh" },
260
- meta: { adoptsFrom: {
261
- module: rri(`${testModuleRealm}pet`),
262
- name: "Pet"
263
- } }
264
- } }));
265
- let getCard = queryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
266
- let [_, entry] = await Promise.all([updateCard, getCard]);
267
- if (entry?.type === "doc") {
268
- delete entry.doc.data.meta.lastModified;
269
- delete entry.doc.data.meta.resourceCreatedAt;
270
- assert.deepEqual(entry.doc.data, {
271
- id: testRRI("Pet/mango"),
272
- type: "card",
273
- links: { self: "./mango" },
274
- attributes: {
275
- cardDescription: null,
276
- firstName: "Mango",
277
- cardTitle: "Mango",
278
- cardThumbnailURL: null,
279
- cardInfo
280
- },
281
- meta: {
282
- adoptsFrom: {
283
- module: rri(`${testModuleRealm}pet`),
284
- name: "Pet"
285
- },
286
- realmURL: ri("http://test-realm/test/"),
287
- realmInfo: {
288
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
289
- backgroundURL: null,
290
- iconURL: null,
291
- includePrerenderedDefaultRealmIndex: null,
292
- lastPublishedAt: null,
293
- name: "Unnamed Workspace",
294
- publishable: null,
295
- realmUserId: "@realm_server:localhost",
296
- showAsCatalog: null,
297
- visibility: "public"
298
- }
299
- }
300
- });
301
- } else assert.ok(false, `search entry was an error: ${entry?.error.errorDetail.message}`);
302
- {
303
- let entry = await queryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
304
- if (entry?.type === "doc") {
305
- delete entry.doc.data.meta.lastModified;
306
- delete entry.doc.data.meta.resourceCreatedAt;
307
- assert.deepEqual(entry.doc.data, {
308
- id: testRRI("Pet/mango"),
309
- type: "card",
310
- links: { self: "./mango" },
311
- attributes: {
312
- cardDescription: null,
313
- firstName: "Van Gogh",
314
- cardTitle: "Van Gogh",
315
- cardThumbnailURL: null,
316
- cardInfo
317
- },
318
- meta: {
319
- adoptsFrom: {
320
- module: rri(`${testModuleRealm}pet`),
321
- name: "Pet"
322
- },
323
- realmURL: ri("http://test-realm/test/"),
324
- realmInfo: {
325
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
326
- backgroundURL: null,
327
- iconURL: null,
328
- includePrerenderedDefaultRealmIndex: null,
329
- lastPublishedAt: null,
330
- name: "Unnamed Workspace",
331
- publishable: null,
332
- realmUserId: "@realm_server:localhost",
333
- showAsCatalog: null,
334
- visibility: "public"
335
- }
336
- }
337
- });
338
- } else assert.ok(false, `search entry was an error: ${entry?.error.errorDetail.message}`);
339
- }
340
- });
341
- (0, import_qunit.test)("write with waitForIndex:false returns before indexing settles and incrementalIndexing() drains it", async function(assert) {
342
- let { realm } = await setupIntegrationTestRealm({
343
- mockMatrixUtils,
344
- contents: { "Pet/mango.json": { data: {
345
- id: `${testRealmURL}Pet/mango`,
346
- attributes: { firstName: "Mango" },
347
- meta: { adoptsFrom: {
348
- module: `${testModuleRealm}pet`,
349
- name: "Pet"
350
- } }
351
- } } }
352
- });
353
- let queryEngine = realm.realmIndexQueryEngine;
354
- await realm.write("Pet/mango.json", JSON.stringify({ data: {
355
- id: testRRI("Pet/mango"),
356
- attributes: { firstName: "Van Gogh" },
357
- meta: { adoptsFrom: {
358
- module: rri(`${testModuleRealm}pet`),
359
- name: "Pet"
360
- } }
361
- } }), { waitForIndex: false });
362
- let pendingIndex = realm.incrementalIndexing();
363
- assert.notStrictEqual(pendingIndex, void 0, "indexing is still pending immediately after waitForIndex:false write");
364
- await pendingIndex;
365
- assert.strictEqual(realm.incrementalIndexing(), void 0, "incrementalIndexing() resolves to undefined once the deferred indexing settles");
366
- let entry = await queryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
367
- if (entry?.type === "doc") assert.strictEqual(entry.doc.data.attributes?.firstName, "Van Gogh", "index reflects the deferred-indexed write after the drain");
368
- else assert.ok(false, `search entry was an error: ${entry?.error.errorDetail.message}`);
369
- });
370
- (0, import_qunit.test)("HTTP DELETE +source returns before incremental indexing settles", async function(assert) {
371
- let { realm, adapter } = await setupIntegrationTestRealm({
372
- mockMatrixUtils,
373
- contents: { "Pet/mango.json": { data: {
374
- id: `${testRealmURL}Pet/mango`,
375
- attributes: { firstName: "Mango" },
376
- meta: { adoptsFrom: {
377
- module: `${testModuleRealm}pet`,
378
- name: "Pet"
379
- } }
380
- } } }
381
- });
382
- let queryEngine = realm.realmIndexQueryEngine;
383
- await realm.incrementalIndexing();
384
- assert.strictEqual(realm.incrementalIndexing(), void 0, "baseline: no pending indexing before DELETE");
385
- let response = await realm.handle(new Request(`${testRealmURL}Pet/mango`, {
386
- method: "DELETE",
387
- headers: { Accept: "application/vnd.card+source" }
388
- }));
389
- if (!response) throw new Error("realm did not handle the DELETE");
390
- assert.strictEqual(response.status, 204, "DELETE returns 204");
391
- assert.strictEqual(await adapter.openFile("Pet/mango.json"), void 0, "file is gone from disk before indexing settles");
392
- let pendingIndex = realm.incrementalIndexing();
393
- assert.notStrictEqual(pendingIndex, void 0, "DELETE returned before deferred indexing settled");
394
- await pendingIndex;
395
- assert.strictEqual(realm.incrementalIndexing(), void 0, "incrementalIndexing() drains the deferred delete work");
396
- let entry = await queryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
397
- assert.strictEqual(entry, void 0, "index reflects the deletion after the drain");
398
- });
399
- (0, import_qunit.test)("realm.delete() with default options (waitForIndex:true) awaits indexing inline", async function(assert) {
400
- let { realm } = await setupIntegrationTestRealm({
401
- mockMatrixUtils,
402
- contents: { "Pet/mango.json": { data: {
403
- id: `${testRealmURL}Pet/mango`,
404
- attributes: { firstName: "Mango" },
405
- meta: { adoptsFrom: {
406
- module: `${testModuleRealm}pet`,
407
- name: "Pet"
408
- } }
409
- } } }
410
- });
411
- await realm.incrementalIndexing();
412
- await realm.delete("Pet/mango.json");
413
- assert.strictEqual(realm.incrementalIndexing(), void 0, "no pending indexing remains after a default delete — the await happened inline");
414
- });
415
- (0, import_qunit.test)("write with default options (waitForIndex:true) awaits indexing inline", async function(assert) {
416
- let { realm } = await setupIntegrationTestRealm({
417
- mockMatrixUtils,
418
- contents: { "Pet/mango.json": { data: {
419
- id: `${testRealmURL}Pet/mango`,
420
- attributes: { firstName: "Mango" },
421
- meta: { adoptsFrom: {
422
- module: `${testModuleRealm}pet`,
423
- name: "Pet"
424
- } }
425
- } } }
426
- });
427
- await realm.write("Pet/mango.json", JSON.stringify({ data: {
428
- id: testRRI("Pet/mango"),
429
- attributes: { firstName: "Van Gogh" },
430
- meta: { adoptsFrom: {
431
- module: rri(`${testModuleRealm}pet`),
432
- name: "Pet"
433
- } }
434
- } }));
435
- assert.strictEqual(realm.incrementalIndexing(), void 0, "no pending indexing remains after a default write — the await happened inline");
436
- });
437
- (0, import_qunit.test)("can index card with linkTo field", async function(assert) {
438
- let { realm, adapter } = await setupIntegrationTestRealm({
439
- mockMatrixUtils,
440
- contents: {
441
- "Person/owner.json": { data: {
442
- id: `${testRealmURL}Person/owner`,
443
- attributes: { firstName: "Hassan" },
444
- meta: { adoptsFrom: {
445
- module: `${testModuleRealm}person`,
446
- name: "Person"
447
- } }
448
- } },
449
- "Pet/mango.json": { data: {
450
- id: `${testRealmURL}Pet/mango`,
451
- attributes: { firstName: "Mango" },
452
- relationships: { owner: { links: { self: `../Person/owner` } } },
453
- meta: { adoptsFrom: {
454
- module: `${testModuleRealm}pet`,
455
- name: "Pet"
456
- } }
457
- } }
458
- }
459
- });
460
- let mango = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
461
- if (mango?.type === "doc") assert.deepEqual(mango.doc.data, {
462
- id: testRRI("Pet/mango"),
463
- type: "card",
464
- links: { self: "./mango" },
465
- attributes: {
466
- cardDescription: null,
467
- firstName: "Mango",
468
- cardTitle: "Mango",
469
- cardThumbnailURL: null,
470
- cardInfo
471
- },
472
- relationships: { owner: { links: { self: `../Person/owner` } } },
473
- meta: {
474
- adoptsFrom: {
475
- module: rri(`${testModuleRealm}pet`),
476
- name: "Pet"
477
- },
478
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Pet/mango.json`),
479
- resourceCreatedAt: await getFileCreatedAt(realm, "Pet/mango.json"),
480
- realmURL: ri("http://test-realm/test/"),
481
- realmInfo: {
482
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
483
- backgroundURL: null,
484
- iconURL: null,
485
- includePrerenderedDefaultRealmIndex: null,
486
- lastPublishedAt: null,
487
- name: "Unnamed Workspace",
488
- publishable: null,
489
- realmUserId: "@realm_server:localhost",
490
- showAsCatalog: null,
491
- visibility: "public"
492
- }
493
- }
494
- });
495
- else assert.ok(false, `search entry was an error: ${mango?.error.errorDetail.message}`);
496
- });
497
- (0, import_qunit.test)("can index card with a relative linkTo field", async function(assert) {
498
- let { realm, adapter } = await setupIntegrationTestRealm({
499
- mockMatrixUtils,
500
- contents: {
501
- "Person/owner.json": { data: {
502
- id: `${testRealmURL}Person/owner`,
503
- attributes: { firstName: "Hassan" },
504
- meta: { adoptsFrom: {
505
- module: `${testModuleRealm}person`,
506
- name: "Person"
507
- } }
508
- } },
509
- "Pet/mango.json": { data: {
510
- id: `${testRealmURL}Pet/mango`,
511
- attributes: { firstName: "Mango" },
512
- relationships: { owner: { links: { self: `../Person/owner` } } },
513
- meta: { adoptsFrom: {
514
- module: `${testModuleRealm}pet`,
515
- name: "Pet"
516
- } }
517
- } }
518
- }
519
- });
520
- let mango = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}Pet/mango`));
521
- if (mango?.type === "doc") assert.deepEqual(mango.doc.data, {
522
- id: testRRI("Pet/mango"),
523
- type: "card",
524
- links: { self: "./mango" },
525
- attributes: {
526
- cardDescription: null,
527
- firstName: "Mango",
528
- cardTitle: "Mango",
529
- cardThumbnailURL: null,
530
- cardInfo
531
- },
532
- relationships: { owner: { links: { self: `../Person/owner` } } },
533
- meta: {
534
- adoptsFrom: {
535
- module: rri(`${testModuleRealm}pet`),
536
- name: "Pet"
537
- },
538
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Pet/mango.json`),
539
- resourceCreatedAt: await getFileCreatedAt(realm, "Pet/mango.json"),
540
- realmURL: ri("http://test-realm/test/"),
541
- realmInfo: {
542
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
543
- backgroundURL: null,
544
- iconURL: null,
545
- includePrerenderedDefaultRealmIndex: null,
546
- lastPublishedAt: null,
547
- name: "Unnamed Workspace",
548
- publishable: null,
549
- realmUserId: "@realm_server:localhost",
550
- showAsCatalog: null,
551
- visibility: "public"
552
- }
553
- }
554
- });
555
- else assert.ok(false, `search entry was an error: ${mango?.error.errorDetail.message}`);
556
- });
557
- (0, import_qunit.test)("relative code-ref fields are serialized as absolute URLs", async function(assert) {
558
- class Person extends CardDef {
559
- static {
560
- decorateFieldV2(this.prototype, "firstName", [field], function() {
561
- return contains(string_default);
562
- });
563
- }
564
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
565
- }
566
- let { realm, adapter } = await setupIntegrationTestRealm({
567
- mockMatrixUtils,
568
- contents: {
569
- "person.gts": { Person },
570
- "person-spec.json": { data: {
571
- attributes: {
572
- cardTitle: "Person Card",
573
- cardDescription: "Spec for Person card",
574
- specType: "card",
575
- ref: {
576
- module: `./person`,
577
- name: "Person"
578
- }
579
- },
580
- meta: { adoptsFrom: {
581
- module: "@cardstack/base/spec",
582
- name: "Spec"
583
- } }
584
- } }
585
- }
586
- });
587
- let indexer = realm.realmIndexQueryEngine;
588
- let entry = await indexer.cardDocument(new URL(`${testRealmURL}person-spec`));
589
- if (entry?.type === "doc") {
590
- assert.deepEqual(entry.doc.data, {
591
- id: testRRI("person-spec"),
592
- type: "card",
593
- links: { self: "./person-spec" },
594
- attributes: {
595
- cardTitle: "Person Card",
596
- cardDescription: "Spec for Person card",
597
- moduleHref: `${testRealmURL}person`,
598
- readMe: null,
599
- specType: "card",
600
- isCard: true,
601
- isComponent: false,
602
- isField: false,
603
- isFile: false,
604
- cardThumbnailURL: null,
605
- ref: {
606
- module: `${testRealmURL}person`,
607
- name: "Person"
608
- },
609
- containedExamples: [],
610
- cardInfo
611
- },
612
- meta: {
613
- adoptsFrom: {
614
- module: rri("@cardstack/base/spec"),
615
- name: "Spec"
616
- },
617
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}person-spec.json`),
618
- resourceCreatedAt: await getFileCreatedAt(realm, "person-spec.json"),
619
- realmURL: testRealmURL,
620
- realmInfo: {
621
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
622
- backgroundURL: null,
623
- iconURL: null,
624
- includePrerenderedDefaultRealmIndex: null,
625
- lastPublishedAt: null,
626
- name: "Unnamed Workspace",
627
- publishable: null,
628
- realmUserId: "@realm_server:localhost",
629
- showAsCatalog: null,
630
- visibility: "public"
631
- }
632
- }
633
- });
634
- expectSearchDoc(assert, (await indexer.instance(new URL(`${testRealmURL}person-spec`)))?.searchDoc, {
635
- _cardType: "Spec",
636
- cardDescription: "Spec for Person card",
637
- id: `${testRealmURL}person-spec`,
638
- specType: "card",
639
- moduleHref: `${testRealmURL}person`,
640
- ref: `${testRealmURL}person/Person`,
641
- cardTitle: "Person Card",
642
- containedExamples: null,
643
- linkedExamples: null,
644
- fileExamples: null,
645
- isCard: true,
646
- isComponent: false,
647
- isField: false,
648
- isFile: false,
649
- cardTheme: null,
650
- cardInfo: {
651
- cardThumbnail: null,
652
- theme: null
653
- }
654
- });
655
- } else assert.ok(false, `search entry was an error: ${entry?.error.errorDetail.message}`);
656
- });
657
- (0, import_qunit.test)("absolute code-ref fields are preserved as absolute", async function(assert) {
658
- class Person extends CardDef {
659
- static {
660
- decorateFieldV2(this.prototype, "firstName", [field], function() {
661
- return contains(string_default);
662
- });
663
- }
664
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
665
- }
666
- let { realm, adapter } = await setupIntegrationTestRealm({
667
- mockMatrixUtils,
668
- contents: {
669
- "person.gts": { Person },
670
- "person-spec.json": { data: {
671
- attributes: {
672
- cardTitle: "Person Card",
673
- cardDescription: "Spec for Person card",
674
- specType: "card",
675
- ref: {
676
- module: `${testRealmURL}person`,
677
- name: "Person"
678
- }
679
- },
680
- meta: { adoptsFrom: {
681
- module: "@cardstack/base/spec",
682
- name: "Spec"
683
- } }
684
- } },
685
- "people-skill.json": { data: {
686
- attributes: {
687
- instructions: "How to win friends and influence people",
688
- commands: [{ codeRef: {
689
- module: `@cardstack/boxel-host/commands/switch-submode`,
690
- name: "default"
691
- } }]
692
- },
693
- meta: { adoptsFrom: skillCardRef }
694
- } }
695
- }
696
- });
697
- let indexer = realm.realmIndexQueryEngine;
698
- let entry = await indexer.cardDocument(new URL(`${testRealmURL}person-spec`));
699
- if (entry?.type === "doc") {
700
- assert.deepEqual(entry.doc.data, {
701
- id: testRRI("person-spec"),
702
- type: "card",
703
- links: { self: "./person-spec" },
704
- attributes: {
705
- cardTitle: "Person Card",
706
- cardDescription: "Spec for Person card",
707
- moduleHref: `${testRealmURL}person`,
708
- readMe: null,
709
- specType: "card",
710
- isCard: true,
711
- isComponent: false,
712
- isField: false,
713
- isFile: false,
714
- cardThumbnailURL: null,
715
- ref: {
716
- module: `${testRealmURL}person`,
717
- name: "Person"
718
- },
719
- containedExamples: [],
720
- cardInfo
721
- },
722
- meta: {
723
- adoptsFrom: {
724
- module: rri("@cardstack/base/spec"),
725
- name: "Spec"
726
- },
727
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}person-spec.json`),
728
- resourceCreatedAt: await getFileCreatedAt(realm, "person-spec.json"),
729
- realmURL: testRealmURL,
730
- realmInfo: {
731
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
732
- backgroundURL: null,
733
- iconURL: null,
734
- includePrerenderedDefaultRealmIndex: null,
735
- lastPublishedAt: null,
736
- name: "Unnamed Workspace",
737
- publishable: null,
738
- realmUserId: "@realm_server:localhost",
739
- showAsCatalog: null,
740
- visibility: "public"
741
- }
742
- }
743
- });
744
- expectSearchDoc(assert, (await indexer.instance(new URL(`${testRealmURL}person-spec`)))?.searchDoc, {
745
- _cardType: "Spec",
746
- cardDescription: "Spec for Person card",
747
- id: `${testRealmURL}person-spec`,
748
- specType: "card",
749
- moduleHref: `${testRealmURL}person`,
750
- ref: `${testRealmURL}person/Person`,
751
- cardTitle: "Person Card",
752
- containedExamples: null,
753
- linkedExamples: null,
754
- fileExamples: null,
755
- isCard: true,
756
- isComponent: false,
757
- isField: false,
758
- isFile: false,
759
- cardTheme: null,
760
- cardInfo: {
761
- cardThumbnail: null,
762
- theme: null
763
- }
764
- });
765
- } else assert.ok(false, `search entry was an error: ${entry?.error.errorDetail.message}`);
766
- entry = await indexer.cardDocument(new URL(`${testRealmURL}people-skill`));
767
- if (entry?.type === "doc") {
768
- assert.deepEqual(entry.doc.data, {
769
- id: testRRI("people-skill"),
770
- type: "card",
771
- links: { self: "./people-skill" },
772
- attributes: {
773
- commands: [{
774
- codeRef: {
775
- module: "@cardstack/boxel-host/commands/switch-submode",
776
- name: "default"
777
- },
778
- functionName: "switch-submode_dd88",
779
- requiresApproval: false,
780
- cardTitle: "Switch Submode",
781
- definition: null
782
- }],
783
- cardDescription: null,
784
- instructions: "How to win friends and influence people",
785
- cardThumbnailURL: null,
786
- cardTitle: null,
787
- cardInfo
788
- },
789
- meta: {
790
- adoptsFrom: skillCardRef,
791
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}people-skill.json`),
792
- resourceCreatedAt: await getFileCreatedAt(realm, "people-skill.json"),
793
- realmURL: testRealmURL,
794
- realmInfo: {
795
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
796
- backgroundURL: null,
797
- iconURL: null,
798
- includePrerenderedDefaultRealmIndex: null,
799
- lastPublishedAt: null,
800
- name: "Unnamed Workspace",
801
- publishable: null,
802
- realmUserId: "@realm_server:localhost",
803
- showAsCatalog: null,
804
- visibility: "public"
805
- }
806
- }
807
- });
808
- expectSearchDoc(assert, (await indexer.instance(new URL(`${testRealmURL}people-skill`)))?.searchDoc, {
809
- _cardType: "Skill",
810
- id: `${testRealmURL}people-skill`,
811
- instructions: "How to win friends and influence people",
812
- commands: [{
813
- codeRef: `@cardstack/boxel-host/commands/switch-submode/default`,
814
- functionName: "switch-submode_dd88",
815
- requiresApproval: false,
816
- cardTitle: "Switch Submode",
817
- definition: null
818
- }],
819
- cardTheme: null,
820
- cardInfo: {
821
- cardThumbnail: null,
822
- theme: null
823
- }
824
- });
825
- } else assert.ok(false, `search entry was an error: ${entry?.error.errorDetail.message}`);
826
- });
827
- (0, import_qunit.test)("can recover from rendering a card that has a template error", async function(assert) {
828
- {
829
- class Person extends CardDef {
830
- static {
831
- decorateFieldV2(this.prototype, "firstName", [field], function() {
832
- return contains(string_default);
833
- });
834
- }
835
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
836
- static isolated = class Isolated extends Component$1 {
837
- static {
838
- setComponentTemplate(templateFactory({
839
- "id": "pbAMu5rb",
840
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
841
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
842
- "isStrictMode": true
843
- }), this);
844
- }
845
- };
846
- static embedded = class Embedded extends Component$1 {
847
- static {
848
- setComponentTemplate(templateFactory({
849
- "id": "455R5/G0",
850
- "block": "[[[10,\"h1\"],[12],[1,\" Person Embedded Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
851
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
852
- "isStrictMode": true
853
- }), this);
854
- }
855
- };
856
- static fitted = class Fitted extends Component$1 {
857
- static {
858
- setComponentTemplate(templateFactory({
859
- "id": "O3XcZBYx",
860
- "block": "[[[10,\"h1\"],[12],[1,\" Person Fitted Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
861
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
862
- "isStrictMode": true
863
- }), this);
864
- }
865
- };
866
- }
867
- class Boom extends CardDef {
868
- static {
869
- decorateFieldV2(this.prototype, "firstName", [field], function() {
870
- return contains(string_default);
871
- });
872
- }
873
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
874
- static isolated = class Isolated extends Component$1 {
875
- static {
876
- setComponentTemplate(templateFactory({
877
- "id": "KxUueTZn",
878
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[1,[30,0,[\"boom\"]]],[13]],[\"@fields\"],[]]",
879
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
880
- "isStrictMode": true
881
- }), this);
882
- }
883
- get boom() {
884
- throw new Error("intentional error");
885
- }
886
- };
887
- }
888
- let { realm } = await setupIntegrationTestRealm({
889
- mockMatrixUtils,
890
- contents: {
891
- "person.gts": { Person },
892
- "boom.gts": { Boom },
893
- "vangogh.json": { data: {
894
- attributes: { firstName: "Van Gogh" },
895
- meta: { adoptsFrom: {
896
- module: `${testRealmURL}person`,
897
- name: "Person"
898
- } }
899
- } },
900
- "boom.json": { data: {
901
- attributes: { firstName: "Boom!" },
902
- meta: { adoptsFrom: {
903
- module: "./boom",
904
- name: "Boom"
905
- } }
906
- } }
907
- }
908
- });
909
- let queryEngine = realm.realmIndexQueryEngine;
910
- let realmIndexUpdater = realm.realmIndexUpdater;
911
- {
912
- let entry = await queryEngine.cardDocument(new URL(`${testRealmURL}boom`));
913
- if (entry?.type === "error") {
914
- assert.strictEqual(entry.error.errorDetail.message, "Encountered error rendering HTML for card: intentional error");
915
- let errorDeps = entry.error.errorDetail.deps ?? [];
916
- assert.ok(errorDeps.includes(`${testRealmURL}boom`), "error deps include the card's own module");
917
- assert.ok(errorDeps.some((dep) => /@cardstack\/base\/default-templates\/embedded\.gts.*\.glimmer-scoped\.css$/.test(dep)), "error deps include transitive render dependencies (the full closure)");
918
- } else assert.ok("false", "expected search entry to be an error document");
919
- }
920
- {
921
- let entry = await queryEngine.cardDocument(new URL(`${testRealmURL}vangogh`));
922
- if (entry?.type === "doc") {
923
- assert.deepEqual(entry.doc.data.attributes?.firstName, "Van Gogh");
924
- let { isolatedHtml, embeddedHtml, fittedHtml } = await getInstance(realm, new URL(`${testRealmURL}vangogh`)) ?? {};
925
- assertInnerHtmlMatches(assert, isolatedHtml, `<h1> Van Gogh </h1>`);
926
- assertInnerHtmlMatches(assert, embeddedHtml[`${testRealmURL}person/Person`], `<h1> Person Embedded Card: Van Gogh </h1>`);
927
- assertInnerHtmlMatches(assert, fittedHtml[`${testRealmURL}person/Person`], `<h1> Person Fitted Card: Van Gogh </h1>`);
928
- } else assert.ok(false, `expected search entry to be a document but was: ${entry?.error.errorDetail.message}`);
929
- }
930
- await realmIndexUpdater.fullIndex();
931
- {
932
- let entry = await queryEngine.cardDocument(new URL(`${testRealmURL}vangogh`));
933
- if (entry?.type === "doc") {
934
- assert.deepEqual(entry.doc.data.attributes?.firstName, "Van Gogh");
935
- let { isolatedHtml, embeddedHtml, fittedHtml } = await getInstance(realm, new URL(`${testRealmURL}vangogh`)) ?? {};
936
- assertInnerHtmlMatches(assert, isolatedHtml, `<h1> Van Gogh </h1>`);
937
- assertInnerHtmlMatches(assert, embeddedHtml[`${testRealmURL}person/Person`], `<h1> Person Embedded Card: Van Gogh </h1>`);
938
- assertInnerHtmlMatches(assert, fittedHtml[`${testRealmURL}person/Person`], `<h1> Person Fitted Card: Van Gogh </h1>`);
939
- } else assert.ok(false, `expected search entry to be a document but was: ${entry?.error.errorDetail.message}`);
940
- }
941
- }
942
- });
943
- (0, import_qunit.test)("can recover from rendering a card that has a nested card with a template error", async function(assert) {
944
- class Boom extends FieldDef {
945
- static {
946
- decorateFieldV2(this.prototype, "firstName", [field], function() {
947
- return contains(string_default);
948
- });
949
- }
950
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
951
- static embedded = class Embedded extends Component$1 {
952
- static {
953
- setComponentTemplate(templateFactory({
954
- "id": "KxUueTZn",
955
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[1,[30,0,[\"boom\"]]],[13]],[\"@fields\"],[]]",
956
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
957
- "isStrictMode": true
958
- }), this);
959
- }
960
- get boom() {
961
- throw new Error("intentional error");
962
- }
963
- };
964
- }
965
- class BoomPerson extends CardDef {
966
- static {
967
- decorateFieldV2(this.prototype, "firstName", [field], function() {
968
- return contains(string_default);
969
- });
970
- }
971
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
972
- static {
973
- decorateFieldV2(this.prototype, "boom", [field], function() {
974
- return contains(Boom);
975
- });
976
- }
977
- #boom = (initializeDeferredDecorator(this, "boom"), void 0);
978
- static isolated = class Isolated extends Component$1 {
979
- static {
980
- setComponentTemplate(templateFactory({
981
- "id": "boUjskQF",
982
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13],[1,\"\\n\"],[10,\"h2\"],[12],[8,[30,1,[\"boom\"]],null,null,null],[13]],[\"@fields\"],[]]",
983
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
984
- "isStrictMode": true
985
- }), this);
986
- }
987
- };
988
- }
989
- class Person extends CardDef {
990
- static {
991
- decorateFieldV2(this.prototype, "firstName", [field], function() {
992
- return contains(string_default);
993
- });
994
- }
995
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
996
- static isolated = class Isolated extends Component$1 {
997
- static {
998
- setComponentTemplate(templateFactory({
999
- "id": "pbAMu5rb",
1000
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1001
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1002
- "isStrictMode": true
1003
- }), this);
1004
- }
1005
- };
1006
- static embedded = class Embedded extends Component$1 {
1007
- static {
1008
- setComponentTemplate(templateFactory({
1009
- "id": "455R5/G0",
1010
- "block": "[[[10,\"h1\"],[12],[1,\" Person Embedded Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1011
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1012
- "isStrictMode": true
1013
- }), this);
1014
- }
1015
- };
1016
- static fitted = class Fitted extends Component$1 {
1017
- static {
1018
- setComponentTemplate(templateFactory({
1019
- "id": "O3XcZBYx",
1020
- "block": "[[[10,\"h1\"],[12],[1,\" Person Fitted Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1021
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1022
- "isStrictMode": true
1023
- }), this);
1024
- }
1025
- };
1026
- }
1027
- let { realm } = await setupIntegrationTestRealm({
1028
- mockMatrixUtils,
1029
- contents: {
1030
- "boom-person.gts": { BoomPerson },
1031
- "boom.gts": { Boom },
1032
- "person.gts": { Person },
1033
- "vangogh.json": { data: {
1034
- attributes: {
1035
- firstName: "Van Gogh",
1036
- boom: { firstName: "Mango" }
1037
- },
1038
- meta: { adoptsFrom: {
1039
- module: "./boom-person",
1040
- name: "BoomPerson"
1041
- } }
1042
- } },
1043
- "working-van-gogh.json": { data: {
1044
- attributes: { firstName: "Van Gogh" },
1045
- meta: { adoptsFrom: {
1046
- module: `${testRealmURL}person`,
1047
- name: "Person"
1048
- } }
1049
- } }
1050
- }
1051
- });
1052
- let indexer = realm.realmIndexQueryEngine;
1053
- let entry = await indexer.cardDocument(new URL(`${testRealmURL}vangogh`));
1054
- if (entry?.type === "error") assert.strictEqual(entry.error.errorDetail.message, "Encountered error rendering HTML for card: intentional error");
1055
- else assert.ok("false", "expected search entry to be an error document");
1056
- await realm.reindex();
1057
- entry = await indexer.cardDocument(new URL(`${testRealmURL}working-van-gogh`));
1058
- if (entry?.type === "doc") {
1059
- assert.deepEqual(entry.doc.data.attributes?.firstName, "Van Gogh");
1060
- let { isolatedHtml, embeddedHtml, fittedHtml } = await getInstance(realm, new URL(`${testRealmURL}working-van-gogh`)) ?? {};
1061
- assertInnerHtmlMatches(assert, isolatedHtml, `<h1> Van Gogh </h1>`);
1062
- assertInnerHtmlMatches(assert, embeddedHtml[`${testRealmURL}person/Person`], `<h1> Person Embedded Card: Van Gogh </h1>`);
1063
- assertInnerHtmlMatches(assert, fittedHtml[`${testRealmURL}person/Person`], `<h1> Person Fitted Card: Van Gogh </h1>`);
1064
- } else assert.ok(false, `expected search entry to be a document but was: ${entry?.error.errorDetail.message}`);
1065
- });
1066
- (0, import_qunit.test)("can recover from rendering a card that encounters a template error in its own custom component", async function(assert) {
1067
- class Custom extends Component {
1068
- static {
1069
- setComponentTemplate(templateFactory({
1070
- "id": "L1UHS+ps",
1071
- "block": "[[[1,[30,0,[\"boom\"]]]],[],[]]",
1072
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1073
- "isStrictMode": true
1074
- }), this);
1075
- }
1076
- get boom() {
1077
- throw new Error("intentional error");
1078
- }
1079
- }
1080
- class CustomBoom extends FieldDef {
1081
- static {
1082
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1083
- return contains(string_default);
1084
- });
1085
- }
1086
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1087
- static embedded = class Embedded extends Component$1 {
1088
- static {
1089
- setComponentTemplate(templateFactory({
1090
- "id": "GCbWRRAT",
1091
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[8,[32,0],null,null,null],[13]],[\"@fields\"],[]]",
1092
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1093
- "scope": () => [Custom],
1094
- "isStrictMode": true
1095
- }), this);
1096
- }
1097
- };
1098
- }
1099
- class BoomPerson2 extends CardDef {
1100
- static {
1101
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1102
- return contains(string_default);
1103
- });
1104
- }
1105
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1106
- static {
1107
- decorateFieldV2(this.prototype, "boom", [field], function() {
1108
- return contains(CustomBoom);
1109
- });
1110
- }
1111
- #boom = (initializeDeferredDecorator(this, "boom"), void 0);
1112
- static isolated = class Isolated extends Component$1 {
1113
- static {
1114
- setComponentTemplate(templateFactory({
1115
- "id": "boUjskQF",
1116
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13],[1,\"\\n\"],[10,\"h2\"],[12],[8,[30,1,[\"boom\"]],null,null,null],[13]],[\"@fields\"],[]]",
1117
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1118
- "isStrictMode": true
1119
- }), this);
1120
- }
1121
- };
1122
- }
1123
- class Person extends CardDef {
1124
- static {
1125
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1126
- return contains(string_default);
1127
- });
1128
- }
1129
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1130
- static isolated = class Isolated extends Component$1 {
1131
- static {
1132
- setComponentTemplate(templateFactory({
1133
- "id": "pbAMu5rb",
1134
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1135
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1136
- "isStrictMode": true
1137
- }), this);
1138
- }
1139
- };
1140
- static embedded = class Embedded extends Component$1 {
1141
- static {
1142
- setComponentTemplate(templateFactory({
1143
- "id": "455R5/G0",
1144
- "block": "[[[10,\"h1\"],[12],[1,\" Person Embedded Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1145
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1146
- "isStrictMode": true
1147
- }), this);
1148
- }
1149
- };
1150
- static fitted = class Fitted extends Component$1 {
1151
- static {
1152
- setComponentTemplate(templateFactory({
1153
- "id": "O3XcZBYx",
1154
- "block": "[[[10,\"h1\"],[12],[1,\" Person Fitted Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1155
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1156
- "isStrictMode": true
1157
- }), this);
1158
- }
1159
- };
1160
- }
1161
- let { realm } = await setupIntegrationTestRealm({
1162
- mockMatrixUtils,
1163
- contents: {
1164
- "boom-person2.gts": { BoomPerson2 },
1165
- "custom-boom.gts": { CustomBoom },
1166
- "person.gts": { Person },
1167
- "vangogh.json": { data: {
1168
- attributes: {
1169
- firstName: "Van Gogh",
1170
- boom: { firstName: "Mango" }
1171
- },
1172
- meta: { adoptsFrom: {
1173
- module: "./boom-person2",
1174
- name: "BoomPerson2"
1175
- } }
1176
- } },
1177
- "working-vangogh.json": { data: {
1178
- attributes: { firstName: "Van Gogh" },
1179
- meta: { adoptsFrom: {
1180
- module: `${testRealmURL}person`,
1181
- name: "Person"
1182
- } }
1183
- } }
1184
- }
1185
- });
1186
- let indexer = realm.realmIndexQueryEngine;
1187
- let entry = await indexer.cardDocument(new URL(`${testRealmURL}vangogh`));
1188
- if (entry?.type === "error") assert.strictEqual(entry.error.errorDetail.message, "Encountered error rendering HTML for card: intentional error");
1189
- else assert.ok("false", "expected search entry to be an error document");
1190
- await realm.reindex();
1191
- entry = await indexer.cardDocument(new URL(`${testRealmURL}working-vangogh`));
1192
- if (entry?.type === "doc") {
1193
- assert.deepEqual(entry.doc.data.attributes?.firstName, "Van Gogh");
1194
- let { isolatedHtml, embeddedHtml, fittedHtml } = await getInstance(realm, new URL(`${testRealmURL}working-vangogh`)) ?? {};
1195
- assertInnerHtmlMatches(assert, isolatedHtml, `<h1> Van Gogh </h1>`);
1196
- assert.false(isolatedHtml.includes("id=\"ember"), `isolated HTML does not include ember ID's`);
1197
- assertInnerHtmlMatches(assert, embeddedHtml[`${testRealmURL}person/Person`], `<h1> Person Embedded Card: Van Gogh </h1>`);
1198
- assertInnerHtmlMatches(assert, fittedHtml[`${testRealmURL}person/Person`], `<h1> Person Fitted Card: Van Gogh </h1>`);
1199
- assert.false(Object.values(embeddedHtml).join("").includes("id=\"ember"), `embeddedHtml HTML does not include ember ID's`);
1200
- assert.false(Object.values(fittedHtml).join("").includes("id=\"ember"), `fittedHtml HTML does not include ember ID's`);
1201
- } else assert.ok(false, `expected search entry to be a document but was: ${entry?.error.errorDetail.message}`);
1202
- });
1203
- (0, import_qunit.test)("can incrementally index a card", async function(assert) {
1204
- class Person extends CardDef {
1205
- static {
1206
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1207
- return contains(string_default);
1208
- });
1209
- }
1210
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1211
- static isolated = class Isolated extends Component$1 {
1212
- static {
1213
- setComponentTemplate(templateFactory({
1214
- "id": "pbAMu5rb",
1215
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1216
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1217
- "isStrictMode": true
1218
- }), this);
1219
- }
1220
- };
1221
- static atom = class Atom extends Component$1 {
1222
- static {
1223
- setComponentTemplate(templateFactory({
1224
- "id": "MvjivV0J",
1225
- "block": "[[[10,0],[14,0,\"atom\"],[12],[1,[30,1,[\"firstName\"]]],[13]],[\"@model\"],[]]",
1226
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1227
- "isStrictMode": true
1228
- }), this);
1229
- }
1230
- };
1231
- }
1232
- let { realm, adapter } = await setupIntegrationTestRealm({
1233
- mockMatrixUtils,
1234
- contents: {
1235
- "person.gts": { Person },
1236
- "vangogh.json": { data: {
1237
- attributes: { firstName: "Van Gogh" },
1238
- meta: { adoptsFrom: {
1239
- module: `./person`,
1240
- name: "Person"
1241
- } }
1242
- } }
1243
- }
1244
- });
1245
- await realm.write("vangogh.json", JSON.stringify({ data: {
1246
- id: testRRI("vangogh"),
1247
- attributes: { firstName: "Van Van" },
1248
- meta: { adoptsFrom: {
1249
- module: testRRI("person"),
1250
- name: "Person"
1251
- } }
1252
- } }));
1253
- let { instance } = await getInstance(realm, new URL(`${testRealmURL}vangogh`)) ?? {};
1254
- assert.deepEqual(instance, {
1255
- id: testRRI("vangogh"),
1256
- type: "card",
1257
- attributes: {
1258
- cardInfo: {
1259
- summary: null,
1260
- notes: null,
1261
- cardThumbnailURL: null,
1262
- name: null
1263
- },
1264
- cardDescription: null,
1265
- firstName: "Van Van",
1266
- cardThumbnailURL: null,
1267
- cardTitle: "Untitled Card"
1268
- },
1269
- meta: {
1270
- adoptsFrom: {
1271
- module: rri(`./person`),
1272
- name: "Person"
1273
- },
1274
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}vangogh.json`),
1275
- resourceCreatedAt: await getFileCreatedAt(realm, "vangogh.json"),
1276
- realmURL: testRealmURL
1277
- }
1278
- }, "serialized instance is correct");
1279
- });
1280
- (0, import_qunit.test)("can capture search doc when indexing a card", async function(assert) {
1281
- class Person extends CardDef {
1282
- static {
1283
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1284
- return contains(string_default);
1285
- });
1286
- }
1287
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1288
- static isolated = class Isolated extends Component$1 {
1289
- static {
1290
- setComponentTemplate(templateFactory({
1291
- "id": "pbAMu5rb",
1292
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1293
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1294
- "isStrictMode": true
1295
- }), this);
1296
- }
1297
- };
1298
- static atom = class Atom extends Component$1 {
1299
- static {
1300
- setComponentTemplate(templateFactory({
1301
- "id": "MvjivV0J",
1302
- "block": "[[[10,0],[14,0,\"atom\"],[12],[1,[30,1,[\"firstName\"]]],[13]],[\"@model\"],[]]",
1303
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1304
- "isStrictMode": true
1305
- }), this);
1306
- }
1307
- };
1308
- }
1309
- let { realm } = await setupIntegrationTestRealm({
1310
- mockMatrixUtils,
1311
- contents: {
1312
- "person.gts": { Person },
1313
- "vangogh.json": { data: {
1314
- attributes: { firstName: "Van Gogh" },
1315
- meta: { adoptsFrom: {
1316
- module: `${testRealmURL}person`,
1317
- name: "Person"
1318
- } }
1319
- } }
1320
- }
1321
- });
1322
- let { searchDoc } = await getInstance(realm, new URL(`${testRealmURL}vangogh`)) ?? {};
1323
- expectSearchDoc(assert, searchDoc, {
1324
- _cardType: "Person",
1325
- cardTheme: null,
1326
- cardInfo: {
1327
- cardThumbnail: null,
1328
- theme: null
1329
- },
1330
- firstName: "Van Gogh",
1331
- id: `${testRealmURL}vangogh`,
1332
- cardTitle: "Untitled Card"
1333
- }, "search doc is correct");
1334
- });
1335
- (0, import_qunit.test)("can capture atom html when indexing a card", async function(assert) {
1336
- class Person extends CardDef {
1337
- static {
1338
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1339
- return contains(string_default);
1340
- });
1341
- }
1342
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1343
- static isolated = class Isolated extends Component$1 {
1344
- static {
1345
- setComponentTemplate(templateFactory({
1346
- "id": "pbAMu5rb",
1347
- "block": "[[[10,\"h1\"],[12],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1348
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1349
- "isStrictMode": true
1350
- }), this);
1351
- }
1352
- };
1353
- static atom = class Atom extends Component$1 {
1354
- static {
1355
- setComponentTemplate(templateFactory({
1356
- "id": "MvjivV0J",
1357
- "block": "[[[10,0],[14,0,\"atom\"],[12],[1,[30,1,[\"firstName\"]]],[13]],[\"@model\"],[]]",
1358
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1359
- "isStrictMode": true
1360
- }), this);
1361
- }
1362
- };
1363
- }
1364
- let { realm } = await setupIntegrationTestRealm({
1365
- mockMatrixUtils,
1366
- contents: {
1367
- "person.gts": { Person },
1368
- "vangogh.json": { data: {
1369
- attributes: { firstName: "Van Gogh" },
1370
- meta: { adoptsFrom: {
1371
- module: `${testRealmURL}person`,
1372
- name: "Person"
1373
- } }
1374
- } }
1375
- }
1376
- });
1377
- let { atomHtml } = await getInstance(realm, new URL(`${testRealmURL}vangogh`)) ?? {};
1378
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(atomHtml)), cleanWhiteSpace(`<div class="atom">Van Gogh</div>`), "atom html is correct");
1379
- assert.false(atomHtml.includes("id=\"ember"), `atom HTML does not include ember ID's`);
1380
- });
1381
- (0, import_qunit.test)("can capture head html when indexing a card", async function(assert) {
1382
- class Person extends CardDef {
1383
- static {
1384
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1385
- return contains(string_default);
1386
- });
1387
- }
1388
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1389
- static head = class Head extends Component$1 {
1390
- static {
1391
- setComponentTemplate(templateFactory({
1392
- "id": "JVgzQi6M",
1393
- "block": "[[[10,\"title\"],[12],[1,[30,1,[\"firstName\"]]],[1,\"!\"],[13]],[\"@model\"],[]]",
1394
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1395
- "isStrictMode": true
1396
- }), this);
1397
- }
1398
- };
1399
- }
1400
- let { realm } = await setupIntegrationTestRealm({
1401
- mockMatrixUtils,
1402
- contents: {
1403
- "person.gts": { Person },
1404
- "vangogh.json": { data: {
1405
- attributes: { firstName: "Van Gogh" },
1406
- meta: { adoptsFrom: {
1407
- module: `${testRealmURL}person`,
1408
- name: "Person"
1409
- } }
1410
- } }
1411
- }
1412
- });
1413
- let { headHtml } = await getInstance(realm, new URL(`${testRealmURL}vangogh`)) ?? {};
1414
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(headHtml)), cleanWhiteSpace(`<title>Van Gogh!</title>`), "head html is correct");
1415
- });
1416
- (0, import_qunit.test)(`can generate embedded HTML for instance's card class hierarchy`, async function(assert) {
1417
- class Person extends CardDef {
1418
- static displayName = "Person";
1419
- static {
1420
- decorateFieldV2(this.prototype, "cardDescription", [field], function() {
1421
- return contains(string_default);
1422
- });
1423
- }
1424
- #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
1425
- static {
1426
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1427
- return contains(string_default);
1428
- });
1429
- }
1430
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1431
- static embedded = class Embedded extends Component$1 {
1432
- static {
1433
- setComponentTemplate(templateFactory({
1434
- "id": "455R5/G0",
1435
- "block": "[[[10,\"h1\"],[12],[1,\" Person Embedded Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1436
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1437
- "isStrictMode": true
1438
- }), this);
1439
- }
1440
- };
1441
- }
1442
- class FancyPerson extends Person {
1443
- static displayName = "Fancy Person";
1444
- static {
1445
- decorateFieldV2(this.prototype, "favoriteColor", [field], function() {
1446
- return contains(string_default);
1447
- });
1448
- }
1449
- #favoriteColor = (initializeDeferredDecorator(this, "favoriteColor"), void 0);
1450
- static embedded = class Embedded extends Component$1 {
1451
- static {
1452
- setComponentTemplate(templateFactory({
1453
- "id": "5nAE9D7f",
1454
- "block": "[[[10,\"h1\"],[12],[1,\"\\n Fancy Person Embedded Card:\\n \"],[8,[30,1,[\"firstName\"]],null,null,null],[1,\"\\n -\\n \"],[8,[30,1,[\"favoriteColor\"]],null,null,null],[13]],[\"@fields\"],[]]",
1455
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1456
- "isStrictMode": true
1457
- }), this);
1458
- }
1459
- };
1460
- }
1461
- let { realm } = await setupIntegrationTestRealm({
1462
- mockMatrixUtils,
1463
- contents: {
1464
- "person.gts": { Person },
1465
- "fancy-person.gts": { FancyPerson },
1466
- "germaine.json": { data: {
1467
- attributes: {
1468
- firstName: "Germaine",
1469
- favoriteColor: "hot pink",
1470
- cardDescription: "Fancy Germaine"
1471
- },
1472
- meta: { adoptsFrom: {
1473
- module: "./fancy-person",
1474
- name: "FancyPerson"
1475
- } }
1476
- } }
1477
- }
1478
- });
1479
- let { embeddedHtml } = await getInstance(realm, new URL(`${testRealmURL}germaine`)) ?? {};
1480
- assert.false(Object.values(embeddedHtml).join("").includes("id=\"ember"), `Embedded HTML does not include ember ID's`);
1481
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(embeddedHtml[`${testRealmURL}fancy-person/FancyPerson`])), cleanWhiteSpace(`<div
1482
- class="ember-view boxel-card-container boxel-card-container--boundaries field-component-card embedded-format display-container-true"
1483
- data-boxel-card-container
1484
- data-test-boxel-card-container
1485
- data-boxel-card-id="http://test-realm/test/germaine"
1486
- data-boxel-card-format="embedded"
1487
- data-test-card="http://test-realm/test/germaine"
1488
- data-test-card-format="embedded"
1489
- data-test-field-component-card> <h1> Fancy Person Embedded Card: Germaine - hot pink </h1> </div>`), "default embedded HTML is correct");
1490
- let cardDefRefURL = internalKeyFor(baseCardRef, void 0, getService("network").virtualNetwork);
1491
- assert.deepEqual([...Object.keys(embeddedHtml)].sort(), [
1492
- `${testRealmURL}fancy-person/FancyPerson`,
1493
- `${testRealmURL}person/Person`,
1494
- cardDefRefURL
1495
- ].sort(), "embedded class hierarchy is correct");
1496
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(embeddedHtml[`${testRealmURL}person/Person`])), cleanWhiteSpace(`<div
1497
- class="ember-view boxel-card-container boxel-card-container--boundaries field-component-card embedded-format display-container-true"
1498
- data-boxel-card-container
1499
- data-test-boxel-card-container
1500
- data-boxel-card-id="http://test-realm/test/germaine"
1501
- data-boxel-card-format="embedded"
1502
- data-test-card="http://test-realm/test/germaine"
1503
- data-test-card-format="embedded"
1504
- data-test-field-component-card> <h1> Person Embedded Card: Germaine </h1> </div>`), `${testRealmURL}person/Person embedded HTML is correct`);
1505
- assert.false(embeddedHtml[`${testRealmURL}person/Person`].includes("id=\"ember"), `${testRealmURL}person/Person embedded HTML does not include ember ID's`);
1506
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(embeddedHtml[cardDefRefURL])), cleanWhiteSpace(`<div
1507
- class="ember-view boxel-card-container boxel-card-container--boundaries field-component-card embedded-format display-container-true"
1508
- data-boxel-card-container
1509
- data-test-boxel-card-container
1510
- data-boxel-card-id="http://test-realm/test/germaine"
1511
- data-boxel-card-format="embedded"
1512
- data-test-card="http://test-realm/test/germaine"
1513
- data-test-card-format="embedded"
1514
- data-test-field-component-card>
1515
- <div class="embedded-template">
1516
- <div class="thumbnail-section">
1517
- <div class="card-thumbnail">
1518
- <div class="card-thumbnail-placeholder" data-test-card-thumbnail-placeholder></div>
1519
- </div>
1520
- </div>
1521
- <div class="info-section">
1522
- <h3 class="card-title" data-test-card-title>Untitled Fancy Person</h3>
1523
- <h4 class="card-display-name" data-test-card-display-name>
1524
- Fancy Person
1525
- </h4>
1526
- </div>
1527
- <div class="card-description" data-test-card-description>Fancy Germaine</div>
1528
- </div>
1529
- </div>
1530
- `), `${cardDefRefURL} embedded HTML is correct`);
1531
- assert.false(embeddedHtml[cardDefRefURL].includes("id=\"ember"), `${cardDefRefURL} fitted HTML does not include ember ID's`);
1532
- });
1533
- (0, import_qunit.test)(`can generate fitted HTML for instance's card class hierarchy`, async function(assert) {
1534
- class Person extends CardDef {
1535
- static displayName = "Person";
1536
- static {
1537
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1538
- return contains(string_default);
1539
- });
1540
- }
1541
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1542
- static {
1543
- decorateFieldV2(this.prototype, "cardDescription", [field], function() {
1544
- return contains(string_default);
1545
- });
1546
- }
1547
- #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
1548
- static fitted = class Fitted extends Component$1 {
1549
- static {
1550
- setComponentTemplate(templateFactory({
1551
- "id": "O3XcZBYx",
1552
- "block": "[[[10,\"h1\"],[12],[1,\" Person Fitted Card: \"],[8,[30,1,[\"firstName\"]],null,null,null],[13]],[\"@fields\"],[]]",
1553
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1554
- "isStrictMode": true
1555
- }), this);
1556
- }
1557
- };
1558
- }
1559
- class FancyPerson extends Person {
1560
- static displayName = "Fancy Person";
1561
- static {
1562
- decorateFieldV2(this.prototype, "favoriteColor", [field], function() {
1563
- return contains(string_default);
1564
- });
1565
- }
1566
- #favoriteColor = (initializeDeferredDecorator(this, "favoriteColor"), void 0);
1567
- static fitted = class Fitted extends Component$1 {
1568
- static {
1569
- setComponentTemplate(templateFactory({
1570
- "id": "Ea3TSKvz",
1571
- "block": "[[[10,\"h1\"],[12],[1,\"\\n Fancy Person Fitted Card:\\n \"],[8,[30,1,[\"firstName\"]],null,null,null],[1,\"\\n -\\n \"],[8,[30,1,[\"favoriteColor\"]],null,null,null],[13]],[\"@fields\"],[]]",
1572
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
1573
- "isStrictMode": true
1574
- }), this);
1575
- }
1576
- };
1577
- }
1578
- let { realm } = await setupIntegrationTestRealm({
1579
- mockMatrixUtils,
1580
- contents: {
1581
- "person.gts": { Person },
1582
- "fancy-person.gts": { FancyPerson },
1583
- "germaine.json": { data: {
1584
- attributes: {
1585
- firstName: "Germaine",
1586
- favoriteColor: "hot pink",
1587
- cardDescription: "Fancy Germaine"
1588
- },
1589
- meta: { adoptsFrom: {
1590
- module: "./fancy-person",
1591
- name: "FancyPerson"
1592
- } }
1593
- } }
1594
- }
1595
- });
1596
- let { embeddedHtml, fittedHtml } = await getInstance(realm, new URL(`${testRealmURL}germaine`)) ?? {};
1597
- assert.false(Object.values(fittedHtml).join("").includes("id=\"ember"), `Fitted HTML does not include ember ID's`);
1598
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(fittedHtml[`${testRealmURL}fancy-person/FancyPerson`])), cleanWhiteSpace(`<div
1599
- class="ember-view boxel-card-container boxel-card-container--boundaries field-component-card fitted-format display-container-true"
1600
- data-boxel-card-container
1601
- data-test-boxel-card-container
1602
- data-boxel-card-id="http://test-realm/test/germaine"
1603
- data-boxel-card-format="fitted"
1604
- data-test-card="http://test-realm/test/germaine"
1605
- data-test-card-format="fitted"
1606
- data-test-field-component-card> <h1> Fancy Person Fitted Card: Germaine - hot pink </h1> </div>`), "default fitted HTML is correct");
1607
- let cardDefRefURL = internalKeyFor(baseCardRef, void 0, getService("network").virtualNetwork);
1608
- assert.deepEqual([...Object.keys(fittedHtml)].sort(), [
1609
- `${testRealmURL}fancy-person/FancyPerson`,
1610
- `${testRealmURL}person/Person`,
1611
- cardDefRefURL
1612
- ].sort(), "fitted class hierarchy is correct");
1613
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(fittedHtml[`${testRealmURL}person/Person`])), cleanWhiteSpace(`<div
1614
- class="ember-view boxel-card-container boxel-card-container--boundaries field-component-card fitted-format display-container-true"
1615
- data-boxel-card-container
1616
- data-test-boxel-card-container
1617
- data-boxel-card-id="http://test-realm/test/germaine"
1618
- data-boxel-card-format="fitted"
1619
- data-test-card="http://test-realm/test/germaine"
1620
- data-test-card-format="fitted"
1621
- data-test-field-component-card> <h1> Person Fitted Card: Germaine </h1> </div>`), `${testRealmURL}person/Person fitted HTML is correct`);
1622
- assert.false(fittedHtml[`${testRealmURL}person/Person`].includes("id=\"ember"), `${testRealmURL}person/Person fitted HTML does not include ember ID's`);
1623
- assert.strictEqual(cleanWhiteSpace(stripScopedCSSAttributes(embeddedHtml[cardDefRefURL])), cleanWhiteSpace(`<div
1624
- class="ember-view boxel-card-container boxel-card-container--boundaries field-component-card embedded-format display-container-true"
1625
- data-boxel-card-container
1626
- data-test-boxel-card-container
1627
- data-boxel-card-id="http://test-realm/test/germaine"
1628
- data-boxel-card-format="embedded"
1629
- data-test-card="http://test-realm/test/germaine"
1630
- data-test-card-format="embedded"
1631
- data-test-field-component-card>
1632
- <div class="embedded-template">
1633
- <div class="thumbnail-section">
1634
- <div class="card-thumbnail">
1635
- <div class="card-thumbnail-placeholder" data-test-card-thumbnail-placeholder></div>
1636
- </div>
1637
- </div>
1638
- <div class="info-section">
1639
- <h3 class="card-title" data-test-card-title>Untitled Fancy Person</h3>
1640
- <h4 class="card-display-name" data-test-card-display-name> Fancy Person </h4>
1641
- </div>
1642
- <div class="card-description" data-test-card-description>Fancy Germaine</div>
1643
- </div>
1644
- </div>`), `${cardDefRefURL} embedded HTML is correct`);
1645
- assert.false(embeddedHtml[cardDefRefURL].includes("id=\"ember"), `${cardDefRefURL} embedded HTML does not include ember ID's`);
1646
- });
1647
- (0, import_qunit.test)("can index a card that has a cyclic relationship with the field of a card in its fields", async function(assert) {
1648
- class Person extends FieldDef {
1649
- static {
1650
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1651
- return contains(string_default);
1652
- });
1653
- }
1654
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1655
- static {
1656
- decorateFieldV2(this.prototype, "pet", [field], function() {
1657
- return linksTo(() => PetCard);
1658
- });
1659
- }
1660
- #pet = (initializeDeferredDecorator(this, "pet"), void 0);
1661
- static {
1662
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
1663
- return contains(string_default, { computeVia: function() {
1664
- return this.firstName;
1665
- } });
1666
- });
1667
- }
1668
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
1669
- }
1670
- class Appointment extends FieldDef {
1671
- static {
1672
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
1673
- return contains(string_default);
1674
- });
1675
- }
1676
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
1677
- static {
1678
- decorateFieldV2(this.prototype, "contact", [field], function() {
1679
- return contains(Person);
1680
- });
1681
- }
1682
- #contact = (initializeDeferredDecorator(this, "contact"), void 0);
1683
- }
1684
- class PetCard extends CardDef {
1685
- static {
1686
- decorateFieldV2(this.prototype, "firstName", [field], function() {
1687
- return contains(string_default);
1688
- });
1689
- }
1690
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
1691
- static {
1692
- decorateFieldV2(this.prototype, "appointment", [field], function() {
1693
- return contains(Appointment);
1694
- });
1695
- }
1696
- #appointment = (initializeDeferredDecorator(this, "appointment"), void 0);
1697
- static {
1698
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
1699
- return contains(string_default, { computeVia: function() {
1700
- return this.firstName;
1701
- } });
1702
- });
1703
- }
1704
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
1705
- static {
1706
- decorateFieldV2(this.prototype, "cardDescription", [field], function() {
1707
- return contains(string_default);
1708
- });
1709
- }
1710
- #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
1711
- static {
1712
- decorateFieldV2(this.prototype, "cardThumbnailURL", [field], function() {
1713
- return contains(string_default);
1714
- });
1715
- }
1716
- #cardThumbnailURL = (initializeDeferredDecorator(this, "cardThumbnailURL"), void 0);
1717
- }
1718
- let { realm } = await setupIntegrationTestRealm({
1719
- mockMatrixUtils,
1720
- contents: {
1721
- "person-card.gts": { Person },
1722
- "appointment.gts": { Appointment },
1723
- "pet-card.gts": { PetCard },
1724
- "jackie.json": { data: {
1725
- attributes: {
1726
- firstName: "Jackie",
1727
- appointment: {
1728
- cardTitle: "Vet visit",
1729
- contact: { firstName: "Burcu" }
1730
- },
1731
- cardDescription: "Dog",
1732
- cardThumbnailURL: "./jackie.jpg"
1733
- },
1734
- meta: { adoptsFrom: {
1735
- module: `./pet-card`,
1736
- name: "PetCard"
1737
- } },
1738
- relationships: { "appointment.contact.pet": { links: { self: `./mango` } } }
1739
- } },
1740
- "mango.json": { data: {
1741
- attributes: { firstName: "Mango" },
1742
- meta: { adoptsFrom: {
1743
- module: `./pet-card`,
1744
- name: "PetCard"
1745
- } }
1746
- } }
1747
- }
1748
- });
1749
- let card = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}jackie`));
1750
- if (card?.type === "doc") {
1751
- assert.deepEqual(card.doc.data.attributes, {
1752
- firstName: "Jackie",
1753
- cardTitle: "Jackie",
1754
- appointment: {
1755
- cardTitle: "Vet visit",
1756
- contact: {
1757
- firstName: "Burcu",
1758
- cardTitle: "Burcu"
1759
- }
1760
- },
1761
- cardDescription: "Dog",
1762
- cardThumbnailURL: `./jackie.jpg`,
1763
- cardInfo
1764
- });
1765
- assert.deepEqual(card.doc.data.relationships, { "appointment.contact.pet": { links: { self: `./mango` } } });
1766
- } else assert.ok(false, `search entry was an error: ${card?.error.errorDetail.message}`);
1767
- });
1768
- (0, import_qunit.test)("can index a card with a containsMany composite containing a linkTo field", async function(assert) {
1769
- let { realm, adapter } = await setupIntegrationTestRealm({
1770
- mockMatrixUtils,
1771
- contents: {
1772
- "Vendor/vendor1.json": { data: {
1773
- id: `${testRealmURL}Vendor/vendor1`,
1774
- attributes: {
1775
- name: "Acme Industries",
1776
- paymentMethods: [{
1777
- type: "crypto",
1778
- payment: { address: "0x1111" }
1779
- }, {
1780
- type: "crypto",
1781
- payment: { address: "0x2222" }
1782
- }]
1783
- },
1784
- relationships: {
1785
- "paymentMethods.0.payment.chain": { links: { self: `../Chain/1` } },
1786
- "paymentMethods.1.payment.chain": { links: { self: `../Chain/2` } }
1787
- },
1788
- meta: { adoptsFrom: {
1789
- module: `${testModuleRealm}vendor`,
1790
- name: "Vendor"
1791
- } }
1792
- } },
1793
- "Chain/1.json": { data: {
1794
- id: `${testRealmURL}Chain/1`,
1795
- attributes: { name: "Ethereum Mainnet" },
1796
- meta: { adoptsFrom: {
1797
- module: `${testModuleRealm}chain`,
1798
- name: "Chain"
1799
- } }
1800
- } },
1801
- "Chain/2.json": { data: {
1802
- id: `${testRealmURL}Chain/2`,
1803
- attributes: { name: "Polygon" },
1804
- meta: { adoptsFrom: {
1805
- module: `${testModuleRealm}chain`,
1806
- name: "Chain"
1807
- } }
1808
- } }
1809
- }
1810
- });
1811
- let vendor = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}Vendor/vendor1`), { loadLinks: true });
1812
- if (vendor?.type === "doc") assert.deepEqual(vendor.doc, {
1813
- data: {
1814
- id: testRRI("Vendor/vendor1"),
1815
- type: "card",
1816
- links: { self: "./vendor1" },
1817
- attributes: {
1818
- name: "Acme Industries",
1819
- cardTitle: "Acme Industries",
1820
- cardDescription: "Vendor",
1821
- cardThumbnailURL: null,
1822
- paymentMethods: [{
1823
- type: "crypto",
1824
- payment: { address: "0x1111" }
1825
- }, {
1826
- type: "crypto",
1827
- payment: { address: "0x2222" }
1828
- }],
1829
- cardInfo
1830
- },
1831
- relationships: {
1832
- "paymentMethods.0.payment.chain": {
1833
- data: {
1834
- id: `${testRealmURL}Chain/1`,
1835
- type: "card"
1836
- },
1837
- links: { self: `../Chain/1` }
1838
- },
1839
- "paymentMethods.1.payment.chain": {
1840
- data: {
1841
- id: `${testRealmURL}Chain/2`,
1842
- type: "card"
1843
- },
1844
- links: { self: `../Chain/2` }
1845
- }
1846
- },
1847
- meta: {
1848
- adoptsFrom: {
1849
- module: rri(`${testModuleRealm}vendor`),
1850
- name: "Vendor"
1851
- },
1852
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Vendor/vendor1.json`),
1853
- resourceCreatedAt: await getFileCreatedAt(realm, "Vendor/vendor1.json"),
1854
- realmURL: ri("http://test-realm/test/"),
1855
- realmInfo: {
1856
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
1857
- backgroundURL: null,
1858
- iconURL: null,
1859
- includePrerenderedDefaultRealmIndex: null,
1860
- lastPublishedAt: null,
1861
- name: "Unnamed Workspace",
1862
- publishable: null,
1863
- realmUserId: "@realm_server:localhost",
1864
- showAsCatalog: null,
1865
- visibility: "public"
1866
- }
1867
- }
1868
- },
1869
- included: [{
1870
- id: testRRI("Chain/1"),
1871
- type: "card",
1872
- links: { self: `./1` },
1873
- attributes: {
1874
- name: "Ethereum Mainnet",
1875
- cardTitle: "Ethereum Mainnet",
1876
- chainId: 1,
1877
- cardDescription: `Chain 1`,
1878
- cardThumbnailURL: `Ethereum Mainnet-icon.png`,
1879
- cardInfo
1880
- },
1881
- meta: {
1882
- adoptsFrom: {
1883
- module: rri(`${testModuleRealm}chain`),
1884
- name: "Chain"
1885
- },
1886
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Chain/1.json`),
1887
- resourceCreatedAt: await getFileCreatedAt(realm, "Chain/1.json"),
1888
- realmURL: ri("http://test-realm/test/"),
1889
- realmInfo: {
1890
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
1891
- backgroundURL: null,
1892
- iconURL: null,
1893
- includePrerenderedDefaultRealmIndex: null,
1894
- lastPublishedAt: null,
1895
- name: "Unnamed Workspace",
1896
- publishable: null,
1897
- realmUserId: "@realm_server:localhost",
1898
- showAsCatalog: null,
1899
- visibility: "public"
1900
- }
1901
- }
1902
- }, {
1903
- id: testRRI("Chain/2"),
1904
- type: "card",
1905
- links: { self: `./2` },
1906
- attributes: {
1907
- name: "Polygon",
1908
- cardTitle: "Polygon",
1909
- chainId: 137,
1910
- cardDescription: `Chain 137`,
1911
- cardThumbnailURL: `Polygon-icon.png`,
1912
- cardInfo
1913
- },
1914
- meta: {
1915
- adoptsFrom: {
1916
- module: rri(`${testModuleRealm}chain`),
1917
- name: "Chain"
1918
- },
1919
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Chain/2.json`),
1920
- resourceCreatedAt: await getFileCreatedAt(realm, "Chain/2.json"),
1921
- realmURL: ri("http://test-realm/test/"),
1922
- realmInfo: {
1923
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
1924
- backgroundURL: null,
1925
- iconURL: null,
1926
- includePrerenderedDefaultRealmIndex: null,
1927
- lastPublishedAt: null,
1928
- name: "Unnamed Workspace",
1929
- publishable: null,
1930
- realmUserId: "@realm_server:localhost",
1931
- showAsCatalog: null,
1932
- visibility: "public"
1933
- }
1934
- }
1935
- }]
1936
- });
1937
- else assert.ok(false, `search entry was an error: ${vendor?.error.errorDetail.message}`);
1938
- });
1939
- (0, import_qunit.test)("can tolerate a card whose computed throws an exception", async function(assert) {
1940
- let { realm } = await setupIntegrationTestRealm({
1941
- mockMatrixUtils,
1942
- contents: {
1943
- "Boom/boom.json": { data: {
1944
- id: `${testRealmURL}Boom/boom`,
1945
- meta: { adoptsFrom: {
1946
- module: `${testModuleRealm}card-with-error`,
1947
- name: "Boom"
1948
- } }
1949
- } },
1950
- "Person/owner.json": { data: {
1951
- id: `${testRealmURL}Person/owner`,
1952
- attributes: { firstName: "Hassan" },
1953
- meta: { adoptsFrom: {
1954
- module: `${testModuleRealm}person`,
1955
- name: "Person"
1956
- } }
1957
- } }
1958
- }
1959
- });
1960
- let indexer = realm.realmIndexQueryEngine;
1961
- {
1962
- let card = await indexer.cardDocument(new URL(`${testRealmURL}Boom/boom`));
1963
- if (card?.type === "error") assert.ok(card.error.errorDetail.message.includes("intentional error thrown"), "error doc includes raised error message");
1964
- else assert.ok(false, `expected search entry to be an error doc`);
1965
- }
1966
- {
1967
- let card = await indexer.cardDocument(new URL(`${testRealmURL}Person/owner`));
1968
- if (card?.type === "doc") assert.strictEqual(card.doc.data.attributes?.firstName, "Hassan");
1969
- else assert.ok(false, `search entry was an error: ${card?.error.errorDetail.message}`);
1970
- }
1971
- });
1972
- (0, import_qunit.test)(`search doc includes 'contains' and used 'linksTo' fields, including contained computed fields`, async function(assert) {
1973
- let { realm } = await setupIntegrationTestRealm({
1974
- mockMatrixUtils,
1975
- contents: {
1976
- "Pet/mango.json": { data: {
1977
- attributes: { firstName: "Mango" },
1978
- relationships: { owner: { links: { self: `../Person/hassan` } } },
1979
- meta: { adoptsFrom: {
1980
- module: `${testModuleRealm}pet`,
1981
- name: "Pet"
1982
- } }
1983
- } },
1984
- "Person/hassan.json": { data: {
1985
- id: `${testRealmURL}Person/hassan`,
1986
- attributes: {
1987
- firstName: "Hassan",
1988
- lastName: "Abdel-Rahman",
1989
- email: "hassan@cardstack.com",
1990
- posts: 100
1991
- },
1992
- meta: { adoptsFrom: {
1993
- module: `${testModuleRealm}person`,
1994
- name: "Person"
1995
- } }
1996
- } }
1997
- }
1998
- });
1999
- expectSearchDoc(assert, (await getInstance(realm, new URL(`${testRealmURL}Person/hassan`)))?.searchDoc, {
2000
- id: `${testRealmURL}Person/hassan`,
2001
- firstName: "Hassan",
2002
- lastName: "Abdel-Rahman",
2003
- email: "hassan@cardstack.com",
2004
- posts: 100,
2005
- cardTitle: "Hassan Abdel-Rahman",
2006
- cardDescription: "Person",
2007
- fullName: "Hassan Abdel-Rahman",
2008
- _cardType: "Person",
2009
- cardTheme: null,
2010
- cardInfo: {
2011
- cardThumbnail: null,
2012
- theme: null
2013
- }
2014
- }, `search doc includes fullName field`);
2015
- });
2016
- (0, import_qunit.test)(`search doc includes a 'linksTo' field the render never loaded when it is searchable`, async function(assert) {
2017
- let { realm } = await setupIntegrationTestRealm({
2018
- mockMatrixUtils,
2019
- contents: {
2020
- "Publication/pacific.json": { data: {
2021
- id: `${testRealmURL}Publication/pacific`,
2022
- attributes: { cardTitle: "Pacific Weekly" },
2023
- relationships: {
2024
- "featuredPosts.0": { links: { self: `../Post/1` } },
2025
- "featuredPosts.1": { links: { self: `../Post/2` } }
2026
- },
2027
- meta: { adoptsFrom: {
2028
- module: `${testModuleRealm}publication`,
2029
- name: "Publication"
2030
- } }
2031
- } },
2032
- "Post/1.json": { data: {
2033
- id: `${testRealmURL}Post/1`,
2034
- attributes: {
2035
- cardTitle: "50 Ways to Leave Your Laptop",
2036
- views: 5
2037
- },
2038
- relationships: { publication: { links: { self: `../Publication/pacific` } } },
2039
- meta: { adoptsFrom: {
2040
- module: `${testModuleRealm}post`,
2041
- name: "Post"
2042
- } }
2043
- } },
2044
- "Post/2.json": { data: {
2045
- id: `${testRealmURL}Post/2`,
2046
- attributes: {
2047
- cardTitle: "49 Shades of Mauve",
2048
- views: 24
2049
- },
2050
- relationships: { publication: { links: { self: `../Publication/pacific` } } },
2051
- meta: { adoptsFrom: {
2052
- module: `${testModuleRealm}post`,
2053
- name: "Post"
2054
- } }
2055
- } }
2056
- }
2057
- });
2058
- expectSearchDoc(assert, (await getInstance(realm, new URL(`${testRealmURL}Post/1`)))?.searchDoc, {
2059
- _cardType: "Post",
2060
- author: {
2061
- cardDescription: "Person",
2062
- fullName: " ",
2063
- cardTitle: " "
2064
- },
2065
- id: `${testRealmURL}Post/1`,
2066
- cardTitle: "50 Ways to Leave Your Laptop",
2067
- publication: { id: `${testRealmURL}Publication/pacific` },
2068
- views: 5,
2069
- cardTheme: null,
2070
- cardInfo: {
2071
- cardThumbnail: null,
2072
- theme: null
2073
- }
2074
- }, `post 1 search doc includes publication relationship`);
2075
- expectSearchDoc(assert, (await getInstance(realm, new URL(`${testRealmURL}Publication/pacific`)))?.searchDoc, {
2076
- _cardType: "Publication",
2077
- id: `${testRealmURL}Publication/pacific`,
2078
- cardTitle: "Pacific Weekly",
2079
- featuredPosts: [{
2080
- author: {
2081
- cardDescription: "Person",
2082
- fullName: " ",
2083
- cardTitle: " "
2084
- },
2085
- cardTheme: null,
2086
- cardInfo: {
2087
- cardThumbnail: null,
2088
- theme: null
2089
- },
2090
- id: `${testRealmURL}Post/1`,
2091
- publication: { id: `${testRealmURL}Publication/pacific` },
2092
- cardTitle: "50 Ways to Leave Your Laptop",
2093
- views: 5
2094
- }, {
2095
- author: {
2096
- cardDescription: "Person",
2097
- fullName: " ",
2098
- cardTitle: " "
2099
- },
2100
- cardTheme: null,
2101
- cardInfo: {
2102
- cardThumbnail: null,
2103
- theme: null
2104
- },
2105
- id: `${testRealmURL}Post/2`,
2106
- publication: { id: `${testRealmURL}Publication/pacific` },
2107
- cardTitle: "49 Shades of Mauve",
2108
- views: 24
2109
- }],
2110
- cardTheme: null,
2111
- cardInfo: {
2112
- cardThumbnail: null,
2113
- theme: null
2114
- }
2115
- }, `publication search doc includes featuredPosts relationship via its searchable annotation`);
2116
- });
2117
- (0, import_qunit.test)("search doc normalizes containsMany composite fields", async function(assert) {
2118
- class Person extends FieldDef {
2119
- static {
2120
- decorateFieldV2(this.prototype, "firstName", [field], function() {
2121
- return contains(string_default);
2122
- });
2123
- }
2124
- #firstName = (initializeDeferredDecorator(this, "firstName"), void 0);
2125
- static {
2126
- decorateFieldV2(this.prototype, "lastName", [field], function() {
2127
- return contains(string_default);
2128
- });
2129
- }
2130
- #lastName = (initializeDeferredDecorator(this, "lastName"), void 0);
2131
- static {
2132
- decorateFieldV2(this.prototype, "email", [field], function() {
2133
- return contains(string_default);
2134
- });
2135
- }
2136
- #email = (initializeDeferredDecorator(this, "email"), void 0);
2137
- static {
2138
- decorateFieldV2(this.prototype, "posts", [field], function() {
2139
- return contains(NumberField);
2140
- });
2141
- }
2142
- #posts = (initializeDeferredDecorator(this, "posts"), void 0);
2143
- static {
2144
- decorateFieldV2(this.prototype, "fullName", [field], function() {
2145
- return contains(string_default, { computeVia: function() {
2146
- return `${this.firstName ?? ""} ${this.lastName ?? ""}`;
2147
- } });
2148
- });
2149
- }
2150
- #fullName = (initializeDeferredDecorator(this, "fullName"), void 0);
2151
- static {
2152
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
2153
- return contains(string_default, { computeVia: function() {
2154
- return `${this.firstName ?? ""} ${this.lastName ?? ""}`;
2155
- } });
2156
- });
2157
- }
2158
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
2159
- static {
2160
- decorateFieldV2(this.prototype, "cardDescription", [field], function() {
2161
- return contains(string_default, { computeVia: () => "Person" });
2162
- });
2163
- }
2164
- #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
2165
- }
2166
- class Post extends FieldDef {
2167
- static {
2168
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
2169
- return contains(string_default);
2170
- });
2171
- }
2172
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
2173
- static {
2174
- decorateFieldV2(this.prototype, "cardDescription", [field], function() {
2175
- return contains(string_default);
2176
- });
2177
- }
2178
- #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
2179
- static {
2180
- decorateFieldV2(this.prototype, "author", [field], function() {
2181
- return contains(Person);
2182
- });
2183
- }
2184
- #author = (initializeDeferredDecorator(this, "author"), void 0);
2185
- static {
2186
- decorateFieldV2(this.prototype, "views", [field], function() {
2187
- return contains(NumberField);
2188
- });
2189
- }
2190
- #views = (initializeDeferredDecorator(this, "views"), void 0);
2191
- static {
2192
- decorateFieldV2(this.prototype, "createdAt", [field], function() {
2193
- return contains(DateTimeField);
2194
- });
2195
- }
2196
- #createdAt = (initializeDeferredDecorator(this, "createdAt"), void 0);
2197
- }
2198
- class Booking extends FieldDef {
2199
- static {
2200
- decorateFieldV2(this.prototype, "cardTitle", [field], function() {
2201
- return contains(string_default);
2202
- });
2203
- }
2204
- #cardTitle = (initializeDeferredDecorator(this, "cardTitle"), void 0);
2205
- static {
2206
- decorateFieldV2(this.prototype, "venue", [field], function() {
2207
- return contains(string_default);
2208
- });
2209
- }
2210
- #venue = (initializeDeferredDecorator(this, "venue"), void 0);
2211
- static {
2212
- decorateFieldV2(this.prototype, "startTime", [field], function() {
2213
- return contains(DateTimeField);
2214
- });
2215
- }
2216
- #startTime = (initializeDeferredDecorator(this, "startTime"), void 0);
2217
- static {
2218
- decorateFieldV2(this.prototype, "endTime", [field], function() {
2219
- return contains(DateTimeField);
2220
- });
2221
- }
2222
- #endTime = (initializeDeferredDecorator(this, "endTime"), void 0);
2223
- static {
2224
- decorateFieldV2(this.prototype, "hosts", [field], function() {
2225
- return containsMany(Person);
2226
- });
2227
- }
2228
- #hosts = (initializeDeferredDecorator(this, "hosts"), void 0);
2229
- static {
2230
- decorateFieldV2(this.prototype, "sponsors", [field], function() {
2231
- return containsMany(string_default);
2232
- });
2233
- }
2234
- #sponsors = (initializeDeferredDecorator(this, "sponsors"), void 0);
2235
- static {
2236
- decorateFieldV2(this.prototype, "posts", [field], function() {
2237
- return containsMany(Post);
2238
- });
2239
- }
2240
- #posts = (initializeDeferredDecorator(this, "posts"), void 0);
2241
- static {
2242
- decorateFieldV2(this.prototype, "cardDescription", [field], function() {
2243
- return contains(string_default, { computeVia: function() {
2244
- return this.venue;
2245
- } });
2246
- });
2247
- }
2248
- #cardDescription = (initializeDeferredDecorator(this, "cardDescription"), void 0);
2249
- static {
2250
- decorateFieldV2(this.prototype, "cardThumbnailURL", [field], function() {
2251
- return contains(string_default, { computeVia: () => null });
2252
- });
2253
- }
2254
- #cardThumbnailURL = (initializeDeferredDecorator(this, "cardThumbnailURL"), void 0);
2255
- }
2256
- let { realm } = await setupIntegrationTestRealm({
2257
- mockMatrixUtils,
2258
- contents: {
2259
- "booking.gts": { Booking },
2260
- "person.gts": { Person },
2261
- "post.gts": { Post },
2262
- "Spec/booking.json": { data: {
2263
- attributes: {
2264
- cardTitle: "Booking",
2265
- cardDescription: "Spec for Booking",
2266
- specType: "card",
2267
- ref: {
2268
- module: `${testModuleRealm}booking`,
2269
- name: "Booking"
2270
- }
2271
- },
2272
- meta: { adoptsFrom: {
2273
- module: "@cardstack/base/spec",
2274
- name: "Spec"
2275
- } }
2276
- } }
2277
- }
2278
- });
2279
- let entry = await getInstance(realm, new URL(`${testRealmURL}Spec/booking`));
2280
- expectSearchDoc(assert, entry?.searchDoc, {
2281
- _cardType: "Spec",
2282
- id: `${testRealmURL}Spec/booking`,
2283
- cardDescription: "Spec for Booking",
2284
- specType: "card",
2285
- moduleHref: `${testModuleRealm}booking`,
2286
- containedExamples: null,
2287
- linkedExamples: null,
2288
- fileExamples: null,
2289
- ref: `${testModuleRealm}booking/Booking`,
2290
- cardTitle: "Booking",
2291
- isCard: true,
2292
- isComponent: false,
2293
- isField: false,
2294
- isFile: false,
2295
- cardTheme: null,
2296
- cardInfo: {
2297
- cardThumbnail: null,
2298
- theme: null
2299
- }
2300
- });
2301
- structuredClone(entry?.searchDoc);
2302
- });
2303
- (0, import_qunit.test)("can index a card with linksToMany field", async function(assert) {
2304
- let { realm, adapter } = await setupIntegrationTestRealm({
2305
- mockMatrixUtils,
2306
- contents: {
2307
- "Pet/vanGogh.json": { data: {
2308
- attributes: { firstName: "Van Gogh" },
2309
- meta: { adoptsFrom: {
2310
- module: `${testModuleRealm}pet`,
2311
- name: "Pet"
2312
- } }
2313
- } },
2314
- "PetPerson/hassan.json": { data: {
2315
- attributes: { firstName: "Hassan" },
2316
- relationships: {
2317
- "pets.0": { links: { self: `../Pet/mango` } },
2318
- "pets.1": { links: { self: `../Pet/vanGogh` } }
2319
- },
2320
- meta: { adoptsFrom: {
2321
- module: `${testModuleRealm}pet-person`,
2322
- name: "PetPerson"
2323
- } }
2324
- } },
2325
- "Pet/mango.json": { data: {
2326
- attributes: { firstName: "Mango" },
2327
- meta: { adoptsFrom: {
2328
- module: `${testModuleRealm}pet`,
2329
- name: "Pet"
2330
- } }
2331
- } }
2332
- }
2333
- });
2334
- let hassan = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}PetPerson/hassan`), { loadLinks: true });
2335
- if (hassan?.type === "doc") {
2336
- assert.deepEqual(hassan.doc.data, {
2337
- id: testRRI("PetPerson/hassan"),
2338
- type: "card",
2339
- links: { self: "./hassan" },
2340
- attributes: {
2341
- firstName: "Hassan",
2342
- cardTitle: "Hassan Pet Person",
2343
- cardDescription: "A person with pets",
2344
- cardThumbnailURL: null,
2345
- cardInfo
2346
- },
2347
- relationships: {
2348
- "pets.0": {
2349
- links: { self: `../Pet/mango` },
2350
- data: {
2351
- id: `${testRealmURL}Pet/mango`,
2352
- type: "card"
2353
- }
2354
- },
2355
- "pets.1": {
2356
- links: { self: `../Pet/vanGogh` },
2357
- data: {
2358
- id: `${testRealmURL}Pet/vanGogh`,
2359
- type: "card"
2360
- }
2361
- }
2362
- },
2363
- meta: {
2364
- adoptsFrom: {
2365
- module: testModuleRRI("pet-person"),
2366
- name: "PetPerson"
2367
- },
2368
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}PetPerson/hassan.json`),
2369
- resourceCreatedAt: await getFileCreatedAt(realm, "PetPerson/hassan.json"),
2370
- realmURL: ri("http://test-realm/test/"),
2371
- realmInfo: {
2372
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
2373
- backgroundURL: null,
2374
- iconURL: null,
2375
- includePrerenderedDefaultRealmIndex: null,
2376
- lastPublishedAt: null,
2377
- name: "Unnamed Workspace",
2378
- publishable: null,
2379
- realmUserId: "@realm_server:localhost",
2380
- showAsCatalog: null,
2381
- visibility: "public"
2382
- }
2383
- }
2384
- });
2385
- assert.deepEqual(hassan.doc.included, [{
2386
- id: testRRI("Pet/mango"),
2387
- type: "card",
2388
- links: { self: `./mango` },
2389
- attributes: {
2390
- cardDescription: null,
2391
- firstName: "Mango",
2392
- cardTitle: "Mango",
2393
- cardThumbnailURL: null,
2394
- cardInfo
2395
- },
2396
- meta: {
2397
- adoptsFrom: {
2398
- module: testModuleRRI("pet"),
2399
- name: "Pet"
2400
- },
2401
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Pet/mango.json`),
2402
- resourceCreatedAt: await getFileCreatedAt(realm, "Pet/mango.json"),
2403
- realmURL: ri("http://test-realm/test/"),
2404
- realmInfo: {
2405
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
2406
- backgroundURL: null,
2407
- iconURL: null,
2408
- includePrerenderedDefaultRealmIndex: null,
2409
- lastPublishedAt: null,
2410
- name: "Unnamed Workspace",
2411
- publishable: null,
2412
- realmUserId: "@realm_server:localhost",
2413
- showAsCatalog: null,
2414
- visibility: "public"
2415
- }
2416
- }
2417
- }, {
2418
- id: testRRI("Pet/vanGogh"),
2419
- type: "card",
2420
- links: { self: `./vanGogh` },
2421
- attributes: {
2422
- cardDescription: null,
2423
- firstName: "Van Gogh",
2424
- cardTitle: "Van Gogh",
2425
- cardThumbnailURL: null,
2426
- cardInfo
2427
- },
2428
- meta: {
2429
- adoptsFrom: {
2430
- module: testModuleRRI("pet"),
2431
- name: "Pet"
2432
- },
2433
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Pet/vanGogh.json`),
2434
- resourceCreatedAt: await getFileCreatedAt(realm, "Pet/vanGogh.json"),
2435
- realmURL: ri("http://test-realm/test/"),
2436
- realmInfo: {
2437
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
2438
- backgroundURL: null,
2439
- iconURL: null,
2440
- includePrerenderedDefaultRealmIndex: null,
2441
- lastPublishedAt: null,
2442
- name: "Unnamed Workspace",
2443
- publishable: null,
2444
- realmUserId: "@realm_server:localhost",
2445
- showAsCatalog: null,
2446
- visibility: "public"
2447
- }
2448
- }
2449
- }]);
2450
- } else assert.ok(false, `search entry was an error: ${hassan?.error.errorDetail.message}`);
2451
- let hassanEntry = await getInstance(realm, new URL(`${testRealmURL}PetPerson/hassan`));
2452
- if (hassanEntry) expectSearchDoc(assert, hassanEntry.searchDoc, {
2453
- _cardType: "Pet Person",
2454
- id: `${testRealmURL}PetPerson/hassan`,
2455
- firstName: "Hassan",
2456
- pets: [{
2457
- id: `${testRealmURL}Pet/mango`,
2458
- firstName: "Mango",
2459
- owner: null,
2460
- cardTitle: "Mango",
2461
- cardTheme: null,
2462
- cardInfo: {
2463
- cardThumbnail: null,
2464
- theme: null
2465
- }
2466
- }, {
2467
- id: `${testRealmURL}Pet/vanGogh`,
2468
- firstName: "Van Gogh",
2469
- owner: null,
2470
- cardTitle: "Van Gogh",
2471
- cardTheme: null,
2472
- cardInfo: {
2473
- cardThumbnail: null,
2474
- theme: null
2475
- }
2476
- }],
2477
- friend: null,
2478
- cardTitle: "Hassan Pet Person",
2479
- cardDescription: "A person with pets",
2480
- cardThumbnailURL: null,
2481
- cardTheme: null,
2482
- cardInfo: {
2483
- cardThumbnail: null,
2484
- theme: null
2485
- }
2486
- });
2487
- else assert.ok(false, `could not find ${testRealmURL}PetPerson/hassan in the index`);
2488
- });
2489
- (0, import_qunit.test)("can index a card with empty linksToMany field value", async function(assert) {
2490
- let { realm, adapter } = await setupIntegrationTestRealm({
2491
- mockMatrixUtils,
2492
- contents: { "PetPerson/burcu.json": { data: {
2493
- attributes: { firstName: "Burcu" },
2494
- meta: { adoptsFrom: {
2495
- module: `${testModuleRealm}pet-person`,
2496
- name: "PetPerson"
2497
- } }
2498
- } } }
2499
- });
2500
- let card = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}PetPerson/burcu`), { loadLinks: true });
2501
- if (card?.type === "doc") assert.deepEqual(card.doc, { data: {
2502
- id: testRRI("PetPerson/burcu"),
2503
- type: "card",
2504
- links: { self: "./burcu" },
2505
- attributes: {
2506
- firstName: "Burcu",
2507
- cardTitle: "Burcu Pet Person",
2508
- cardDescription: "A person with pets",
2509
- cardThumbnailURL: null,
2510
- cardInfo
2511
- },
2512
- meta: {
2513
- adoptsFrom: {
2514
- module: testModuleRRI("pet-person"),
2515
- name: "PetPerson"
2516
- },
2517
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}PetPerson/burcu.json`),
2518
- resourceCreatedAt: await getFileCreatedAt(realm, "PetPerson/burcu.json"),
2519
- realmURL: ri("http://test-realm/test/"),
2520
- realmInfo: {
2521
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
2522
- backgroundURL: null,
2523
- iconURL: null,
2524
- includePrerenderedDefaultRealmIndex: null,
2525
- lastPublishedAt: null,
2526
- name: "Unnamed Workspace",
2527
- publishable: null,
2528
- realmUserId: "@realm_server:localhost",
2529
- showAsCatalog: null,
2530
- visibility: "public"
2531
- }
2532
- }
2533
- } });
2534
- else assert.ok(false, `search entry was an error: ${card?.error.errorDetail.message}`);
2535
- let entry = await getInstance(realm, new URL(`${testRealmURL}PetPerson/burcu`));
2536
- if (entry) expectSearchDoc(assert, entry.searchDoc, {
2537
- _cardType: "Pet Person",
2538
- id: `${testRealmURL}PetPerson/burcu`,
2539
- firstName: "Burcu",
2540
- pets: null,
2541
- friend: null,
2542
- cardTitle: "Burcu Pet Person",
2543
- cardDescription: "A person with pets",
2544
- cardThumbnailURL: null,
2545
- cardTheme: null,
2546
- cardInfo: {
2547
- cardThumbnail: null,
2548
- theme: null
2549
- }
2550
- });
2551
- else assert.ok(false, `could not find ${testRealmURL}PetPerson/burcu in the index`);
2552
- });
2553
- (0, import_qunit.test)("can index a card that contains a field with a linksToMany field", async function(assert) {
2554
- let { realm, adapter } = await setupIntegrationTestRealm({
2555
- mockMatrixUtils,
2556
- contents: {
2557
- "Pet/vanGogh.json": { data: {
2558
- attributes: { firstName: "Van Gogh" },
2559
- meta: { adoptsFrom: {
2560
- module: `${testModuleRealm}pet`,
2561
- name: "Pet"
2562
- } }
2563
- } },
2564
- "pet-person-spec.json": { data: {
2565
- attributes: {
2566
- cardTitle: "PetPerson",
2567
- cardDescription: "Spec for PetPerson",
2568
- specType: "card",
2569
- ref: {
2570
- module: `${testModuleRealm}pet-person`,
2571
- name: "PetPerson"
2572
- }
2573
- },
2574
- relationships: {},
2575
- meta: { adoptsFrom: {
2576
- module: "@cardstack/base/spec",
2577
- name: "Spec"
2578
- } }
2579
- } },
2580
- "Pet/mango.json": { data: {
2581
- attributes: { firstName: "Mango" },
2582
- meta: { adoptsFrom: {
2583
- module: `${testModuleRealm}pet`,
2584
- name: "Pet"
2585
- } }
2586
- } }
2587
- }
2588
- });
2589
- let spec = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}pet-person-spec`), { loadLinks: true });
2590
- if (spec?.type === "doc") assert.deepEqual(spec.doc.data, {
2591
- id: testRRI("pet-person-spec"),
2592
- type: "card",
2593
- links: { self: "./pet-person-spec" },
2594
- attributes: {
2595
- cardTitle: "PetPerson",
2596
- cardDescription: "Spec for PetPerson",
2597
- readMe: null,
2598
- cardThumbnailURL: null,
2599
- ref: {
2600
- module: `${testModuleRealm}pet-person`,
2601
- name: "PetPerson"
2602
- },
2603
- specType: "card",
2604
- moduleHref: `${testModuleRealm}pet-person`,
2605
- containedExamples: [],
2606
- isCard: true,
2607
- isComponent: false,
2608
- isField: false,
2609
- isFile: false,
2610
- cardInfo
2611
- },
2612
- meta: {
2613
- adoptsFrom: {
2614
- module: rri("@cardstack/base/spec"),
2615
- name: "Spec"
2616
- },
2617
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}pet-person-spec.json`),
2618
- realmURL: ri("http://test-realm/test/"),
2619
- realmInfo: {
2620
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
2621
- backgroundURL: null,
2622
- iconURL: null,
2623
- includePrerenderedDefaultRealmIndex: null,
2624
- lastPublishedAt: null,
2625
- name: "Unnamed Workspace",
2626
- publishable: null,
2627
- realmUserId: "@realm_server:localhost",
2628
- showAsCatalog: null,
2629
- visibility: "public"
2630
- },
2631
- resourceCreatedAt: await getFileCreatedAt(realm, "pet-person-spec.json")
2632
- }
2633
- });
2634
- else assert.ok(false, `search entry was an error: ${spec?.error.errorDetail.message}`);
2635
- let entry = await getInstance(realm, new URL(`${testRealmURL}pet-person-spec`));
2636
- if (entry) expectSearchDoc(assert, entry.searchDoc, {
2637
- _cardType: "Spec",
2638
- id: `${testRealmURL}pet-person-spec`,
2639
- cardTitle: "PetPerson",
2640
- cardDescription: "Spec for PetPerson",
2641
- containedExamples: null,
2642
- linkedExamples: null,
2643
- fileExamples: null,
2644
- moduleHref: `${testModuleRealm}pet-person`,
2645
- ref: `${testModuleRealm}pet-person/PetPerson`,
2646
- specType: "card",
2647
- isCard: true,
2648
- isComponent: false,
2649
- isField: false,
2650
- isFile: false,
2651
- cardTheme: null,
2652
- cardInfo: {
2653
- cardThumbnail: null,
2654
- theme: null
2655
- }
2656
- });
2657
- else assert.ok(false, `could not find ${testRealmURL}pet-person-spec in the index`);
2658
- });
2659
- (0, import_qunit.test)("can index a card whose contained field has a query-backed link driven by a computed in that same field", async function(assert) {
2660
- class Pet extends CardDef {
2661
- static displayName = "Pet";
2662
- static {
2663
- decorateFieldV2(this.prototype, "name", [field], function() {
2664
- return contains(string_default);
2665
- });
2666
- }
2667
- #name = (initializeDeferredDecorator(this, "name"), void 0);
2668
- }
2669
- class Note extends FieldDef {
2670
- static {
2671
- decorateFieldV2(this.prototype, "body", [field], function() {
2672
- return contains(string_default);
2673
- });
2674
- }
2675
- #body = (initializeDeferredDecorator(this, "body"), void 0);
2676
- static {
2677
- decorateFieldV2(this.prototype, "mentionedIds", [field], function() {
2678
- return containsMany(string_default, { computeVia: function() {
2679
- return (this.body ?? "").split(/\s+/).filter((word) => word.startsWith("@")).map((word) => `${testRealmURL}Pet/${word.slice(1)}`);
2680
- } });
2681
- });
2682
- }
2683
- #mentionedIds = (initializeDeferredDecorator(this, "mentionedIds"), void 0);
2684
- static {
2685
- decorateFieldV2(this.prototype, "mentioned", [field], function() {
2686
- return linksToMany(() => Pet, { query: { filter: { in: { id: "$this.mentionedIds" } } } });
2687
- });
2688
- }
2689
- #mentioned = (initializeDeferredDecorator(this, "mentioned"), void 0);
2690
- }
2691
- class Post extends CardDef {
2692
- static {
2693
- decorateFieldV2(this.prototype, "note", [field], function() {
2694
- return contains(Note);
2695
- });
2696
- }
2697
- #note = (initializeDeferredDecorator(this, "note"), void 0);
2698
- }
2699
- let { realm } = await setupIntegrationTestRealm({
2700
- mockMatrixUtils,
2701
- contents: {
2702
- "test-cards.gts": {
2703
- Pet,
2704
- Note,
2705
- Post
2706
- },
2707
- "Pet/mango.json": { data: {
2708
- attributes: { name: "Mango" },
2709
- meta: { adoptsFrom: {
2710
- module: "../test-cards",
2711
- name: "Pet"
2712
- } }
2713
- } },
2714
- "post-1.json": { data: {
2715
- attributes: { note: { body: "hello @mango" } },
2716
- meta: { adoptsFrom: {
2717
- module: "./test-cards",
2718
- name: "Post"
2719
- } }
2720
- } }
2721
- }
2722
- });
2723
- let post = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}post-1`), { loadLinks: true });
2724
- if (post?.type === "doc") {
2725
- assert.deepEqual(post.doc.data.attributes?.note?.mentionedIds, [`${testRealmURL}Pet/mango`], "the computed declared inside the contained field is in the indexed document");
2726
- let mentioned = post.doc.data.relationships?.["note.mentioned"];
2727
- assert.ok(mentioned?.links?.search?.startsWith(`${testRealmURL}_search?`), `the query-backed link carries links.search (got ${JSON.stringify(mentioned?.links)})`);
2728
- assert.deepEqual(mentioned?.data, [{
2729
- type: "card",
2730
- id: `${testRealmURL}Pet/mango`
2731
- }], "the query resolved the mentioned card");
2732
- } else assert.ok(false, `search entry was an error: ${post?.error.errorDetail.message}`);
2733
- });
2734
- (0, import_qunit.test)("a computed linksToMany serializes into the indexed document", async function(assert) {
2735
- class Issue extends CardDef {
2736
- static displayName = "Issue";
2737
- static {
2738
- decorateFieldV2(this.prototype, "title", [field], function() {
2739
- return contains(string_default);
2740
- });
2741
- }
2742
- #title = (initializeDeferredDecorator(this, "title"), void 0);
2743
- }
2744
- class IssueTracker extends CardDef {
2745
- static displayName = "IssueTracker";
2746
- static {
2747
- decorateFieldV2(this.prototype, "directIssues", [field], function() {
2748
- return linksToMany(() => Issue);
2749
- });
2750
- }
2751
- #directIssues = (initializeDeferredDecorator(this, "directIssues"), void 0);
2752
- static {
2753
- decorateFieldV2(this.prototype, "localCards", [field], function() {
2754
- return linksToMany(() => Issue, { computeVia: function() {
2755
- return this.directIssues;
2756
- } });
2757
- });
2758
- }
2759
- #localCards = (initializeDeferredDecorator(this, "localCards"), void 0);
2760
- }
2761
- let { realm } = await setupIntegrationTestRealm({
2762
- mockMatrixUtils,
2763
- contents: {
2764
- "test-cards.gts": {
2765
- Issue,
2766
- IssueTracker
2767
- },
2768
- "Issue/issue-1.json": { data: {
2769
- attributes: { title: "First" },
2770
- meta: { adoptsFrom: {
2771
- module: "../test-cards",
2772
- name: "Issue"
2773
- } }
2774
- } },
2775
- "Issue/issue-2.json": { data: {
2776
- attributes: { title: "Second" },
2777
- meta: { adoptsFrom: {
2778
- module: "../test-cards",
2779
- name: "Issue"
2780
- } }
2781
- } },
2782
- "Issue/issue-3.json": { data: {
2783
- attributes: { title: "Third" },
2784
- meta: { adoptsFrom: {
2785
- module: "../test-cards",
2786
- name: "Issue"
2787
- } }
2788
- } }
2789
- }
2790
- });
2791
- let issueIds = [
2792
- `${testRealmURL}Issue/issue-1`,
2793
- `${testRealmURL}Issue/issue-2`,
2794
- `${testRealmURL}Issue/issue-3`
2795
- ];
2796
- await realm.write("board-1.json", JSON.stringify({ data: {
2797
- relationships: {
2798
- "directIssues.0": { links: { self: "./Issue/issue-1" } },
2799
- "directIssues.1": { links: { self: "./Issue/issue-2" } },
2800
- "directIssues.2": { links: { self: "./Issue/issue-3" } }
2801
- },
2802
- meta: { adoptsFrom: {
2803
- module: "./test-cards",
2804
- name: "IssueTracker"
2805
- } }
2806
- } }));
2807
- let board = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}board-1`), { loadLinks: true });
2808
- if (board?.type === "doc") {
2809
- let relationships = board.doc.data.relationships ?? {};
2810
- let linksFor = (prefix) => Object.keys(relationships).filter((key) => new RegExp(`^${prefix}\\.\\d+$`).test(key)).map((key) => relationships[key].links?.self).filter(Boolean).map((self) => new URL(self, `${testRealmURL}board-1`).href).sort();
2811
- assert.deepEqual(linksFor("directIssues"), issueIds, "the authored directIssues relationship serializes");
2812
- assert.deepEqual(linksFor("localCards"), issueIds, "the computed localCards relationship serializes");
2813
- } else assert.ok(false, `board search entry was an error: ${board?.error.errorDetail.message}`);
2814
- });
2815
- (0, import_qunit.test)("a computed link that resolves to nothing is omitted from the indexed document", async function(assert) {
2816
- class Tag extends CardDef {
2817
- static displayName = "Tag";
2818
- static {
2819
- decorateFieldV2(this.prototype, "label", [field], function() {
2820
- return contains(string_default);
2821
- });
2822
- }
2823
- #label = (initializeDeferredDecorator(this, "label"), void 0);
2824
- }
2825
- class Board extends CardDef {
2826
- static displayName = "Board";
2827
- static {
2828
- decorateFieldV2(this.prototype, "tags", [field], function() {
2829
- return linksToMany(() => Tag);
2830
- });
2831
- }
2832
- #tags = (initializeDeferredDecorator(this, "tags"), void 0);
2833
- static {
2834
- decorateFieldV2(this.prototype, "activeTags", [field], function() {
2835
- return linksToMany(() => Tag, { computeVia: function() {
2836
- return this.tags;
2837
- } });
2838
- });
2839
- }
2840
- #activeTags = (initializeDeferredDecorator(this, "activeTags"), void 0);
2841
- static {
2842
- decorateFieldV2(this.prototype, "primaryTag", [field], function() {
2843
- return linksTo(() => Tag, { computeVia: function() {
2844
- return this.tags[0];
2845
- } });
2846
- });
2847
- }
2848
- #primaryTag = (initializeDeferredDecorator(this, "primaryTag"), void 0);
2849
- }
2850
- let { realm } = await setupIntegrationTestRealm({
2851
- mockMatrixUtils,
2852
- contents: { "test-cards.gts": {
2853
- Tag,
2854
- Board
2855
- } }
2856
- });
2857
- await realm.write("board-empty.json", JSON.stringify({ data: { meta: { adoptsFrom: {
2858
- module: "./test-cards",
2859
- name: "Board"
2860
- } } } }));
2861
- let board = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}board-empty`), { loadLinks: true });
2862
- if (board?.type === "doc") assert.strictEqual(board.doc.data.relationships, void 0, "a card whose only links are empty computeds carries no relationships key (empty computeds omitted, the leftover `{}` stripped)");
2863
- else assert.ok(false, `board search entry was an error: ${board?.error.errorDetail.message}`);
2864
- });
2865
- (0, import_qunit.test)("a computed that reduces over a query-backed relationship is omitted from the indexed document", async function(assert) {
2866
- const issueRef = {
2867
- module: rri(`${testRealmURL}test-cards`),
2868
- name: "Issue"
2869
- };
2870
- class Issue extends CardDef {
2871
- static displayName = "Issue";
2872
- static {
2873
- decorateFieldV2(this.prototype, "title", [field], function() {
2874
- return contains(string_default);
2875
- });
2876
- }
2877
- #title = (initializeDeferredDecorator(this, "title"), void 0);
2878
- static {
2879
- decorateFieldV2(this.prototype, "project", [field], function() {
2880
- return linksTo(() => Project);
2881
- });
2882
- }
2883
- #project = (initializeDeferredDecorator(this, "project"), void 0);
2884
- }
2885
- class Project extends CardDef {
2886
- static displayName = "Project";
2887
- static {
2888
- decorateFieldV2(this.prototype, "name", [field], function() {
2889
- return contains(string_default);
2890
- });
2891
- }
2892
- #name = (initializeDeferredDecorator(this, "name"), void 0);
2893
- static {
2894
- decorateFieldV2(this.prototype, "issues", [field], function() {
2895
- return linksToMany(() => Issue, { query: { filter: {
2896
- on: issueRef,
2897
- eq: { "project.id": "$this.id" }
2898
- } } });
2899
- });
2900
- }
2901
- #issues = (initializeDeferredDecorator(this, "issues"), void 0);
2902
- }
2903
- class IssueTracker extends CardDef {
2904
- static displayName = "IssueTracker";
2905
- static {
2906
- decorateFieldV2(this.prototype, "project", [field], function() {
2907
- return linksTo(() => Project);
2908
- });
2909
- }
2910
- #project = (initializeDeferredDecorator(this, "project"), void 0);
2911
- static {
2912
- decorateFieldV2(this.prototype, "directIssues", [field], function() {
2913
- return linksToMany(() => Issue);
2914
- });
2915
- }
2916
- #directIssues = (initializeDeferredDecorator(this, "directIssues"), void 0);
2917
- static {
2918
- decorateFieldV2(this.prototype, "localCards", [field], function() {
2919
- return linksToMany(() => Issue, { computeVia: function() {
2920
- return this.directIssues;
2921
- } });
2922
- });
2923
- }
2924
- #localCards = (initializeDeferredDecorator(this, "localCards"), void 0);
2925
- static {
2926
- decorateFieldV2(this.prototype, "cards", [field], function() {
2927
- return linksToMany(() => Issue, { computeVia: function() {
2928
- return this.project?.issues;
2929
- } });
2930
- });
2931
- }
2932
- #cards = (initializeDeferredDecorator(this, "cards"), void 0);
2933
- static {
2934
- decorateFieldV2(this.prototype, "cardCount", [field], function() {
2935
- return contains(NumberField, { computeVia: function() {
2936
- return this.cards.length;
2937
- } });
2938
- });
2939
- }
2940
- #cardCount = (initializeDeferredDecorator(this, "cardCount"), void 0);
2941
- }
2942
- let { realm } = await setupIntegrationTestRealm({
2943
- mockMatrixUtils,
2944
- contents: {
2945
- "test-cards.gts": {
2946
- Issue,
2947
- Project,
2948
- IssueTracker
2949
- },
2950
- "Project/proj-1.json": { data: {
2951
- attributes: { name: "Nexus" },
2952
- meta: { adoptsFrom: {
2953
- module: "../test-cards",
2954
- name: "Project"
2955
- } }
2956
- } },
2957
- "Issue/issue-1.json": { data: {
2958
- attributes: { title: "First" },
2959
- relationships: { project: { links: { self: "../Project/proj-1" } } },
2960
- meta: { adoptsFrom: {
2961
- module: "../test-cards",
2962
- name: "Issue"
2963
- } }
2964
- } },
2965
- "Issue/issue-2.json": { data: {
2966
- attributes: { title: "Second" },
2967
- relationships: { project: { links: { self: "../Project/proj-1" } } },
2968
- meta: { adoptsFrom: {
2969
- module: "../test-cards",
2970
- name: "Issue"
2971
- } }
2972
- } }
2973
- }
2974
- });
2975
- let issueIds = [`${testRealmURL}Issue/issue-1`, `${testRealmURL}Issue/issue-2`];
2976
- let project = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}Project/proj-1`), { loadLinks: true });
2977
- assert.deepEqual(project?.type === "doc" ? project.doc.data.relationships?.issues?.data?.map((d) => d.id).sort() : void 0, issueIds, "the query-backed Project.issues resolves both issues");
2978
- await realm.write("board-1.json", JSON.stringify({ data: {
2979
- relationships: {
2980
- project: { links: { self: "./Project/proj-1" } },
2981
- "directIssues.0": { links: { self: "./Issue/issue-1" } },
2982
- "directIssues.1": { links: { self: "./Issue/issue-2" } }
2983
- },
2984
- meta: { adoptsFrom: {
2985
- module: "./test-cards",
2986
- name: "IssueTracker"
2987
- } }
2988
- } }));
2989
- let board = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}board-1`), { loadLinks: true });
2990
- if (board?.type === "doc") {
2991
- let relationships = board.doc.data.relationships ?? {};
2992
- let linksFor = (prefix) => Object.keys(relationships).filter((key) => new RegExp(`^${prefix}\\.\\d+$`).test(key)).map((key) => relationships[key].links?.self).filter(Boolean).map((self) => new URL(self, `${testRealmURL}board-1`).href).sort();
2993
- assert.deepEqual(linksFor("localCards"), issueIds, "a computed over an authored link still serializes");
2994
- assert.deepEqual(linksFor("cards"), [], "a computed over a query-backed relationship is omitted");
2995
- assert.strictEqual(board.doc.data.attributes?.cardCount, void 0, "a contained computed reaching the query field through another computed is omitted");
2996
- } else assert.ok(false, `board search entry was an error: ${board?.error.errorDetail.message}`);
2997
- });
2998
- (0, import_qunit.test)("a query-backed field resolves references that live in another realm", async function(assert) {
2999
- class Pet extends CardDef {
3000
- static displayName = "Pet";
3001
- static {
3002
- decorateFieldV2(this.prototype, "name", [field], function() {
3003
- return contains(string_default);
3004
- });
3005
- }
3006
- #name = (initializeDeferredDecorator(this, "name"), void 0);
3007
- }
3008
- class Note extends FieldDef {
3009
- static {
3010
- decorateFieldV2(this.prototype, "rawIds", [field], function() {
3011
- return containsMany(string_default);
3012
- });
3013
- }
3014
- #rawIds = (initializeDeferredDecorator(this, "rawIds"), void 0);
3015
- static {
3016
- decorateFieldV2(this.prototype, "mentionedIds", [field], function() {
3017
- return containsMany(string_default, { computeVia: function() {
3018
- return this.rawIds ?? [];
3019
- } });
3020
- });
3021
- }
3022
- #mentionedIds = (initializeDeferredDecorator(this, "mentionedIds"), void 0);
3023
- static {
3024
- decorateFieldV2(this.prototype, "mentioned", [field], function() {
3025
- return linksToMany(() => CardDef, { query: {
3026
- filter: { in: { id: "$this.mentionedIds" } },
3027
- realms: "$this.mentionedIds"
3028
- } });
3029
- });
3030
- }
3031
- #mentioned = (initializeDeferredDecorator(this, "mentioned"), void 0);
3032
- }
3033
- class Post extends CardDef {
3034
- static {
3035
- decorateFieldV2(this.prototype, "note", [field], function() {
3036
- return contains(Note);
3037
- });
3038
- }
3039
- #note = (initializeDeferredDecorator(this, "note"), void 0);
3040
- }
3041
- let otherRealmURL = "http://test-realm/other/";
3042
- await setupIntegrationTestRealm({
3043
- mockMatrixUtils,
3044
- realmURL: otherRealmURL,
3045
- contents: {
3046
- "pet.gts": { Pet },
3047
- "Pet/mango.json": { data: {
3048
- attributes: { name: "Mango" },
3049
- meta: { adoptsFrom: {
3050
- module: "../pet",
3051
- name: "Pet"
3052
- } }
3053
- } }
3054
- }
3055
- });
3056
- let virtualNetwork = getService("network").virtualNetwork;
3057
- virtualNetwork.addRealmMapping("@other/cards/", otherRealmURL);
3058
- try {
3059
- let { realm } = await setupIntegrationTestRealm({
3060
- mockMatrixUtils,
3061
- contents: {
3062
- "test-cards.gts": {
3063
- Post,
3064
- Note
3065
- },
3066
- "post-1.json": { data: {
3067
- attributes: { note: { rawIds: ["@other/cards/Pet/mango"] } },
3068
- meta: { adoptsFrom: {
3069
- module: "./test-cards",
3070
- name: "Post"
3071
- } }
3072
- } }
3073
- }
3074
- });
3075
- let post = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}post-1`), { loadLinks: true });
3076
- if (post?.type === "doc") {
3077
- let mentioned = post.doc.data.relationships?.["note.mentioned"];
3078
- let searchURL = mentioned?.links?.search ?? "";
3079
- let namesOtherRealm = searchURL.includes(encodeURIComponent(otherRealmURL)) || searchURL.includes(otherRealmURL);
3080
- assert.ok(namesOtherRealm, `links.search names the other realm (got ${searchURL})`);
3081
- assert.deepEqual(mentioned?.data, [{
3082
- type: "card",
3083
- id: `${otherRealmURL}Pet/mango`
3084
- }], "the cross-realm reference resolved");
3085
- } else assert.ok(false, `search entry was an error: ${post?.error.errorDetail.message}`);
3086
- } finally {
3087
- virtualNetwork.removeRealmMapping("@other/cards/");
3088
- }
3089
- });
3090
- (0, import_qunit.test)("can index a card that has nested linksTo fields", async function(assert) {
3091
- let { realm, adapter } = await setupIntegrationTestRealm({
3092
- mockMatrixUtils,
3093
- contents: {
3094
- "Friend/hassan.json": { data: {
3095
- id: `${testRealmURL}Friend/hassan`,
3096
- attributes: {
3097
- firstName: "Hassan",
3098
- cardDescription: "Friend of dogs"
3099
- },
3100
- relationships: { friend: {
3101
- links: { self: `./mango` },
3102
- data: {
3103
- type: "card",
3104
- id: `${testRealmURL}Friend/mango`
3105
- }
3106
- } },
3107
- meta: { adoptsFrom: {
3108
- module: `${testModuleRealm}friend`,
3109
- name: "Friend"
3110
- } }
3111
- } },
3112
- "Friend/mango.json": { data: {
3113
- id: `${testRealmURL}Friend/mango`,
3114
- attributes: {
3115
- firstName: "Mango",
3116
- cardDescription: "Dog friend"
3117
- },
3118
- relationships: { friend: { links: { self: `./vanGogh` } } },
3119
- meta: { adoptsFrom: {
3120
- module: `${testModuleRealm}friend`,
3121
- name: "Friend"
3122
- } }
3123
- } },
3124
- "Friend/vanGogh.json": { data: {
3125
- id: `${testRealmURL}Friend/vanGogh`,
3126
- attributes: {
3127
- firstName: "Van Gogh",
3128
- cardDescription: "Dog friend",
3129
- cardThumbnailURL: "van-gogh.jpg"
3130
- },
3131
- meta: { adoptsFrom: {
3132
- module: `${testModuleRealm}friend`,
3133
- name: "Friend"
3134
- } }
3135
- } }
3136
- }
3137
- });
3138
- let hassan = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}Friend/hassan`));
3139
- if (hassan?.type === "doc") assert.deepEqual(hassan.doc.data, {
3140
- id: testRRI("Friend/hassan"),
3141
- type: "card",
3142
- links: { self: "./hassan" },
3143
- attributes: {
3144
- firstName: "Hassan",
3145
- cardTitle: "Hassan",
3146
- cardDescription: "Friend of dogs",
3147
- cardThumbnailURL: null,
3148
- cardInfo
3149
- },
3150
- relationships: { friend: { links: { self: `./mango` } } },
3151
- meta: {
3152
- adoptsFrom: {
3153
- module: rri(`${testModuleRealm}friend`),
3154
- name: "Friend"
3155
- },
3156
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Friend/hassan.json`),
3157
- realmURL: ri("http://test-realm/test/"),
3158
- realmInfo: {
3159
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3160
- backgroundURL: null,
3161
- iconURL: null,
3162
- includePrerenderedDefaultRealmIndex: null,
3163
- lastPublishedAt: null,
3164
- name: "Unnamed Workspace",
3165
- publishable: null,
3166
- realmUserId: "@realm_server:localhost",
3167
- showAsCatalog: null,
3168
- visibility: "public"
3169
- },
3170
- resourceCreatedAt: await getFileCreatedAt(realm, "Friend/hassan.json")
3171
- }
3172
- });
3173
- else assert.ok(false, `search entry was an error: ${hassan?.error.errorDetail.message}`);
3174
- let hassanEntry = await getInstance(realm, new URL(`${testRealmURL}Friend/hassan`));
3175
- if (hassanEntry) expectSearchDoc(assert, hassanEntry.searchDoc, {
3176
- _cardType: "Friend",
3177
- id: `${testRealmURL}Friend/hassan`,
3178
- firstName: "Hassan",
3179
- cardTitle: "Hassan",
3180
- cardDescription: "Friend of dogs",
3181
- friend: {
3182
- id: `${testRealmURL}Friend/mango`,
3183
- firstName: "Mango",
3184
- cardTitle: "Mango",
3185
- cardDescription: "Dog friend",
3186
- friend: { id: `${testRealmURL}Friend/vanGogh` },
3187
- cardTheme: null,
3188
- cardInfo: {
3189
- cardThumbnail: null,
3190
- theme: null
3191
- }
3192
- },
3193
- cardTheme: null,
3194
- cardInfo: {
3195
- cardThumbnail: null,
3196
- theme: null
3197
- }
3198
- });
3199
- else assert.ok(false, `could not find ${testRealmURL}Friend/hassan in the index`);
3200
- });
3201
- (0, import_qunit.test)("can index a field with a cycle in the linksTo field", async function(assert) {
3202
- let { realm, adapter } = await setupIntegrationTestRealm({
3203
- mockMatrixUtils,
3204
- contents: {
3205
- "Friend/hassan.json": { data: {
3206
- id: `${testRealmURL}Friend/hassan`,
3207
- attributes: {
3208
- firstName: "Hassan",
3209
- cardDescription: "Dog owner"
3210
- },
3211
- relationships: { friend: { links: { self: `./mango` } } },
3212
- meta: { adoptsFrom: {
3213
- module: `${testModuleRealm}friend`,
3214
- name: "Friend"
3215
- } }
3216
- } },
3217
- "Friend/mango.json": { data: {
3218
- id: `${testRealmURL}Friend/mango`,
3219
- attributes: {
3220
- firstName: "Mango",
3221
- cardDescription: "Dog friend"
3222
- },
3223
- relationships: { friend: {
3224
- links: { self: `./hassan` },
3225
- data: {
3226
- type: "card",
3227
- id: `${testRealmURL}Friend/hassan`
3228
- }
3229
- } },
3230
- meta: { adoptsFrom: {
3231
- module: `${testModuleRealm}friend`,
3232
- name: "Friend"
3233
- } }
3234
- } }
3235
- }
3236
- });
3237
- let indexer = realm.realmIndexQueryEngine;
3238
- let hassan = await indexer.cardDocument(new URL(`${testRealmURL}Friend/hassan`), { loadLinks: true });
3239
- if (hassan?.type === "doc") assert.deepEqual(hassan.doc, {
3240
- data: {
3241
- id: testRRI("Friend/hassan"),
3242
- type: "card",
3243
- links: { self: "./hassan" },
3244
- attributes: {
3245
- firstName: "Hassan",
3246
- cardTitle: "Hassan",
3247
- cardDescription: "Dog owner",
3248
- cardThumbnailURL: null,
3249
- cardInfo
3250
- },
3251
- relationships: { friend: {
3252
- links: { self: `./mango` },
3253
- data: {
3254
- type: "card",
3255
- id: `${testRealmURL}Friend/mango`
3256
- }
3257
- } },
3258
- meta: {
3259
- adoptsFrom: {
3260
- module: rri(`${testModuleRealm}friend`),
3261
- name: "Friend"
3262
- },
3263
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Friend/hassan.json`),
3264
- realmURL: ri("http://test-realm/test/"),
3265
- realmInfo: {
3266
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3267
- backgroundURL: null,
3268
- iconURL: null,
3269
- includePrerenderedDefaultRealmIndex: null,
3270
- lastPublishedAt: null,
3271
- name: "Unnamed Workspace",
3272
- publishable: null,
3273
- realmUserId: "@realm_server:localhost",
3274
- showAsCatalog: null,
3275
- visibility: "public"
3276
- },
3277
- resourceCreatedAt: await getFileCreatedAt(realm, "Friend/hassan.json")
3278
- }
3279
- },
3280
- included: [{
3281
- id: testRRI("Friend/mango"),
3282
- type: "card",
3283
- links: { self: `./mango` },
3284
- attributes: {
3285
- firstName: "Mango",
3286
- cardTitle: "Mango",
3287
- cardDescription: "Dog friend",
3288
- cardThumbnailURL: null,
3289
- cardInfo
3290
- },
3291
- relationships: { friend: {
3292
- links: { self: `./hassan` },
3293
- data: {
3294
- type: "card",
3295
- id: `${testRealmURL}Friend/hassan`
3296
- }
3297
- } },
3298
- meta: {
3299
- adoptsFrom: {
3300
- module: rri(`${testModuleRealm}friend`),
3301
- name: "Friend"
3302
- },
3303
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Friend/mango.json`),
3304
- realmURL: ri("http://test-realm/test/"),
3305
- realmInfo: {
3306
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3307
- backgroundURL: null,
3308
- iconURL: null,
3309
- includePrerenderedDefaultRealmIndex: null,
3310
- lastPublishedAt: null,
3311
- name: "Unnamed Workspace",
3312
- publishable: null,
3313
- realmUserId: "@realm_server:localhost",
3314
- showAsCatalog: null,
3315
- visibility: "public"
3316
- },
3317
- resourceCreatedAt: await getFileCreatedAt(realm, "Friend/mango.json")
3318
- }
3319
- }]
3320
- });
3321
- else assert.ok(false, `search entry was an error: ${hassan?.error.errorDetail.message}`);
3322
- let hassanEntry = await getInstance(realm, new URL(`${testRealmURL}Friend/hassan`));
3323
- if (hassanEntry) expectSearchDoc(assert, hassanEntry.searchDoc, {
3324
- _cardType: "Friend",
3325
- id: `${testRealmURL}Friend/hassan`,
3326
- firstName: "Hassan",
3327
- cardDescription: "Dog owner",
3328
- friend: {
3329
- id: `${testRealmURL}Friend/mango`,
3330
- firstName: "Mango",
3331
- cardTitle: "Mango",
3332
- friend: { id: `${testRealmURL}Friend/hassan` },
3333
- cardDescription: "Dog friend",
3334
- cardTheme: null,
3335
- cardInfo: {
3336
- cardThumbnail: null,
3337
- theme: null
3338
- }
3339
- },
3340
- cardTitle: "Hassan",
3341
- cardTheme: null,
3342
- cardInfo: {
3343
- cardThumbnail: null,
3344
- theme: null
3345
- }
3346
- });
3347
- else assert.ok(false, `could not find ${testRealmURL}Friend/hassan in the index`);
3348
- let mango = await indexer.cardDocument(new URL(`${testRealmURL}Friend/mango`), { loadLinks: true });
3349
- if (mango?.type === "doc") assert.deepEqual(mango.doc, {
3350
- data: {
3351
- id: testRRI("Friend/mango"),
3352
- type: "card",
3353
- links: { self: "./mango" },
3354
- attributes: {
3355
- firstName: "Mango",
3356
- cardTitle: "Mango",
3357
- cardDescription: "Dog friend",
3358
- cardThumbnailURL: null,
3359
- cardInfo
3360
- },
3361
- relationships: { friend: {
3362
- links: { self: `./hassan` },
3363
- data: {
3364
- type: "card",
3365
- id: `${testRealmURL}Friend/hassan`
3366
- }
3367
- } },
3368
- meta: {
3369
- adoptsFrom: {
3370
- module: rri(`${testModuleRealm}friend`),
3371
- name: "Friend"
3372
- },
3373
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Friend/mango.json`),
3374
- realmURL: ri("http://test-realm/test/"),
3375
- realmInfo: {
3376
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3377
- backgroundURL: null,
3378
- iconURL: null,
3379
- includePrerenderedDefaultRealmIndex: null,
3380
- lastPublishedAt: null,
3381
- name: "Unnamed Workspace",
3382
- publishable: null,
3383
- realmUserId: "@realm_server:localhost",
3384
- showAsCatalog: null,
3385
- visibility: "public"
3386
- },
3387
- resourceCreatedAt: await getFileCreatedAt(realm, "Friend/mango.json")
3388
- }
3389
- },
3390
- included: [{
3391
- id: testRRI("Friend/hassan"),
3392
- type: "card",
3393
- links: { self: `./hassan` },
3394
- attributes: {
3395
- firstName: "Hassan",
3396
- cardTitle: "Hassan",
3397
- cardDescription: "Dog owner",
3398
- cardThumbnailURL: null,
3399
- cardInfo
3400
- },
3401
- relationships: { friend: {
3402
- links: { self: `./mango` },
3403
- data: {
3404
- type: "card",
3405
- id: `${testRealmURL}Friend/mango`
3406
- }
3407
- } },
3408
- meta: {
3409
- adoptsFrom: {
3410
- module: rri(`${testModuleRealm}friend`),
3411
- name: "Friend"
3412
- },
3413
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Friend/hassan.json`),
3414
- realmURL: ri("http://test-realm/test/"),
3415
- realmInfo: {
3416
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3417
- backgroundURL: null,
3418
- iconURL: null,
3419
- includePrerenderedDefaultRealmIndex: null,
3420
- lastPublishedAt: null,
3421
- name: "Unnamed Workspace",
3422
- publishable: null,
3423
- realmUserId: "@realm_server:localhost",
3424
- showAsCatalog: null,
3425
- visibility: "public"
3426
- },
3427
- resourceCreatedAt: await getFileCreatedAt(realm, "Friend/hassan.json")
3428
- }
3429
- }]
3430
- });
3431
- else assert.ok(false, `search entry was an error: ${mango?.error.errorDetail.message}`);
3432
- let mangoEntry = await getInstance(realm, new URL(`${testRealmURL}Friend/mango`));
3433
- if (mangoEntry) expectSearchDoc(assert, mangoEntry.searchDoc, {
3434
- _cardType: "Friend",
3435
- id: `${testRealmURL}Friend/mango`,
3436
- firstName: "Mango",
3437
- cardTitle: "Mango",
3438
- cardDescription: "Dog friend",
3439
- friend: {
3440
- id: `${testRealmURL}Friend/hassan`,
3441
- cardTitle: "Hassan",
3442
- firstName: "Hassan",
3443
- friend: { id: `${testRealmURL}Friend/mango` },
3444
- cardDescription: "Dog owner",
3445
- cardTheme: null,
3446
- cardInfo: {
3447
- cardThumbnail: null,
3448
- theme: null
3449
- }
3450
- },
3451
- cardTheme: null,
3452
- cardInfo: {
3453
- cardThumbnail: null,
3454
- theme: null
3455
- }
3456
- });
3457
- else assert.ok(false, `could not find ${testRealmURL}Friend/mango in the index`);
3458
- });
3459
- (0, import_qunit.test)("can index a card that has a linksTo relationship to itself", async function(assert) {
3460
- let { realm, adapter } = await setupIntegrationTestRealm({
3461
- mockMatrixUtils,
3462
- contents: { "Friend/hassan.json": { data: {
3463
- id: `${testRealmURL}Friend/hassan`,
3464
- attributes: {
3465
- firstName: "Hassan",
3466
- cardDescription: "Dog owner"
3467
- },
3468
- relationships: { friend: { links: { self: `./hassan` } } },
3469
- meta: { adoptsFrom: {
3470
- module: `${testModuleRealm}friend`,
3471
- name: "Friend"
3472
- } }
3473
- } } }
3474
- });
3475
- let hassan = await realm.realmIndexQueryEngine.cardDocument(new URL(`${testRealmURL}Friend/hassan`), { loadLinks: true });
3476
- if (hassan?.type === "doc") assert.deepEqual(hassan.doc, { data: {
3477
- id: testRRI("Friend/hassan"),
3478
- type: "card",
3479
- links: { self: "./hassan" },
3480
- attributes: {
3481
- firstName: "Hassan",
3482
- cardTitle: "Hassan",
3483
- cardDescription: "Dog owner",
3484
- cardThumbnailURL: null,
3485
- cardInfo
3486
- },
3487
- relationships: { friend: {
3488
- links: { self: `./hassan` },
3489
- data: {
3490
- type: "card",
3491
- id: `${testRealmURL}Friend/hassan`
3492
- }
3493
- } },
3494
- meta: {
3495
- adoptsFrom: {
3496
- module: rri(`${testModuleRealm}friend`),
3497
- name: "Friend"
3498
- },
3499
- lastModified: adapter.lastModifiedMap.get(`${testRealmURL}Friend/hassan.json`),
3500
- realmURL: ri("http://test-realm/test/"),
3501
- realmInfo: {
3502
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3503
- backgroundURL: null,
3504
- iconURL: null,
3505
- includePrerenderedDefaultRealmIndex: null,
3506
- lastPublishedAt: null,
3507
- name: "Unnamed Workspace",
3508
- publishable: null,
3509
- realmUserId: "@realm_server:localhost",
3510
- showAsCatalog: null,
3511
- visibility: "public"
3512
- },
3513
- resourceCreatedAt: await getFileCreatedAt(realm, "Friend/hassan.json")
3514
- }
3515
- } });
3516
- else assert.ok(false, `search entry was an error: ${hassan?.error.errorDetail.message}`);
3517
- let hassanEntry = await getInstance(realm, new URL(`${testRealmURL}Friend/hassan`));
3518
- if (hassanEntry) expectSearchDoc(assert, hassanEntry.searchDoc, {
3519
- _cardType: "Friend",
3520
- id: `${testRealmURL}Friend/hassan`,
3521
- firstName: "Hassan",
3522
- cardDescription: "Dog owner",
3523
- friend: { id: `${testRealmURL}Friend/hassan` },
3524
- cardTitle: "Hassan",
3525
- cardTheme: null,
3526
- cardInfo: {
3527
- cardThumbnail: null,
3528
- theme: null
3529
- }
3530
- });
3531
- else assert.ok(false, `could not find ${testRealmURL}Friend/hassan in the index`);
3532
- });
3533
- (0, import_qunit.test)("can index a field with a cycle in the linksToMany field", async function(assert) {
3534
- let hassanID = `${testRealmURL}Friends/hassan`;
3535
- let mangoID = `${testRealmURL}Friends/mango`;
3536
- let vanGoghID = `${testRealmURL}Friends/vanGogh`;
3537
- let friendsRef = {
3538
- module: testModuleRRI("friends"),
3539
- name: "Friends"
3540
- };
3541
- let { realm, adapter } = await setupIntegrationTestRealm({
3542
- mockMatrixUtils,
3543
- contents: {
3544
- "Friends/vanGogh.json": { data: {
3545
- attributes: { firstName: "Van Gogh" },
3546
- relationships: { "friends.0": {
3547
- links: { self: hassanID },
3548
- data: {
3549
- type: "card",
3550
- id: hassanID
3551
- }
3552
- } },
3553
- meta: { adoptsFrom: friendsRef }
3554
- } },
3555
- "Friends/hassan.json": { data: {
3556
- attributes: { firstName: "Hassan" },
3557
- relationships: {
3558
- "friends.0": {
3559
- links: { self: mangoID },
3560
- data: {
3561
- type: "card",
3562
- id: mangoID
3563
- }
3564
- },
3565
- "friends.1": {
3566
- links: { self: vanGoghID },
3567
- data: {
3568
- type: "card",
3569
- id: vanGoghID
3570
- }
3571
- }
3572
- },
3573
- meta: { adoptsFrom: friendsRef }
3574
- } },
3575
- "Friends/mango.json": { data: {
3576
- attributes: { firstName: "Mango" },
3577
- relationships: { "friends.0": {
3578
- links: { self: hassanID },
3579
- data: {
3580
- type: "card",
3581
- id: hassanID
3582
- }
3583
- } },
3584
- meta: { adoptsFrom: friendsRef }
3585
- } }
3586
- }
3587
- });
3588
- let queryEngine = realm.realmIndexQueryEngine;
3589
- let realmIndexUpdater = realm.realmIndexUpdater;
3590
- assert.deepEqual(realmIndexUpdater.stats, {
3591
- filesIndexed: 3,
3592
- fileErrors: 0,
3593
- instanceErrors: 0,
3594
- instancesIndexed: 3,
3595
- totalIndexEntries: 6
3596
- }, "instances are indexed without error");
3597
- let hassan = await queryEngine.cardDocument(new URL(hassanID), { loadLinks: true });
3598
- if (hassan?.type === "doc") {
3599
- assert.deepEqual(hassan.doc.data, {
3600
- id: rri(hassanID),
3601
- type: "card",
3602
- links: { self: "./hassan" },
3603
- attributes: {
3604
- firstName: "Hassan",
3605
- cardTitle: "Hassan",
3606
- cardDescription: null,
3607
- cardThumbnailURL: null,
3608
- cardInfo
3609
- },
3610
- relationships: {
3611
- "friends.0": {
3612
- links: { self: "./mango" },
3613
- data: {
3614
- type: "card",
3615
- id: mangoID
3616
- }
3617
- },
3618
- "friends.1": {
3619
- links: { self: "./vanGogh" },
3620
- data: {
3621
- type: "card",
3622
- id: vanGoghID
3623
- }
3624
- }
3625
- },
3626
- meta: {
3627
- adoptsFrom: friendsRef,
3628
- lastModified: adapter.lastModifiedMap.get(`${hassanID}.json`),
3629
- realmURL: ri("http://test-realm/test/"),
3630
- realmInfo: {
3631
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3632
- backgroundURL: null,
3633
- iconURL: null,
3634
- includePrerenderedDefaultRealmIndex: null,
3635
- lastPublishedAt: null,
3636
- name: "Unnamed Workspace",
3637
- publishable: null,
3638
- realmUserId: "@realm_server:localhost",
3639
- showAsCatalog: null,
3640
- visibility: "public"
3641
- },
3642
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/hassan.json")
3643
- }
3644
- }, "hassan doc.data is correct");
3645
- assert.deepEqual(hassan.doc.included, [{
3646
- id: rri(mangoID),
3647
- type: "card",
3648
- links: { self: "./mango" },
3649
- attributes: {
3650
- firstName: "Mango",
3651
- cardTitle: "Mango",
3652
- cardDescription: null,
3653
- cardThumbnailURL: null,
3654
- cardInfo
3655
- },
3656
- relationships: { "friends.0": {
3657
- links: { self: "./hassan" },
3658
- data: {
3659
- type: "card",
3660
- id: hassanID
3661
- }
3662
- } },
3663
- meta: {
3664
- adoptsFrom: friendsRef,
3665
- lastModified: adapter.lastModifiedMap.get(`${mangoID}.json`),
3666
- realmURL: ri("http://test-realm/test/"),
3667
- realmInfo: {
3668
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3669
- backgroundURL: null,
3670
- iconURL: null,
3671
- includePrerenderedDefaultRealmIndex: null,
3672
- lastPublishedAt: null,
3673
- name: "Unnamed Workspace",
3674
- publishable: null,
3675
- realmUserId: "@realm_server:localhost",
3676
- showAsCatalog: null,
3677
- visibility: "public"
3678
- },
3679
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/mango.json")
3680
- }
3681
- }, {
3682
- id: rri(vanGoghID),
3683
- type: "card",
3684
- links: { self: "./vanGogh" },
3685
- attributes: {
3686
- firstName: "Van Gogh",
3687
- cardTitle: "Van Gogh",
3688
- cardDescription: null,
3689
- cardThumbnailURL: null,
3690
- cardInfo
3691
- },
3692
- relationships: { "friends.0": {
3693
- links: { self: "./hassan" },
3694
- data: {
3695
- type: "card",
3696
- id: hassanID
3697
- }
3698
- } },
3699
- meta: {
3700
- adoptsFrom: friendsRef,
3701
- lastModified: adapter.lastModifiedMap.get(`${vanGoghID}.json`),
3702
- realmURL: ri("http://test-realm/test/"),
3703
- realmInfo: {
3704
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3705
- backgroundURL: null,
3706
- iconURL: null,
3707
- includePrerenderedDefaultRealmIndex: null,
3708
- lastPublishedAt: null,
3709
- name: "Unnamed Workspace",
3710
- publishable: null,
3711
- realmUserId: "@realm_server:localhost",
3712
- showAsCatalog: null,
3713
- visibility: "public"
3714
- },
3715
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/vanGogh.json")
3716
- }
3717
- }], "hassan doc.included is correct");
3718
- } else assert.ok(false, `search entry was an error: ${hassan?.error.errorDetail.message}`);
3719
- let hassanEntry = await getInstance(realm, new URL(hassanID));
3720
- if (hassanEntry) expectSearchDoc(assert, hassanEntry.searchDoc, {
3721
- _cardType: "Friends",
3722
- id: hassanID,
3723
- firstName: "Hassan",
3724
- cardTitle: "Hassan",
3725
- friends: [{
3726
- id: mangoID,
3727
- firstName: "Mango",
3728
- cardTitle: "Mango",
3729
- friends: [{ id: hassanID }],
3730
- cardTheme: null,
3731
- cardInfo: {
3732
- cardThumbnail: null,
3733
- theme: null
3734
- }
3735
- }, {
3736
- id: vanGoghID,
3737
- firstName: "Van Gogh",
3738
- friends: [{ id: hassanID }],
3739
- cardTitle: "Van Gogh",
3740
- cardTheme: null,
3741
- cardInfo: {
3742
- cardThumbnail: null,
3743
- theme: null
3744
- }
3745
- }],
3746
- cardTheme: null,
3747
- cardInfo: {
3748
- cardThumbnail: null,
3749
- theme: null
3750
- }
3751
- }, "hassan searchData is correct");
3752
- else assert.ok(false, `could not find ${hassanID} in the index`);
3753
- let mango = await queryEngine.cardDocument(new URL(mangoID), { loadLinks: true });
3754
- if (mango?.type === "doc") {
3755
- assert.deepEqual(mango.doc.data, {
3756
- id: rri(mangoID),
3757
- type: "card",
3758
- links: { self: "./mango" },
3759
- attributes: {
3760
- firstName: "Mango",
3761
- cardTitle: "Mango",
3762
- cardDescription: null,
3763
- cardThumbnailURL: null,
3764
- cardInfo
3765
- },
3766
- relationships: { "friends.0": {
3767
- links: { self: "./hassan" },
3768
- data: {
3769
- type: "card",
3770
- id: hassanID
3771
- }
3772
- } },
3773
- meta: {
3774
- adoptsFrom: friendsRef,
3775
- lastModified: adapter.lastModifiedMap.get(`${mangoID}.json`),
3776
- realmURL: ri("http://test-realm/test/"),
3777
- realmInfo: {
3778
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3779
- backgroundURL: null,
3780
- iconURL: null,
3781
- includePrerenderedDefaultRealmIndex: null,
3782
- lastPublishedAt: null,
3783
- name: "Unnamed Workspace",
3784
- publishable: null,
3785
- realmUserId: "@realm_server:localhost",
3786
- showAsCatalog: null,
3787
- visibility: "public"
3788
- },
3789
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/mango.json")
3790
- }
3791
- }, "mango doc.data is correct");
3792
- assert.deepEqual(mango.doc.included, [{
3793
- id: rri(hassanID),
3794
- type: "card",
3795
- links: { self: "./hassan" },
3796
- attributes: {
3797
- firstName: "Hassan",
3798
- cardTitle: "Hassan",
3799
- cardDescription: null,
3800
- cardThumbnailURL: null,
3801
- cardInfo
3802
- },
3803
- relationships: {
3804
- "friends.0": {
3805
- links: { self: "./mango" },
3806
- data: {
3807
- type: "card",
3808
- id: mangoID
3809
- }
3810
- },
3811
- "friends.1": {
3812
- links: { self: "./vanGogh" },
3813
- data: {
3814
- type: "card",
3815
- id: vanGoghID
3816
- }
3817
- }
3818
- },
3819
- meta: {
3820
- adoptsFrom: friendsRef,
3821
- lastModified: adapter.lastModifiedMap.get(`${hassanID}.json`),
3822
- realmURL: ri("http://test-realm/test/"),
3823
- realmInfo: {
3824
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3825
- backgroundURL: null,
3826
- iconURL: null,
3827
- includePrerenderedDefaultRealmIndex: null,
3828
- lastPublishedAt: null,
3829
- name: "Unnamed Workspace",
3830
- publishable: null,
3831
- realmUserId: "@realm_server:localhost",
3832
- showAsCatalog: null,
3833
- visibility: "public"
3834
- },
3835
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/hassan.json")
3836
- }
3837
- }, {
3838
- id: rri(vanGoghID),
3839
- type: "card",
3840
- links: { self: "./vanGogh" },
3841
- attributes: {
3842
- firstName: "Van Gogh",
3843
- cardTitle: "Van Gogh",
3844
- cardDescription: null,
3845
- cardThumbnailURL: null,
3846
- cardInfo
3847
- },
3848
- relationships: { "friends.0": {
3849
- links: { self: "./hassan" },
3850
- data: {
3851
- type: "card",
3852
- id: hassanID
3853
- }
3854
- } },
3855
- meta: {
3856
- adoptsFrom: friendsRef,
3857
- lastModified: adapter.lastModifiedMap.get(`${vanGoghID}.json`),
3858
- realmURL: ri("http://test-realm/test/"),
3859
- realmInfo: {
3860
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3861
- backgroundURL: null,
3862
- iconURL: null,
3863
- includePrerenderedDefaultRealmIndex: null,
3864
- lastPublishedAt: null,
3865
- name: "Unnamed Workspace",
3866
- publishable: null,
3867
- realmUserId: "@realm_server:localhost",
3868
- showAsCatalog: null,
3869
- visibility: "public"
3870
- },
3871
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/vanGogh.json")
3872
- }
3873
- }], "mango doc.included is correct");
3874
- } else assert.ok(false, `search entry was an error: ${mango?.error.errorDetail.message}`);
3875
- let mangoEntry = await getInstance(realm, new URL(mangoID));
3876
- if (mangoEntry) expectSearchDoc(assert, mangoEntry.searchDoc, {
3877
- _cardType: "Friends",
3878
- id: mangoID,
3879
- firstName: "Mango",
3880
- cardTitle: "Mango",
3881
- friends: [{
3882
- id: hassanID,
3883
- firstName: "Hassan",
3884
- cardTitle: "Hassan",
3885
- friends: [{ id: mangoID }, {
3886
- id: vanGoghID,
3887
- firstName: "Van Gogh",
3888
- cardTitle: "Van Gogh",
3889
- friends: [{ id: hassanID }],
3890
- cardTheme: null,
3891
- cardInfo: {
3892
- cardThumbnail: null,
3893
- theme: null
3894
- }
3895
- }],
3896
- cardTheme: null,
3897
- cardInfo: {
3898
- cardThumbnail: null,
3899
- theme: null
3900
- }
3901
- }],
3902
- cardTheme: null,
3903
- cardInfo: {
3904
- cardThumbnail: null,
3905
- theme: null
3906
- }
3907
- }, "mango searchData is correct");
3908
- else assert.ok(false, `could not find ${mangoID} in the index`);
3909
- let vanGogh = await queryEngine.cardDocument(new URL(vanGoghID), { loadLinks: true });
3910
- if (vanGogh?.type === "doc") {
3911
- assert.deepEqual(vanGogh.doc.data, {
3912
- id: rri(vanGoghID),
3913
- type: "card",
3914
- links: { self: "./vanGogh" },
3915
- attributes: {
3916
- firstName: "Van Gogh",
3917
- cardTitle: "Van Gogh",
3918
- cardDescription: null,
3919
- cardThumbnailURL: null,
3920
- cardInfo
3921
- },
3922
- relationships: { "friends.0": {
3923
- links: { self: "./hassan" },
3924
- data: {
3925
- type: "card",
3926
- id: hassanID
3927
- }
3928
- } },
3929
- meta: {
3930
- adoptsFrom: friendsRef,
3931
- lastModified: adapter.lastModifiedMap.get(`${vanGoghID}.json`),
3932
- realmURL: ri("http://test-realm/test/"),
3933
- realmInfo: {
3934
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3935
- backgroundURL: null,
3936
- iconURL: null,
3937
- includePrerenderedDefaultRealmIndex: null,
3938
- lastPublishedAt: null,
3939
- name: "Unnamed Workspace",
3940
- publishable: null,
3941
- realmUserId: "@realm_server:localhost",
3942
- showAsCatalog: null,
3943
- visibility: "public"
3944
- },
3945
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/vanGogh.json")
3946
- }
3947
- }, "vanGogh doc.data is correct");
3948
- assert.deepEqual(vanGogh.doc.included, [{
3949
- id: rri(hassanID),
3950
- type: "card",
3951
- links: { self: "./hassan" },
3952
- attributes: {
3953
- firstName: "Hassan",
3954
- cardTitle: "Hassan",
3955
- cardDescription: null,
3956
- cardThumbnailURL: null,
3957
- cardInfo
3958
- },
3959
- relationships: {
3960
- "friends.0": {
3961
- links: { self: "./mango" },
3962
- data: {
3963
- type: "card",
3964
- id: mangoID
3965
- }
3966
- },
3967
- "friends.1": {
3968
- links: { self: "./vanGogh" },
3969
- data: {
3970
- type: "card",
3971
- id: vanGoghID
3972
- }
3973
- }
3974
- },
3975
- meta: {
3976
- adoptsFrom: friendsRef,
3977
- lastModified: adapter.lastModifiedMap.get(`${hassanID}.json`),
3978
- realmURL: ri("http://test-realm/test/"),
3979
- realmInfo: {
3980
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
3981
- backgroundURL: null,
3982
- iconURL: null,
3983
- includePrerenderedDefaultRealmIndex: null,
3984
- lastPublishedAt: null,
3985
- name: "Unnamed Workspace",
3986
- publishable: null,
3987
- realmUserId: "@realm_server:localhost",
3988
- showAsCatalog: null,
3989
- visibility: "public"
3990
- },
3991
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/hassan.json")
3992
- }
3993
- }, {
3994
- id: rri(mangoID),
3995
- type: "card",
3996
- links: { self: "./mango" },
3997
- attributes: {
3998
- firstName: "Mango",
3999
- cardTitle: "Mango",
4000
- cardDescription: null,
4001
- cardThumbnailURL: null,
4002
- cardInfo
4003
- },
4004
- relationships: { "friends.0": {
4005
- links: { self: "./hassan" },
4006
- data: {
4007
- type: "card",
4008
- id: hassanID
4009
- }
4010
- } },
4011
- meta: {
4012
- adoptsFrom: friendsRef,
4013
- lastModified: adapter.lastModifiedMap.get(`${mangoID}.json`),
4014
- realmURL: ri("http://test-realm/test/"),
4015
- realmInfo: {
4016
- anonymousRateLimitDefault: DEFAULT_ANONYMOUS_RATE_LIMIT,
4017
- backgroundURL: null,
4018
- iconURL: null,
4019
- includePrerenderedDefaultRealmIndex: null,
4020
- lastPublishedAt: null,
4021
- name: "Unnamed Workspace",
4022
- publishable: null,
4023
- realmUserId: "@realm_server:localhost",
4024
- showAsCatalog: null,
4025
- visibility: "public"
4026
- },
4027
- resourceCreatedAt: await getFileCreatedAt(realm, "Friends/mango.json")
4028
- }
4029
- }], "vanGogh doc.included is correct");
4030
- } else assert.ok(false, `search entry was an error: ${vanGogh?.error.errorDetail.message}`);
4031
- let vanGoghEntry = await getInstance(realm, new URL(vanGoghID));
4032
- if (vanGoghEntry) expectSearchDoc(assert, vanGoghEntry.searchDoc, {
4033
- _cardType: "Friends",
4034
- id: vanGoghID,
4035
- firstName: "Van Gogh",
4036
- cardTitle: "Van Gogh",
4037
- friends: [{
4038
- id: hassanID,
4039
- firstName: "Hassan",
4040
- cardTitle: "Hassan",
4041
- friends: [{
4042
- cardTheme: null,
4043
- cardInfo: {
4044
- cardThumbnail: null,
4045
- theme: null
4046
- },
4047
- firstName: "Mango",
4048
- friends: [{ id: hassanID }],
4049
- id: mangoID,
4050
- cardTitle: "Mango"
4051
- }, { id: vanGoghID }],
4052
- cardTheme: null,
4053
- cardInfo: {
4054
- cardThumbnail: null,
4055
- theme: null
4056
- }
4057
- }],
4058
- cardTheme: null,
4059
- cardInfo: {
4060
- cardThumbnail: null,
4061
- theme: null
4062
- }
4063
- }, "vanGogh searchData is correct");
4064
- else assert.ok(false, `could not find ${vanGoghID} in the index`);
4065
- });
4066
- (0, import_qunit.test)("indexing identifies an instance's card references", async function(assert) {
4067
- let { realm } = await setupIntegrationTestRealm({
4068
- mockMatrixUtils,
4069
- contents: { "person-1.json": { data: {
4070
- attributes: { firstName: "Mango" },
4071
- meta: { adoptsFrom: {
4072
- module: `${testModuleRealm}person`,
4073
- name: "Person"
4074
- } }
4075
- } } }
4076
- });
4077
- let refs = (await getInstance(realm, new URL(`${testRealmURL}person-1`)))?.deps;
4078
- assert.deepEqual(refs.sort().filter((ref) => !ref.includes("glimmer-scoped.css")), [
4079
- "@cardstack/base/card-api",
4080
- "@cardstack/base/number",
4081
- "@cardstack/base/searchable",
4082
- "@cardstack/base/string",
4083
- "https://localhost:4202/test/person",
4084
- "https://packages/@cardstack/boxel-host/commands/create-ai-assistant-room",
4085
- "https://packages/@cardstack/boxel-host/commands/send-ai-assistant-message",
4086
- "https://packages/@ember/component",
4087
- "https://packages/@ember/modifier",
4088
- "https://packages/@ember/template-factory"
4089
- ].sort(), "the card references for the instance are correct");
4090
- });
4091
- (0, import_qunit.test)("indexing identifies an instance's polymorphic contained references", async function(assert) {
4092
- let { realm } = await setupIntegrationTestRealm({
4093
- mockMatrixUtils,
4094
- contents: { "spec-1.json": { data: {
4095
- attributes: {
4096
- cardTitle: "My Spec",
4097
- containedExamples: [{
4098
- firstName: "A",
4099
- lastName: "B"
4100
- }]
4101
- },
4102
- meta: {
4103
- adoptsFrom: {
4104
- module: `${baseRealmRRI}spec`,
4105
- name: "Spec"
4106
- },
4107
- fields: { containedExamples: [{ adoptsFrom: {
4108
- module: `${testModuleRealm}person`,
4109
- name: "PersonField"
4110
- } }] }
4111
- }
4112
- } } }
4113
- });
4114
- let refs = (await getInstance(realm, new URL(`${realm.url}spec-1`)))?.deps;
4115
- assert.deepEqual(refs.sort().filter((ref) => !ref.includes("glimmer-scoped.css")), [
4116
- "@cardstack/base/card-api",
4117
- "@cardstack/base/number",
4118
- "@cardstack/base/searchable",
4119
- "@cardstack/base/spec",
4120
- "@cardstack/base/string",
4121
- "https://localhost:4202/test/person",
4122
- "https://packages/@cardstack/boxel-host/commands/create-ai-assistant-room",
4123
- "https://packages/@cardstack/boxel-host/commands/send-ai-assistant-message",
4124
- "https://packages/@ember/component",
4125
- "https://packages/@ember/modifier",
4126
- "https://packages/@ember/template-factory"
4127
- ].sort(), "the card references for the instance are correct");
4128
- });
4129
- (0, import_qunit.test)("search index does not contain entries that match patterns in ignore files", async function(assert) {
4130
- let { realm } = await setupIntegrationTestRealm({
4131
- mockMatrixUtils,
4132
- contents: {
4133
- "ignore-me-1.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4134
- "posts/nested.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4135
- "posts/please-ignore-me.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4136
- "posts/ignore-me-2.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4137
- ".git/should-not-index.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4138
- "post.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4139
- "dir/card.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4140
- ".gitignore": `
4141
- ignore-me*.json
4142
- dir/
4143
- posts/please-ignore-me.json
4144
- `
4145
- }
4146
- });
4147
- let indexer = realm.realmIndexQueryEngine;
4148
- {
4149
- let card = await indexer.cardDocument(new URL(`${testRealmURL}posts/please-ignore-me`));
4150
- assert.deepEqual(card, void 0, "instance does not exist because file is ignored");
4151
- }
4152
- {
4153
- let card = await indexer.cardDocument(new URL(`${testRealmURL}dir/card`));
4154
- assert.deepEqual(card, void 0, "instance does not exist because file is ignored");
4155
- }
4156
- {
4157
- let card = await indexer.cardDocument(new URL(`${testRealmURL}ignore-me-1`));
4158
- assert.deepEqual(card, void 0, "instance does not exist because file is ignored");
4159
- }
4160
- {
4161
- let card = await indexer.cardDocument(new URL(`${testRealmURL}posts/ignore-me-2`));
4162
- assert.deepEqual(card, void 0, "instance does not exist because file is ignored");
4163
- }
4164
- {
4165
- let card = await indexer.cardDocument(new URL(`${testRealmURL}.git/should-not-index`));
4166
- assert.strictEqual(card, void 0, ".git directory entries are ignored");
4167
- }
4168
- {
4169
- let card = await indexer.cardDocument(new URL(`${testRealmURL}post`));
4170
- assert.ok(card, "instance exists");
4171
- }
4172
- {
4173
- let card = await indexer.cardDocument(new URL(`${testRealmURL}posts/nested`));
4174
- assert.ok(card, "instance exists");
4175
- }
4176
- });
4177
- (0, import_qunit.test)("can ignore files listed in .boxelignore alongside .gitignore", async function(assert) {
4178
- let { realm } = await setupIntegrationTestRealm({
4179
- mockMatrixUtils,
4180
- contents: {
4181
- "post.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4182
- "post.draft.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4183
- "scripts/tool.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4184
- "git-ignored.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4185
- ".gitignore": `
4186
- git-ignored.json
4187
- `,
4188
- ".boxelignore": `
4189
- *.draft.json
4190
- scripts/
4191
- `
4192
- }
4193
- });
4194
- let indexer = realm.realmIndexQueryEngine;
4195
- for (let path of [
4196
- "post.draft",
4197
- "scripts/tool",
4198
- "git-ignored"
4199
- ]) assert.strictEqual(await indexer.cardDocument(new URL(`${testRealmURL}${path}`)), void 0, `${path} is not indexed because it is ignored`);
4200
- assert.ok(await indexer.cardDocument(new URL(`${testRealmURL}post`)), "instance exists");
4201
- });
4202
- (0, import_qunit.test)("a from-scratch index removes the rows of a file that has since been ignored", async function(assert) {
4203
- let { realm, adapter } = await setupIntegrationTestRealm({
4204
- mockMatrixUtils,
4205
- contents: {
4206
- "post.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4207
- "draft.json": { data: { meta: { adoptsFrom: baseCardRef } } }
4208
- }
4209
- });
4210
- let indexer = realm.realmIndexQueryEngine;
4211
- assert.ok(await indexer.cardDocument(new URL(`${testRealmURL}draft`)), "draft is indexed before it is ignored");
4212
- await adapter.write(".boxelignore", "draft.json\n");
4213
- await realm.fullIndex();
4214
- assert.strictEqual(await indexer.cardDocument(new URL(`${testRealmURL}draft`)), void 0, "draft is no longer indexed");
4215
- assert.ok(await indexer.cardDocument(new URL(`${testRealmURL}post`)), "post is still indexed");
4216
- });
4217
- (0, import_qunit.test)("a .boxelignore that lists itself keeps applying on every from-scratch index", async function(assert) {
4218
- let { realm, adapter } = await setupIntegrationTestRealm({
4219
- mockMatrixUtils,
4220
- contents: {
4221
- "post.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4222
- "draft.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4223
- ".boxelignore": `
4224
- .boxelignore
4225
- draft.json
4226
- `
4227
- }
4228
- });
4229
- let indexer = realm.realmIndexQueryEngine;
4230
- for (let pass of [1, 2]) {
4231
- await new Promise((r) => setTimeout(r, 1e3));
4232
- await adapter.write("post.json", JSON.stringify({ data: { meta: { adoptsFrom: baseCardRef } } }));
4233
- await realm.fullIndex();
4234
- assert.strictEqual(await indexer.cardDocument(new URL(`${testRealmURL}draft`)), void 0, `draft is still ignored after from-scratch pass ${pass}`);
4235
- }
4236
- });
4237
- (0, import_qunit.test)("incremental indexing doesn't process ignored files", async function(assert) {
4238
- let { realm } = await setupIntegrationTestRealm({
4239
- mockMatrixUtils,
4240
- contents: {
4241
- "posts/ignore-me.json": { data: { meta: { adoptsFrom: baseCardRef } } },
4242
- ".gitignore": `
4243
- posts/ignore-me.json
4244
- `
4245
- }
4246
- });
4247
- let realmIndexUpdater = realm.realmIndexUpdater;
4248
- let queryEngine = realm.realmIndexQueryEngine;
4249
- await realmIndexUpdater.update([new URL(`${testRealmURL}posts/ignore-me.json`)]);
4250
- let instance = await queryEngine.cardDocument(new URL(`${testRealmURL}posts/ignore-me`));
4251
- assert.strictEqual(instance, void 0, "instance does not exist because file is ignored");
4252
- assert.strictEqual(realmIndexUpdater.stats.instancesIndexed, 0, "no instances were processed");
4253
- });
4254
- (0, import_qunit.test)("isolated HTML for the default CardsGrid realm-index card is replaced with the boilerplate when realm has not opted in", async function(assert) {
4255
- let { realm } = await setupIntegrationTestRealm({
4256
- mockMatrixUtils,
4257
- contents: {
4258
- "index.json": { data: {
4259
- type: "card",
4260
- attributes: {},
4261
- meta: { adoptsFrom: {
4262
- module: "@cardstack/base/cards-grid",
4263
- name: "CardsGrid"
4264
- } }
4265
- } },
4266
- "realm.json": { data: {
4267
- type: "card",
4268
- attributes: {},
4269
- meta: { adoptsFrom: {
4270
- module: "@cardstack/base/realm-config",
4271
- name: "RealmConfig"
4272
- } }
4273
- } }
4274
- }
4275
- });
4276
- let entry = await getInstance(realm, new URL(`${testRealmURL}index`));
4277
- assert.ok(entry, "realm index card is indexed");
4278
- assert.strictEqual(entry?.isolatedHtml, REALM_INDEX_BOILERPLATE_HTML, "isolated_html is the boilerplate constant when the realm has not opted in");
4279
- let embeddedHtml = entry?.embeddedHtml ?? {};
4280
- assert.ok(Object.keys(embeddedHtml).length > 0, "embedded HTML map is populated");
4281
- assert.ok(Object.values(embeddedHtml).every((html) => html.length > 0), "every embedded HTML entry has real content");
4282
- let fittedHtml = entry?.fittedHtml ?? {};
4283
- assert.ok(Object.keys(fittedHtml).length > 0, "fitted HTML map is populated");
4284
- assert.ok(Object.values(fittedHtml).every((html) => html.length > 0), "every fitted HTML entry has real content");
4285
- });
4286
- (0, import_qunit.test)("isolated HTML for the default CardsGrid realm-index card is rendered normally when realm has opted in", async function(assert) {
4287
- let { realm } = await setupIntegrationTestRealm({
4288
- mockMatrixUtils,
4289
- contents: {
4290
- "index.json": { data: {
4291
- type: "card",
4292
- attributes: {},
4293
- meta: { adoptsFrom: {
4294
- module: "@cardstack/base/cards-grid",
4295
- name: "CardsGrid"
4296
- } }
4297
- } },
4298
- "realm.json": { data: {
4299
- type: "card",
4300
- attributes: { includePrerenderedDefaultRealmIndex: true },
4301
- meta: { adoptsFrom: {
4302
- module: "@cardstack/base/realm-config",
4303
- name: "RealmConfig"
4304
- } }
4305
- } }
4306
- }
4307
- });
4308
- let entry = await getInstance(realm, new URL(`${testRealmURL}index`));
4309
- assert.ok(entry, "realm index card is indexed");
4310
- assert.notStrictEqual(entry?.isolatedHtml, REALM_INDEX_BOILERPLATE_HTML, "isolated_html is not the boilerplate when the realm has opted in");
4311
- assert.ok(entry?.isolatedHtml, "isolated_html is set");
4312
- assert.ok((entry?.isolatedHtml ?? "").length > 0, "isolated_html has real content");
4313
- });
4314
- (0, import_qunit.test)("isolated HTML for a default Workspace realm-index card is replaced with the boilerplate when realm has not opted in", async function(assert) {
4315
- let { realm } = await setupIntegrationTestRealm({
4316
- mockMatrixUtils,
4317
- contents: {
4318
- "index.json": { data: {
4319
- type: "card",
4320
- attributes: {},
4321
- meta: { adoptsFrom: {
4322
- module: "@cardstack/base/workspace",
4323
- name: "Workspace"
4324
- } }
4325
- } },
4326
- "realm.json": { data: {
4327
- type: "card",
4328
- attributes: {},
4329
- meta: { adoptsFrom: {
4330
- module: "@cardstack/base/realm-config",
4331
- name: "RealmConfig"
4332
- } }
4333
- } }
4334
- }
4335
- });
4336
- let entry = await getInstance(realm, new URL(`${testRealmURL}index`));
4337
- assert.ok(entry, "realm index card is indexed");
4338
- assert.strictEqual(entry?.isolatedHtml, REALM_INDEX_BOILERPLATE_HTML, "isolated_html is the boilerplate constant when a Workspace-indexed realm has not opted in");
4339
- });
4340
- (0, import_qunit.test)("isolated HTML for a non-CardsGrid index card is rendered normally regardless of opt-in", async function(assert) {
4341
- class PlainHomePage extends CardDef {
4342
- static displayName = "Plain Home Page";
4343
- static {
4344
- decorateFieldV2(this.prototype, "title", [field], function() {
4345
- return contains(string_default);
4346
- });
4347
- }
4348
- #title = (initializeDeferredDecorator(this, "title"), void 0);
4349
- static isolated = class Isolated extends Component$1 {
4350
- static {
4351
- setComponentTemplate(templateFactory({
4352
- "id": "WwNp1MCh",
4353
- "block": "[[[10,\"h1\"],[14,\"data-test-plain-home\",\"\"],[12],[8,[30,1,[\"title\"]],null,null,null],[13]],[\"@fields\"],[]]",
4354
- "moduleName": "/home/runner/work/boxel/boxel/packages/host/tests/integration/realm-indexing-test.gts",
4355
- "isStrictMode": true
4356
- }), this);
4357
- }
4358
- };
4359
- }
4360
- let { realm } = await setupIntegrationTestRealm({
4361
- mockMatrixUtils,
4362
- contents: {
4363
- "home.gts": { PlainHomePage },
4364
- "index.json": { data: {
4365
- type: "card",
4366
- attributes: { title: "Welcome" },
4367
- meta: { adoptsFrom: {
4368
- module: `${testRealmURL}home`,
4369
- name: "PlainHomePage"
4370
- } }
4371
- } }
4372
- }
4373
- });
4374
- let entry = await getInstance(realm, new URL(`${testRealmURL}index`));
4375
- assert.ok(entry, "realm index card is indexed");
4376
- assert.notStrictEqual(entry?.isolatedHtml, REALM_INDEX_BOILERPLATE_HTML, "isolated_html is not the boilerplate when the index is a non-CardsGrid card");
4377
- assertInnerHtmlMatches(assert, entry?.isolatedHtml, `<h1 data-test-plain-home> Welcome </h1>`);
4378
- });
4379
- });
4380
- //#endregion