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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (921) hide show
  1. package/api.ts +3 -3
  2. package/bundled-realms/base/command.gts +73 -0
  3. package/bundled-test-harness/assets/adapter-TgpmkD23.js +2 -0
  4. package/bundled-test-harness/assets/add-field-to-card-definition-command-test-BVVD6_Wq.js +111 -0
  5. package/bundled-test-harness/assets/add-workspace-test-BvvYJ2Fk.js +71 -0
  6. package/bundled-test-harness/assets/ai-assistant-Ba_RBqf6.js +129 -0
  7. package/bundled-test-harness/assets/ai-assistant-panel-service-test-DK87n1hh.js +95 -0
  8. package/bundled-test-harness/assets/ai-assistant-test-CZATBlJS.js +2137 -0
  9. package/bundled-test-harness/assets/ai-function-generation-test-e58MHziu.js +996 -0
  10. package/bundled-test-harness/assets/ai-module-creation-test-CEieL3Fa.js +150 -0
  11. package/bundled-test-harness/assets/aibot-message-DhTbAqNk.js +1185 -0
  12. package/bundled-test-harness/assets/amd-transpile-test-CSk5COu7.js +425 -0
  13. package/bundled-test-harness/assets/app-Btfy4HWI.js +21464 -0
  14. package/bundled-test-harness/assets/apply-boxel-formatting-test-BHTP9NBp.js +134 -0
  15. package/bundled-test-harness/assets/apply-markdown-edit-test-BETCndeK.js +230 -0
  16. package/bundled-test-harness/assets/apply-search-replace-block-test-KNolar0-.js +630 -0
  17. package/bundled-test-harness/assets/arc-CA8yZ0zo.js +199 -0
  18. package/bundled-test-harness/assets/architecture-7EHR7CIX-C5JFMGdb.js +3 -0
  19. package/bundled-test-harness/assets/architectureDiagram-3BPJPVTR-CmVPjKgm.js +7400 -0
  20. package/bundled-test-harness/assets/auth-error-guard-test-D0rKESg_.js +30 -0
  21. package/bundled-test-harness/assets/auth-service-worker-test-DGg_vbKo.js +538 -0
  22. package/bundled-test-harness/assets/authed-fetch-test-CHF3eh_H.js +75 -0
  23. package/bundled-test-harness/assets/avif-image-def-test-p9tiyh4_.js +186 -0
  24. package/bundled-test-harness/assets/base-realm-Chjzrp6m.js +2 -0
  25. package/bundled-test-harness/assets/base-realm-DpSTsZxD.js +140 -0
  26. package/bundled-test-harness/assets/basic-test-D7qEz4hw.js +128 -0
  27. package/bundled-test-harness/assets/bfm-card-references-test-D-m1YnL8.js +577 -0
  28. package/bundled-test-harness/assets/binary-upload-dedupe-test-8RKK73EG.js +308 -0
  29. package/bundled-test-harness/assets/blockDiagram-GPEHLZMM-BdVFTa2C.js +4355 -0
  30. package/bundled-test-harness/assets/bot-registration-test-9zYny2wR.js +99 -0
  31. package/bundled-test-harness/assets/box-test-0T92xi3A.js +51 -0
  32. package/bundled-test-harness/assets/brand-guide-attachments-test-5ZtPn4cC.js +87 -0
  33. package/bundled-test-harness/assets/brand-guide-custom-css-test-CKKSgKyp.js +135 -0
  34. package/bundled-test-harness/assets/brand-logo-mark-field-test-nlNNQ3rw.js +87 -0
  35. package/bundled-test-harness/assets/broken-link-template-test-BGIExVof.js +345 -0
  36. package/bundled-test-harness/assets/browser-index-BaR-gTqG.js +3 -0
  37. package/bundled-test-harness/assets/browser-index-G4NKYBAj.js +8802 -0
  38. package/bundled-test-harness/assets/c4Diagram-AAUBKEIU-DyugX7zz.js +3764 -0
  39. package/bundled-test-harness/assets/cached-fetch-test-MtqvDphJ.js +93 -0
  40. package/bundled-test-harness/assets/can-read-realm-test-BZmwIOqS.js +58 -0
  41. package/bundled-test-harness/assets/cancel-indexing-job-test-BsQtQbDu.js +71 -0
  42. package/bundled-test-harness/assets/card-api-test-BxQ8f0-c.js +196 -0
  43. package/bundled-test-harness/assets/card-basics-test-B-uBZ8o4.js +4895 -0
  44. package/bundled-test-harness/assets/card-catalog-test-YmwmyIKf.js +377 -0
  45. package/bundled-test-harness/assets/card-copy-test-LoqdH1CQ.js +777 -0
  46. package/bundled-test-harness/assets/card-def-field-def-relationships-test-DvtBA1jv.js +560 -0
  47. package/bundled-test-harness/assets/card-def-menu-items-test-DHnd0LuM.js +182 -0
  48. package/bundled-test-harness/assets/card-delete-test-vKF0Jf1X.js +412 -0
  49. package/bundled-test-harness/assets/card-directory-name-test-CbCuPwSz.js +71 -0
  50. package/bundled-test-harness/assets/card-playground-test-CRIP3b5-.js +1497 -0
  51. package/bundled-test-harness/assets/card-prerender-ClYlSOBU.js +12661 -0
  52. package/bundled-test-harness/assets/card-search-adorn-test-Mggk5ZgY.js +128 -0
  53. package/bundled-test-harness/assets/card-search-query-builder-test-Cdl12s50.js +88 -0
  54. package/bundled-test-harness/assets/card-search-selection-menu-test-CtuCCLoB.js +108 -0
  55. package/bundled-test-harness/assets/channel-BKUMepxs.js +8 -0
  56. package/bundled-test-harness/assets/check-correctness-test-DBh8DT_f.js +252 -0
  57. package/bundled-test-harness/assets/chunk-2J33WTMH-ClrRoNQU.js +31 -0
  58. package/bundled-test-harness/assets/chunk-3OPIFGDE-g_0Oh8jN.js +5548 -0
  59. package/bundled-test-harness/assets/chunk-4BX2VUAB-D2LCc7Y9.js +11 -0
  60. package/bundled-test-harness/assets/chunk-4EGX6M5U-D8vRS5IG.js +44 -0
  61. package/bundled-test-harness/assets/chunk-55IACEB6-C5j4VAmb.js +10 -0
  62. package/bundled-test-harness/assets/chunk-5DO6E6H7-CPb3jsP0.js +27 -0
  63. package/bundled-test-harness/assets/chunk-5ZQYHXKU-BlVb7vgG.js +1767 -0
  64. package/bundled-test-harness/assets/chunk-727SXJPM-C_NVCDMC.js +3877 -0
  65. package/bundled-test-harness/assets/chunk-AQP2D5EJ-CpwrMix_.js +2622 -0
  66. package/bundled-test-harness/assets/chunk-BR22UD5L-AF0NWdjT.js +85 -0
  67. package/bundled-test-harness/assets/chunk-BSJP7CBP-Dgun5vYb.js +114 -0
  68. package/bundled-test-harness/assets/chunk-CSCIHK7Q-D7nFiAZ-.js +6144 -0
  69. package/bundled-test-harness/assets/chunk-FHYWG6QK-2nuXS9PL.js +27 -0
  70. package/bundled-test-harness/assets/chunk-FMBD7UC4-O-Y8VK1S.js +20 -0
  71. package/bundled-test-harness/assets/chunk-KSCS5N6A-Du5-DprU.js +871 -0
  72. package/bundled-test-harness/assets/chunk-L5ZTLDWV-C2lDtkix.js +43 -0
  73. package/bundled-test-harness/assets/chunk-LZXEDZCA-qAMsMZkF.js +65 -0
  74. package/bundled-test-harness/assets/chunk-MPE355IW-DcT_60Oq.js +27 -0
  75. package/bundled-test-harness/assets/chunk-MZUSXYTE-BsH_YmnC.js +36 -0
  76. package/bundled-test-harness/assets/chunk-N66VUXT2-DMyMHgoS.js +70 -0
  77. package/bundled-test-harness/assets/chunk-ND2GUHAM-DO1Znn8O.js +93 -0
  78. package/bundled-test-harness/assets/chunk-NZK2D7GU-B1YWBxHm.js +89 -0
  79. package/bundled-test-harness/assets/chunk-O5CBEL6O-CZVSBsRq.js +2395 -0
  80. package/bundled-test-harness/assets/chunk-PUPMXCY4-DzOK-Vbt.js +27 -0
  81. package/bundled-test-harness/assets/chunk-QZHKN3VN-DJFnRn99.js +20 -0
  82. package/bundled-test-harness/assets/chunk-UIBZB4QT-5KIxBxjk.js +27 -0
  83. package/bundled-test-harness/assets/chunk-WCWK7LTN-BsQwhliq.js +36 -0
  84. package/bundled-test-harness/assets/chunk-WU5MYG2G-DUVb5MAo.js +12 -0
  85. package/bundled-test-harness/assets/chunk-XPW4576I-DLaJYAOU.js +2341 -0
  86. package/bundled-test-harness/assets/classDiagram-4FO5ZUOK-DjP2uozG.js +31 -0
  87. package/bundled-test-harness/assets/classDiagram-v2-Q7XG4LA2-Dt6ps5uz.js +31 -0
  88. package/bundled-test-harness/assets/code-equality-assertion-BBezFT13.js +474 -0
  89. package/bundled-test-harness/assets/code-patches-test-DzoQGARM.js +1128 -0
  90. package/bundled-test-harness/assets/code-patching-test-D8r-pJ5w.js +114 -0
  91. package/bundled-test-harness/assets/code-ref-test-DU3HChNz.js +138 -0
  92. package/bundled-test-harness/assets/code-semantics-service-test-DArUotKy.js +65 -0
  93. package/bundled-test-harness/assets/code-submode-test-h5wWKsz2.js +1762 -0
  94. package/bundled-test-harness/assets/codeblocks-test-FbuwTy5v.js +492 -0
  95. package/bundled-test-harness/assets/codemirror-context-DVlC9C78.js +2 -0
  96. package/bundled-test-harness/assets/codemirror-editor-test-JDT9uwqM.js +1176 -0
  97. package/bundled-test-harness/assets/color-field-test-BssRlQAX.js +213 -0
  98. package/bundled-test-harness/assets/command-definitions-test-J21kOxBs.js +72 -0
  99. package/bundled-test-harness/assets/commands-DAo0DgCX.js +1379 -0
  100. package/bundled-test-harness/assets/commands-calling-test-C3deVvv_.js +200 -0
  101. package/bundled-test-harness/assets/commands-test--0zViqs2.js +1041 -0
  102. package/bundled-test-harness/assets/commands-test-BwNn2npL.js +1145 -0
  103. package/bundled-test-harness/assets/computed-test-BD_KrZmc.js +882 -0
  104. package/bundled-test-harness/assets/container-C8gu0I0Q.js +14605 -0
  105. package/bundled-test-harness/assets/convert-to-class-name-test-CX21VRzM.js +17 -0
  106. package/bundled-test-harness/assets/copy-and-edit-test-BUy_o8XJ.js +291 -0
  107. package/bundled-test-harness/assets/copy-card-test-LWbugEPe.js +156 -0
  108. package/bundled-test-harness/assets/copy-file-to-realm-test-BS25EUGV.js +99 -0
  109. package/bundled-test-harness/assets/copy-source-test-Dh33cqM8.js +56 -0
  110. package/bundled-test-harness/assets/cose-bilkent-S5V4N54A-CjAFDdpS.js +4275 -0
  111. package/bundled-test-harness/assets/create-file-test-DOc3YYij.js +963 -0
  112. package/bundled-test-harness/assets/create-file-test-DgUya7-i.js +397 -0
  113. package/bundled-test-harness/assets/create-listing-modal-test-DZxZBYS7.js +194 -0
  114. package/bundled-test-harness/assets/create-listing-pr-request-Aw0ms76l.js +64 -0
  115. package/bundled-test-harness/assets/create-listing-pr-request-test-CFvqkgky.js +117 -0
  116. package/bundled-test-harness/assets/create-spec-test-BTRt8oe8.js +239 -0
  117. package/bundled-test-harness/assets/csv-file-def-test-BVffg8wL.js +101 -0
  118. package/bundled-test-harness/assets/dagre-BM42HDAG-GoRrN65x.js +606 -0
  119. package/bundled-test-harness/assets/dagre-ByxOOmYM.js +4195 -0
  120. package/bundled-test-harness/assets/date-time-fields-test-BEcfCqgB.js +322 -0
  121. package/bundled-test-harness/assets/debug-message-test-CAxbe6x2.js +119 -0
  122. package/bundled-test-harness/assets/diagram-2AECGRRQ-B6-pvp9H.js +279 -0
  123. package/bundled-test-harness/assets/diagram-5GNKFQAL-C9M7hXIc.js +142 -0
  124. package/bundled-test-harness/assets/diagram-KO2AKTUF-BNJvCLGK.js +551 -0
  125. package/bundled-test-harness/assets/diagram-LMA3HP47-hlJyTtqP.js +184 -0
  126. package/bundled-test-harness/assets/diagram-OG6HWLK6-BvPoB3IH.js +857 -0
  127. package/bundled-test-harness/assets/diffing-test-De9Ev_Fr.js +210 -0
  128. package/bundled-test-harness/assets/dist-BsEojs3T.js +232 -0
  129. package/bundled-test-harness/assets/dist-CY3T64Hs.js +105 -0
  130. package/bundled-test-harness/assets/dist-q2xz8RMj.js +2 -0
  131. package/bundled-test-harness/assets/editor-test-DOI_TvWQ.js +551 -0
  132. package/bundled-test-harness/assets/editor.main-CpuM6HrX.js +43566 -0
  133. package/bundled-test-harness/assets/editor.main-DkMgS1qm.js +3 -0
  134. package/bundled-test-harness/assets/email-field-test-t-80Z94b.js +74 -0
  135. package/bundled-test-harness/assets/enum-field-test-DVp-2pip.js +909 -0
  136. package/bundled-test-harness/assets/erDiagram-TEJ5UH35-CYniRkua.js +2041 -0
  137. package/bundled-test-harness/assets/error-display-test-IuRxKyLz.js +343 -0
  138. package/bundled-test-harness/assets/evaluate-module-test-DdnfbFp-.js +66 -0
  139. package/bundled-test-harness/assets/eventmodeling-FCH6USID-BO089-Cs.js +3 -0
  140. package/bundled-test-harness/assets/execute-atomic-operations-test-CgbvrBlu.js +75 -0
  141. package/bundled-test-harness/assets/externals-5atxeNU4.js +5533 -0
  142. package/bundled-test-harness/assets/extract-css-variables-test-Cii-CYfc.js +169 -0
  143. package/bundled-test-harness/assets/fallback-banner-test-CUUd-Wuu.js +227 -0
  144. package/bundled-test-harness/assets/fallback-banner-test-D4NWyahM.js +53 -0
  145. package/bundled-test-harness/assets/fallback-models-test-2MJ1jAs8.js +163 -0
  146. package/bundled-test-harness/assets/fetch-card-json-test-Cruqsq6S.js +63 -0
  147. package/bundled-test-harness/assets/fetcher-test-CkHlbTzz.js +85 -0
  148. package/bundled-test-harness/assets/field-configuration-test-CqwsGNib.js +535 -0
  149. package/bundled-test-harness/assets/field-markdown-domain-test-DPjz8i4Y.js +615 -0
  150. package/bundled-test-harness/assets/field-markdown-primitives-test-Dw07UtT7.js +362 -0
  151. package/bundled-test-harness/assets/field-markdown-specialized-test-C-t34PAw.js +527 -0
  152. package/bundled-test-harness/assets/field-path-parser-test-BeNjacPu.js +387 -0
  153. package/bundled-test-harness/assets/field-playground-test-BILTGxqr.js +902 -0
  154. package/bundled-test-harness/assets/field-support-predicates-test-Df24w0Wa.js +170 -0
  155. package/bundled-test-harness/assets/field-test-helpers-P22hxBNz.js +45 -0
  156. package/bundled-test-harness/assets/file-attachment-test-Cjg4NBeM.js +635 -0
  157. package/bundled-test-harness/assets/file-chooser-test-Cl0XujPT.js +439 -0
  158. package/bundled-test-harness/assets/file-def-live-reload-test-D4Obzi12.js +50 -0
  159. package/bundled-test-harness/assets/file-def-manager-DUgR-gjs.js +470 -0
  160. package/bundled-test-harness/assets/file-def-manager-canonicalize-test-D_LWVsvz.js +451 -0
  161. package/bundled-test-harness/assets/file-def-menu-items-test-xvsUTOK4.js +114 -0
  162. package/bundled-test-harness/assets/file-def-navigation-test-DxPceB7E.js +109 -0
  163. package/bundled-test-harness/assets/file-def-serialization-test-CpwbDb8p.js +87 -0
  164. package/bundled-test-harness/assets/file-def-test-CEnKcvW9.js +219 -0
  165. package/bundled-test-harness/assets/file-tree-test-DE2aH6iq.js +773 -0
  166. package/bundled-test-harness/assets/flac-audio-def-test-BCg7LnR6.js +138 -0
  167. package/bundled-test-harness/assets/flowDiagram-I6XJVG4X-Xv8-LIxQ.js +4883 -0
  168. package/bundled-test-harness/assets/formatted-aibot-message-test-CsxFn62P.js +366 -0
  169. package/bundled-test-harness/assets/formatted-user-message-test-DjZc8qnA.js +43 -0
  170. package/bundled-test-harness/assets/freestyle-test-QEZaZCNJ.js +17 -0
  171. package/bundled-test-harness/assets/full-reindex-realm-test-C_c2OTTD.js +103 -0
  172. package/bundled-test-harness/assets/ganttDiagram-6RSMTGT7-DmvkzS5w.js +4060 -0
  173. package/bundled-test-harness/assets/garbage-collection-test-BVuvfidI.js +373 -0
  174. package/bundled-test-harness/assets/general-test-Ydis4jEq.js +926 -0
  175. package/bundled-test-harness/assets/generate-css-variables-test-CZCmgTAO.js +88 -0
  176. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-x_szhkSN.js +67 -0
  177. package/bundled-test-harness/assets/get-available-realm-identifiers-test-DvRnwCHR.js +49 -0
  178. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-46TE-XA0.js +49 -0
  179. package/bundled-test-harness/assets/get-default-writable-realm-test-DaAkxTNh.js +56 -0
  180. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-9XEGHVOV.js +55 -0
  181. package/bundled-test-harness/assets/get-relationship-membership-state-test-BY4gk5JZ.js +1306 -0
  182. package/bundled-test-harness/assets/get-type-refs-from-filter-test-BynlX0JE.js +136 -0
  183. package/bundled-test-harness/assets/get-user-system-card-test-D98Xxn1k.js +52 -0
  184. package/bundled-test-harness/assets/gif-image-def-test-FwKGFGWw.js +161 -0
  185. package/bundled-test-harness/assets/gitGraph-WXDBUCRP-Bmn0Z_Xi.js +3 -0
  186. package/bundled-test-harness/assets/gitGraphDiagram-PVQCEYII-BAo0G82W.js +1150 -0
  187. package/bundled-test-harness/assets/gts-file-def-test-ivEk8Muv.js +99 -0
  188. package/bundled-test-harness/assets/head-format-preview-test-CNhvk724.js +156 -0
  189. package/bundled-test-harness/assets/helpers-BH4Yfo_2.js +5 -0
  190. package/bundled-test-harness/assets/host-mode-test-BRNndb2h.js +391 -0
  191. package/bundled-test-harness/assets/host-submode-test-DHd0x-6x.js +904 -0
  192. package/bundled-test-harness/assets/index-query-engine-test-7Fzc09fG.js +2548 -0
  193. package/bundled-test-harness/assets/index-writer-test-D3cL2q2N.js +1842 -0
  194. package/bundled-test-harness/assets/indexeddb-crypto-store-C09Shau-.js +49434 -0
  195. package/bundled-test-harness/assets/info-J43DQDTF-Dz5b1Xgc.js +3 -0
  196. package/bundled-test-harness/assets/infoDiagram-5YYISTIA-Dl8XvIfi.js +23 -0
  197. package/bundled-test-harness/assets/inspector-test-CVZVQdIJ.js +1776 -0
  198. package/bundled-test-harness/assets/instance-filter-matcher-test-C-4z6qUt.js +564 -0
  199. package/bundled-test-harness/assets/instantiate-card-test-eQ22Vt_m.js +104 -0
  200. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-hXPsRPMU.js +497 -0
  201. package/bundled-test-harness/assets/interact-submode-setup-D55IIVc5.js +558 -0
  202. package/bundled-test-harness/assets/interact-submode-test-BwrtFe2m.js +725 -0
  203. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-BMk7yd-D.js +101 -0
  204. package/bundled-test-harness/assets/invite-user-to-room-test-B5B0umJQ.js +67 -0
  205. package/bundled-test-harness/assets/ishikawaDiagram-YF4QCWOH-BrO7NAng.js +1009 -0
  206. package/bundled-test-harness/assets/isolated-render-test-DX1wdHoS.js +51 -0
  207. package/bundled-test-harness/assets/item-button-QkVr-FW0.js +203 -0
  208. package/bundled-test-harness/assets/javascript-BWNQhcCY.js +75 -0
  209. package/bundled-test-harness/assets/job-priority-header-test-CuBZloLK.js +81 -0
  210. package/bundled-test-harness/assets/journeyDiagram-JHISSGLW-B7BT66v0.js +1256 -0
  211. package/bundled-test-harness/assets/jpg-image-def-test-DEx462nY.js +430 -0
  212. package/bundled-test-harness/assets/json-file-def-test-Cray6ly6.js +92 -0
  213. package/bundled-test-harness/assets/kanban-definition-UN3LZRKU-C0E5Vmr_.js +1284 -0
  214. package/bundled-test-harness/assets/last-modified-date-test-BzE25NOB.js +18 -0
  215. package/bundled-test-harness/assets/limited-set-test-NwGNoXKc.js +123 -0
  216. package/bundled-test-harness/assets/line-BbGOk93s.js +55 -0
  217. package/bundled-test-harness/assets/linear-CHTo-YQl.js +417 -0
  218. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-CZdgRM1b.js +315 -0
  219. package/bundled-test-harness/assets/linksto-error-sentinel-test-DhsHO7Xs.js +236 -0
  220. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-mt-RrRta.js +303 -0
  221. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CdGUXZsi.js +301 -0
  222. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-DOJ_6Gwf.js +258 -0
  223. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-BZC-gslF.js +194 -0
  224. package/bundled-test-harness/assets/live-prerendered-search-BSkwf5AH.js +639 -0
  225. package/bundled-test-harness/assets/live-test-DTfxZnsy.js +100 -0
  226. package/bundled-test-harness/assets/live-test-WOMYpc1I.js +2 -0
  227. package/bundled-test-harness/assets/loader-icon-error-test-F_ukQytn.js +62 -0
  228. package/bundled-test-harness/assets/loader-parallel-prefetch-test-DpNaFnhc.js +257 -0
  229. package/bundled-test-harness/assets/loader-retry-test-EQ2X0bFS.js +173 -0
  230. package/bundled-test-harness/assets/loader-test-BYkWAwc4.js +245 -0
  231. package/bundled-test-harness/assets/loading-test-jfWH_OpH.js +63 -0
  232. package/bundled-test-harness/assets/login-error-text-test-Cldr1X6h.js +51 -0
  233. package/bundled-test-harness/assets/m4a-audio-def-test-BQ1WKApD.js +185 -0
  234. package/bundled-test-harness/assets/main-ByAsLO_g.js +5 -0
  235. package/bundled-test-harness/assets/markdown-fallback-test-dtTaGP1s.js +316 -0
  236. package/bundled-test-harness/assets/markdown-file-def-test-shW9Xxd1.js +286 -0
  237. package/bundled-test-harness/assets/markdown-helpers-test-B6H7p4ay.js +183 -0
  238. package/bundled-test-harness/assets/markdown-highlighting-test-ZIrFNHRe.js +244 -0
  239. package/bundled-test-harness/assets/markdown-preview-KII3nJ2M.js +69 -0
  240. package/bundled-test-harness/assets/markdown-preview-test-De-IaUbK.js +237 -0
  241. package/bundled-test-harness/assets/marked-sync-CGSehq4u.js +2 -0
  242. package/bundled-test-harness/assets/marked-sync-DenC7QgC.js +2561 -0
  243. package/bundled-test-harness/assets/marked-sync-test-jZBr20Hq.js +146 -0
  244. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-Ax4kyAMt.js +33 -0
  245. package/bundled-test-harness/assets/mermaid-parser.core-B_3tzKUl.js +114 -0
  246. package/bundled-test-harness/assets/mermaid.core-D2hqA7Hq.js +1700 -0
  247. package/bundled-test-harness/assets/message-service-subscription-test-B42KnJ91.js +113 -0
  248. package/bundled-test-harness/assets/mindmap-definition-RKZ34NQL-IZz7Qpd0.js +1347 -0
  249. package/bundled-test-harness/assets/mock-matrix-BhFWlMMr.js +14292 -0
  250. package/bundled-test-harness/assets/mock-matrix-CrtMntcN.js +2 -0
  251. package/bundled-test-harness/assets/module-transpile-cache-test-BtWN4OiM.js +66 -0
  252. package/bundled-test-harness/assets/monaco.contribution-B1hOUP3w.js +2 -0
  253. package/bundled-test-harness/assets/monaco.contribution-DhNsYtZe.js +2 -0
  254. package/bundled-test-harness/assets/monaco.contribution-DvJDImx2.js +103 -0
  255. package/bundled-test-harness/assets/monaco.contribution-yXcOyzue.js +243 -0
  256. package/bundled-test-harness/assets/mp3-audio-def-test-D365TuA7.js +129 -0
  257. package/bundled-test-harness/assets/mutex-test-DY09HLvv.js +71 -0
  258. package/bundled-test-harness/assets/number-field-test-wYaQjnzA.js +153 -0
  259. package/bundled-test-harness/assets/ogg-audio-def-test-Dl01PP31.js +191 -0
  260. package/bundled-test-harness/assets/open-create-listing-modal-test-D8C2PUFv.js +117 -0
  261. package/bundled-test-harness/assets/open-workspace-test-DN2n8IkC.js +48 -0
  262. package/bundled-test-harness/assets/operator-mode-acceptance-test-B_hzJZo4.js +1044 -0
  263. package/bundled-test-harness/assets/operator-mode-card-catalog-test-Hrrnkdt9.js +989 -0
  264. package/bundled-test-harness/assets/operator-mode-links-test-DC6sc9TZ.js +797 -0
  265. package/bundled-test-harness/assets/operator-mode-state-service-test-Aqz9_v0U.js +122 -0
  266. package/bundled-test-harness/assets/operator-mode-test-CLgpZGEM.js +617 -0
  267. package/bundled-test-harness/assets/operator-mode-ui-test-CDRrORfC.js +985 -0
  268. package/bundled-test-harness/assets/ordinal-BIRuJQBH.js +85 -0
  269. package/bundled-test-harness/assets/overlay-menu-items-test-of24KuXp.js +316 -0
  270. package/bundled-test-harness/assets/packet-YPE3B663-hs92geQG.js +3 -0
  271. package/bundled-test-harness/assets/panel-rIdTMDfK.js +3371 -0
  272. package/bundled-test-harness/assets/past-sessions-test-ZKr4ACF0.js +321 -0
  273. package/bundled-test-harness/assets/patch-code-test-BZa-Itrt.js +203 -0
  274. package/bundled-test-harness/assets/patch-fields-test-BkaHs-zo.js +992 -0
  275. package/bundled-test-harness/assets/patch-instance-test-CRMgg52p.js +287 -0
  276. package/bundled-test-harness/assets/persist-module-inspector-view-test-CqNy2RXR.js +62 -0
  277. package/bundled-test-harness/assets/phone-number-field-test-CV6gntON.js +72 -0
  278. package/bundled-test-harness/assets/pie-LRSECV5Y-DcM5pWE3.js +3 -0
  279. package/bundled-test-harness/assets/pieDiagram-4H26LBE5-CtO8RHpU.js +253 -0
  280. package/bundled-test-harness/assets/plan-install-test-lfBTuWXU.js +417 -0
  281. package/bundled-test-harness/assets/playground-VscW9KdT.js +57 -0
  282. package/bundled-test-harness/assets/png-image-def-test-CRspcIHP.js +222 -0
  283. package/bundled-test-harness/assets/prerender-file-extract-test-D3SpxfMI.js +176 -0
  284. package/bundled-test-harness/assets/prerender-html-test-WWptGXJ0.js +615 -0
  285. package/bundled-test-harness/assets/prerender-meta-test-DwQEGN6j.js +388 -0
  286. package/bundled-test-harness/assets/prerender-module-test-BM1AOwRF.js +195 -0
  287. package/bundled-test-harness/assets/prerendered-card-search-test-BVJ8IHLe.js +708 -0
  288. package/bundled-test-harness/assets/preview-format-test-DDpiXDN_.js +103 -0
  289. package/bundled-test-harness/assets/preview-test-D2UV1C5D.js +455 -0
  290. package/bundled-test-harness/assets/published-realm-url-DUIZzAJ5.js +52 -0
  291. package/bundled-test-harness/assets/published-realm-url-test-CIgSf4Ub.js +137 -0
  292. package/bundled-test-harness/assets/qs-test-Bi679H5w.js +36 -0
  293. package/bundled-test-harness/assets/quadrantDiagram-W4KKPZXB-GOTAKsCo.js +2324 -0
  294. package/bundled-test-harness/assets/query-field-barrier-test-BlOuVxdS.js +118 -0
  295. package/bundled-test-harness/assets/query-field-error-sentinel-test-BsB76iUQ.js +202 -0
  296. package/bundled-test-harness/assets/query-field-normalization-test-B2YodJCr.js +271 -0
  297. package/bundled-test-harness/assets/query-field-schema-test-CQhJASFx.js +231 -0
  298. package/bundled-test-harness/assets/query-fields-test-CaZ19leM.js +535 -0
  299. package/bundled-test-harness/assets/queue-test-DrSip6mJ.js +216 -0
  300. package/bundled-test-harness/assets/radar-GUYGQ44K-BkAe1nkp.js +3 -0
  301. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-D8yB-OL9.js +91 -0
  302. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-K3M0-lBD.js +45 -0
  303. package/bundled-test-harness/assets/read-source-test-CKlb0ORb.js +67 -0
  304. package/bundled-test-harness/assets/read-text-file-test-CJdasDDU.js +124 -0
  305. package/bundled-test-harness/assets/realm-DhUCLR5r.js +884 -0
  306. package/bundled-test-harness/assets/realm-field-test-kFgxphDI.js +101 -0
  307. package/bundled-test-harness/assets/realm-index-card-id-test-DAnMAqw4.js +18 -0
  308. package/bundled-test-harness/assets/realm-indexing-test-BQkX-Dat.js +4018 -0
  309. package/bundled-test-harness/assets/realm-paths-test-CmEi9rzu.js +33 -0
  310. package/bundled-test-harness/assets/realm-querying-test-eq3qSXLu.js +1062 -0
  311. package/bundled-test-harness/assets/realm-test-DLQAtdMt.js +2409 -0
  312. package/bundled-test-harness/assets/reasoning-test-CwTfyDlj.js +234 -0
  313. package/bundled-test-harness/assets/recent-files-test-MVIGLp8S.js +449 -0
  314. package/bundled-test-harness/assets/reindex-realm-test-BwLgJeB3.js +119 -0
  315. package/bundled-test-harness/assets/relationship-loading-state-test-B4Ca43yD.js +289 -0
  316. package/bundled-test-harness/assets/render-component-BKEihV4U.js +2 -0
  317. package/bundled-test-harness/assets/render-error-test-DWD6tfNe.js +22 -0
  318. package/bundled-test-harness/assets/render-service-test-BjuoVrUK.js +87 -0
  319. package/bundled-test-harness/assets/render-timer-stub-test-BgUY5u3X.js +84 -0
  320. package/bundled-test-harness/assets/rendered-markdown-DOP-s6fW.js +211 -0
  321. package/bundled-test-harness/assets/rendered-markdown-test-CD02UYwA.js +360 -0
  322. package/bundled-test-harness/assets/requirementDiagram-4Y6WPE33-DJIy7eR9.js +2550 -0
  323. package/bundled-test-harness/assets/rich-markdown-field-test-BJeQx1tL.js +806 -0
  324. package/bundled-test-harness/assets/room-message-test-CjD7FlPD.js +171 -0
  325. package/bundled-test-harness/assets/rust-crypto-GS0FFZ7H.js +16141 -0
  326. package/bundled-test-harness/assets/sanitize-module-list-test-gi0pcqSy.js +68 -0
  327. package/bundled-test-harness/assets/sankeyDiagram-5OEKKPKP-wBsbt1Mr.js +1357 -0
  328. package/bundled-test-harness/assets/schema-editor-test-BSqu8W3e.js +784 -0
  329. package/bundled-test-harness/assets/schema-generation-test-DVFuSsLl.js +28 -0
  330. package/bundled-test-harness/assets/scrolling-test-CpzkRiBS.js +292 -0
  331. package/bundled-test-harness/assets/search-and-choose-test-DVWX4XRb.js +156 -0
  332. package/bundled-test-harness/assets/search-cache-key-test-BMnYM4a5.js +79 -0
  333. package/bundled-test-harness/assets/search-command-test-kEfT0AO7.js +135 -0
  334. package/bundled-test-harness/assets/search-correlation-id-test-D08FtVUZ.js +101 -0
  335. package/bundled-test-harness/assets/search-data-test-CTrBEc1m.js +243 -0
  336. package/bundled-test-harness/assets/search-google-images-test-UnKG8qCp.js +168 -0
  337. package/bundled-test-harness/assets/search-in-flight-key-test-9Va-JXFz.js +79 -0
  338. package/bundled-test-harness/assets/search-test-COlO2lZi.js +847 -0
  339. package/bundled-test-harness/assets/send-ai-assistant-message-test-BPjOjt2R.js +52 -0
  340. package/bundled-test-harness/assets/send-bot-trigger-event-test-BB4lHbB_.js +56 -0
  341. package/bundled-test-harness/assets/send-request-via-proxy-test-U8frmHZA.js +333 -0
  342. package/bundled-test-harness/assets/sending-test-DjEzksEX.js +317 -0
  343. package/bundled-test-harness/assets/sequenceDiagram-3UESZ5HK-QAEjhoay.js +5551 -0
  344. package/bundled-test-harness/assets/serialization-test-DHdLriC8.js +8283 -0
  345. package/bundled-test-harness/assets/set-user-system-card-test-C8I1lDBh.js +59 -0
  346. package/bundled-test-harness/assets/setup-BkuybBki.js +769 -0
  347. package/bundled-test-harness/assets/setup-gxkWJKID.js +2 -0
  348. package/bundled-test-harness/assets/show-card-test-DHKQ6AI4.js +362 -0
  349. package/bundled-test-harness/assets/skills-test-DlMgZrPV.js +568 -0
  350. package/bundled-test-harness/assets/spec-test-s9Zj7x2E.js +1012 -0
  351. package/bundled-test-harness/assets/stateDiagram-AJRCARHV-nEhf3efZ.js +363 -0
  352. package/bundled-test-harness/assets/stateDiagram-v2-BHNVJYJU-tZz_3w-7.js +29 -0
  353. package/bundled-test-harness/assets/store-add-test-D44FWRl3.js +52 -0
  354. package/bundled-test-harness/assets/store-test-TTmNBs5v.js +1562 -0
  355. package/bundled-test-harness/assets/summarize-session-test-DHAuNb5K.js +169 -0
  356. package/bundled-test-harness/assets/svg-image-def-test-C2_GGzR6.js +164 -0
  357. package/bundled-test-harness/assets/switch-submode-test-CfGaoxVe.js +168 -0
  358. package/bundled-test-harness/assets/test-realm-service-worker-C21o7yvW.js +73 -0
  359. package/bundled-test-harness/assets/tests-BSt6h9iC.js +2771 -0
  360. package/bundled-test-harness/assets/text-file-def-test-CR4QO7e_.js +93 -0
  361. package/bundled-test-harness/assets/text-input-validator-test-DYS3mFj9.js +155 -0
  362. package/bundled-test-harness/assets/text-suggestion-test-GUxJ7WtF.js +339 -0
  363. package/bundled-test-harness/assets/theme-card-test-Ba2KqFB8.js +573 -0
  364. package/bundled-test-harness/assets/timeline-definition-PNZ67QCA-BQYyTIei.js +1545 -0
  365. package/bundled-test-harness/assets/transform-cards-test-DyA8eCom.js +341 -0
  366. package/bundled-test-harness/assets/treeView-BLDUP644-Z4ezSvef.js +3 -0
  367. package/bundled-test-harness/assets/treemap-LRROVOQU-Bf5rk_He.js +3 -0
  368. package/bundled-test-harness/assets/ts-file-def-test-Cxnc6H74.js +90 -0
  369. package/bundled-test-harness/assets/tsMode-oJEHe-CR.js +968 -0
  370. package/bundled-test-harness/assets/typescript-DLbb7q56.js +2 -0
  371. package/bundled-test-harness/assets/update-room-skills-test-B7VLHU3-.js +197 -0
  372. package/bundled-test-harness/assets/url-test-w-69Zycf.js +103 -0
  373. package/bundled-test-harness/assets/use-ai-assistant-test-DJkFz7_b.js +330 -0
  374. package/bundled-test-harness/assets/validate-realm-test-BioLutB8.js +53 -0
  375. package/bundled-test-harness/assets/vennDiagram-CIIHVFJN-9eLwsQET.js +2833 -0
  376. package/bundled-test-harness/assets/wardley-L42UT6IY-qNP5_917.js +3 -0
  377. package/bundled-test-harness/assets/wardleyDiagram-YWT4CUSO-DZhEm4N4.js +872 -0
  378. package/bundled-test-harness/assets/wav-audio-def-test-DqsTEBw8.js +155 -0
  379. package/bundled-test-harness/assets/webp-image-def-test-23wOLPMu.js +225 -0
  380. package/bundled-test-harness/assets/workspace-chooser-delete-test-Q6S_nGDT.js +189 -0
  381. package/bundled-test-harness/assets/workspace-chooser-test-CzsvY1v_.js +235 -0
  382. package/bundled-test-harness/assets/workspace-delete-multiple-test-BNFHkJpQ.js +213 -0
  383. package/bundled-test-harness/assets/workspace-delete-summary-test-DLzNdjvC.js +63 -0
  384. package/bundled-test-harness/assets/write-binary-file-test-PHHt9fVI.js +100 -0
  385. package/bundled-test-harness/assets/write-text-file-test-DuHe6tR5.js +172 -0
  386. package/bundled-test-harness/assets/xychartDiagram-2RQKCTM6-bflHQbEv.js +2551 -0
  387. package/bundled-test-harness/index.html +24 -23
  388. package/bundled-test-harness/tests/index.html +31 -30
  389. package/bundled-types/base/command.d.ts +48 -0
  390. package/bundled-types/host-app/components/operator-mode/publish-realm-modal.gts +17 -26
  391. package/bundled-types/host-app/lib/published-realm-url.ts +135 -0
  392. package/package.json +3 -3
  393. package/src/build-program.ts +12 -12
  394. package/src/commands/consolidate-workspaces.ts +1 -1
  395. package/src/commands/file/delete.ts +4 -4
  396. package/src/commands/file/index.ts +6 -6
  397. package/src/commands/file/lint.ts +4 -4
  398. package/src/commands/file/list.ts +3 -3
  399. package/src/commands/file/read.ts +3 -3
  400. package/src/commands/file/touch.ts +6 -6
  401. package/src/commands/file/write.ts +3 -3
  402. package/src/commands/lint.ts +6 -6
  403. package/src/commands/parse.ts +6 -6
  404. package/src/commands/profile.ts +4 -4
  405. package/src/commands/read-transpiled.ts +6 -3
  406. package/src/commands/realm/cancel-indexing.ts +3 -3
  407. package/src/commands/realm/create.ts +2 -2
  408. package/src/commands/realm/history.ts +4 -4
  409. package/src/commands/realm/index.ts +15 -15
  410. package/src/commands/realm/indexing-errors.ts +3 -3
  411. package/src/commands/realm/list.ts +2 -2
  412. package/src/commands/realm/milestone.ts +4 -4
  413. package/src/commands/realm/publish.ts +4 -4
  414. package/src/commands/realm/pull.ts +6 -6
  415. package/src/commands/realm/push.ts +7 -7
  416. package/src/commands/realm/remove.ts +3 -3
  417. package/src/commands/realm/status.ts +8 -8
  418. package/src/commands/realm/sync.ts +9 -9
  419. package/src/commands/realm/unpublish.ts +3 -3
  420. package/src/commands/realm/wait-for-ready.ts +2 -2
  421. package/src/commands/realm/watch/index.ts +2 -2
  422. package/src/commands/realm/watch/start.ts +13 -10
  423. package/src/commands/realm/watch/stop.ts +2 -2
  424. package/src/commands/run-command.ts +6 -3
  425. package/src/commands/search.ts +3 -3
  426. package/src/commands/test.ts +5 -5
  427. package/src/index.ts +2 -2
  428. package/src/lib/auth-resolver.ts +3 -3
  429. package/src/lib/boxel-cli-client.ts +18 -15
  430. package/src/lib/checkpoint-manager.ts +1 -1
  431. package/src/lib/find-checkpoint.ts +1 -1
  432. package/src/lib/profile-manager.ts +4 -4
  433. package/src/lib/realm-local-paths.ts +1 -1
  434. package/src/lib/realm-sync-base.ts +1 -1
  435. package/src/lib/seed-auth.ts +1 -1
  436. package/src/lib/sync-logic.ts +1 -1
  437. package/src/lib/watch-process-registry.ts +1 -1
  438. package/bundled-test-harness/assets/adapter-C8oDflNN.js +0 -2
  439. package/bundled-test-harness/assets/add-field-to-card-definition-command-test-Cs670972.js +0 -111
  440. package/bundled-test-harness/assets/add-workspace-test-BviDAUBK.js +0 -71
  441. package/bundled-test-harness/assets/ai-assistant-B5fp2iOz.js +0 -129
  442. package/bundled-test-harness/assets/ai-assistant-panel-service-test-NpHZzZAz.js +0 -95
  443. package/bundled-test-harness/assets/ai-assistant-test-jPV29jEw.js +0 -2137
  444. package/bundled-test-harness/assets/ai-function-generation-test-QRPcE9tQ.js +0 -996
  445. package/bundled-test-harness/assets/ai-module-creation-test-DyuyfnkY.js +0 -150
  446. package/bundled-test-harness/assets/aibot-message-Dwxp5hTW.js +0 -1185
  447. package/bundled-test-harness/assets/amd-transpile-test-CF7Lkbif.js +0 -425
  448. package/bundled-test-harness/assets/app-CgP2IpNG.js +0 -21464
  449. package/bundled-test-harness/assets/apply-boxel-formatting-test-BXyZ3z0I.js +0 -134
  450. package/bundled-test-harness/assets/apply-markdown-edit-test-C6bcaj3a.js +0 -230
  451. package/bundled-test-harness/assets/apply-search-replace-block-test-BSwC4J9g.js +0 -630
  452. package/bundled-test-harness/assets/arc-DNRb_8LA.js +0 -199
  453. package/bundled-test-harness/assets/architecture-7EHR7CIX-BtVh_LBJ.js +0 -3
  454. package/bundled-test-harness/assets/architectureDiagram-3BPJPVTR-D9UYbaKj.js +0 -7400
  455. package/bundled-test-harness/assets/auth-error-guard-test-Bvu8E7Wy.js +0 -30
  456. package/bundled-test-harness/assets/auth-service-worker-test-CC6DzdfK.js +0 -538
  457. package/bundled-test-harness/assets/authed-fetch-test-CfF-IBHI.js +0 -75
  458. package/bundled-test-harness/assets/avif-image-def-test-B9L2z0nR.js +0 -186
  459. package/bundled-test-harness/assets/base-realm-43wjttN2.js +0 -140
  460. package/bundled-test-harness/assets/base-realm-CJ5x9iyX.js +0 -2
  461. package/bundled-test-harness/assets/basic-test-B64a5zCK.js +0 -128
  462. package/bundled-test-harness/assets/bfm-card-references-test-cLQVLpth.js +0 -577
  463. package/bundled-test-harness/assets/binary-upload-dedupe-test-By7Y1iQ3.js +0 -308
  464. package/bundled-test-harness/assets/blockDiagram-GPEHLZMM-LgOorG2O.js +0 -4355
  465. package/bundled-test-harness/assets/bot-registration-test-DOjf0P1R.js +0 -99
  466. package/bundled-test-harness/assets/box-test-Cd1-RcXg.js +0 -51
  467. package/bundled-test-harness/assets/brand-guide-attachments-test-DxRqP8fo.js +0 -87
  468. package/bundled-test-harness/assets/brand-guide-custom-css-test-DBpZiHzJ.js +0 -135
  469. package/bundled-test-harness/assets/brand-logo-mark-field-test-61k4e5Om.js +0 -87
  470. package/bundled-test-harness/assets/broken-link-template-test-A1P4flQ5.js +0 -345
  471. package/bundled-test-harness/assets/browser-index-Bzhpucwe.js +0 -3
  472. package/bundled-test-harness/assets/browser-index-D0mzSWYV.js +0 -8802
  473. package/bundled-test-harness/assets/c4Diagram-AAUBKEIU-1iq94vGa.js +0 -3764
  474. package/bundled-test-harness/assets/cached-fetch-test-ByQ-5OQI.js +0 -93
  475. package/bundled-test-harness/assets/can-read-realm-test-VFLHJdEv.js +0 -58
  476. package/bundled-test-harness/assets/cancel-indexing-job-test-n3Os4ZaX.js +0 -71
  477. package/bundled-test-harness/assets/card-api-test-DvNfLv3V.js +0 -196
  478. package/bundled-test-harness/assets/card-basics-test-CKzZuFdw.js +0 -4895
  479. package/bundled-test-harness/assets/card-catalog-test-JFvkVHED.js +0 -377
  480. package/bundled-test-harness/assets/card-copy-test-iwrFA72s.js +0 -777
  481. package/bundled-test-harness/assets/card-def-field-def-relationships-test-D5s2RH5t.js +0 -560
  482. package/bundled-test-harness/assets/card-def-menu-items-test-XcmkT4NF.js +0 -182
  483. package/bundled-test-harness/assets/card-delete-test-jtAOHk1Y.js +0 -412
  484. package/bundled-test-harness/assets/card-directory-name-test-veQEp5FJ.js +0 -71
  485. package/bundled-test-harness/assets/card-playground-test-P7Ed0tO4.js +0 -1497
  486. package/bundled-test-harness/assets/card-prerender-DXG8cQEv.js +0 -12661
  487. package/bundled-test-harness/assets/card-search-adorn-test-BX0-IJHB.js +0 -128
  488. package/bundled-test-harness/assets/card-search-query-builder-test-D01uixke.js +0 -88
  489. package/bundled-test-harness/assets/card-search-selection-menu-test-DMTeZFmW.js +0 -108
  490. package/bundled-test-harness/assets/channel-BvoW_rbI.js +0 -8
  491. package/bundled-test-harness/assets/check-correctness-test-D7QB1GTo.js +0 -252
  492. package/bundled-test-harness/assets/chunk-2J33WTMH-BbxCvOlt.js +0 -31
  493. package/bundled-test-harness/assets/chunk-3OPIFGDE-DHY3s0oT.js +0 -5548
  494. package/bundled-test-harness/assets/chunk-4BX2VUAB-CRivrLQ6.js +0 -11
  495. package/bundled-test-harness/assets/chunk-4EGX6M5U-qWzlMeqd.js +0 -44
  496. package/bundled-test-harness/assets/chunk-55IACEB6-DOl6NECJ.js +0 -10
  497. package/bundled-test-harness/assets/chunk-5DO6E6H7-scwNnzDb.js +0 -27
  498. package/bundled-test-harness/assets/chunk-5ZQYHXKU-BeETnugr.js +0 -1767
  499. package/bundled-test-harness/assets/chunk-727SXJPM-BlycTxFE.js +0 -3877
  500. package/bundled-test-harness/assets/chunk-AQP2D5EJ-BE3Clw-g.js +0 -2622
  501. package/bundled-test-harness/assets/chunk-BR22UD5L-BTPKlhWA.js +0 -85
  502. package/bundled-test-harness/assets/chunk-BSJP7CBP-BIhtUfvc.js +0 -114
  503. package/bundled-test-harness/assets/chunk-CSCIHK7Q-DnRAp6Bv.js +0 -6144
  504. package/bundled-test-harness/assets/chunk-FHYWG6QK-DpIXIGDC.js +0 -27
  505. package/bundled-test-harness/assets/chunk-FMBD7UC4-B36w3LIg.js +0 -20
  506. package/bundled-test-harness/assets/chunk-KSCS5N6A-gbz9p9BU.js +0 -871
  507. package/bundled-test-harness/assets/chunk-L5ZTLDWV-HNfH9U8K.js +0 -43
  508. package/bundled-test-harness/assets/chunk-LZXEDZCA-CbKHJfzx.js +0 -65
  509. package/bundled-test-harness/assets/chunk-MPE355IW-BGVbCTZH.js +0 -27
  510. package/bundled-test-harness/assets/chunk-MZUSXYTE-DoCjuxcJ.js +0 -36
  511. package/bundled-test-harness/assets/chunk-N66VUXT2-BX17MI-i.js +0 -70
  512. package/bundled-test-harness/assets/chunk-ND2GUHAM-IpeiJZYz.js +0 -93
  513. package/bundled-test-harness/assets/chunk-NZK2D7GU-CH-Gg7qc.js +0 -89
  514. package/bundled-test-harness/assets/chunk-O5CBEL6O-D2JbLgI8.js +0 -2395
  515. package/bundled-test-harness/assets/chunk-PUPMXCY4-DS4ZxM2V.js +0 -27
  516. package/bundled-test-harness/assets/chunk-QZHKN3VN-WLHeRUJ3.js +0 -20
  517. package/bundled-test-harness/assets/chunk-UIBZB4QT-DNIJBpkq.js +0 -27
  518. package/bundled-test-harness/assets/chunk-WCWK7LTN-CqRJ3WOy.js +0 -36
  519. package/bundled-test-harness/assets/chunk-WU5MYG2G-CtItCLbE.js +0 -12
  520. package/bundled-test-harness/assets/chunk-XPW4576I-D2Q7Qo8n.js +0 -2341
  521. package/bundled-test-harness/assets/classDiagram-4FO5ZUOK-CnNFReKQ.js +0 -31
  522. package/bundled-test-harness/assets/classDiagram-v2-Q7XG4LA2-BlhpbohY.js +0 -31
  523. package/bundled-test-harness/assets/code-equality-assertion-C-2g5YGf.js +0 -474
  524. package/bundled-test-harness/assets/code-patches-test-DaV4Mon_.js +0 -1128
  525. package/bundled-test-harness/assets/code-patching-test-CcbWlImN.js +0 -114
  526. package/bundled-test-harness/assets/code-ref-test-8Yj8gbww.js +0 -138
  527. package/bundled-test-harness/assets/code-semantics-service-test-C3srTfDz.js +0 -65
  528. package/bundled-test-harness/assets/code-submode-test-BUhjvWtB.js +0 -1762
  529. package/bundled-test-harness/assets/codeblocks-test-3zAp0_GA.js +0 -492
  530. package/bundled-test-harness/assets/codemirror-context-C7KmSAyy.js +0 -2
  531. package/bundled-test-harness/assets/codemirror-editor-test-WojU4k2h.js +0 -1176
  532. package/bundled-test-harness/assets/color-field-test-yESUakoE.js +0 -213
  533. package/bundled-test-harness/assets/command-definitions-test-UsXsAhn7.js +0 -72
  534. package/bundled-test-harness/assets/commands-CBDBujm_.js +0 -1379
  535. package/bundled-test-harness/assets/commands-calling-test-DJTl0EbL.js +0 -200
  536. package/bundled-test-harness/assets/commands-test-DW2gupNS.js +0 -1041
  537. package/bundled-test-harness/assets/commands-test-DjLnuojW.js +0 -1145
  538. package/bundled-test-harness/assets/computed-test-0n5g8Ez5.js +0 -882
  539. package/bundled-test-harness/assets/container-D8y7fmir.js +0 -14602
  540. package/bundled-test-harness/assets/convert-to-class-name-test-DSIflIV2.js +0 -17
  541. package/bundled-test-harness/assets/copy-and-edit-test-BuK1ZHr-.js +0 -291
  542. package/bundled-test-harness/assets/copy-card-test-DnDC4_7J.js +0 -156
  543. package/bundled-test-harness/assets/copy-file-to-realm-test-CFd_3Iff.js +0 -99
  544. package/bundled-test-harness/assets/copy-source-test-38yUGJor.js +0 -56
  545. package/bundled-test-harness/assets/cose-bilkent-S5V4N54A-DXA1S87S.js +0 -4275
  546. package/bundled-test-harness/assets/create-file-test-B2oem0-V.js +0 -963
  547. package/bundled-test-harness/assets/create-file-test-BHk00RtD.js +0 -397
  548. package/bundled-test-harness/assets/create-listing-modal-test-L-71-Uo2.js +0 -194
  549. package/bundled-test-harness/assets/create-listing-pr-request-CZaLsHhE.js +0 -64
  550. package/bundled-test-harness/assets/create-listing-pr-request-test-OGzk4Q2E.js +0 -117
  551. package/bundled-test-harness/assets/create-spec-test-BsM7VKuH.js +0 -239
  552. package/bundled-test-harness/assets/csv-file-def-test-BhJalhE-.js +0 -101
  553. package/bundled-test-harness/assets/dagre-BIk_r1iU.js +0 -4195
  554. package/bundled-test-harness/assets/dagre-BM42HDAG-FaUWeGOj.js +0 -606
  555. package/bundled-test-harness/assets/date-time-fields-test-Cs5T6Xk1.js +0 -322
  556. package/bundled-test-harness/assets/debug-message-test-WlHe7pJF.js +0 -119
  557. package/bundled-test-harness/assets/diagram-2AECGRRQ-DLve-IVM.js +0 -279
  558. package/bundled-test-harness/assets/diagram-5GNKFQAL-CJG1RTLk.js +0 -142
  559. package/bundled-test-harness/assets/diagram-KO2AKTUF-DYGDq3dD.js +0 -551
  560. package/bundled-test-harness/assets/diagram-LMA3HP47-BNRYdpMl.js +0 -184
  561. package/bundled-test-harness/assets/diagram-OG6HWLK6-BlJH5g83.js +0 -857
  562. package/bundled-test-harness/assets/diffing-test-DO54USSm.js +0 -210
  563. package/bundled-test-harness/assets/dist-BDRmXkWl.js +0 -232
  564. package/bundled-test-harness/assets/dist-BfNSLd0O.js +0 -105
  565. package/bundled-test-harness/assets/dist-BoireClP.js +0 -2
  566. package/bundled-test-harness/assets/editor-test-DChC9LuR.js +0 -551
  567. package/bundled-test-harness/assets/editor.main-BiohyrHK.js +0 -3
  568. package/bundled-test-harness/assets/editor.main-CMU_0pR1.js +0 -43566
  569. package/bundled-test-harness/assets/email-field-test-DWIFSfZ-.js +0 -74
  570. package/bundled-test-harness/assets/enum-field-test-BUc6l4us.js +0 -909
  571. package/bundled-test-harness/assets/erDiagram-TEJ5UH35-pOJ2novh.js +0 -2041
  572. package/bundled-test-harness/assets/error-display-test-CHSE6h6Z.js +0 -343
  573. package/bundled-test-harness/assets/evaluate-module-test-Caa5n0B9.js +0 -66
  574. package/bundled-test-harness/assets/eventmodeling-FCH6USID-B6XXU7R3.js +0 -3
  575. package/bundled-test-harness/assets/execute-atomic-operations-test-CT060oDk.js +0 -75
  576. package/bundled-test-harness/assets/externals-Do1fVZ4j.js +0 -5533
  577. package/bundled-test-harness/assets/extract-css-variables-test-DzjAsMgg.js +0 -169
  578. package/bundled-test-harness/assets/fallback-banner-test-CmxysrDn.js +0 -227
  579. package/bundled-test-harness/assets/fallback-banner-test-DJ4cO8PB.js +0 -53
  580. package/bundled-test-harness/assets/fallback-models-test-r5upJFeA.js +0 -163
  581. package/bundled-test-harness/assets/fetch-card-json-test-Di1wmvy5.js +0 -63
  582. package/bundled-test-harness/assets/fetcher-test-DjzNl_7F.js +0 -85
  583. package/bundled-test-harness/assets/field-configuration-test-C3vr-HhG.js +0 -535
  584. package/bundled-test-harness/assets/field-markdown-domain-test-DG2U4qIm.js +0 -615
  585. package/bundled-test-harness/assets/field-markdown-primitives-test-Bay2v8nT.js +0 -362
  586. package/bundled-test-harness/assets/field-markdown-specialized-test-Bl0Sl4sc.js +0 -527
  587. package/bundled-test-harness/assets/field-path-parser-test-bxxwUjcm.js +0 -387
  588. package/bundled-test-harness/assets/field-playground-test-Bcjfws4m.js +0 -902
  589. package/bundled-test-harness/assets/field-support-predicates-test-DYTqOGvv.js +0 -170
  590. package/bundled-test-harness/assets/field-test-helpers-DYSfSGdh.js +0 -45
  591. package/bundled-test-harness/assets/file-attachment-test-6ypDRDS7.js +0 -635
  592. package/bundled-test-harness/assets/file-chooser-test-mtmcHTFP.js +0 -439
  593. package/bundled-test-harness/assets/file-def-live-reload-test-CX1-lOv6.js +0 -50
  594. package/bundled-test-harness/assets/file-def-manager-DNHII2oj.js +0 -470
  595. package/bundled-test-harness/assets/file-def-manager-canonicalize-test-i_7UVakF.js +0 -451
  596. package/bundled-test-harness/assets/file-def-menu-items-test-Dw458iku.js +0 -114
  597. package/bundled-test-harness/assets/file-def-navigation-test-B3Ztr1Rd.js +0 -109
  598. package/bundled-test-harness/assets/file-def-serialization-test-C_gV8AkU.js +0 -87
  599. package/bundled-test-harness/assets/file-def-test-vXXJmtxX.js +0 -219
  600. package/bundled-test-harness/assets/file-tree-test-BJCiw9jm.js +0 -773
  601. package/bundled-test-harness/assets/flac-audio-def-test-BX3SE1vW.js +0 -138
  602. package/bundled-test-harness/assets/flowDiagram-I6XJVG4X-7Q5ROn4X.js +0 -4883
  603. package/bundled-test-harness/assets/formatted-aibot-message-test-DyqUz2nt.js +0 -366
  604. package/bundled-test-harness/assets/formatted-user-message-test-aqAzqvBP.js +0 -43
  605. package/bundled-test-harness/assets/freestyle-test-CLRrZkAE.js +0 -17
  606. package/bundled-test-harness/assets/full-reindex-realm-test-ClqPVQ0c.js +0 -103
  607. package/bundled-test-harness/assets/ganttDiagram-6RSMTGT7-BkDoIAAE.js +0 -4060
  608. package/bundled-test-harness/assets/garbage-collection-test-Ba2dD3qS.js +0 -373
  609. package/bundled-test-harness/assets/general-test-D0zhs14K.js +0 -926
  610. package/bundled-test-harness/assets/generate-css-variables-test-CKrXSlHs.js +0 -88
  611. package/bundled-test-harness/assets/generate-example-cards-one-shot-test-fSAdGJeT.js +0 -67
  612. package/bundled-test-harness/assets/get-available-realm-identifiers-test-BXMUW65I.js +0 -49
  613. package/bundled-test-harness/assets/get-catalog-realm-identifiers-test-DKEq6Zcq.js +0 -49
  614. package/bundled-test-harness/assets/get-default-writable-realm-test-Dp4nBIRP.js +0 -56
  615. package/bundled-test-harness/assets/get-realm-of-resource-identifier-test-DYNnMgD-.js +0 -55
  616. package/bundled-test-harness/assets/get-relationship-membership-state-test-k9EUNWeq.js +0 -1306
  617. package/bundled-test-harness/assets/get-type-refs-from-filter-test-BPuivF-v.js +0 -136
  618. package/bundled-test-harness/assets/get-user-system-card-test-DSHv00O7.js +0 -52
  619. package/bundled-test-harness/assets/gif-image-def-test-LuDSr5Kz.js +0 -161
  620. package/bundled-test-harness/assets/gitGraph-WXDBUCRP-BrG_LYEh.js +0 -3
  621. package/bundled-test-harness/assets/gitGraphDiagram-PVQCEYII-QJjQcX4J.js +0 -1150
  622. package/bundled-test-harness/assets/gts-file-def-test-bS3ML062.js +0 -99
  623. package/bundled-test-harness/assets/head-format-preview-test-B8IPh71E.js +0 -156
  624. package/bundled-test-harness/assets/helpers-wSIq-bau.js +0 -5
  625. package/bundled-test-harness/assets/host-mode-test-D44nXoQZ.js +0 -391
  626. package/bundled-test-harness/assets/host-submode-test-CefkXg9F.js +0 -904
  627. package/bundled-test-harness/assets/index-query-engine-test-DJnDqmfK.js +0 -2548
  628. package/bundled-test-harness/assets/index-writer-test-BcrCMj37.js +0 -1842
  629. package/bundled-test-harness/assets/indexeddb-crypto-store-RTTNdynf.js +0 -49434
  630. package/bundled-test-harness/assets/info-J43DQDTF-DhDzvz9k.js +0 -3
  631. package/bundled-test-harness/assets/infoDiagram-5YYISTIA-8TmRFIRz.js +0 -23
  632. package/bundled-test-harness/assets/inspector-test-D4iMBlbL.js +0 -1776
  633. package/bundled-test-harness/assets/instance-filter-matcher-test-CYT6N3hN.js +0 -564
  634. package/bundled-test-harness/assets/instantiate-card-test-j1JS5lDe.js +0 -104
  635. package/bundled-test-harness/assets/interact-submode-creation-and-permissions-test-B-aXzOh6.js +0 -497
  636. package/bundled-test-harness/assets/interact-submode-setup-VMwOUl3u.js +0 -558
  637. package/bundled-test-harness/assets/interact-submode-test-D5lNNXdq.js +0 -725
  638. package/bundled-test-harness/assets/invalidate-realm-identifiers-test-71Ze8eGV.js +0 -101
  639. package/bundled-test-harness/assets/invite-user-to-room-test-UfjsvwVp.js +0 -67
  640. package/bundled-test-harness/assets/ishikawaDiagram-YF4QCWOH-7UALIGwM.js +0 -1009
  641. package/bundled-test-harness/assets/isolated-render-test-C2IL-Fz3.js +0 -51
  642. package/bundled-test-harness/assets/item-button-6g7XYj56.js +0 -203
  643. package/bundled-test-harness/assets/javascript-BwLQ7_Nc.js +0 -75
  644. package/bundled-test-harness/assets/job-priority-header-test-C3FfKLPP.js +0 -81
  645. package/bundled-test-harness/assets/journeyDiagram-JHISSGLW-t4gEZYup.js +0 -1256
  646. package/bundled-test-harness/assets/jpg-image-def-test-BTBk9lk5.js +0 -430
  647. package/bundled-test-harness/assets/json-file-def-test-BpU_Eidn.js +0 -92
  648. package/bundled-test-harness/assets/kanban-definition-UN3LZRKU-C_KHB3_r.js +0 -1284
  649. package/bundled-test-harness/assets/last-modified-date-test-fE7IP0q0.js +0 -18
  650. package/bundled-test-harness/assets/limited-set-test-uu2vX1Sv.js +0 -123
  651. package/bundled-test-harness/assets/line-BiZHXOjs.js +0 -55
  652. package/bundled-test-harness/assets/linear-DUaMMmmA.js +0 -417
  653. package/bundled-test-harness/assets/linksto-broken-link-placeholder-test-qZeqQ1gt.js +0 -315
  654. package/bundled-test-harness/assets/linksto-error-sentinel-test-BaV3I8Xx.js +0 -236
  655. package/bundled-test-harness/assets/linksto-many-broken-link-placeholder-test-BvJi1vCb.js +0 -303
  656. package/bundled-test-harness/assets/linksto-many-per-slot-access-test-CK60Cugk.js +0 -301
  657. package/bundled-test-harness/assets/linksto-sentinel-roundtrip-test-BWxdEO9D.js +0 -258
  658. package/bundled-test-harness/assets/linksto-singular-js-access-contract-test-CIsLhqR2.js +0 -194
  659. package/bundled-test-harness/assets/live-prerendered-search-jZe3I16p.js +0 -639
  660. package/bundled-test-harness/assets/live-test-CF_R5WGr.js +0 -2
  661. package/bundled-test-harness/assets/live-test-jO7lXuyB.js +0 -100
  662. package/bundled-test-harness/assets/loader-icon-error-test-N4JYZuTx.js +0 -62
  663. package/bundled-test-harness/assets/loader-parallel-prefetch-test-DteeG7mU.js +0 -257
  664. package/bundled-test-harness/assets/loader-retry-test-DYVgpS_I.js +0 -173
  665. package/bundled-test-harness/assets/loader-test-DLI8JIx-.js +0 -245
  666. package/bundled-test-harness/assets/loading-test-D4ZBtRYf.js +0 -63
  667. package/bundled-test-harness/assets/login-error-text-test-Dcq7q3EY.js +0 -51
  668. package/bundled-test-harness/assets/m4a-audio-def-test-BKqGO-CW.js +0 -185
  669. package/bundled-test-harness/assets/main-BjBdsiQT.js +0 -5
  670. package/bundled-test-harness/assets/markdown-fallback-test-BBj80dZZ.js +0 -316
  671. package/bundled-test-harness/assets/markdown-file-def-test-BnMF5rQF.js +0 -286
  672. package/bundled-test-harness/assets/markdown-helpers-test-DnuuSLfS.js +0 -183
  673. package/bundled-test-harness/assets/markdown-highlighting-test-CWRp2Rce.js +0 -244
  674. package/bundled-test-harness/assets/markdown-preview-test-Bf5OqKGf.js +0 -237
  675. package/bundled-test-harness/assets/markdown-preview-yYHtwNeI.js +0 -69
  676. package/bundled-test-harness/assets/marked-sync-2EfimW4i.js +0 -2
  677. package/bundled-test-harness/assets/marked-sync-DZOVFLjK.js +0 -2561
  678. package/bundled-test-harness/assets/marked-sync-test-BaaYbZNF.js +0 -146
  679. package/bundled-test-harness/assets/matrix-service-sliding-sync-test-CdEy3ASW.js +0 -33
  680. package/bundled-test-harness/assets/mermaid-parser.core-CKNAdXJW.js +0 -114
  681. package/bundled-test-harness/assets/mermaid.core-C0mfwy8A.js +0 -1700
  682. package/bundled-test-harness/assets/message-service-subscription-test-pGz_7rz3.js +0 -113
  683. package/bundled-test-harness/assets/mindmap-definition-RKZ34NQL-ClcHxkdY.js +0 -1347
  684. package/bundled-test-harness/assets/mock-matrix-D7JHfFtT.js +0 -2
  685. package/bundled-test-harness/assets/mock-matrix-DqDbNhEj.js +0 -14292
  686. package/bundled-test-harness/assets/module-transpile-cache-test-D0M-fPxs.js +0 -66
  687. package/bundled-test-harness/assets/monaco.contribution-BEs3qwfd.js +0 -103
  688. package/bundled-test-harness/assets/monaco.contribution-Dpx8UiPl.js +0 -2
  689. package/bundled-test-harness/assets/monaco.contribution-RF_qxJYG.js +0 -2
  690. package/bundled-test-harness/assets/monaco.contribution-jPVrF29f.js +0 -243
  691. package/bundled-test-harness/assets/mp3-audio-def-test-CxeRk1bl.js +0 -129
  692. package/bundled-test-harness/assets/mutex-test-D1xyxTj2.js +0 -71
  693. package/bundled-test-harness/assets/number-field-test-gjAGDy6P.js +0 -153
  694. package/bundled-test-harness/assets/ogg-audio-def-test-B6Ww3Ixr.js +0 -191
  695. package/bundled-test-harness/assets/open-create-listing-modal-test-uN58T3rI.js +0 -117
  696. package/bundled-test-harness/assets/open-workspace-test-DXVsvBFJ.js +0 -48
  697. package/bundled-test-harness/assets/operator-mode-acceptance-test-BxIq2xSS.js +0 -1044
  698. package/bundled-test-harness/assets/operator-mode-card-catalog-test-xFYx9_ng.js +0 -989
  699. package/bundled-test-harness/assets/operator-mode-links-test-qhXWmz-S.js +0 -797
  700. package/bundled-test-harness/assets/operator-mode-state-service-test-BdA_uvaY.js +0 -122
  701. package/bundled-test-harness/assets/operator-mode-test-D3EyTwq3.js +0 -617
  702. package/bundled-test-harness/assets/operator-mode-ui-test-CSrk6Q0A.js +0 -985
  703. package/bundled-test-harness/assets/ordinal-DO1mUmjg.js +0 -85
  704. package/bundled-test-harness/assets/overlay-menu-items-test-CuqqLsQT.js +0 -316
  705. package/bundled-test-harness/assets/packet-YPE3B663--JkMNy78.js +0 -3
  706. package/bundled-test-harness/assets/panel-C2rtbx32.js +0 -3371
  707. package/bundled-test-harness/assets/past-sessions-test-B9SCbbXz.js +0 -316
  708. package/bundled-test-harness/assets/patch-code-test-CcFr9pDb.js +0 -203
  709. package/bundled-test-harness/assets/patch-fields-test-BW1gzcJM.js +0 -992
  710. package/bundled-test-harness/assets/patch-instance-test-DKqA9gQ6.js +0 -287
  711. package/bundled-test-harness/assets/persist-module-inspector-view-test-D1eKBUkt.js +0 -62
  712. package/bundled-test-harness/assets/phone-number-field-test-D1is5RWv.js +0 -72
  713. package/bundled-test-harness/assets/pie-LRSECV5Y-BDVv8Wdy.js +0 -3
  714. package/bundled-test-harness/assets/pieDiagram-4H26LBE5-CSYI-nMz.js +0 -253
  715. package/bundled-test-harness/assets/plan-install-test-DB-PrjPR.js +0 -417
  716. package/bundled-test-harness/assets/playground-B0iQV7dU.js +0 -57
  717. package/bundled-test-harness/assets/png-image-def-test-DnOsJGs6.js +0 -222
  718. package/bundled-test-harness/assets/prerender-file-extract-test-DhOLozj2.js +0 -176
  719. package/bundled-test-harness/assets/prerender-html-test-DKVhQZA9.js +0 -615
  720. package/bundled-test-harness/assets/prerender-meta-test-CnRNyqSz.js +0 -388
  721. package/bundled-test-harness/assets/prerender-module-test-D163QcrZ.js +0 -195
  722. package/bundled-test-harness/assets/prerendered-card-search-test-DX-8yabJ.js +0 -708
  723. package/bundled-test-harness/assets/preview-format-test-H7bnpdlC.js +0 -103
  724. package/bundled-test-harness/assets/preview-test-B7u6uWJR.js +0 -455
  725. package/bundled-test-harness/assets/qs-test-COb0mre6.js +0 -36
  726. package/bundled-test-harness/assets/quadrantDiagram-W4KKPZXB-2Y2ben29.js +0 -2324
  727. package/bundled-test-harness/assets/query-field-barrier-test-Cypj-MhK.js +0 -118
  728. package/bundled-test-harness/assets/query-field-error-sentinel-test-Dnqn8TdN.js +0 -202
  729. package/bundled-test-harness/assets/query-field-normalization-test-B7D8SHBP.js +0 -271
  730. package/bundled-test-harness/assets/query-field-schema-test-DIYY3-c8.js +0 -231
  731. package/bundled-test-harness/assets/query-fields-test-k-VBF9PE.js +0 -535
  732. package/bundled-test-harness/assets/queue-test-B_74vXZE.js +0 -216
  733. package/bundled-test-harness/assets/radar-GUYGQ44K-Cn2A0VBR.js +0 -3
  734. package/bundled-test-harness/assets/read-card-for-ai-assistant-test-SyL9F_La.js +0 -91
  735. package/bundled-test-harness/assets/read-file-for-ai-assistant-test-nLPp49U2.js +0 -45
  736. package/bundled-test-harness/assets/read-source-test-DBELJkhN.js +0 -67
  737. package/bundled-test-harness/assets/read-text-file-test-CP1JuWlX.js +0 -124
  738. package/bundled-test-harness/assets/realm-Dr4iygv_.js +0 -884
  739. package/bundled-test-harness/assets/realm-field-test-Cice2mYk.js +0 -101
  740. package/bundled-test-harness/assets/realm-index-card-id-test-BzpozdWc.js +0 -18
  741. package/bundled-test-harness/assets/realm-indexing-test-C0YSXziR.js +0 -4018
  742. package/bundled-test-harness/assets/realm-paths-test-DV_g07rF.js +0 -33
  743. package/bundled-test-harness/assets/realm-querying-test-B526abM0.js +0 -1062
  744. package/bundled-test-harness/assets/realm-test-D8UN5X-w.js +0 -2409
  745. package/bundled-test-harness/assets/reasoning-test-ClIOvdkX.js +0 -234
  746. package/bundled-test-harness/assets/recent-files-test-C2J_dJUD.js +0 -449
  747. package/bundled-test-harness/assets/reindex-realm-test-DMphy1g6.js +0 -119
  748. package/bundled-test-harness/assets/relationship-loading-state-test-BWrZdLlZ.js +0 -289
  749. package/bundled-test-harness/assets/render-component-BII_KnyK.js +0 -2
  750. package/bundled-test-harness/assets/render-error-test-BUAJJlUi.js +0 -22
  751. package/bundled-test-harness/assets/render-service-test-BKkCjErY.js +0 -87
  752. package/bundled-test-harness/assets/render-timer-stub-test-TUDMWJ8v.js +0 -84
  753. package/bundled-test-harness/assets/rendered-markdown-ColekGTF.js +0 -211
  754. package/bundled-test-harness/assets/rendered-markdown-test-B4CWIo02.js +0 -360
  755. package/bundled-test-harness/assets/requirementDiagram-4Y6WPE33-CTICatxk.js +0 -2550
  756. package/bundled-test-harness/assets/rich-markdown-field-test-B5u6D3Nk.js +0 -806
  757. package/bundled-test-harness/assets/room-message-test-0eJSqQfu.js +0 -171
  758. package/bundled-test-harness/assets/rust-crypto-B0m3j_yZ.js +0 -16141
  759. package/bundled-test-harness/assets/sanitize-module-list-test-rH6OqjKh.js +0 -68
  760. package/bundled-test-harness/assets/sankeyDiagram-5OEKKPKP-hBIg6-LP.js +0 -1357
  761. package/bundled-test-harness/assets/schema-editor-test-DH4MLFCD.js +0 -784
  762. package/bundled-test-harness/assets/schema-generation-test-BZMkX7VA.js +0 -28
  763. package/bundled-test-harness/assets/scrolling-test-CFTyLG8X.js +0 -292
  764. package/bundled-test-harness/assets/search-and-choose-test-CcbVyp4c.js +0 -156
  765. package/bundled-test-harness/assets/search-cache-key-test-BYt46iNT.js +0 -79
  766. package/bundled-test-harness/assets/search-command-test-BRIJPr54.js +0 -135
  767. package/bundled-test-harness/assets/search-correlation-id-test-B298Tfux.js +0 -101
  768. package/bundled-test-harness/assets/search-data-test-DHV2Fd4S.js +0 -243
  769. package/bundled-test-harness/assets/search-google-images-test-CNrazllP.js +0 -168
  770. package/bundled-test-harness/assets/search-in-flight-key-test-Dy3bU2c1.js +0 -79
  771. package/bundled-test-harness/assets/search-test-DL1-gD-G.js +0 -847
  772. package/bundled-test-harness/assets/send-ai-assistant-message-test-CyEkQ5pD.js +0 -52
  773. package/bundled-test-harness/assets/send-bot-trigger-event-test-CAsK28m-.js +0 -56
  774. package/bundled-test-harness/assets/send-request-via-proxy-test-DpMlRvPv.js +0 -333
  775. package/bundled-test-harness/assets/sending-test-BOeGYcTU.js +0 -317
  776. package/bundled-test-harness/assets/sequenceDiagram-3UESZ5HK-DQMiI040.js +0 -5551
  777. package/bundled-test-harness/assets/serialization-test-gY2QQVxS.js +0 -8283
  778. package/bundled-test-harness/assets/set-user-system-card-test-BE3y5GNK.js +0 -59
  779. package/bundled-test-harness/assets/setup-B8O9JQKq.js +0 -769
  780. package/bundled-test-harness/assets/setup-BMqGUBDK.js +0 -2
  781. package/bundled-test-harness/assets/show-card-test-BfJNnWMy.js +0 -362
  782. package/bundled-test-harness/assets/skills-test-CqhnZxBi.js +0 -568
  783. package/bundled-test-harness/assets/spec-test-BUKNn_1q.js +0 -1012
  784. package/bundled-test-harness/assets/stateDiagram-AJRCARHV-BoOij2yt.js +0 -363
  785. package/bundled-test-harness/assets/stateDiagram-v2-BHNVJYJU-Dosil5p2.js +0 -29
  786. package/bundled-test-harness/assets/store-add-test-BR1M-IDR.js +0 -52
  787. package/bundled-test-harness/assets/store-test-DaqI-HRh.js +0 -1562
  788. package/bundled-test-harness/assets/summarize-session-test-BMg54JGF.js +0 -169
  789. package/bundled-test-harness/assets/svg-image-def-test-xNyIKRPV.js +0 -164
  790. package/bundled-test-harness/assets/switch-submode-test-BKvpODUD.js +0 -168
  791. package/bundled-test-harness/assets/test-realm-service-worker-DK4SmTM5.js +0 -73
  792. package/bundled-test-harness/assets/tests-x4_eRjiT.js +0 -2770
  793. package/bundled-test-harness/assets/text-file-def-test-CsXiyVfI.js +0 -93
  794. package/bundled-test-harness/assets/text-input-validator-test-D4s_laO7.js +0 -155
  795. package/bundled-test-harness/assets/text-suggestion-test-CkLf1xuS.js +0 -339
  796. package/bundled-test-harness/assets/theme-card-test-D-6L6OfD.js +0 -573
  797. package/bundled-test-harness/assets/timeline-definition-PNZ67QCA-DD2d81uJ.js +0 -1545
  798. package/bundled-test-harness/assets/transform-cards-test-CRZF2gqZ.js +0 -341
  799. package/bundled-test-harness/assets/treeView-BLDUP644-CUm8wuM-.js +0 -3
  800. package/bundled-test-harness/assets/treemap-LRROVOQU-lbLrY2PE.js +0 -3
  801. package/bundled-test-harness/assets/ts-file-def-test-CDo6ojCf.js +0 -90
  802. package/bundled-test-harness/assets/tsMode-BPQoRibc.js +0 -968
  803. package/bundled-test-harness/assets/typescript-BaU6yDhK.js +0 -2
  804. package/bundled-test-harness/assets/update-room-skills-test-BnSgVFwT.js +0 -197
  805. package/bundled-test-harness/assets/url-test-CK-HB0qu.js +0 -103
  806. package/bundled-test-harness/assets/use-ai-assistant-test-BuJXEP8H.js +0 -330
  807. package/bundled-test-harness/assets/validate-realm-test-Cx7MOtS8.js +0 -53
  808. package/bundled-test-harness/assets/vennDiagram-CIIHVFJN-DtXtzGwZ.js +0 -2833
  809. package/bundled-test-harness/assets/wardley-L42UT6IY-D8aCp_Ox.js +0 -3
  810. package/bundled-test-harness/assets/wardleyDiagram-YWT4CUSO-D-73g3bB.js +0 -872
  811. package/bundled-test-harness/assets/wav-audio-def-test-DIo2GzQL.js +0 -155
  812. package/bundled-test-harness/assets/webp-image-def-test-BQsV0_De.js +0 -225
  813. package/bundled-test-harness/assets/workspace-chooser-delete-test-peDXmnQf.js +0 -189
  814. package/bundled-test-harness/assets/workspace-chooser-test-DS2RtTEF.js +0 -235
  815. package/bundled-test-harness/assets/workspace-delete-multiple-test-DTbjRSzN.js +0 -213
  816. package/bundled-test-harness/assets/workspace-delete-summary-test-B--ink4m.js +0 -63
  817. package/bundled-test-harness/assets/write-binary-file-test-A3TQ5lFn.js +0 -100
  818. package/bundled-test-harness/assets/write-text-file-test-D_rjNDsT.js +0 -172
  819. package/bundled-test-harness/assets/xychartDiagram-2RQKCTM6-D1aoqDp-.js +0 -2551
  820. /package/bundled-test-harness/assets/{abap-CLdVBGqB.js → abap-FZAuBTMl.js} +0 -0
  821. /package/bundled-test-harness/assets/{apex-DV8eHjgQ.js → apex-CAO3qFTc.js} +0 -0
  822. /package/bundled-test-harness/assets/{array-DsDWWqmW.js → array-CRfHnEm4.js} +0 -0
  823. /package/bundled-test-harness/assets/{azcli-C4pZYsiJ.js → azcli-Bnu7jG0Y.js} +0 -0
  824. /package/bundled-test-harness/assets/{bat-DBoaeFpB.js → bat-DdE54Pqq.js} +0 -0
  825. /package/bundled-test-harness/assets/{bicep-VlrJhbeK.js → bicep-Dp4vFp3K.js} +0 -0
  826. /package/bundled-test-harness/assets/{cameligo-jyzrvLUm.js → cameligo-Cym4x98m.js} +0 -0
  827. /package/bundled-test-harness/assets/{chunk-NNHCCRGN-Be15HUz2.js → chunk-NNHCCRGN-PWOfDYpb.js} +0 -0
  828. /package/bundled-test-harness/assets/{clojure-bzahmEtz.js → clojure-B47IJ25u.js} +0 -0
  829. /package/bundled-test-harness/assets/{codemirror-context-BauLYUNt.js → codemirror-context-oJy03XqC.js} +0 -0
  830. /package/bundled-test-harness/assets/{coffee-CMADdzOH.js → coffee-CZlkBXT8.js} +0 -0
  831. /package/bundled-test-harness/assets/{cpp-CEJwzcLE.js → cpp-mX4KaA7p.js} +0 -0
  832. /package/bundled-test-harness/assets/{csharp-XYqm0UE0.js → csharp-C-OeDGwk.js} +0 -0
  833. /package/bundled-test-harness/assets/{csp-82fNWQc2.js → csp-AS2OEE8R.js} +0 -0
  834. /package/bundled-test-harness/assets/{css-B5b0ooFS.js → css-C-TQxhWe.js} +0 -0
  835. /package/bundled-test-harness/assets/{cssMode-DTKuqAkO.js → cssMode-C87GnEsk.js} +0 -0
  836. /package/bundled-test-harness/assets/{cypher-Df9GkdDY.js → cypher-T6F_0eIM.js} +0 -0
  837. /package/bundled-test-harness/assets/{cytoscape.esm-D0iwZ9Jj.js → cytoscape.esm-Bc2V-MhP.js} +0 -0
  838. /package/bundled-test-harness/assets/{dart-C4JY9dMc.js → dart-DzVesk0n.js} +0 -0
  839. /package/bundled-test-harness/assets/{defaultLocale-BtLxQtxy.js → defaultLocale-CAoL4lzt.js} +0 -0
  840. /package/bundled-test-harness/assets/{dist-D-PuK2H3.js → dist-BZ5MfZEJ.js} +0 -0
  841. /package/bundled-test-harness/assets/{dockerfile-Ck0tNttO.js → dockerfile-BH0_bQxC.js} +0 -0
  842. /package/bundled-test-harness/assets/{ecl-BpeXqJR_.js → ecl-KIxjxrJo.js} +0 -0
  843. /package/bundled-test-harness/assets/{elixir-HmBzrXaX.js → elixir-CPPdtCW1.js} +0 -0
  844. /package/bundled-test-harness/assets/{flow9-DhsfsDhH.js → flow9-Dxho7Ldf.js} +0 -0
  845. /package/bundled-test-harness/assets/{freemarker2-D3Yd6nGl.js → freemarker2-DP1aOr3_.js} +0 -0
  846. /package/bundled-test-harness/assets/{fsharp-D56OprHc.js → fsharp-ozN53Joe.js} +0 -0
  847. /package/bundled-test-harness/assets/{go-BITsFLfX.js → go-DPj6Rbqe.js} +0 -0
  848. /package/bundled-test-harness/assets/{graphlib-qkaQhadO.js → graphlib-DOITgaas.js} +0 -0
  849. /package/bundled-test-harness/assets/{graphql-CJJVsEX1.js → graphql-C8_-AnBG.js} +0 -0
  850. /package/bundled-test-harness/assets/{handlebars-Dvw6QbL7.js → handlebars-B2gYBZpU.js} +0 -0
  851. /package/bundled-test-harness/assets/{hcl-DSTZcJuq.js → hcl-r3d7BhXB.js} +0 -0
  852. /package/bundled-test-harness/assets/{helpers-D_JZYUOQ.js → helpers-CItTycq2.js} +0 -0
  853. /package/bundled-test-harness/assets/{html-Bik3qLmc.js → html-DhN1Nxr0.js} +0 -0
  854. /package/bundled-test-harness/assets/{htmlMode-DPCaR3Ab.js → htmlMode-BnBg5hCh.js} +0 -0
  855. /package/bundled-test-harness/assets/{ini-li-kC8ZU.js → ini-CzzRigmS.js} +0 -0
  856. /package/bundled-test-harness/assets/{init-Bq7IGMcH.js → init-Bd2YUhsG.js} +0 -0
  857. /package/bundled-test-harness/assets/{java-CETpuNN7.js → java-BgeDsIoV.js} +0 -0
  858. /package/bundled-test-harness/assets/{jsonMode-CZ3hOG-W.js → jsonMode-sRb0gsB8.js} +0 -0
  859. /package/bundled-test-harness/assets/{julia-hgihs1aN.js → julia-u3K1H5Ts.js} +0 -0
  860. /package/bundled-test-harness/assets/{katex-DqhsSYO4.js → katex-CHY7BUZt.js} +0 -0
  861. /package/bundled-test-harness/assets/{kotlin-CKfyb82K.js → kotlin-DfqmlJ10.js} +0 -0
  862. /package/bundled-test-harness/assets/{less-xB5yXbw8.js → less-CSzH7DPY.js} +0 -0
  863. /package/bundled-test-harness/assets/{lexon-BLwrXVrI.js → lexon-DwPTpxXt.js} +0 -0
  864. /package/bundled-test-harness/assets/{liquid-Bf2lpknJ.js → liquid-95J9g5Vk.js} +0 -0
  865. /package/bundled-test-harness/assets/{lua-Ch5i3IrF.js → lua-CGw6zbeh.js} +0 -0
  866. /package/bundled-test-harness/assets/{m3-D5tNlhaF.js → m3-BfgwloGF.js} +0 -0
  867. /package/bundled-test-harness/assets/{markdown-Dzc9uMky.js → markdown-RZRK7Mc9.js} +0 -0
  868. /package/bundled-test-harness/assets/{mdx-xsI4TJrf.js → mdx-BYD-W2sn.js} +0 -0
  869. /package/bundled-test-harness/assets/{mips-CmdzHkQm.js → mips-DAySN5Lp.js} +0 -0
  870. /package/bundled-test-harness/assets/{msdax-CAZvxB9E.js → msdax-Cy0COjTJ.js} +0 -0
  871. /package/bundled-test-harness/assets/{mysql-CyVS-z5H.js → mysql-CfGw9jyw.js} +0 -0
  872. /package/bundled-test-harness/assets/{objective-c-CCG8cTc_.js → objective-c-B4uU-8T-.js} +0 -0
  873. /package/bundled-test-harness/assets/{pascal-c8B45FOC.js → pascal-CGDuZzXi.js} +0 -0
  874. /package/bundled-test-harness/assets/{pascaligo-CCqwSqBv.js → pascaligo-eg02k4VJ.js} +0 -0
  875. /package/bundled-test-harness/assets/{path-CsS38UoK.js → path-Dxiz9G2t.js} +0 -0
  876. /package/bundled-test-harness/assets/{perl-JUICYbO2.js → perl-BiT-JJJw.js} +0 -0
  877. /package/bundled-test-harness/assets/{pgsql-aNRiL0Cg.js → pgsql-DAMjrVBF.js} +0 -0
  878. /package/bundled-test-harness/assets/{php-B0YZj_Vw.js → php-kOSUYQyc.js} +0 -0
  879. /package/bundled-test-harness/assets/{pla-D3Zb3KCn.js → pla-BShYV-HC.js} +0 -0
  880. /package/bundled-test-harness/assets/{postiats-ks1KABlA.js → postiats-9Xamd4W2.js} +0 -0
  881. /package/bundled-test-harness/assets/{powerquery-D35K_osc.js → powerquery-l2Nw525Q.js} +0 -0
  882. /package/bundled-test-harness/assets/{powershell-DXQo6KTk.js → powershell-B5rdEn86.js} +0 -0
  883. /package/bundled-test-harness/assets/{protobuf-CFDvn49_.js → protobuf-DjFcruCV.js} +0 -0
  884. /package/bundled-test-harness/assets/{pug-CGdWzJm1.js → pug-d79Nz4-Z.js} +0 -0
  885. /package/bundled-test-harness/assets/{python-BHLYjYlP.js → python-d8oxFZIM.js} +0 -0
  886. /package/bundled-test-harness/assets/{qsharp-BIq3i63T.js → qsharp-CeTlfxZW.js} +0 -0
  887. /package/bundled-test-harness/assets/{qunit-2hoQyeAZ.js → qunit-Cqwmt9Vl.js} +0 -0
  888. /package/bundled-test-harness/assets/{r-CBvzvDSA.js → r-BOu7JTro.js} +0 -0
  889. /package/bundled-test-harness/assets/{razor-JQ0RiIvo.js → razor-ZatoG_Is.js} +0 -0
  890. /package/bundled-test-harness/assets/{recent-files-cards-BQMviQb1.js → recent-files-cards-C3vIjaKb.js} +0 -0
  891. /package/bundled-test-harness/assets/{redis-BmSHTqTU.js → redis-DdXYPyQE.js} +0 -0
  892. /package/bundled-test-harness/assets/{redshift-B1NmQEH7.js → redshift-DswnW-YX.js} +0 -0
  893. /package/bundled-test-harness/assets/{render-component-g_fhz2dX.js → render-component-Bs21y6iv.js} +0 -0
  894. /package/bundled-test-harness/assets/{restructuredtext-Br9BtTbk.js → restructuredtext-C75vUmvX.js} +0 -0
  895. /package/bundled-test-harness/assets/{rough.esm-D8VnzNsL.js → rough.esm-B83ARgx6.js} +0 -0
  896. /package/bundled-test-harness/assets/{ruby-D9_-y1I3.js → ruby-D77950a-.js} +0 -0
  897. /package/bundled-test-harness/assets/{rust-1Jjr1EOs.js → rust-C_G4PKsG.js} +0 -0
  898. /package/bundled-test-harness/assets/{sb-X2JE4zEr.js → sb-Cz3P8_Gp.js} +0 -0
  899. /package/bundled-test-harness/assets/{scala-qFJERKkR.js → scala-DYqUg04P.js} +0 -0
  900. /package/bundled-test-harness/assets/{scheme-D-WJPStO.js → scheme-B31XEGu5.js} +0 -0
  901. /package/bundled-test-harness/assets/{scss-DysfZiXA.js → scss-CtvB8On5.js} +0 -0
  902. /package/bundled-test-harness/assets/{shell-C0Iu3NNJ.js → shell-C2QqpcPN.js} +0 -0
  903. /package/bundled-test-harness/assets/{solidity-Bato3Qrk.js → solidity-FHrhZFd-.js} +0 -0
  904. /package/bundled-test-harness/assets/{sophia-DI0cKdK8.js → sophia-Cxv5FOXb.js} +0 -0
  905. /package/bundled-test-harness/assets/{sparql-BTJMtwoD.js → sparql-CgGkGeQB.js} +0 -0
  906. /package/bundled-test-harness/assets/{sql-R6uHqFYU.js → sql-S6Dos2P0.js} +0 -0
  907. /package/bundled-test-harness/assets/{src-CdPyB7gY.js → src-CvuaVSsl.js} +0 -0
  908. /package/bundled-test-harness/assets/{st-CoyBvq37.js → st-Bfa7LAWp.js} +0 -0
  909. /package/bundled-test-harness/assets/{swift-Bj-haAlF.js → swift-BQD5Ef-A.js} +0 -0
  910. /package/bundled-test-harness/assets/{systemverilog-B-x1NEFI.js → systemverilog-DaNkPux4.js} +0 -0
  911. /package/bundled-test-harness/assets/{tcl-DAUdSQgz.js → tcl-gOPgCDyb.js} +0 -0
  912. /package/bundled-test-harness/assets/{test-support-BHjxBpDK.js → test-support-BEQX5x9U.js} +0 -0
  913. /package/bundled-test-harness/assets/{test-support-yKvYEh-u.js → test-support-BL4XKobD.js} +0 -0
  914. /package/bundled-test-harness/assets/{twig-B0sJ-GzS.js → twig-Bk4gPn5b.js} +0 -0
  915. /package/bundled-test-harness/assets/{typescript-DTMIM5Gl.js → typescript-pPYlxWzr.js} +0 -0
  916. /package/bundled-test-harness/assets/{typespec-6yo9VQxY.js → typespec-D9Zz743B.js} +0 -0
  917. /package/bundled-test-harness/assets/{vb-Bh2IfdtJ.js → vb-ziqHIsJV.js} +0 -0
  918. /package/bundled-test-harness/assets/{view-card-demo-U_AOj-RK.js → view-card-demo-CSIVYD3T.js} +0 -0
  919. /package/bundled-test-harness/assets/{wgsl-DsvJnCCt.js → wgsl-BXiwkiJL.js} +0 -0
  920. /package/bundled-test-harness/assets/{xml-CisPXcjD.js → xml-a_tUOik-.js} +0 -0
  921. /package/bundled-test-harness/assets/{yaml-DkHUoYI5.js → yaml-B3H8LDzK.js} +0 -0
