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

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