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

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