@@ -0,0 +1,1842 @@
1
+ import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
+ import { Rr as CachingDefinitionLookup, X as IndexQueryEngine, Y as IndexWriter, Yn as testRRI, Z as coerceTypes, Zn as testRealmURL, la as ri, mi as baseCardRef, o as internalKeyFor, ua as rri, v as VirtualNetwork } from "./runtime-common-C7uLt5dN.js";
3
+ import { T as getContext } from "./dist-D1U_uSwt.js";
4
+ import { t as require_qunit } from "./qunit-Cqwmt9Vl.js";
5
+ import { r as setupTest } from "./dist-BsEojs3T.js";
6
+ import { $ as setupIndex, S as makeRenderer, m as createPrerenderAuth, v as getDbAdapter } from "./mock-matrix-BhFWlMMr.js";
7
+ import "./code-equality-assertion-BBezFT13.js";
8
+ //#region tests/unit/index-writer-test.ts
9
+ var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
10
+ var testRealmURL2 = ri(`http://test-realm/test2/`);
11
+ var testRealmURLObject = new URL(testRealmURL);
12
+ var internalKeysFor = (vn, ...refs) => refs.map((ref) => internalKeyFor(ref, testRealmURLObject, vn));
13
+ var makeCardResource = (id, name, adoptsFrom) => ({
14
+ id: testRRI(id),
15
+ type: "card",
16
+ attributes: { name },
17
+ meta: { adoptsFrom }
18
+ });
19
+ var makeCardTypeSummary = (codeRef, displayName, iconHTML, total) => ({
20
+ total,
21
+ code_ref: codeRef,
22
+ display_name: displayName,
23
+ icon_html: iconHTML
24
+ });
25
+ var fetchRealmMetaRows = async (adapter) => adapter.execute(`SELECT value FROM realm_meta r WHERE r.realm_url = $1`, {
26
+ bind: [testRealmURL],
27
+ coerceTypes: { value: "JSON" }
28
+ });
29
+ var fetchRealmMeta = async (adapter) => {
30
+ let rows = await fetchRealmMetaRows(adapter);
31
+ let raw = rows[0]?.value;
32
+ return {
33
+ rows,
34
+ value: raw?.instances ?? [],
35
+ files: raw?.files ?? []
36
+ };
37
+ };
38
+ (0, import_qunit.module)("Unit | index-writer", function(hooks) {
39
+ let adapter;
40
+ let indexWriter;
41
+ let indexQueryEngine;
42
+ let virtualNetwork;
43
+ setupTest(hooks);
44
+ hooks.before(async function() {
45
+ adapter = await getDbAdapter();
46
+ });
47
+ hooks.beforeEach(async function() {
48
+ await adapter.reset();
49
+ indexWriter = new IndexWriter(adapter);
50
+ let owner = getContext().owner;
51
+ await makeRenderer();
52
+ let localIndexer = owner.lookup("service:local-indexer");
53
+ virtualNetwork = new VirtualNetwork();
54
+ let definitionLookup = new CachingDefinitionLookup(adapter, localIndexer.prerenderer, virtualNetwork, createPrerenderAuth);
55
+ definitionLookup.registerRealm({
56
+ url: testRealmURL,
57
+ async getRealmOwnerUserId() {
58
+ return "@user1:localhost";
59
+ },
60
+ async visibility() {
61
+ return "private";
62
+ }
63
+ });
64
+ indexQueryEngine = new IndexQueryEngine(adapter, definitionLookup, virtualNetwork);
65
+ });
66
+ (0, import_qunit.test)("can perform invalidations for a instance entry", async function(assert) {
67
+ await setupIndex(adapter, [{
68
+ realm_url: testRealmURL,
69
+ current_version: 1
70
+ }, {
71
+ realm_url: testRealmURL2,
72
+ current_version: 5
73
+ }], [
74
+ {
75
+ url: `${testRealmURL}1.json`,
76
+ realm_version: 1,
77
+ realm_url: testRealmURL,
78
+ deps: [`${testRealmURL}2.json`]
79
+ },
80
+ {
81
+ url: `${testRealmURL}2.json`,
82
+ realm_version: 1,
83
+ realm_url: testRealmURL,
84
+ deps: [`${testRealmURL}4.json`]
85
+ },
86
+ {
87
+ url: `${testRealmURL}3.json`,
88
+ realm_version: 1,
89
+ realm_url: testRealmURL,
90
+ deps: [`${testRealmURL}2.json`]
91
+ },
92
+ {
93
+ url: `${testRealmURL}4.json`,
94
+ realm_version: 1,
95
+ realm_url: testRealmURL,
96
+ deps: []
97
+ },
98
+ {
99
+ url: `${testRealmURL}5.json`,
100
+ realm_version: 1,
101
+ realm_url: testRealmURL,
102
+ deps: []
103
+ },
104
+ {
105
+ url: `${testRealmURL2}A.json`,
106
+ realm_version: 5,
107
+ realm_url: testRealmURL2,
108
+ deps: []
109
+ }
110
+ ]);
111
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
112
+ await batch.invalidate([new URL(`${testRealmURL}4.json`)]);
113
+ let invalidations = batch.invalidations;
114
+ assert.deepEqual(invalidations.sort(), [
115
+ `${testRealmURL}1.json`,
116
+ `${testRealmURL}2.json`,
117
+ `${testRealmURL}3.json`,
118
+ `${testRealmURL}4.json`
119
+ ]);
120
+ let invalidatedEntries = await adapter.execute("SELECT url, realm_url, is_deleted FROM boxel_index_working WHERE realm_version = 2 ORDER BY url COLLATE \"POSIX\"", { coerceTypes: { is_deleted: "BOOLEAN" } });
121
+ assert.deepEqual(invalidatedEntries, [
122
+ 1,
123
+ 2,
124
+ 3,
125
+ 4
126
+ ].map((i) => ({
127
+ url: `${testRealmURL}${i}.json`,
128
+ realm_url: testRealmURL,
129
+ is_deleted: true
130
+ })), "the \"work-in-progress\" version of the index entries have been marked as deleted");
131
+ let otherRealms = await adapter.execute(`SELECT url, realm_url, realm_version, is_deleted FROM boxel_index_working WHERE realm_url != '${testRealmURL}'`, { coerceTypes: { is_deleted: "BOOLEAN" } });
132
+ assert.deepEqual(otherRealms, [{
133
+ url: `${testRealmURL2}A.json`,
134
+ realm_url: testRealmURL2,
135
+ realm_version: 5,
136
+ is_deleted: null
137
+ }], "the index entries from other realms are unchanged");
138
+ let realmVersions = await adapter.execute("select * from realm_versions ORDER BY realm_url COLLATE \"POSIX\"");
139
+ assert.deepEqual(realmVersions, [{
140
+ realm_url: `${testRealmURL}`,
141
+ current_version: 1
142
+ }, {
143
+ realm_url: `${testRealmURL2}`,
144
+ current_version: 5
145
+ }], "the \"production\" realm versions are correct");
146
+ });
147
+ (0, import_qunit.test)("can perform invalidations for a module change via instance deps", async function(assert) {
148
+ await setupIndex(adapter, [{
149
+ realm_url: testRealmURL,
150
+ current_version: 1
151
+ }, {
152
+ realm_url: testRealmURL2,
153
+ current_version: 5
154
+ }], [
155
+ {
156
+ url: `${testRealmURL}1.json`,
157
+ file_alias: `${testRealmURL}1.json`,
158
+ type: "instance",
159
+ realm_version: 1,
160
+ realm_url: testRealmURL,
161
+ deps: [`${testRealmURL}employee`, `${testRealmURL}person`]
162
+ },
163
+ {
164
+ url: `${testRealmURL}2.json`,
165
+ file_alias: `${testRealmURL}2.json`,
166
+ type: "instance",
167
+ realm_version: 1,
168
+ realm_url: testRealmURL,
169
+ deps: [`${testRealmURL}1.json`]
170
+ },
171
+ {
172
+ url: `${testRealmURL}3.json`,
173
+ file_alias: `${testRealmURL}3.json`,
174
+ type: "instance",
175
+ realm_version: 1,
176
+ realm_url: testRealmURL,
177
+ deps: []
178
+ }
179
+ ]);
180
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
181
+ await batch.invalidate([new URL(`${testRealmURL}person.gts`)]);
182
+ let invalidations = batch.invalidations;
183
+ assert.deepEqual(invalidations.sort(), [
184
+ `${testRealmURL}1.json`,
185
+ `${testRealmURL}2.json`,
186
+ `${testRealmURL}person.gts`
187
+ ]);
188
+ });
189
+ (0, import_qunit.test)("invalidations don't cross realm boundaries", async function(assert) {
190
+ await setupIndex(adapter, [{
191
+ realm_url: testRealmURL,
192
+ current_version: 1
193
+ }, {
194
+ realm_url: testRealmURL2,
195
+ current_version: 5
196
+ }], [{
197
+ url: `${testRealmURL2}luke.json`,
198
+ file_alias: `${testRealmURL2}luke.json`,
199
+ type: "instance",
200
+ realm_version: 1,
201
+ realm_url: testRealmURL2,
202
+ deps: [`${testRealmURL}person`]
203
+ }]);
204
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
205
+ await batch.invalidate([new URL(`${testRealmURL}person.gts`)]);
206
+ let invalidations = batch.invalidations;
207
+ assert.deepEqual(invalidations, [`${testRealmURL}person.gts`]);
208
+ });
209
+ (0, import_qunit.test)("can update an index entry", async function(assert) {
210
+ await setupIndex(adapter, [{
211
+ realm_url: testRealmURL,
212
+ current_version: 1
213
+ }], [{
214
+ url: `${testRealmURL}1.json`,
215
+ realm_version: 1,
216
+ realm_url: testRealmURL,
217
+ pristine_doc: {
218
+ id: `${testRealmURL}1.json`,
219
+ type: "card",
220
+ attributes: { name: "Mango" },
221
+ meta: { adoptsFrom: {
222
+ module: rri(`./person`),
223
+ name: "Person"
224
+ } }
225
+ },
226
+ search_doc: { name: "Mango" },
227
+ deps: [`${testRealmURL}person`],
228
+ types: [{
229
+ module: rri(`./person`),
230
+ name: "Person"
231
+ }, baseCardRef].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork))
232
+ }]);
233
+ let resource = {
234
+ id: testRRI("1.json"),
235
+ type: "card",
236
+ attributes: { name: "Van Gogh" },
237
+ meta: { adoptsFrom: {
238
+ module: rri(`./fancy-person`),
239
+ name: "FancyPerson"
240
+ } }
241
+ };
242
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
243
+ await batch.invalidate([new URL(`${testRealmURL}1.json`)]);
244
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
245
+ type: "instance",
246
+ resource,
247
+ lastModified: Date.now(),
248
+ resourceCreatedAt: Date.now(),
249
+ searchData: { name: "Van Gogh" },
250
+ deps: new Set([`${testRealmURL}fancy-person`]),
251
+ displayNames: [
252
+ "Fancy Person",
253
+ "Person",
254
+ "Card"
255
+ ],
256
+ types: [
257
+ {
258
+ module: rri(`./fancy-person`),
259
+ name: "FancyPerson"
260
+ },
261
+ {
262
+ module: rri(`./person`),
263
+ name: "Person"
264
+ },
265
+ baseCardRef
266
+ ].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork))
267
+ });
268
+ let [liveVersion] = await adapter.execute(`SELECT realm_version, pristine_doc, search_doc, deps, types FROM boxel_index WHERE url = $1`, {
269
+ bind: [`${testRealmURL}1.json`],
270
+ coerceTypes: {
271
+ pristine_doc: "JSON",
272
+ search_doc: "JSON",
273
+ deps: "JSON",
274
+ types: "JSON"
275
+ }
276
+ });
277
+ assert.deepEqual(liveVersion, {
278
+ realm_version: 1,
279
+ pristine_doc: {
280
+ id: `${testRealmURL}1.json`,
281
+ type: "card",
282
+ attributes: { name: "Mango" },
283
+ meta: { adoptsFrom: {
284
+ module: rri(`./person`),
285
+ name: "Person"
286
+ } }
287
+ },
288
+ search_doc: { name: "Mango" },
289
+ deps: [`${testRealmURL}person`],
290
+ types: [{
291
+ module: rri(`./person`),
292
+ name: "Person"
293
+ }, baseCardRef].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork))
294
+ }, "live version of the doc has not changed");
295
+ let [wipVersion] = await adapter.execute(`SELECT realm_version, pristine_doc, search_doc, deps, types FROM boxel_index_working WHERE url = $1`, {
296
+ bind: [`${testRealmURL}1.json`],
297
+ coerceTypes: {
298
+ pristine_doc: "JSON",
299
+ search_doc: "JSON",
300
+ deps: "JSON",
301
+ types: "JSON"
302
+ }
303
+ });
304
+ assert.deepEqual(wipVersion, {
305
+ realm_version: 2,
306
+ pristine_doc: {
307
+ id: `${testRealmURL}1.json`,
308
+ type: "card",
309
+ attributes: { name: "Van Gogh" },
310
+ meta: { adoptsFrom: {
311
+ module: rri(`./fancy-person`),
312
+ name: "FancyPerson"
313
+ } }
314
+ },
315
+ search_doc: { name: "Van Gogh" },
316
+ deps: [`${testRealmURL}fancy-person`],
317
+ types: [
318
+ {
319
+ module: rri(`./fancy-person`),
320
+ name: "FancyPerson"
321
+ },
322
+ {
323
+ module: rri(`./person`),
324
+ name: "Person"
325
+ },
326
+ baseCardRef
327
+ ].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork))
328
+ }, "WIP version of the doc exists");
329
+ await batch.done();
330
+ let [finalVersion] = await adapter.execute(`SELECT realm_version, pristine_doc, search_doc, deps, types FROM boxel_index WHERE url = $1`, {
331
+ bind: [`${testRealmURL}1.json`],
332
+ coerceTypes: {
333
+ pristine_doc: "JSON",
334
+ search_doc: "JSON",
335
+ deps: "JSON",
336
+ types: "JSON"
337
+ }
338
+ });
339
+ assert.deepEqual(finalVersion, {
340
+ realm_version: 2,
341
+ pristine_doc: {
342
+ id: `${testRealmURL}1.json`,
343
+ type: "card",
344
+ attributes: { name: "Van Gogh" },
345
+ meta: { adoptsFrom: {
346
+ module: rri(`./fancy-person`),
347
+ name: "FancyPerson"
348
+ } }
349
+ },
350
+ search_doc: { name: "Van Gogh" },
351
+ deps: [`${testRealmURL}fancy-person`],
352
+ types: [
353
+ {
354
+ module: rri(`./fancy-person`),
355
+ name: "FancyPerson"
356
+ },
357
+ {
358
+ module: rri(`./person`),
359
+ name: "Person"
360
+ },
361
+ baseCardRef
362
+ ].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork))
363
+ }, "final version of the doc exists");
364
+ });
365
+ (0, import_qunit.test)("can copy index entries", async function(assert) {
366
+ let types = [{
367
+ module: rri(`./person`),
368
+ name: "Person"
369
+ }, baseCardRef].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork));
370
+ let destTypes = [{
371
+ module: rri(`./person`),
372
+ name: "Person"
373
+ }, baseCardRef].map((i) => internalKeyFor(i, new URL(testRealmURL2), virtualNetwork));
374
+ let modified = Date.now();
375
+ let resource = {
376
+ id: testRRI("1"),
377
+ type: "card",
378
+ attributes: { name: "Mango" },
379
+ meta: { adoptsFrom: {
380
+ module: rri(`./person`),
381
+ name: "Person"
382
+ } }
383
+ };
384
+ await setupIndex(adapter, [{
385
+ realm_url: testRealmURL,
386
+ current_version: 1
387
+ }, {
388
+ realm_url: testRealmURL2,
389
+ current_version: 1
390
+ }], [{
391
+ url: `${testRealmURL}1.json`,
392
+ realm_version: 1,
393
+ realm_url: testRealmURL,
394
+ type: "instance",
395
+ pristine_doc: resource,
396
+ search_doc: {
397
+ id: `${testRealmURL}1`,
398
+ name: "Mango",
399
+ friends: [{
400
+ id: `${testRealmURL}2`,
401
+ name: "Van Gogh"
402
+ }, {
403
+ id: `http://a-different-realm.com/hassan`,
404
+ name: "Hassan"
405
+ }]
406
+ },
407
+ display_names: [`Person`],
408
+ deps: [`${testRealmURL}person`],
409
+ last_known_good_deps: [`${testRealmURL}person`],
410
+ types,
411
+ last_modified: String(modified),
412
+ resource_created_at: String(modified),
413
+ embedded_html: Object.fromEntries(types.map((type) => [type, `<div class="embedded">Embedded HTML for ${type.split("/").pop()}</div>`])),
414
+ fitted_html: Object.fromEntries(types.map((type) => [type, `<div class="fitted">Fitted HTML for ${type.split("/").pop()}</div>`])),
415
+ isolated_html: `<div class="isolated">Isolated HTML</div>`,
416
+ atom_html: `<span class="atom">Atom HTML</span>`,
417
+ head_html: `<span class="head">Head HTML</span>`,
418
+ icon_html: "<svg>test icon</svg>"
419
+ }]);
420
+ let batch = await indexWriter.createBatch(new URL(testRealmURL2), virtualNetwork);
421
+ await batch.copyFrom(new URL(testRealmURL));
422
+ await batch.done();
423
+ let results = await adapter.execute("SELECT * FROM boxel_index WHERE realm_url = $1 ORDER BY url COLLATE \"POSIX\"", {
424
+ coerceTypes,
425
+ bind: [testRealmURL2]
426
+ });
427
+ assert.strictEqual(results.length, 1, "correct number of items were copied");
428
+ let [copiedInstance] = results;
429
+ assert.ok(copiedInstance.indexed_at, "indexed_at was set");
430
+ delete copiedInstance.indexed_at;
431
+ assert.deepEqual(copiedInstance, {
432
+ url: `${testRealmURL2}1.json`,
433
+ file_alias: `${testRealmURL2}1`,
434
+ realm_version: 2,
435
+ realm_url: testRealmURL2,
436
+ type: "instance",
437
+ has_error: false,
438
+ pristine_doc: {
439
+ ...resource,
440
+ id: rri(`${testRealmURL2}1`),
441
+ meta: {
442
+ ...resource.meta,
443
+ realmURL: testRealmURL2
444
+ }
445
+ },
446
+ error_doc: null,
447
+ search_doc: {
448
+ id: `${testRealmURL2}1`,
449
+ name: "Mango",
450
+ friends: [{
451
+ id: `${testRealmURL2}2`,
452
+ name: "Van Gogh"
453
+ }, {
454
+ id: `http://a-different-realm.com/hassan`,
455
+ name: "Hassan"
456
+ }]
457
+ },
458
+ display_names: [`Person`],
459
+ deps: [`${testRealmURL2}person`],
460
+ last_known_good_deps: [`${testRealmURL2}person`],
461
+ types: destTypes,
462
+ last_modified: String(modified),
463
+ resource_created_at: String(modified),
464
+ embedded_html: Object.fromEntries(destTypes.map((type) => [type, `<div class="embedded">Embedded HTML for ${type.split("/").pop()}</div>`])),
465
+ fitted_html: Object.fromEntries(destTypes.map((type) => [type, `<div class="fitted">Fitted HTML for ${type.split("/").pop()}</div>`])),
466
+ isolated_html: `<div class="isolated">Isolated HTML</div>`,
467
+ atom_html: `<span class="atom">Atom HTML</span>`,
468
+ head_html: `<span class="head">Head HTML</span>`,
469
+ icon_html: "<svg>test icon</svg>",
470
+ markdown: null,
471
+ is_deleted: null,
472
+ diagnostics: null
473
+ }, "the copied instance is correct");
474
+ });
475
+ (0, import_qunit.test)("throws when copy source realm is not present on the realm server", async function(assert) {
476
+ assert.expect(1);
477
+ await setupIndex(adapter, [{
478
+ realm_url: testRealmURL2,
479
+ current_version: 1
480
+ }], []);
481
+ let batch = await indexWriter.createBatch(new URL(testRealmURL2), virtualNetwork);
482
+ try {
483
+ await batch.copyFrom(new URL(testRealmURL));
484
+ throw new Error("Expected error to be thrown");
485
+ } catch (e) {
486
+ assert.strictEqual(e.message, `nothing to copy from ${testRealmURL} - this realm is not present on the realm server`, "the correct exception was thrown");
487
+ }
488
+ });
489
+ (0, import_qunit.test)("error entry includes last known good state when available", async function(assert) {
490
+ let types = [{
491
+ module: rri(`./person`),
492
+ name: "Person"
493
+ }, baseCardRef].map((i) => internalKeyFor(i, new URL(testRealmURL), virtualNetwork));
494
+ let modified = Date.now();
495
+ let resource = {
496
+ id: testRRI("1"),
497
+ type: "card",
498
+ attributes: { name: "Mango" },
499
+ meta: { adoptsFrom: {
500
+ module: rri(`./person`),
501
+ name: "Person"
502
+ } }
503
+ };
504
+ await setupIndex(adapter, [{
505
+ realm_url: testRealmURL,
506
+ current_version: 1
507
+ }], [{
508
+ url: `${testRealmURL}1.json`,
509
+ realm_version: 1,
510
+ realm_url: testRealmURL,
511
+ pristine_doc: resource,
512
+ search_doc: { name: "Mango" },
513
+ display_names: [`Person`],
514
+ deps: [`${testRealmURL}person`],
515
+ last_known_good_deps: [`${testRealmURL}person`],
516
+ types,
517
+ last_modified: String(modified),
518
+ resource_created_at: String(modified),
519
+ embedded_html: Object.fromEntries(types.map((type) => [type, `<div class="embedded">Embedded HTML for ${type}</div>`])),
520
+ fitted_html: Object.fromEntries(types.map((type) => [type, `<div class="fitted">Fitted HTML for ${type}</div>`])),
521
+ isolated_html: `<div class="isolated">Isolated HTML</div>`,
522
+ atom_html: `<span class="atom">Atom HTML</span>`,
523
+ head_html: null,
524
+ icon_html: "<svg>test icon</svg>"
525
+ }]);
526
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
527
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
528
+ type: "instance-error",
529
+ error: {
530
+ message: "test error",
531
+ status: 500,
532
+ additionalErrors: []
533
+ }
534
+ });
535
+ await batch.done();
536
+ let [rawErrorEntry] = await adapter.execute("SELECT * FROM boxel_index WHERE realm_version = 2 AND type = 'instance' AND has_error = TRUE ORDER BY url COLLATE \"POSIX\"", { coerceTypes });
537
+ let { indexed_at: _remove, diagnostics, ...errorEntry } = rawErrorEntry;
538
+ assert.ok(errorEntry.error_doc, "row has an error_doc");
539
+ let { diagnostics: errorDocDiagnostics, ...errorDocWithoutDiagnostics } = errorEntry.error_doc;
540
+ errorEntry.error_doc = errorDocWithoutDiagnostics;
541
+ assert.deepEqual(errorEntry, {
542
+ url: `${testRealmURL}1.json`,
543
+ file_alias: `${testRealmURL}1`,
544
+ realm_version: 2,
545
+ realm_url: testRealmURL,
546
+ type: "instance",
547
+ has_error: true,
548
+ pristine_doc: resource,
549
+ error_doc: {
550
+ message: "test error",
551
+ status: 500,
552
+ id: `${testRealmURL}1.json`,
553
+ additionalErrors: []
554
+ },
555
+ search_doc: { name: "Mango" },
556
+ display_names: [`Person`],
557
+ deps: [`${testRealmURL}person`],
558
+ last_known_good_deps: [`${testRealmURL}person`],
559
+ types,
560
+ embedded_html: Object.fromEntries(types.map((type) => [type, `<div class="embedded">Embedded HTML for ${type}</div>`])),
561
+ fitted_html: Object.fromEntries(types.map((type) => [type, `<div class="fitted">Fitted HTML for ${type}</div>`])),
562
+ isolated_html: `<div class="isolated">Isolated HTML</div>`,
563
+ atom_html: `<span class="atom">Atom HTML</span>`,
564
+ head_html: null,
565
+ last_modified: String(modified),
566
+ resource_created_at: String(modified),
567
+ is_deleted: null,
568
+ icon_html: "<svg>test icon</svg>",
569
+ markdown: null
570
+ }, "the error entry includes last known good state of instance");
571
+ assert.ok(diagnostics, "diagnostics populated on error row");
572
+ assert.strictEqual(typeof diagnostics, "object", "diagnostics is an object");
573
+ assert.deepEqual(errorDocDiagnostics, diagnostics, "error_doc.diagnostics mirrors diagnostics");
574
+ });
575
+ (0, import_qunit.test)("strips jsonb-illegal code points from error_doc and diagnostics on write", async function(assert) {
576
+ await setupIndex(adapter, [{
577
+ realm_url: testRealmURL,
578
+ current_version: 1
579
+ }], []);
580
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
581
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
582
+ type: "instance-error",
583
+ error: {
584
+ message: "Unexpected token \0\ud800 JFIF is not valid JSON",
585
+ status: 500,
586
+ additionalErrors: [{
587
+ message: "nested \0 binary",
588
+ status: 500,
589
+ additionalErrors: []
590
+ }]
591
+ },
592
+ diagnostics: { renderStage: "load\0links" }
593
+ });
594
+ await batch.done();
595
+ let [row] = await adapter.execute("SELECT * FROM boxel_index WHERE has_error = TRUE AND realm_version = 2", { coerceTypes });
596
+ assert.ok(row?.error_doc, "error row persisted despite binary in message");
597
+ let nul = String.fromCharCode(0);
598
+ let hasIllegalCodePoint = (s) => s.includes(nul) || /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/.test(s);
599
+ assert.notOk(hasIllegalCodePoint(row.error_doc.message), "illegal code points stripped from the error message");
600
+ assert.true(row.error_doc.message.includes("JFIF"), "the readable remainder of the message is preserved");
601
+ assert.notOk(hasIllegalCodePoint(row.error_doc.additionalErrors[0].message), "illegal code points stripped from nested additionalErrors too");
602
+ assert.strictEqual(row.diagnostics.renderStage, "load�links", "illegal code points stripped from diagnostics strings too");
603
+ });
604
+ (0, import_qunit.test)("error entry does not include last known good state when not available", async function(assert) {
605
+ await setupIndex(adapter, [{
606
+ realm_url: testRealmURL,
607
+ current_version: 1
608
+ }], []);
609
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
610
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
611
+ type: "instance-error",
612
+ error: {
613
+ message: "test error",
614
+ status: 500,
615
+ additionalErrors: []
616
+ }
617
+ });
618
+ await batch.done();
619
+ let [rawErrorEntry] = await adapter.execute("SELECT * FROM boxel_index WHERE realm_version = 2 AND type = 'instance' AND has_error = TRUE ORDER BY url COLLATE \"POSIX\"", { coerceTypes });
620
+ let { indexed_at: _remove, diagnostics, ...errorEntry } = rawErrorEntry;
621
+ assert.ok(errorEntry.error_doc, "row has an error_doc");
622
+ let { diagnostics: errorDocDiagnostics, ...errorDocWithoutDiagnostics } = errorEntry.error_doc;
623
+ errorEntry.error_doc = errorDocWithoutDiagnostics;
624
+ assert.deepEqual(errorEntry, {
625
+ url: `${testRealmURL}1.json`,
626
+ file_alias: `${testRealmURL}1`,
627
+ realm_version: 2,
628
+ realm_url: testRealmURL,
629
+ type: "instance",
630
+ has_error: true,
631
+ pristine_doc: null,
632
+ error_doc: {
633
+ message: "test error",
634
+ status: 500,
635
+ id: `${testRealmURL}1.json`,
636
+ additionalErrors: []
637
+ },
638
+ search_doc: null,
639
+ display_names: null,
640
+ deps: [],
641
+ last_known_good_deps: null,
642
+ types: null,
643
+ embedded_html: null,
644
+ fitted_html: null,
645
+ isolated_html: null,
646
+ atom_html: null,
647
+ head_html: null,
648
+ last_modified: null,
649
+ resource_created_at: null,
650
+ is_deleted: false,
651
+ icon_html: null,
652
+ markdown: null
653
+ }, "the error entry does not include last known good state of instance");
654
+ assert.ok(diagnostics, "diagnostics populated on error row");
655
+ assert.strictEqual(typeof diagnostics, "object", "diagnostics is an object");
656
+ assert.deepEqual(errorDocDiagnostics, diagnostics, "error_doc.diagnostics mirrors diagnostics");
657
+ });
658
+ (0, import_qunit.test)("normalizes error doc id and deps", async function(assert) {
659
+ await setupIndex(adapter, [{
660
+ realm_url: testRealmURL,
661
+ current_version: 1
662
+ }], []);
663
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
664
+ await batch.updateEntry(new URL(`${testRealmURL}nested/1.json`), {
665
+ type: "instance-error",
666
+ error: {
667
+ id: null,
668
+ message: "test error",
669
+ status: 404,
670
+ deps: ["../headless-skill-set", `${testRealmURL}other-card`],
671
+ additionalErrors: null
672
+ }
673
+ });
674
+ await batch.done();
675
+ let [{ error_doc: errorDoc, deps }] = await adapter.execute("SELECT error_doc, deps FROM boxel_index WHERE realm_version = 2 AND type = 'instance' AND has_error = TRUE ORDER BY url COLLATE \"POSIX\"", { coerceTypes });
676
+ assert.strictEqual(errorDoc?.id, `${testRealmURL}nested/1.json`, "id defaults to entry url");
677
+ assert.deepEqual(errorDoc?.deps, [`${testRealmURL}headless-skill-set`, `${testRealmURL}other-card`], "error doc deps are canonicalized");
678
+ assert.deepEqual(deps, [`${testRealmURL}headless-skill-set`, `${testRealmURL}other-card`], "entry deps include normalized error deps");
679
+ });
680
+ (0, import_qunit.test)("error_doc within budget is persisted unchanged", async function(assert) {
681
+ await setupIndex(adapter, [{
682
+ realm_url: testRealmURL,
683
+ current_version: 1
684
+ }], []);
685
+ let inputError = {
686
+ message: "small parent error",
687
+ status: 500,
688
+ title: "Render error",
689
+ stack: "Error: small\n at thing (/x.js:1:1)",
690
+ additionalErrors: [{
691
+ status: 500,
692
+ message: "inner err",
693
+ stack: "Error: inner\n at inner (/y.js:1:1)",
694
+ additionalErrors: [{
695
+ status: 500,
696
+ message: "inner inner — preserved end-to-end",
697
+ additionalErrors: null
698
+ }]
699
+ }]
700
+ };
701
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
702
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
703
+ type: "instance-error",
704
+ error: { ...inputError }
705
+ });
706
+ await batch.done();
707
+ let [{ error_doc: errorDoc }] = await adapter.execute("SELECT error_doc FROM boxel_index WHERE has_error = TRUE AND type = 'instance'", { coerceTypes });
708
+ assert.ok(errorDoc, "error_doc was persisted");
709
+ assert.strictEqual(errorDoc.message, inputError.message, "message preserved verbatim");
710
+ assert.strictEqual(errorDoc.stack, inputError.stack, "top-level stack preserved verbatim");
711
+ assert.strictEqual(errorDoc.additionalErrors.length, 1, "additionalErrors length preserved");
712
+ let kept = errorDoc.additionalErrors[0];
713
+ assert.strictEqual(kept.message, "inner err", "inherited message preserved");
714
+ assert.ok(Array.isArray(kept.additionalErrors), "nested additionalErrors retained for in-budget docs");
715
+ assert.strictEqual(kept.additionalErrors[0].message, "inner inner — preserved end-to-end", "second-level nesting preserved verbatim");
716
+ });
717
+ (0, import_qunit.test)("oversized error_doc is shed progressively until it fits", async function(assert) {
718
+ await setupIndex(adapter, [{
719
+ realm_url: testRealmURL,
720
+ current_version: 1
721
+ }], []);
722
+ let entries = Array.from({ length: 50 }, (_, i) => ({
723
+ status: 500,
724
+ message: `dep err ${i}`,
725
+ stack: "x".repeat(1024 * 1024),
726
+ additionalErrors: [{
727
+ status: 500,
728
+ message: "inherited nested",
729
+ additionalErrors: null
730
+ }]
731
+ }));
732
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
733
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
734
+ type: "instance-error",
735
+ error: {
736
+ message: "parent",
737
+ status: 500,
738
+ stack: "short",
739
+ additionalErrors: entries
740
+ }
741
+ });
742
+ await batch.done();
743
+ let [{ error_doc: errorDoc }] = await adapter.execute("SELECT error_doc FROM boxel_index WHERE has_error = TRUE AND type = 'instance'", { coerceTypes });
744
+ assert.ok(errorDoc, "error_doc was persisted");
745
+ assert.ok(JSON.stringify(errorDoc).length <= 8 * 1024 * 1024, "persisted error_doc fits the 8 MiB budget");
746
+ assert.strictEqual(errorDoc.message, "parent", "top-level message untouched");
747
+ assert.strictEqual(errorDoc.additionalErrors.length, 50, "entry count preserved (no late-stage capping)");
748
+ assert.strictEqual(errorDoc.additionalErrors[0].message, "dep err 0", "per-entry message untouched");
749
+ assert.ok(Array.isArray(errorDoc.additionalErrors[0].additionalErrors), "nested additionalErrors retained (step 4 did not run)");
750
+ assert.ok(errorDoc.additionalErrors[0].stack.length < 1024 * 1024, "per-entry stacks were trimmed (step 1 ran)");
751
+ });
752
+ (0, import_qunit.test)("can get an error doc", async function(assert) {
753
+ await setupIndex(adapter, [{
754
+ url: `${testRealmURL}1.json`,
755
+ realm_version: 1,
756
+ realm_url: testRealmURL,
757
+ type: "instance",
758
+ has_error: true,
759
+ error_doc: {
760
+ message: "test error",
761
+ status: 500,
762
+ id: `${testRealmURL}1.json`,
763
+ additionalErrors: []
764
+ }
765
+ }]);
766
+ let entry = await indexQueryEngine.getInstance(new URL(`${testRealmURL}1`));
767
+ if (entry?.type === "instance-error") {
768
+ assert.ok(entry.lastModified, "lastModified exists");
769
+ entry.lastModified = null;
770
+ assert.deepEqual(entry, {
771
+ type: "instance-error",
772
+ error: {
773
+ message: "test error",
774
+ status: 500,
775
+ id: `${testRealmURL}1.json`,
776
+ additionalErrors: []
777
+ },
778
+ canonicalURL: `${testRealmURL}1.json`,
779
+ realmVersion: 1,
780
+ realmURL: testRealmURL,
781
+ instance: null,
782
+ lastModified: null,
783
+ resourceCreatedAt: null,
784
+ isolatedHtml: null,
785
+ embeddedHtml: null,
786
+ fittedHtml: null,
787
+ atomHtml: null,
788
+ headHtml: null,
789
+ markdown: null,
790
+ searchDoc: null,
791
+ types: null,
792
+ indexedAt: null,
793
+ deps: null
794
+ });
795
+ } else assert.ok(false, `expected index entry to not be a card document`);
796
+ });
797
+ (0, import_qunit.test)("allows multiple index entries for the same url with different types", async function(assert) {
798
+ let timestamp = Date.now();
799
+ let resource = {
800
+ id: `${testRealmURL}1`,
801
+ type: "card",
802
+ attributes: { name: "Mango" },
803
+ meta: { adoptsFrom: {
804
+ module: rri(`./person`),
805
+ name: "Person"
806
+ } }
807
+ };
808
+ await setupIndex(adapter, [{
809
+ url: `${testRealmURL}1.json`,
810
+ type: "instance",
811
+ pristine_doc: resource,
812
+ last_modified: String(timestamp),
813
+ resource_created_at: String(timestamp)
814
+ }, {
815
+ url: `${testRealmURL}1.json`,
816
+ type: "file",
817
+ search_doc: { name: "1.json" }
818
+ }]);
819
+ let rows = await adapter.execute("SELECT url, type FROM boxel_index WHERE url = $1 ORDER BY type COLLATE \"POSIX\"", { bind: [`${testRealmURL}1.json`] });
820
+ assert.deepEqual(rows, [{
821
+ url: `${testRealmURL}1.json`,
822
+ type: "file"
823
+ }, {
824
+ url: `${testRealmURL}1.json`,
825
+ type: "instance"
826
+ }], "index rows include file and instance entries");
827
+ let entry = await indexQueryEngine.getInstance(new URL(`${testRealmURL}1`));
828
+ assert.strictEqual(entry?.type, "instance", "instance entry is accessible");
829
+ });
830
+ (0, import_qunit.test)("can get \"production\" index entry", async function(assert) {
831
+ let originalModified = Date.now();
832
+ let originalResource = {
833
+ id: `${testRealmURL}1`,
834
+ type: "card",
835
+ attributes: { name: "Mango" },
836
+ meta: { adoptsFrom: {
837
+ module: rri(`./person`),
838
+ name: "Person"
839
+ } }
840
+ };
841
+ await setupIndex(adapter, [{
842
+ realm_url: testRealmURL,
843
+ current_version: 1
844
+ }], [{
845
+ url: `${testRealmURL}1.json`,
846
+ realm_version: 1,
847
+ realm_url: testRealmURL,
848
+ pristine_doc: originalResource,
849
+ last_modified: String(originalModified),
850
+ resource_created_at: String(originalModified)
851
+ }]);
852
+ let resource = {
853
+ id: testRRI("1.json"),
854
+ type: "card",
855
+ attributes: { name: "Van Gogh" },
856
+ meta: { adoptsFrom: {
857
+ module: rri(`./person`),
858
+ name: "Person"
859
+ } }
860
+ };
861
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
862
+ await batch.invalidate([new URL(`${testRealmURL}1.json`)]);
863
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
864
+ type: "instance",
865
+ resource,
866
+ lastModified: Date.now(),
867
+ resourceCreatedAt: Date.now(),
868
+ searchData: { name: "Van Gogh" },
869
+ deps: /* @__PURE__ */ new Set(),
870
+ displayNames: [],
871
+ types: []
872
+ });
873
+ let entry = await indexQueryEngine.getInstance(new URL(`${testRealmURL}1`));
874
+ if (entry?.type === "instance") assert.deepEqual(entry, {
875
+ type: "instance",
876
+ realmVersion: 1,
877
+ realmURL: testRealmURL,
878
+ canonicalURL: `${testRealmURL}1.json`,
879
+ instance: {
880
+ id: testRRI("1"),
881
+ type: "card",
882
+ attributes: { name: "Mango" },
883
+ meta: { adoptsFrom: {
884
+ module: rri(`./person`),
885
+ name: "Person"
886
+ } }
887
+ },
888
+ lastModified: originalModified,
889
+ resourceCreatedAt: originalModified,
890
+ searchDoc: null,
891
+ deps: null,
892
+ types: null,
893
+ indexedAt: null,
894
+ isolatedHtml: null,
895
+ atomHtml: null,
896
+ embeddedHtml: null,
897
+ fittedHtml: null,
898
+ headHtml: null,
899
+ markdown: null
900
+ });
901
+ else assert.ok(false, `expected index entry to not be an error document`);
902
+ });
903
+ (0, import_qunit.test)("can get work in progress card", async function(assert) {
904
+ await setupIndex(adapter, [{
905
+ realm_url: testRealmURL,
906
+ current_version: 1
907
+ }], [{
908
+ url: `${testRealmURL}1.json`,
909
+ realm_version: 1,
910
+ realm_url: testRealmURL,
911
+ pristine_doc: {
912
+ attributes: { name: "Mango" },
913
+ meta: { adoptsFrom: {
914
+ module: rri(`./person`),
915
+ name: "Person"
916
+ } }
917
+ }
918
+ }]);
919
+ let resource = {
920
+ id: testRRI("1.json"),
921
+ type: "card",
922
+ attributes: { name: "Van Gogh" },
923
+ meta: { adoptsFrom: {
924
+ module: rri(`./person`),
925
+ name: "Person"
926
+ } }
927
+ };
928
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
929
+ let now = Date.now();
930
+ await batch.invalidate([new URL(`${testRealmURL}1.json`)]);
931
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
932
+ type: "instance",
933
+ resource,
934
+ lastModified: now,
935
+ resourceCreatedAt: now,
936
+ searchData: { name: "Van Gogh" },
937
+ deps: /* @__PURE__ */ new Set(),
938
+ displayNames: [],
939
+ types: []
940
+ });
941
+ let entry = await indexQueryEngine.getInstance(new URL(`${testRealmURL}1`), { useWorkInProgressIndex: true });
942
+ if (entry?.type === "instance") {
943
+ assert.ok(entry?.indexedAt, "the indexed_at field was set");
944
+ delete entry?.indexedAt;
945
+ assert.deepEqual(entry, {
946
+ type: "instance",
947
+ realmVersion: 2,
948
+ realmURL: testRealmURL,
949
+ canonicalURL: `${testRealmURL}1.json`,
950
+ instance: {
951
+ id: testRRI("1.json"),
952
+ type: "card",
953
+ attributes: { name: "Van Gogh" },
954
+ meta: { adoptsFrom: {
955
+ module: rri(`./person`),
956
+ name: "Person"
957
+ } }
958
+ },
959
+ lastModified: now,
960
+ resourceCreatedAt: now,
961
+ searchDoc: { name: "Van Gogh" },
962
+ deps: [],
963
+ types: [],
964
+ isolatedHtml: null,
965
+ embeddedHtml: null,
966
+ fittedHtml: null,
967
+ atomHtml: null,
968
+ headHtml: null,
969
+ markdown: null
970
+ });
971
+ } else assert.ok(false, `expected index entry to not be an error document`);
972
+ });
973
+ (0, import_qunit.test)("persists and reads back markdown for an instance entry", async function(assert) {
974
+ await setupIndex(adapter, [{
975
+ realm_url: testRealmURL,
976
+ current_version: 1
977
+ }], []);
978
+ let resource = {
979
+ id: testRRI("1.json"),
980
+ type: "card",
981
+ attributes: { name: "Van Gogh" },
982
+ meta: { adoptsFrom: {
983
+ module: rri(`./person`),
984
+ name: "Person"
985
+ } }
986
+ };
987
+ let now = Date.now();
988
+ let markdown = "# Van Gogh\n\n- email: vangogh@example.com";
989
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
990
+ await batch.invalidate([new URL(`${testRealmURL}1.json`)]);
991
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
992
+ type: "instance",
993
+ resource,
994
+ lastModified: now,
995
+ resourceCreatedAt: now,
996
+ searchData: { name: "Van Gogh" },
997
+ deps: /* @__PURE__ */ new Set(),
998
+ displayNames: [],
999
+ types: [],
1000
+ markdown
1001
+ });
1002
+ let entry = await indexQueryEngine.getInstance(new URL(`${testRealmURL}1`), { useWorkInProgressIndex: true });
1003
+ if (entry?.type === "instance") assert.strictEqual(entry.markdown, markdown, "markdown round-trips through updateEntry + getInstance");
1004
+ else assert.ok(false, `expected index entry to be an instance (got ${entry?.type})`);
1005
+ });
1006
+ (0, import_qunit.test)("returns undefined when getting a deleted card", async function(assert) {
1007
+ await setupIndex(adapter, [{
1008
+ realm_url: testRealmURL,
1009
+ current_version: 1
1010
+ }], [{
1011
+ url: `${testRealmURL}1.json`,
1012
+ realm_version: 1,
1013
+ realm_url: testRealmURL,
1014
+ is_deleted: true
1015
+ }]);
1016
+ let entry = await indexQueryEngine.getInstance(new URL(`${testRealmURL}1`));
1017
+ assert.strictEqual(entry, void 0, "deleted entries return undefined");
1018
+ });
1019
+ (0, import_qunit.test)("can perform invalidations for an instance with deps more than a thousand", async function(assert) {
1020
+ let indexRows = [];
1021
+ for (let i = 1; i <= 1002; i++) indexRows.push({
1022
+ url: `${testRealmURL}${i}.json`,
1023
+ realm_version: 1,
1024
+ realm_url: testRealmURL,
1025
+ deps: [...i <= 1 ? [] : [`${testRealmURL}1.json`]]
1026
+ });
1027
+ indexRows.sort((a, b) => a.url.localeCompare(b.url));
1028
+ await setupIndex(adapter, [{
1029
+ realm_url: testRealmURL,
1030
+ current_version: 1
1031
+ }], indexRows);
1032
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
1033
+ await batch.invalidate([new URL(`${testRealmURL}1.json`)]);
1034
+ let invalidations = batch.invalidations;
1035
+ assert.ok(invalidations.length > 1e3, "Can invalidate more than 1000");
1036
+ assert.deepEqual(invalidations.sort(), indexRows.map((r) => r.url));
1037
+ let invalidatedEntries = await adapter.execute("SELECT url, realm_url, is_deleted FROM boxel_index_working WHERE realm_version = 2 ORDER BY url COLLATE \"POSIX\"", { coerceTypes: { is_deleted: "BOOLEAN" } });
1038
+ assert.deepEqual(invalidatedEntries, indexRows.map((indexRow) => ({
1039
+ url: indexRow.url,
1040
+ realm_url: indexRow.realm_url,
1041
+ is_deleted: true
1042
+ })), "the \"work-in-progress\" version of the index entries have been marked as deleted");
1043
+ let realmVersions = await adapter.execute("select * from realm_versions ORDER BY realm_url COLLATE \"POSIX\"");
1044
+ assert.deepEqual(realmVersions, [{
1045
+ realm_url: `${testRealmURL}`,
1046
+ current_version: 1
1047
+ }], "the \"production\" realm versions are correct");
1048
+ });
1049
+ (0, import_qunit.test)("update realm meta when indexing is done", async function(assert) {
1050
+ let iconHTML = "<svg>test icon</svg>";
1051
+ let personTypes = internalKeysFor(virtualNetwork, {
1052
+ module: rri("./person"),
1053
+ name: "Person"
1054
+ }, baseCardRef);
1055
+ let fancyPersonTypes = internalKeysFor(virtualNetwork, {
1056
+ module: rri("./fancy-person"),
1057
+ name: "FancyPerson"
1058
+ }, {
1059
+ module: rri("./person"),
1060
+ name: "Person"
1061
+ }, baseCardRef);
1062
+ let petTypes = internalKeysFor(virtualNetwork, {
1063
+ module: rri("./pet"),
1064
+ name: "Pet"
1065
+ }, {
1066
+ module: rri("./card-api"),
1067
+ name: "CardDef"
1068
+ }, baseCardRef);
1069
+ await setupIndex(adapter, [{
1070
+ realm_url: testRealmURL,
1071
+ current_version: 1
1072
+ }], [{
1073
+ url: `${testRealmURL}1.json`,
1074
+ realm_version: 1,
1075
+ realm_url: testRealmURL,
1076
+ pristine_doc: {
1077
+ id: `${testRealmURL}1`,
1078
+ type: "card",
1079
+ attributes: { name: "Mango" },
1080
+ meta: { adoptsFrom: {
1081
+ module: rri(`./person`),
1082
+ name: "Person"
1083
+ } }
1084
+ },
1085
+ search_doc: { name: "Mango" },
1086
+ display_names: [`Person`],
1087
+ deps: [`${testRealmURL}person`],
1088
+ types: personTypes,
1089
+ icon_html: iconHTML
1090
+ }]);
1091
+ let resource2 = makeCardResource("2", "Van Gogh", {
1092
+ module: rri("./fancy-person"),
1093
+ name: "FancyPerson"
1094
+ });
1095
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
1096
+ await batch.invalidate([new URL(`${testRealmURL}2.json`)]);
1097
+ let timestamp = Date.now();
1098
+ await batch.updateEntry(new URL(`${testRealmURL}2.json`), {
1099
+ type: "instance",
1100
+ resource: resource2,
1101
+ lastModified: timestamp,
1102
+ resourceCreatedAt: timestamp,
1103
+ searchData: { name: "Van Gogh" },
1104
+ deps: new Set([`${testRealmURL}fancy-person`]),
1105
+ displayNames: [
1106
+ "Fancy Person",
1107
+ "Person",
1108
+ "Card"
1109
+ ],
1110
+ types: fancyPersonTypes,
1111
+ iconHTML
1112
+ });
1113
+ let realmMeta = await fetchRealmMeta(adapter);
1114
+ assert.strictEqual(realmMeta.rows.length, 0, "correct length of query result before indexing is done");
1115
+ await batch.done();
1116
+ realmMeta = await fetchRealmMeta(adapter);
1117
+ assert.strictEqual(realmMeta.rows.length, 1, "correct length of query result after indexing is done");
1118
+ let value = realmMeta.value;
1119
+ assert.strictEqual(value.length, 2, "correct length of card type summary after indexing is done");
1120
+ assert.deepEqual(value, [makeCardTypeSummary(`${testRealmURL}fancy-person/FancyPerson`, "Fancy Person", iconHTML, 1), makeCardTypeSummary(`${testRealmURL}person/Person`, "Person", iconHTML, 1)], "correct card type summary after indexing is done");
1121
+ batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
1122
+ let resource3 = makeCardResource("3", "Van Gogh2", {
1123
+ module: rri("./fancy-person"),
1124
+ name: "FancyPerson"
1125
+ });
1126
+ await batch.invalidate([new URL(`${testRealmURL}3.json`)]);
1127
+ timestamp = Date.now();
1128
+ await batch.updateEntry(new URL(`${testRealmURL}3.json`), {
1129
+ type: "instance",
1130
+ resource: resource3,
1131
+ lastModified: timestamp,
1132
+ resourceCreatedAt: timestamp,
1133
+ searchData: { name: "Van Gogh2" },
1134
+ deps: new Set([`${testRealmURL}fancy-person`]),
1135
+ displayNames: [
1136
+ "Fancy Person",
1137
+ "Person",
1138
+ "Card"
1139
+ ],
1140
+ types: fancyPersonTypes,
1141
+ iconHTML
1142
+ });
1143
+ let resource4 = makeCardResource("4", "Mango", {
1144
+ module: rri("./pet"),
1145
+ name: "Pet"
1146
+ });
1147
+ await batch.invalidate([new URL(`${testRealmURL}4.json`)]);
1148
+ timestamp = Date.now();
1149
+ await batch.updateEntry(new URL(`${testRealmURL}4.json`), {
1150
+ type: "instance",
1151
+ resource: resource4,
1152
+ lastModified: timestamp,
1153
+ resourceCreatedAt: timestamp,
1154
+ searchData: { name: "Mango" },
1155
+ deps: new Set([`${testRealmURL}pet`]),
1156
+ displayNames: ["Pet", "Card"],
1157
+ types: petTypes,
1158
+ iconHTML
1159
+ });
1160
+ await batch.done();
1161
+ realmMeta = await fetchRealmMeta(adapter);
1162
+ assert.strictEqual(realmMeta.rows.length, 1, "correct length of query result after indexing is done");
1163
+ value = realmMeta.value;
1164
+ assert.strictEqual(value.length, 3, "correct length of card type summary after indexing is done");
1165
+ assert.deepEqual(value, [
1166
+ makeCardTypeSummary(`${testRealmURL}fancy-person/FancyPerson`, "Fancy Person", iconHTML, 2),
1167
+ makeCardTypeSummary(`${testRealmURL}person/Person`, "Person", iconHTML, 1),
1168
+ makeCardTypeSummary(`${testRealmURL}pet/Pet`, "Pet", iconHTML, 1)
1169
+ ], "correct card type summary after indexing is done");
1170
+ });
1171
+ (0, import_qunit.test)("update realm meta partitions file rows into the files array", async function(assert) {
1172
+ let iconHTML = "<svg>file icon</svg>";
1173
+ let baseFileTypes = internalKeysFor(virtualNetwork, {
1174
+ module: rri("./card-api"),
1175
+ name: "FileDef"
1176
+ });
1177
+ let markdownTypes = internalKeysFor(virtualNetwork, {
1178
+ module: rri("./markdown-file-def"),
1179
+ name: "MarkdownDef"
1180
+ }, {
1181
+ module: rri("./card-api"),
1182
+ name: "FileDef"
1183
+ });
1184
+ await setupIndex(adapter, [{
1185
+ realm_url: testRealmURL,
1186
+ current_version: 1
1187
+ }], [
1188
+ {
1189
+ url: `${testRealmURL}1.json`,
1190
+ realm_version: 1,
1191
+ realm_url: testRealmURL,
1192
+ type: "instance",
1193
+ pristine_doc: makeCardResource("1", "Mango", {
1194
+ module: rri("./person"),
1195
+ name: "Person"
1196
+ }),
1197
+ search_doc: { name: "Mango" },
1198
+ display_names: ["Person"],
1199
+ deps: [`${testRealmURL}person`],
1200
+ types: internalKeysFor(virtualNetwork, {
1201
+ module: rri("./person"),
1202
+ name: "Person"
1203
+ }, baseCardRef),
1204
+ icon_html: iconHTML
1205
+ },
1206
+ {
1207
+ url: `${testRealmURL}notes/a.md`,
1208
+ realm_version: 1,
1209
+ realm_url: testRealmURL,
1210
+ type: "file",
1211
+ search_doc: {
1212
+ name: "a.md",
1213
+ url: `${testRealmURL}notes/a.md`
1214
+ },
1215
+ display_names: ["Markdown", "File"],
1216
+ types: markdownTypes,
1217
+ icon_html: iconHTML
1218
+ },
1219
+ {
1220
+ url: `${testRealmURL}notes/b.md`,
1221
+ realm_version: 1,
1222
+ realm_url: testRealmURL,
1223
+ type: "file",
1224
+ search_doc: {
1225
+ name: "b.md",
1226
+ url: `${testRealmURL}notes/b.md`
1227
+ },
1228
+ display_names: ["Markdown", "File"],
1229
+ types: markdownTypes,
1230
+ icon_html: iconHTML
1231
+ },
1232
+ {
1233
+ url: `${testRealmURL}misc/raw.bin`,
1234
+ realm_version: 1,
1235
+ realm_url: testRealmURL,
1236
+ type: "file",
1237
+ search_doc: {
1238
+ name: "raw.bin",
1239
+ url: `${testRealmURL}misc/raw.bin`
1240
+ },
1241
+ display_names: ["File"],
1242
+ types: baseFileTypes,
1243
+ icon_html: iconHTML
1244
+ }
1245
+ ]);
1246
+ await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).done();
1247
+ let realmMeta = await fetchRealmMeta(adapter);
1248
+ assert.strictEqual(realmMeta.rows.length, 1, "one realm_meta row was written");
1249
+ assert.deepEqual(realmMeta.value, [makeCardTypeSummary(`${testRealmURL}person/Person`, "Person", iconHTML, 1)], "instance summaries only reflect CardDef rows");
1250
+ assert.deepEqual(realmMeta.files, [makeCardTypeSummary(`${testRealmURL}card-api/FileDef`, "File", iconHTML, 1), makeCardTypeSummary(`${testRealmURL}markdown-file-def/MarkdownDef`, "Markdown", iconHTML, 2)], "file summaries collapse duplicates and live in their own arm");
1251
+ });
1252
+ (0, import_qunit.test)("update realm meta collapses rows with the same code_ref but mixed display_names", async function(assert) {
1253
+ let iconHTML = "<svg>icon</svg>";
1254
+ let markdownTypes = internalKeysFor(virtualNetwork, {
1255
+ module: rri("./markdown-file-def"),
1256
+ name: "MarkdownDef"
1257
+ }, {
1258
+ module: rri("./card-api"),
1259
+ name: "FileDef"
1260
+ });
1261
+ await setupIndex(adapter, [{
1262
+ realm_url: testRealmURL,
1263
+ current_version: 1
1264
+ }], [{
1265
+ url: `${testRealmURL}notes/new.md`,
1266
+ realm_version: 1,
1267
+ realm_url: testRealmURL,
1268
+ type: "file",
1269
+ search_doc: {
1270
+ name: "new.md",
1271
+ url: `${testRealmURL}notes/new.md`
1272
+ },
1273
+ display_names: ["Markdown", "File"],
1274
+ types: markdownTypes,
1275
+ icon_html: iconHTML
1276
+ }, {
1277
+ url: `${testRealmURL}notes/old.md`,
1278
+ realm_version: 1,
1279
+ realm_url: testRealmURL,
1280
+ type: "file",
1281
+ search_doc: {
1282
+ name: "old.md",
1283
+ url: `${testRealmURL}notes/old.md`
1284
+ },
1285
+ display_names: [],
1286
+ types: markdownTypes,
1287
+ icon_html: iconHTML
1288
+ }]);
1289
+ await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).done();
1290
+ let realmMeta = await fetchRealmMeta(adapter);
1291
+ assert.deepEqual(realmMeta.files, [makeCardTypeSummary(`${testRealmURL}markdown-file-def/MarkdownDef`, "Markdown", iconHTML, 2)], "one summary per code_ref, with the populated display_name picked over the empty one");
1292
+ });
1293
+ (0, import_qunit.test)("fetchCardTypeSummary returns the realm_meta row at realm_versions.current_version", async function(assert) {
1294
+ let iconHTML = "<svg>icon</svg>";
1295
+ let personTypes = internalKeysFor(virtualNetwork, {
1296
+ module: rri("./person"),
1297
+ name: "Person"
1298
+ }, baseCardRef);
1299
+ await setupIndex(adapter, [{
1300
+ realm_url: testRealmURL,
1301
+ current_version: 1
1302
+ }], [{
1303
+ url: `${testRealmURL}1.json`,
1304
+ realm_version: 1,
1305
+ realm_url: testRealmURL,
1306
+ type: "instance",
1307
+ pristine_doc: makeCardResource("1", "Mango", {
1308
+ module: rri("./person"),
1309
+ name: "Person"
1310
+ }),
1311
+ search_doc: { name: "Mango" },
1312
+ display_names: ["Person"],
1313
+ deps: [`${testRealmURL}person`],
1314
+ types: personTypes,
1315
+ icon_html: iconHTML
1316
+ }]);
1317
+ await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).done();
1318
+ await adapter.execute(`INSERT INTO realm_meta (realm_url, realm_version, value, indexed_at)
1319
+ VALUES ($1, $2, $3, $4)`, { bind: [
1320
+ testRealmURL,
1321
+ 999,
1322
+ JSON.stringify([{
1323
+ code_ref: `${testRealmURL}stale/Stale`,
1324
+ display_name: "Stale",
1325
+ total: 42,
1326
+ icon_html: iconHTML
1327
+ }]),
1328
+ String(Date.now() - 1e3)
1329
+ ] });
1330
+ let summary = await indexQueryEngine.fetchCardTypeSummary(new URL(testRealmURL));
1331
+ assert.deepEqual(summary.instances.map((s) => s.code_ref), [`${testRealmURL}person/Person`], "fetchCardTypeSummary returns the row at realm_versions.current_version even when a higher-numbered stale row is present");
1332
+ assert.notOk(summary.instances.find((s) => s.display_name === "Stale"), "stale row contents do not leak through");
1333
+ });
1334
+ (0, import_qunit.test)("done() prunes realm_meta rows at any version, including ones higher than the current", async function(assert) {
1335
+ let iconHTML = "<svg>icon</svg>";
1336
+ await setupIndex(adapter, [{
1337
+ realm_url: testRealmURL,
1338
+ current_version: 0
1339
+ }], []);
1340
+ for (let version of [
1341
+ 50,
1342
+ 100,
1343
+ 200,
1344
+ 999
1345
+ ]) await adapter.execute(`INSERT INTO realm_meta (realm_url, realm_version, value, indexed_at)
1346
+ VALUES ($1, $2, $3, $4)`, { bind: [
1347
+ testRealmURL,
1348
+ version,
1349
+ JSON.stringify([{
1350
+ code_ref: `${testRealmURL}stale-${version}/Stale`,
1351
+ display_name: `Stale-${version}`,
1352
+ total: version,
1353
+ icon_html: iconHTML
1354
+ }]),
1355
+ String(Date.now() - version * 1e3)
1356
+ ] });
1357
+ let rowsBefore = await adapter.execute(`SELECT realm_version FROM realm_meta WHERE realm_url = $1 ORDER BY realm_version`, { bind: [testRealmURL] });
1358
+ assert.deepEqual(rowsBefore.map((r) => r.realm_version), [
1359
+ 50,
1360
+ 100,
1361
+ 200,
1362
+ 999
1363
+ ], "stale rows are seeded before the batch runs");
1364
+ await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).done();
1365
+ let rowsAfter = await adapter.execute(`SELECT realm_version FROM realm_meta WHERE realm_url = $1 ORDER BY realm_version`, { bind: [testRealmURL] });
1366
+ assert.deepEqual(rowsAfter.map((r) => r.realm_version), [1], "pruneObsoleteEntries deletes every row that is not the current version, including higher-numbered stale ones");
1367
+ });
1368
+ (0, import_qunit.test)("update realm meta includes error entries with last known good state", async function(assert) {
1369
+ let iconHTML = "<svg>test icon</svg>";
1370
+ let personTypes = internalKeysFor(virtualNetwork, {
1371
+ module: rri("./person"),
1372
+ name: "Person"
1373
+ }, baseCardRef);
1374
+ let personResource = makeCardResource("1", "Mango", {
1375
+ module: rri("./person"),
1376
+ name: "Person"
1377
+ });
1378
+ await setupIndex(adapter, [{
1379
+ realm_url: testRealmURL,
1380
+ current_version: 1
1381
+ }], [{
1382
+ url: `${testRealmURL}1.json`,
1383
+ realm_version: 1,
1384
+ realm_url: testRealmURL,
1385
+ pristine_doc: personResource,
1386
+ search_doc: { name: "Mango" },
1387
+ display_names: [`Person`],
1388
+ deps: [`${testRealmURL}person`],
1389
+ types: personTypes,
1390
+ icon_html: iconHTML
1391
+ }]);
1392
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork);
1393
+ await batch.updateEntry(new URL(`${testRealmURL}1.json`), {
1394
+ type: "instance-error",
1395
+ error: {
1396
+ message: "test error",
1397
+ status: 500,
1398
+ additionalErrors: []
1399
+ }
1400
+ });
1401
+ await batch.done();
1402
+ let realmMeta = await fetchRealmMeta(adapter);
1403
+ assert.strictEqual(realmMeta.rows.length, 1, "card type summary includes error entries");
1404
+ let value = realmMeta.value;
1405
+ assert.deepEqual(value, [makeCardTypeSummary(`${testRealmURL}person/Person`, "Person", iconHTML, 1)], "card type summary uses last known good card type data");
1406
+ });
1407
+ (0, import_qunit.test)("resumes URLs already processed by a previous attempt of the same job", async function(assert) {
1408
+ let url = `${testRealmURL}1.json`;
1409
+ let lastModified = 17e8;
1410
+ await setupIndex(adapter, [{
1411
+ realm_url: testRealmURL,
1412
+ current_version: 1
1413
+ }], {
1414
+ working: [{
1415
+ url,
1416
+ realm_version: 1,
1417
+ realm_url: testRealmURL,
1418
+ type: "instance",
1419
+ job_id: 42,
1420
+ last_modified: String(lastModified),
1421
+ is_deleted: false,
1422
+ deps: [],
1423
+ types: []
1424
+ }],
1425
+ production: []
1426
+ });
1427
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork, {
1428
+ jobId: 42,
1429
+ reservationId: 1,
1430
+ priority: 0
1431
+ });
1432
+ assert.strictEqual(batch.resumedRows.size, 1, "resumed rows from prior attempt of same job_id are loaded");
1433
+ assert.strictEqual(batch.resumedRows.get(url), lastModified, "last_modified value is preserved as a number");
1434
+ assert.deepEqual(batch.invalidations, [url], "resumed URLs are pre-seeded into the invalidation set so done() promotes them");
1435
+ });
1436
+ (0, import_qunit.test)("does not resume rows with has_error=true so the retry can re-attempt them", async function(assert) {
1437
+ let url = `${testRealmURL}errored.json`;
1438
+ await setupIndex(adapter, [{
1439
+ realm_url: testRealmURL,
1440
+ current_version: 1
1441
+ }], {
1442
+ working: [{
1443
+ url,
1444
+ realm_version: 1,
1445
+ realm_url: testRealmURL,
1446
+ type: "instance",
1447
+ job_id: 42,
1448
+ last_modified: "1700000000",
1449
+ is_deleted: false,
1450
+ has_error: true,
1451
+ error_doc: {
1452
+ message: "transient",
1453
+ status: 500,
1454
+ additionalErrors: []
1455
+ },
1456
+ deps: [],
1457
+ types: []
1458
+ }],
1459
+ production: []
1460
+ });
1461
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork, {
1462
+ jobId: 42,
1463
+ reservationId: 1,
1464
+ priority: 0
1465
+ });
1466
+ assert.strictEqual(batch.resumedRows.size, 0, "errored rows are not resumed — the retry exists to re-attempt them");
1467
+ assert.deepEqual(batch.invalidations, [], "errored URLs are not pre-seeded into the invalidation set");
1468
+ });
1469
+ (0, import_qunit.test)("does not resume rows from a different job", async function(assert) {
1470
+ await setupIndex(adapter, [{
1471
+ realm_url: testRealmURL,
1472
+ current_version: 1
1473
+ }], {
1474
+ working: [{
1475
+ url: `${testRealmURL}from-other-job.json`,
1476
+ realm_version: 1,
1477
+ realm_url: testRealmURL,
1478
+ type: "instance",
1479
+ job_id: 99,
1480
+ last_modified: "1700000000",
1481
+ is_deleted: false,
1482
+ deps: [],
1483
+ types: []
1484
+ }],
1485
+ production: []
1486
+ });
1487
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork, {
1488
+ jobId: 42,
1489
+ reservationId: 1,
1490
+ priority: 0
1491
+ });
1492
+ assert.strictEqual(batch.resumedRows.size, 0, "rows tagged with a different job_id are not resumed");
1493
+ });
1494
+ (0, import_qunit.test)("working rows from another job are visible to dependency-walk queries but not to resumedRows", async function(assert) {
1495
+ let otherUrl = `${testRealmURL}other-job-row.json`;
1496
+ await setupIndex(adapter, [{
1497
+ realm_url: testRealmURL,
1498
+ current_version: 1
1499
+ }], {
1500
+ working: [{
1501
+ url: otherUrl,
1502
+ realm_version: 1,
1503
+ realm_url: testRealmURL,
1504
+ type: "instance",
1505
+ job_id: 99,
1506
+ last_modified: "1700000000",
1507
+ is_deleted: false,
1508
+ deps: [],
1509
+ types: []
1510
+ }],
1511
+ production: []
1512
+ });
1513
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork, {
1514
+ jobId: 42,
1515
+ reservationId: 1,
1516
+ priority: 0
1517
+ });
1518
+ assert.strictEqual(batch.resumedRows.size, 0, "rows tagged with a different job_id are NOT in resumedRows");
1519
+ let surviving = await adapter.execute("SELECT url FROM boxel_index_working WHERE realm_url = $1", { bind: [testRealmURL] });
1520
+ assert.deepEqual(surviving.map((r) => r.url), [otherUrl], "cumulative working state is preserved (it is the source for reverse-deps walks)");
1521
+ });
1522
+ (0, import_qunit.test)("forgetResumedRows drops a URL from resumedRows so future tombstoning is no longer guarded", async function(assert) {
1523
+ let url = `${testRealmURL}1.json`;
1524
+ await setupIndex(adapter, [{
1525
+ realm_url: testRealmURL,
1526
+ current_version: 1
1527
+ }], {
1528
+ working: [{
1529
+ url,
1530
+ realm_version: 1,
1531
+ realm_url: testRealmURL,
1532
+ type: "instance",
1533
+ job_id: 42,
1534
+ last_modified: "1700000000",
1535
+ deps: [],
1536
+ types: []
1537
+ }],
1538
+ production: []
1539
+ });
1540
+ let batch = await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork, {
1541
+ jobId: 42,
1542
+ reservationId: 1,
1543
+ priority: 0
1544
+ });
1545
+ assert.true(batch.resumedRows.has(url), "precondition: row is initially resumed");
1546
+ batch.forgetResumedRows([url]);
1547
+ assert.false(batch.resumedRows.has(url), "after forgetResumedRows the URL is no longer protected");
1548
+ batch.forgetResumedRows([`${testRealmURL}does-not-exist.json`]);
1549
+ assert.strictEqual(batch.resumedRows.size, 0, "forgetResumedRows on a URL that is not present is a no-op");
1550
+ });
1551
+ (0, import_qunit.test)("done() promotes resumed rows even though they were never visited in this attempt", async function(assert) {
1552
+ let url = `${testRealmURL}1.json`;
1553
+ let resumedDoc = {
1554
+ id: url,
1555
+ type: "card",
1556
+ attributes: { name: "Resumed" },
1557
+ meta: { adoptsFrom: {
1558
+ module: rri(`./person`),
1559
+ name: "Person"
1560
+ } }
1561
+ };
1562
+ await setupIndex(adapter, [{
1563
+ realm_url: testRealmURL,
1564
+ current_version: 1
1565
+ }], {
1566
+ working: [{
1567
+ url,
1568
+ realm_version: 1,
1569
+ realm_url: testRealmURL,
1570
+ type: "instance",
1571
+ job_id: 42,
1572
+ last_modified: "1700000000",
1573
+ is_deleted: false,
1574
+ has_error: false,
1575
+ deps: [],
1576
+ types: [],
1577
+ pristine_doc: resumedDoc,
1578
+ search_doc: { name: "Resumed" }
1579
+ }],
1580
+ production: []
1581
+ });
1582
+ await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork, {
1583
+ jobId: 42,
1584
+ reservationId: 1,
1585
+ priority: 0
1586
+ })).done();
1587
+ let [promoted] = await adapter.execute(`SELECT pristine_doc, search_doc FROM boxel_index WHERE url = $1`, {
1588
+ bind: [url],
1589
+ coerceTypes: {
1590
+ pristine_doc: "JSON",
1591
+ search_doc: "JSON"
1592
+ }
1593
+ });
1594
+ assert.deepEqual(promoted?.pristine_doc, resumedDoc, "resumed row was promoted to boxel_index by done()");
1595
+ assert.deepEqual(promoted?.search_doc, { name: "Resumed" }, "resumed row search_doc landed in boxel_index");
1596
+ });
1597
+ (0, import_qunit.module)("getOrderingDependencyRows", function() {
1598
+ (0, import_qunit.test)("returns production row when URL exists only in boxel_index", async function(assert) {
1599
+ let url = `${testRealmURL}prod-only.json`;
1600
+ let depUrl = `${testRealmURL}prod-only-dep.json`;
1601
+ await setupIndex(adapter, [{
1602
+ realm_url: testRealmURL,
1603
+ current_version: 1
1604
+ }], {
1605
+ working: [],
1606
+ production: [{
1607
+ url,
1608
+ realm_version: 1,
1609
+ realm_url: testRealmURL,
1610
+ type: "instance",
1611
+ deps: [depUrl],
1612
+ types: []
1613
+ }]
1614
+ });
1615
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([url]);
1616
+ assert.deepEqual(rows, [{
1617
+ url,
1618
+ type: "instance",
1619
+ deps: [depUrl]
1620
+ }], "returns the production row deps");
1621
+ });
1622
+ (0, import_qunit.test)("returns working row when URL exists only in boxel_index_working and is not deleted", async function(assert) {
1623
+ let url = `${testRealmURL}working-only.json`;
1624
+ let depUrl = `${testRealmURL}working-only-dep.json`;
1625
+ await setupIndex(adapter, [{
1626
+ realm_url: testRealmURL,
1627
+ current_version: 1
1628
+ }], {
1629
+ working: [{
1630
+ url,
1631
+ realm_version: 1,
1632
+ realm_url: testRealmURL,
1633
+ type: "instance",
1634
+ is_deleted: false,
1635
+ deps: [depUrl],
1636
+ types: []
1637
+ }],
1638
+ production: []
1639
+ });
1640
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([url]);
1641
+ assert.deepEqual(rows, [{
1642
+ url,
1643
+ type: "instance",
1644
+ deps: [depUrl]
1645
+ }], "returns the working row deps");
1646
+ });
1647
+ (0, import_qunit.test)("working non-deleted wins over production when both exist", async function(assert) {
1648
+ let url = `${testRealmURL}both.json`;
1649
+ let workingDep = `${testRealmURL}working-dep.json`;
1650
+ let productionDep = `${testRealmURL}production-dep.json`;
1651
+ await setupIndex(adapter, [{
1652
+ realm_url: testRealmURL,
1653
+ current_version: 1
1654
+ }], {
1655
+ working: [{
1656
+ url,
1657
+ realm_version: 1,
1658
+ realm_url: testRealmURL,
1659
+ type: "instance",
1660
+ is_deleted: false,
1661
+ deps: [workingDep],
1662
+ types: []
1663
+ }],
1664
+ production: [{
1665
+ url,
1666
+ realm_version: 1,
1667
+ realm_url: testRealmURL,
1668
+ type: "instance",
1669
+ deps: [productionDep],
1670
+ types: []
1671
+ }]
1672
+ });
1673
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([url]);
1674
+ assert.deepEqual(rows, [{
1675
+ url,
1676
+ type: "instance",
1677
+ deps: [workingDep]
1678
+ }], "working-non-deleted beat production");
1679
+ });
1680
+ (0, import_qunit.test)("production wins over deleted working row", async function(assert) {
1681
+ let url = `${testRealmURL}deleted-working.json`;
1682
+ let workingDep = `${testRealmURL}should-not-appear.json`;
1683
+ let productionDep = `${testRealmURL}production-dep.json`;
1684
+ await setupIndex(adapter, [{
1685
+ realm_url: testRealmURL,
1686
+ current_version: 1
1687
+ }], {
1688
+ working: [{
1689
+ url,
1690
+ realm_version: 1,
1691
+ realm_url: testRealmURL,
1692
+ type: "instance",
1693
+ is_deleted: true,
1694
+ deps: [workingDep],
1695
+ types: []
1696
+ }],
1697
+ production: [{
1698
+ url,
1699
+ realm_version: 1,
1700
+ realm_url: testRealmURL,
1701
+ type: "instance",
1702
+ deps: [productionDep],
1703
+ types: []
1704
+ }]
1705
+ });
1706
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([url]);
1707
+ assert.deepEqual(rows, [{
1708
+ url,
1709
+ type: "instance",
1710
+ deps: [productionDep]
1711
+ }], "production picked when working row is deleted");
1712
+ });
1713
+ (0, import_qunit.test)("falls back to deleted working row when no production exists", async function(assert) {
1714
+ let url = `${testRealmURL}deleted-only.json`;
1715
+ let depUrl = `${testRealmURL}deleted-only-dep.json`;
1716
+ await setupIndex(adapter, [{
1717
+ realm_url: testRealmURL,
1718
+ current_version: 1
1719
+ }], {
1720
+ working: [{
1721
+ url,
1722
+ realm_version: 1,
1723
+ realm_url: testRealmURL,
1724
+ type: "instance",
1725
+ is_deleted: true,
1726
+ deps: [depUrl],
1727
+ types: []
1728
+ }],
1729
+ production: []
1730
+ });
1731
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([url]);
1732
+ assert.deepEqual(rows, [{
1733
+ url,
1734
+ type: "instance",
1735
+ deps: [depUrl]
1736
+ }], "returns deleted working row as last-resort fallback");
1737
+ });
1738
+ (0, import_qunit.test)("mixed input returns the correct provenance per URL", async function(assert) {
1739
+ let workingOnlyUrl = `${testRealmURL}mixed-working.json`;
1740
+ let workingOnlyDep = `${testRealmURL}mixed-working-dep.json`;
1741
+ let productionOnlyUrl = `${testRealmURL}mixed-production.json`;
1742
+ let productionOnlyDep = `${testRealmURL}mixed-production-dep.json`;
1743
+ let bothUrl = `${testRealmURL}mixed-both.json`;
1744
+ let bothWorkingDep = `${testRealmURL}mixed-both-working-dep.json`;
1745
+ let bothProductionDep = `${testRealmURL}mixed-both-production-dep.json`;
1746
+ await setupIndex(adapter, [{
1747
+ realm_url: testRealmURL,
1748
+ current_version: 1
1749
+ }], {
1750
+ working: [{
1751
+ url: workingOnlyUrl,
1752
+ realm_version: 1,
1753
+ realm_url: testRealmURL,
1754
+ type: "instance",
1755
+ is_deleted: false,
1756
+ deps: [workingOnlyDep],
1757
+ types: []
1758
+ }, {
1759
+ url: bothUrl,
1760
+ realm_version: 1,
1761
+ realm_url: testRealmURL,
1762
+ type: "instance",
1763
+ is_deleted: false,
1764
+ deps: [bothWorkingDep],
1765
+ types: []
1766
+ }],
1767
+ production: [{
1768
+ url: productionOnlyUrl,
1769
+ realm_version: 1,
1770
+ realm_url: testRealmURL,
1771
+ type: "instance",
1772
+ deps: [productionOnlyDep],
1773
+ types: []
1774
+ }, {
1775
+ url: bothUrl,
1776
+ realm_version: 1,
1777
+ realm_url: testRealmURL,
1778
+ type: "instance",
1779
+ deps: [bothProductionDep],
1780
+ types: []
1781
+ }]
1782
+ });
1783
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([
1784
+ workingOnlyUrl,
1785
+ productionOnlyUrl,
1786
+ bothUrl
1787
+ ]);
1788
+ let byUrl = new Map(rows.map((r) => [r.url, r]));
1789
+ assert.deepEqual(byUrl.get(workingOnlyUrl), {
1790
+ url: workingOnlyUrl,
1791
+ type: "instance",
1792
+ deps: [workingOnlyDep]
1793
+ }, "working-only URL returns working deps");
1794
+ assert.deepEqual(byUrl.get(productionOnlyUrl), {
1795
+ url: productionOnlyUrl,
1796
+ type: "instance",
1797
+ deps: [productionOnlyDep]
1798
+ }, "production-only URL returns production deps");
1799
+ assert.deepEqual(byUrl.get(bothUrl), {
1800
+ url: bothUrl,
1801
+ type: "instance",
1802
+ deps: [bothWorkingDep]
1803
+ }, "URL present in both returns working deps (working wins)");
1804
+ assert.strictEqual(rows.length, 3, "one row returned per requested URL");
1805
+ });
1806
+ (0, import_qunit.test)("projection excludes error_doc, has_error, and is_deleted", async function(assert) {
1807
+ let url = `${testRealmURL}projection.json`;
1808
+ await setupIndex(adapter, [{
1809
+ realm_url: testRealmURL,
1810
+ current_version: 1
1811
+ }], {
1812
+ working: [{
1813
+ url,
1814
+ realm_version: 1,
1815
+ realm_url: testRealmURL,
1816
+ type: "instance",
1817
+ is_deleted: false,
1818
+ has_error: true,
1819
+ error_doc: {
1820
+ id: url,
1821
+ status: 500,
1822
+ title: "kaboom",
1823
+ message: "should not be returned",
1824
+ additionalErrors: null
1825
+ },
1826
+ deps: [],
1827
+ types: []
1828
+ }],
1829
+ production: []
1830
+ });
1831
+ let rows = await (await indexWriter.createBatch(new URL(testRealmURL), virtualNetwork)).getOrderingDependencyRows([url]);
1832
+ assert.strictEqual(rows.length, 1, "one row returned");
1833
+ let row = rows[0];
1834
+ assert.deepEqual(Object.keys(row).sort(), [
1835
+ "deps",
1836
+ "type",
1837
+ "url"
1838
+ ], "row exposes only url, type, deps — no error_doc / has_error / is_deleted");
1839
+ });
1840
+ });
1841
+ });
1842
+ //#endregion