@bestagentkits/render 0.2.0 → 0.3.0

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 (596) hide show
  1. package/CHANGELOG.md +100 -1
  2. package/README.md +157 -32
  3. package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
  4. package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
  5. package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
  6. package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
  7. package/dist/blocks/chart/chart-check.d.ts +15 -0
  8. package/dist/blocks/chart/chart-check.d.ts.map +1 -0
  9. package/dist/blocks/chart/chart-check.js +196 -0
  10. package/dist/blocks/chart/chart-check.js.map +1 -0
  11. package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
  12. package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
  13. package/dist/blocks/chart/chart-encoding-schema.js +39 -0
  14. package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
  15. package/dist/blocks/chart/chart-encodings.d.ts +29 -0
  16. package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
  17. package/dist/blocks/chart/chart-encodings.js +59 -0
  18. package/dist/blocks/chart/chart-encodings.js.map +1 -0
  19. package/dist/blocks/chart/chart-kinds.d.ts +18 -0
  20. package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
  21. package/dist/blocks/chart/chart-kinds.js +60 -0
  22. package/dist/blocks/chart/chart-kinds.js.map +1 -0
  23. package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
  24. package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
  25. package/dist/blocks/chart/chart-model-rows.js +153 -0
  26. package/dist/blocks/chart/chart-model-rows.js.map +1 -0
  27. package/dist/blocks/chart/chart-model.d.ts +17 -0
  28. package/dist/blocks/chart/chart-model.d.ts.map +1 -0
  29. package/dist/blocks/chart/chart-model.js +131 -0
  30. package/dist/blocks/chart/chart-model.js.map +1 -0
  31. package/dist/blocks/chart/chart-styles.d.ts +3 -0
  32. package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
  33. package/dist/blocks/chart/chart-styles.js +76 -0
  34. package/dist/blocks/chart/chart-styles.js.map +1 -0
  35. package/dist/blocks/chart/chart.d.ts +12 -0
  36. package/dist/blocks/chart/chart.d.ts.map +1 -0
  37. package/dist/blocks/chart/chart.js +73 -0
  38. package/dist/blocks/chart/chart.js.map +1 -0
  39. package/dist/blocks/chart/index.d.ts +4 -0
  40. package/dist/blocks/chart/index.d.ts.map +1 -0
  41. package/dist/blocks/chart/index.js +8 -0
  42. package/dist/blocks/chart/index.js.map +1 -0
  43. package/dist/blocks/composition/accordion.d.ts +4 -0
  44. package/dist/blocks/composition/accordion.d.ts.map +1 -0
  45. package/dist/blocks/composition/accordion.js +45 -0
  46. package/dist/blocks/composition/accordion.js.map +1 -0
  47. package/dist/blocks/composition/bento.d.ts +4 -0
  48. package/dist/blocks/composition/bento.d.ts.map +1 -0
  49. package/dist/blocks/composition/bento.js +91 -0
  50. package/dist/blocks/composition/bento.js.map +1 -0
  51. package/dist/blocks/composition/carousel.d.ts +4 -0
  52. package/dist/blocks/composition/carousel.d.ts.map +1 -0
  53. package/dist/blocks/composition/carousel.js +51 -0
  54. package/dist/blocks/composition/carousel.js.map +1 -0
  55. package/dist/blocks/composition/composition-runtime.d.ts +14 -0
  56. package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
  57. package/dist/blocks/composition/composition-runtime.js +136 -0
  58. package/dist/blocks/composition/composition-runtime.js.map +1 -0
  59. package/dist/blocks/composition/composition-styles.d.ts +10 -0
  60. package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
  61. package/dist/blocks/composition/composition-styles.js +80 -0
  62. package/dist/blocks/composition/composition-styles.js.map +1 -0
  63. package/dist/blocks/composition/index.d.ts +4 -0
  64. package/dist/blocks/composition/index.d.ts.map +1 -0
  65. package/dist/blocks/composition/index.js +11 -0
  66. package/dist/blocks/composition/index.js.map +1 -0
  67. package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
  68. package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
  69. package/dist/blocks/composition/nestable-blocks.js +92 -0
  70. package/dist/blocks/composition/nestable-blocks.js.map +1 -0
  71. package/dist/blocks/composition/tabs.d.ts +4 -0
  72. package/dist/blocks/composition/tabs.d.ts.map +1 -0
  73. package/dist/blocks/composition/tabs.js +48 -0
  74. package/dist/blocks/composition/tabs.js.map +1 -0
  75. package/dist/blocks/controls/checkbox.d.ts +12 -0
  76. package/dist/blocks/controls/checkbox.d.ts.map +1 -0
  77. package/dist/blocks/controls/checkbox.js +43 -0
  78. package/dist/blocks/controls/checkbox.js.map +1 -0
  79. package/dist/blocks/controls/choice-options.d.ts +24 -0
  80. package/dist/blocks/controls/choice-options.d.ts.map +1 -0
  81. package/dist/blocks/controls/choice-options.js +117 -0
  82. package/dist/blocks/controls/choice-options.js.map +1 -0
  83. package/dist/blocks/controls/control-shared.d.ts +66 -0
  84. package/dist/blocks/controls/control-shared.d.ts.map +1 -0
  85. package/dist/blocks/controls/control-shared.js +241 -0
  86. package/dist/blocks/controls/control-shared.js.map +1 -0
  87. package/dist/blocks/controls/controls-runtime.d.ts +17 -0
  88. package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
  89. package/dist/blocks/controls/controls-runtime.js +180 -0
  90. package/dist/blocks/controls/controls-runtime.js.map +1 -0
  91. package/dist/blocks/controls/controls-styles.d.ts +14 -0
  92. package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
  93. package/dist/blocks/controls/controls-styles.js +54 -0
  94. package/dist/blocks/controls/controls-styles.js.map +1 -0
  95. package/dist/blocks/controls/date-input.d.ts +6 -0
  96. package/dist/blocks/controls/date-input.d.ts.map +1 -0
  97. package/dist/blocks/controls/date-input.js +58 -0
  98. package/dist/blocks/controls/date-input.js.map +1 -0
  99. package/dist/blocks/controls/field-input.d.ts +10 -0
  100. package/dist/blocks/controls/field-input.d.ts.map +1 -0
  101. package/dist/blocks/controls/field-input.js +20 -0
  102. package/dist/blocks/controls/field-input.js.map +1 -0
  103. package/dist/blocks/controls/filter-bar.d.ts +11 -0
  104. package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
  105. package/dist/blocks/controls/filter-bar.js +115 -0
  106. package/dist/blocks/controls/filter-bar.js.map +1 -0
  107. package/dist/blocks/controls/index.d.ts +4 -0
  108. package/dist/blocks/controls/index.d.ts.map +1 -0
  109. package/dist/blocks/controls/index.js +41 -0
  110. package/dist/blocks/controls/index.js.map +1 -0
  111. package/dist/blocks/controls/number-input.d.ts +4 -0
  112. package/dist/blocks/controls/number-input.d.ts.map +1 -0
  113. package/dist/blocks/controls/number-input.js +62 -0
  114. package/dist/blocks/controls/number-input.js.map +1 -0
  115. package/dist/blocks/controls/radio-group.d.ts +4 -0
  116. package/dist/blocks/controls/radio-group.d.ts.map +1 -0
  117. package/dist/blocks/controls/radio-group.js +56 -0
  118. package/dist/blocks/controls/radio-group.js.map +1 -0
  119. package/dist/blocks/controls/select.d.ts +4 -0
  120. package/dist/blocks/controls/select.d.ts.map +1 -0
  121. package/dist/blocks/controls/select.js +49 -0
  122. package/dist/blocks/controls/select.js.map +1 -0
  123. package/dist/blocks/controls/switch.d.ts +4 -0
  124. package/dist/blocks/controls/switch.d.ts.map +1 -0
  125. package/dist/blocks/controls/switch.js +22 -0
  126. package/dist/blocks/controls/switch.js.map +1 -0
  127. package/dist/blocks/controls/text-input.d.ts +4 -0
  128. package/dist/blocks/controls/text-input.d.ts.map +1 -0
  129. package/dist/blocks/controls/text-input.js +42 -0
  130. package/dist/blocks/controls/text-input.js.map +1 -0
  131. package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
  132. package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
  133. package/dist/blocks/data-table/data-table-cells.js +154 -0
  134. package/dist/blocks/data-table/data-table-cells.js.map +1 -0
  135. package/dist/blocks/data-table/data-table-check.d.ts +10 -0
  136. package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
  137. package/dist/blocks/data-table/data-table-check.js +99 -0
  138. package/dist/blocks/data-table/data-table-check.js.map +1 -0
  139. package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
  140. package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
  141. package/dist/blocks/data-table/data-table-columns.js +155 -0
  142. package/dist/blocks/data-table/data-table-columns.js.map +1 -0
  143. package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
  144. package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
  145. package/dist/blocks/data-table/data-table-runtime.js +106 -0
  146. package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
  147. package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
  148. package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
  149. package/dist/blocks/data-table/data-table-styles.js +74 -0
  150. package/dist/blocks/data-table/data-table-styles.js.map +1 -0
  151. package/dist/blocks/data-table/data-table.d.ts +17 -0
  152. package/dist/blocks/data-table/data-table.d.ts.map +1 -0
  153. package/dist/blocks/data-table/data-table.js +159 -0
  154. package/dist/blocks/data-table/data-table.js.map +1 -0
  155. package/dist/blocks/data-table/index.d.ts +4 -0
  156. package/dist/blocks/data-table/index.d.ts.map +1 -0
  157. package/dist/blocks/data-table/index.js +18 -0
  158. package/dist/blocks/data-table/index.js.map +1 -0
  159. package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
  160. package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
  161. package/dist/blocks/engineering/api-endpoint.js +174 -0
  162. package/dist/blocks/engineering/api-endpoint.js.map +1 -0
  163. package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
  164. package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
  165. package/dist/blocks/engineering/engineering-helpers.js +156 -0
  166. package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
  167. package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
  168. package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
  169. package/dist/blocks/engineering/engineering-styles.js +174 -0
  170. package/dist/blocks/engineering/engineering-styles.js.map +1 -0
  171. package/dist/blocks/engineering/index.d.ts +4 -0
  172. package/dist/blocks/engineering/index.d.ts.map +1 -0
  173. package/dist/blocks/engineering/index.js +30 -0
  174. package/dist/blocks/engineering/index.js.map +1 -0
  175. package/dist/blocks/engineering/kanban.d.ts +11 -0
  176. package/dist/blocks/engineering/kanban.d.ts.map +1 -0
  177. package/dist/blocks/engineering/kanban.js +162 -0
  178. package/dist/blocks/engineering/kanban.js.map +1 -0
  179. package/dist/blocks/engineering/log-viewer.d.ts +14 -0
  180. package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
  181. package/dist/blocks/engineering/log-viewer.js +158 -0
  182. package/dist/blocks/engineering/log-viewer.js.map +1 -0
  183. package/dist/blocks/engineering/roadmap.d.ts +13 -0
  184. package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
  185. package/dist/blocks/engineering/roadmap.js +197 -0
  186. package/dist/blocks/engineering/roadmap.js.map +1 -0
  187. package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
  188. package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
  189. package/dist/blocks/engineering/schema-viewer.js +124 -0
  190. package/dist/blocks/engineering/schema-viewer.js.map +1 -0
  191. package/dist/blocks/engineering/test-results.d.ts +12 -0
  192. package/dist/blocks/engineering/test-results.d.ts.map +1 -0
  193. package/dist/blocks/engineering/test-results.js +180 -0
  194. package/dist/blocks/engineering/test-results.js.map +1 -0
  195. package/dist/blocks/evidence/annotated-image.d.ts +15 -0
  196. package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
  197. package/dist/blocks/evidence/annotated-image.js +99 -0
  198. package/dist/blocks/evidence/annotated-image.js.map +1 -0
  199. package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
  200. package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
  201. package/dist/blocks/evidence/benchmark-comparison.js +262 -0
  202. package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
  203. package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
  204. package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
  205. package/dist/blocks/evidence/benchmark-verdict.js +31 -0
  206. package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
  207. package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
  208. package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
  209. package/dist/blocks/evidence/evidence-helpers.js +87 -0
  210. package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
  211. package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
  212. package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
  213. package/dist/blocks/evidence/evidence-styles.js +88 -0
  214. package/dist/blocks/evidence/evidence-styles.js.map +1 -0
  215. package/dist/blocks/evidence/index.d.ts +4 -0
  216. package/dist/blocks/evidence/index.d.ts.map +1 -0
  217. package/dist/blocks/evidence/index.js +15 -0
  218. package/dist/blocks/evidence/index.js.map +1 -0
  219. package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
  220. package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
  221. package/dist/blocks/evidence/metric-breakdown.js +203 -0
  222. package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
  223. package/dist/blocks/evidence/references.d.ts +13 -0
  224. package/dist/blocks/evidence/references.d.ts.map +1 -0
  225. package/dist/blocks/evidence/references.js +103 -0
  226. package/dist/blocks/evidence/references.js.map +1 -0
  227. package/dist/blocks/index.d.ts +8 -0
  228. package/dist/blocks/index.d.ts.map +1 -0
  229. package/dist/blocks/index.js +24 -0
  230. package/dist/blocks/index.js.map +1 -0
  231. package/dist/blocks/layout/grid-item.d.ts +4 -0
  232. package/dist/blocks/layout/grid-item.d.ts.map +1 -0
  233. package/dist/blocks/layout/grid-item.js +65 -0
  234. package/dist/blocks/layout/grid-item.js.map +1 -0
  235. package/dist/blocks/layout/grid.d.ts +9 -0
  236. package/dist/blocks/layout/grid.d.ts.map +1 -0
  237. package/dist/blocks/layout/grid.js +99 -0
  238. package/dist/blocks/layout/grid.js.map +1 -0
  239. package/dist/blocks/layout/index.d.ts +4 -0
  240. package/dist/blocks/layout/index.d.ts.map +1 -0
  241. package/dist/blocks/layout/index.js +23 -0
  242. package/dist/blocks/layout/index.js.map +1 -0
  243. package/dist/blocks/layout/layout-styles.d.ts +40 -0
  244. package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
  245. package/dist/blocks/layout/layout-styles.js +110 -0
  246. package/dist/blocks/layout/layout-styles.js.map +1 -0
  247. package/dist/blocks/layout/main-aside.d.ts +4 -0
  248. package/dist/blocks/layout/main-aside.d.ts.map +1 -0
  249. package/dist/blocks/layout/main-aside.js +21 -0
  250. package/dist/blocks/layout/main-aside.js.map +1 -0
  251. package/dist/blocks/layout/rail-layout.d.ts +4 -0
  252. package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
  253. package/dist/blocks/layout/rail-layout.js +33 -0
  254. package/dist/blocks/layout/rail-layout.js.map +1 -0
  255. package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
  256. package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
  257. package/dist/blocks/layout/semantic-layout-parts.js +9 -0
  258. package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
  259. package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
  260. package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
  261. package/dist/blocks/layout/sidebar-layout.js +30 -0
  262. package/dist/blocks/layout/sidebar-layout.js.map +1 -0
  263. package/dist/blocks/layout/split.d.ts +4 -0
  264. package/dist/blocks/layout/split.d.ts.map +1 -0
  265. package/dist/blocks/layout/split.js +23 -0
  266. package/dist/blocks/layout/split.js.map +1 -0
  267. package/dist/blocks/layout/stack.d.ts +4 -0
  268. package/dist/blocks/layout/stack.d.ts.map +1 -0
  269. package/dist/blocks/layout/stack.js +36 -0
  270. package/dist/blocks/layout/stack.js.map +1 -0
  271. package/dist/blocks/product/calendar-dates.d.ts +59 -0
  272. package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
  273. package/dist/blocks/product/calendar-dates.js +100 -0
  274. package/dist/blocks/product/calendar-dates.js.map +1 -0
  275. package/dist/blocks/product/calendar.d.ts +12 -0
  276. package/dist/blocks/product/calendar.d.ts.map +1 -0
  277. package/dist/blocks/product/calendar.js +125 -0
  278. package/dist/blocks/product/calendar.js.map +1 -0
  279. package/dist/blocks/product/feature-matrix.d.ts +4 -0
  280. package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
  281. package/dist/blocks/product/feature-matrix.js +72 -0
  282. package/dist/blocks/product/feature-matrix.js.map +1 -0
  283. package/dist/blocks/product/gallery.d.ts +14 -0
  284. package/dist/blocks/product/gallery.d.ts.map +1 -0
  285. package/dist/blocks/product/gallery.js +86 -0
  286. package/dist/blocks/product/gallery.js.map +1 -0
  287. package/dist/blocks/product/index.d.ts +4 -0
  288. package/dist/blocks/product/index.d.ts.map +1 -0
  289. package/dist/blocks/product/index.js +40 -0
  290. package/dist/blocks/product/index.js.map +1 -0
  291. package/dist/blocks/product/logo-cloud.d.ts +4 -0
  292. package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
  293. package/dist/blocks/product/logo-cloud.js +42 -0
  294. package/dist/blocks/product/logo-cloud.js.map +1 -0
  295. package/dist/blocks/product/people.d.ts +4 -0
  296. package/dist/blocks/product/people.d.ts.map +1 -0
  297. package/dist/blocks/product/people.js +53 -0
  298. package/dist/blocks/product/people.js.map +1 -0
  299. package/dist/blocks/product/pricing.d.ts +4 -0
  300. package/dist/blocks/product/pricing.d.ts.map +1 -0
  301. package/dist/blocks/product/pricing.js +86 -0
  302. package/dist/blocks/product/pricing.js.map +1 -0
  303. package/dist/blocks/product/product-helpers.d.ts +22 -0
  304. package/dist/blocks/product/product-helpers.d.ts.map +1 -0
  305. package/dist/blocks/product/product-helpers.js +48 -0
  306. package/dist/blocks/product/product-helpers.js.map +1 -0
  307. package/dist/blocks/product/product-runtime.d.ts +15 -0
  308. package/dist/blocks/product/product-runtime.d.ts.map +1 -0
  309. package/dist/blocks/product/product-runtime.js +97 -0
  310. package/dist/blocks/product/product-runtime.js.map +1 -0
  311. package/dist/blocks/product/product-styles.d.ts +14 -0
  312. package/dist/blocks/product/product-styles.d.ts.map +1 -0
  313. package/dist/blocks/product/product-styles.js +120 -0
  314. package/dist/blocks/product/product-styles.js.map +1 -0
  315. package/dist/blocks/product/testimonial.d.ts +8 -0
  316. package/dist/blocks/product/testimonial.d.ts.map +1 -0
  317. package/dist/blocks/product/testimonial.js +67 -0
  318. package/dist/blocks/product/testimonial.js.map +1 -0
  319. package/dist/cli.d.ts.map +1 -1
  320. package/dist/cli.js +143 -30
  321. package/dist/cli.js.map +1 -1
  322. package/dist/data/data-json-schema.d.ts +9 -0
  323. package/dist/data/data-json-schema.d.ts.map +1 -0
  324. package/dist/data/data-json-schema.js +48 -0
  325. package/dist/data/data-json-schema.js.map +1 -0
  326. package/dist/data/dataset-types.d.ts +47 -0
  327. package/dist/data/dataset-types.d.ts.map +1 -0
  328. package/dist/data/dataset-types.js +49 -0
  329. package/dist/data/dataset-types.js.map +1 -0
  330. package/dist/data/format-value.d.ts +39 -0
  331. package/dist/data/format-value.d.ts.map +1 -0
  332. package/dist/data/format-value.js +214 -0
  333. package/dist/data/format-value.js.map +1 -0
  334. package/dist/data/resolve-block-data.d.ts +24 -0
  335. package/dist/data/resolve-block-data.d.ts.map +1 -0
  336. package/dist/data/resolve-block-data.js +190 -0
  337. package/dist/data/resolve-block-data.js.map +1 -0
  338. package/dist/data/transform-pipeline.d.ts +65 -0
  339. package/dist/data/transform-pipeline.d.ts.map +1 -0
  340. package/dist/data/transform-pipeline.js +234 -0
  341. package/dist/data/transform-pipeline.js.map +1 -0
  342. package/dist/data/validate-datasets.d.ts +22 -0
  343. package/dist/data/validate-datasets.d.ts.map +1 -0
  344. package/dist/data/validate-datasets.js +137 -0
  345. package/dist/data/validate-datasets.js.map +1 -0
  346. package/dist/diagram/adapter-markup-fit.d.ts +44 -0
  347. package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
  348. package/dist/diagram/adapter-markup-fit.js +292 -0
  349. package/dist/diagram/adapter-markup-fit.js.map +1 -0
  350. package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
  351. package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
  352. package/dist/diagram/adapter-stylesheet-filter.js +245 -0
  353. package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
  354. package/dist/diagram/adapter.d.ts +17 -0
  355. package/dist/diagram/adapter.d.ts.map +1 -1
  356. package/dist/diagram/adapter.js +43 -2
  357. package/dist/diagram/adapter.js.map +1 -1
  358. package/dist/index.d.ts +14 -1
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +6 -0
  361. package/dist/index.js.map +1 -1
  362. package/dist/ir.d.ts +18 -0
  363. package/dist/ir.d.ts.map +1 -1
  364. package/dist/ir.js.map +1 -1
  365. package/dist/mcp/mcp-http-transport.d.ts +68 -0
  366. package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
  367. package/dist/mcp/mcp-http-transport.js +140 -0
  368. package/dist/mcp/mcp-http-transport.js.map +1 -0
  369. package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
  370. package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
  371. package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
  372. package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
  373. package/dist/mcp/mcp-local-tools.d.ts +20 -0
  374. package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
  375. package/dist/mcp/mcp-local-tools.js +58 -0
  376. package/dist/mcp/mcp-local-tools.js.map +1 -0
  377. package/dist/mcp/mcp-protocol.d.ts +79 -0
  378. package/dist/mcp/mcp-protocol.d.ts.map +1 -0
  379. package/dist/mcp/mcp-protocol.js +83 -0
  380. package/dist/mcp/mcp-protocol.js.map +1 -0
  381. package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
  382. package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
  383. package/dist/mcp/mcp-stdio-transport.js +73 -0
  384. package/dist/mcp/mcp-stdio-transport.js.map +1 -0
  385. package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
  386. package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
  387. package/dist/mcp/mcp-tool-definitions.js +246 -0
  388. package/dist/mcp/mcp-tool-definitions.js.map +1 -0
  389. package/dist/mcp-server.d.ts +6 -33
  390. package/dist/mcp-server.d.ts.map +1 -1
  391. package/dist/mcp-server.js +5 -270
  392. package/dist/mcp-server.js.map +1 -1
  393. package/dist/recipes/index.d.ts +27 -0
  394. package/dist/recipes/index.d.ts.map +1 -0
  395. package/dist/recipes/index.js +30 -0
  396. package/dist/recipes/index.js.map +1 -0
  397. package/dist/recipes/recipes.generated.d.ts +8 -0
  398. package/dist/recipes/recipes.generated.d.ts.map +1 -0
  399. package/dist/recipes/recipes.generated.js +704 -0
  400. package/dist/recipes/recipes.generated.js.map +1 -0
  401. package/dist/registry/actions.d.ts +2 -0
  402. package/dist/registry/actions.d.ts.map +1 -1
  403. package/dist/registry/actions.js +3 -1
  404. package/dist/registry/actions.js.map +1 -1
  405. package/dist/registry/block-module.d.ts +65 -0
  406. package/dist/registry/block-module.d.ts.map +1 -0
  407. package/dist/registry/block-module.js +19 -0
  408. package/dist/registry/block-module.js.map +1 -0
  409. package/dist/registry/catalog-search.d.ts +32 -0
  410. package/dist/registry/catalog-search.d.ts.map +1 -0
  411. package/dist/registry/catalog-search.js +122 -0
  412. package/dist/registry/catalog-search.js.map +1 -0
  413. package/dist/registry/define-helpers.d.ts +89 -0
  414. package/dist/registry/define-helpers.d.ts.map +1 -0
  415. package/dist/registry/define-helpers.js +87 -0
  416. package/dist/registry/define-helpers.js.map +1 -0
  417. package/dist/registry/describe-many.d.ts +58 -0
  418. package/dist/registry/describe-many.d.ts.map +1 -0
  419. package/dist/registry/describe-many.js +156 -0
  420. package/dist/registry/describe-many.js.map +1 -0
  421. package/dist/registry/prop-schema.d.ts +32 -1
  422. package/dist/registry/prop-schema.d.ts.map +1 -1
  423. package/dist/registry/prop-schema.js +108 -2
  424. package/dist/registry/prop-schema.js.map +1 -1
  425. package/dist/registry/registry-builder.d.ts +17 -0
  426. package/dist/registry/registry-builder.d.ts.map +1 -0
  427. package/dist/registry/registry-builder.js +158 -0
  428. package/dist/registry/registry-builder.js.map +1 -0
  429. package/dist/registry/registry.d.ts +32 -5
  430. package/dist/registry/registry.d.ts.map +1 -1
  431. package/dist/registry/registry.js +67 -14
  432. package/dist/registry/registry.js.map +1 -1
  433. package/dist/registry/roster.d.ts +34 -5
  434. package/dist/registry/roster.d.ts.map +1 -1
  435. package/dist/registry/roster.js +184 -224
  436. package/dist/registry/roster.js.map +1 -1
  437. package/dist/render/block-helpers.d.ts +11 -18
  438. package/dist/render/block-helpers.d.ts.map +1 -1
  439. package/dist/render/block-helpers.js +14 -44
  440. package/dist/render/block-helpers.js.map +1 -1
  441. package/dist/render/blocks.d.ts +9 -33
  442. package/dist/render/blocks.d.ts.map +1 -1
  443. package/dist/render/blocks.js +56 -180
  444. package/dist/render/blocks.js.map +1 -1
  445. package/dist/render/chart-figure-encoded.d.ts +11 -0
  446. package/dist/render/chart-figure-encoded.d.ts.map +1 -0
  447. package/dist/render/chart-figure-encoded.js +81 -0
  448. package/dist/render/chart-figure-encoded.js.map +1 -0
  449. package/dist/render/chart-kinds-cartesian.d.ts +14 -0
  450. package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
  451. package/dist/render/chart-kinds-cartesian.js +122 -0
  452. package/dist/render/chart-kinds-cartesian.js.map +1 -0
  453. package/dist/render/chart-kinds-composite.d.ts +16 -0
  454. package/dist/render/chart-kinds-composite.d.ts.map +1 -0
  455. package/dist/render/chart-kinds-composite.js +144 -0
  456. package/dist/render/chart-kinds-composite.js.map +1 -0
  457. package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
  458. package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
  459. package/dist/render/chart-kinds-gauge-treemap.js +101 -0
  460. package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
  461. package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
  462. package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
  463. package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
  464. package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
  465. package/dist/render/chart-overlays.d.ts +18 -0
  466. package/dist/render/chart-overlays.d.ts.map +1 -0
  467. package/dist/render/chart-overlays.js +58 -0
  468. package/dist/render/chart-overlays.js.map +1 -0
  469. package/dist/render/chart-scales.d.ts +83 -0
  470. package/dist/render/chart-scales.d.ts.map +1 -0
  471. package/dist/render/chart-scales.js +166 -0
  472. package/dist/render/chart-scales.js.map +1 -0
  473. package/dist/render/chart-svg-parts.d.ts +50 -0
  474. package/dist/render/chart-svg-parts.d.ts.map +1 -0
  475. package/dist/render/chart-svg-parts.js +125 -0
  476. package/dist/render/chart-svg-parts.js.map +1 -0
  477. package/dist/render/chart-text.d.ts +18 -0
  478. package/dist/render/chart-text.d.ts.map +1 -0
  479. package/dist/render/chart-text.js +69 -0
  480. package/dist/render/chart-text.js.map +1 -0
  481. package/dist/render/chart-treemap-layout.d.ts +17 -0
  482. package/dist/render/chart-treemap-layout.d.ts.map +1 -0
  483. package/dist/render/chart-treemap-layout.js +74 -0
  484. package/dist/render/chart-treemap-layout.js.map +1 -0
  485. package/dist/render/chart-types.d.ts +107 -0
  486. package/dist/render/chart-types.d.ts.map +1 -0
  487. package/dist/render/chart-types.js +11 -0
  488. package/dist/render/chart-types.js.map +1 -0
  489. package/dist/render/charts.d.ts +28 -11
  490. package/dist/render/charts.d.ts.map +1 -1
  491. package/dist/render/charts.js +38 -117
  492. package/dist/render/charts.js.map +1 -1
  493. package/dist/render/derived-variables.d.ts +20 -0
  494. package/dist/render/derived-variables.d.ts.map +1 -1
  495. package/dist/render/derived-variables.js +23 -0
  496. package/dist/render/derived-variables.js.map +1 -1
  497. package/dist/render/document.d.ts +11 -0
  498. package/dist/render/document.d.ts.map +1 -1
  499. package/dist/render/document.js +20 -3
  500. package/dist/render/document.js.map +1 -1
  501. package/dist/render/escape.d.ts +10 -0
  502. package/dist/render/escape.d.ts.map +1 -1
  503. package/dist/render/escape.js +28 -0
  504. package/dist/render/escape.js.map +1 -1
  505. package/dist/render/feature-styles.d.ts.map +1 -1
  506. package/dist/render/feature-styles.js +42 -80
  507. package/dist/render/feature-styles.js.map +1 -1
  508. package/dist/render/outline.d.ts +1 -1
  509. package/dist/render/outline.d.ts.map +1 -1
  510. package/dist/render/outline.js +4 -1
  511. package/dist/render/outline.js.map +1 -1
  512. package/dist/render/recipe-styles.d.ts +26 -0
  513. package/dist/render/recipe-styles.d.ts.map +1 -0
  514. package/dist/render/recipe-styles.js +218 -0
  515. package/dist/render/recipe-styles.js.map +1 -0
  516. package/dist/render/render-context.d.ts +40 -0
  517. package/dist/render/render-context.d.ts.map +1 -0
  518. package/dist/render/render-context.js +16 -0
  519. package/dist/render/render-context.js.map +1 -0
  520. package/dist/render/render.d.ts +7 -0
  521. package/dist/render/render.d.ts.map +1 -1
  522. package/dist/render/render.js +68 -44
  523. package/dist/render/render.js.map +1 -1
  524. package/dist/render/runtime.d.ts +4 -1
  525. package/dist/render/runtime.d.ts.map +1 -1
  526. package/dist/render/runtime.js +91 -118
  527. package/dist/render/runtime.js.map +1 -1
  528. package/dist/render/showcase-blocks.d.ts +5 -0
  529. package/dist/render/showcase-blocks.d.ts.map +1 -1
  530. package/dist/render/showcase-blocks.js +8 -28
  531. package/dist/render/showcase-blocks.js.map +1 -1
  532. package/dist/render/showcase-styles.d.ts.map +1 -1
  533. package/dist/render/showcase-styles.js +15 -31
  534. package/dist/render/showcase-styles.js.map +1 -1
  535. package/dist/render/style-units.d.ts +17 -0
  536. package/dist/render/style-units.d.ts.map +1 -0
  537. package/dist/render/style-units.js +24 -0
  538. package/dist/render/style-units.js.map +1 -0
  539. package/dist/render/styles.d.ts.map +1 -1
  540. package/dist/render/styles.js +8 -5
  541. package/dist/render/styles.js.map +1 -1
  542. package/dist/render/tone.d.ts +14 -0
  543. package/dist/render/tone.d.ts.map +1 -0
  544. package/dist/render/tone.js +40 -0
  545. package/dist/render/tone.js.map +1 -0
  546. package/dist/render/verify.d.ts +3 -0
  547. package/dist/render/verify.d.ts.map +1 -1
  548. package/dist/render/verify.js +15 -2
  549. package/dist/render/verify.js.map +1 -1
  550. package/dist/spec/asset-references.d.ts +35 -0
  551. package/dist/spec/asset-references.d.ts.map +1 -0
  552. package/dist/spec/asset-references.js +93 -0
  553. package/dist/spec/asset-references.js.map +1 -0
  554. package/dist/spec/bounds.d.ts +6 -0
  555. package/dist/spec/bounds.d.ts.map +1 -1
  556. package/dist/spec/bounds.js +7 -0
  557. package/dist/spec/bounds.js.map +1 -1
  558. package/dist/spec/conditions.d.ts +43 -0
  559. package/dist/spec/conditions.d.ts.map +1 -0
  560. package/dist/spec/conditions.js +179 -0
  561. package/dist/spec/conditions.js.map +1 -0
  562. package/dist/spec/network-policy.d.ts +33 -0
  563. package/dist/spec/network-policy.d.ts.map +1 -0
  564. package/dist/spec/network-policy.js +57 -0
  565. package/dist/spec/network-policy.js.map +1 -0
  566. package/dist/spec/normalize.d.ts +7 -2
  567. package/dist/spec/normalize.d.ts.map +1 -1
  568. package/dist/spec/normalize.js +203 -57
  569. package/dist/spec/normalize.js.map +1 -1
  570. package/dist/theme/dialect-presets.d.ts +12 -0
  571. package/dist/theme/dialect-presets.d.ts.map +1 -0
  572. package/dist/theme/dialect-presets.js +214 -0
  573. package/dist/theme/dialect-presets.js.map +1 -0
  574. package/dist/theme/load-theme.d.ts +9 -1
  575. package/dist/theme/load-theme.d.ts.map +1 -1
  576. package/dist/theme/load-theme.js +25 -2
  577. package/dist/theme/load-theme.js.map +1 -1
  578. package/dist/theme/preset-builder.d.ts +36 -0
  579. package/dist/theme/preset-builder.d.ts.map +1 -0
  580. package/dist/theme/preset-builder.js +51 -0
  581. package/dist/theme/preset-builder.js.map +1 -0
  582. package/dist/theme/presets.d.ts +4 -7
  583. package/dist/theme/presets.d.ts.map +1 -1
  584. package/dist/theme/presets.js +7 -40
  585. package/dist/theme/presets.js.map +1 -1
  586. package/dist/theme/recipes.d.ts +38 -0
  587. package/dist/theme/recipes.d.ts.map +1 -0
  588. package/dist/theme/recipes.js +96 -0
  589. package/dist/theme/recipes.js.map +1 -0
  590. package/dist/theme/theme-catalog.d.ts.map +1 -1
  591. package/dist/theme/theme-catalog.js +16 -0
  592. package/dist/theme/theme-catalog.js.map +1 -1
  593. package/dist/version.d.ts +1 -1
  594. package/dist/version.js +1 -1
  595. package/llms.txt +9 -5
  596. package/package.json +6 -2
@@ -0,0 +1,292 @@
1
+ /**
2
+ * The structural pass over diagram adapter markup.
3
+ *
4
+ * Adapter markup is embedded inside the page's own elements, so it must stay a
5
+ * self-contained fragment: it may not close an element it did not open, leave
6
+ * one open to swallow the page that follows, switch the HTML parser into a mode
7
+ * that reads the rest of the page as text, or carry the attributes the page and
8
+ * its runtime use as hooks. This pass walks the fragment once, in step with how
9
+ * a browser would tokenize it, and refuses anything it cannot read the same way.
10
+ *
11
+ * The same walk fits accepted markup to the page's Content Security Policy:
12
+ * `<style>` elements are marked for the page style nonce and their stylesheets
13
+ * are filtered and scoped to the diagram canvas, and inline `style` attributes,
14
+ * which the policy refuses, are removed and counted.
15
+ *
16
+ * Every step either advances past what it read or stops the walk, and no
17
+ * pattern can scan past the next `<` except a quoted attribute value, so the
18
+ * walk is linear in the length of the markup.
19
+ */
20
+ import { filterAdapterStylesheet, scopeAdapterStylesheet } from './adapter-stylesheet-filter.js';
21
+ /**
22
+ * Attribute that marks an adapter `<style>` element for the page style nonce.
23
+ *
24
+ * The nonce is a hash of the finished page stylesheet, which is only known
25
+ * after every block has rendered, so the renderer marks the element and the
26
+ * document assembler fills the nonce in (see `src/render/document.ts`). Adapter
27
+ * markup that contains the marker itself is refused, so every marker on the
28
+ * page is one this module wrote.
29
+ */
30
+ export const ADAPTER_STYLE_MARKER = 'data-ak-adapter-style';
31
+ /** HTML whitespace. JavaScript's `\s` also matches characters HTML does not. */
32
+ const WS = '[\\t\\n\\f\\r ]';
33
+ /**
34
+ * An attribute name. It excludes `<`, so an unterminated tag fails at the next
35
+ * `<` instead of rescanning the rest of the markup.
36
+ */
37
+ const ATTRIBUTE_NAME = `[^\\t\\n\\f\\r "'<>/=]+`;
38
+ /** An optional `=` and a quoted or unquoted attribute value. */
39
+ const ATTRIBUTE_VALUE = `(?:${WS}*=${WS}*(?:"[^"]*"|'[^']*'|[^\\t\\n\\f\\r "'=<>\`]+))?`;
40
+ /** A start tag at the current position: name, attribute list, self-closing slash. */
41
+ const START_TAG = new RegExp(`<([A-Za-z][A-Za-z0-9:-]*)((?:${WS}+${ATTRIBUTE_NAME}${ATTRIBUTE_VALUE})*)${WS}*(\\/?)>`, 'yu');
42
+ /** An end tag at the current position. */
43
+ const END_TAG = new RegExp(`</([A-Za-z][A-Za-z0-9:-]*)${WS}*>`, 'yu');
44
+ /** One attribute inside a start tag's attribute list: its name and raw value. */
45
+ const ATTRIBUTE = new RegExp(`${WS}+(${ATTRIBUTE_NAME})(?:${WS}*=${WS}*("[^"]*"|'[^']*'|[^\\t\\n\\f\\r "'=<>\`]+))?`, 'gu');
46
+ /**
47
+ * A same-document fragment reference, written literally. Character references
48
+ * are not decoded here, so a value that uses one is refused rather than read.
49
+ */
50
+ const FRAGMENT_REFERENCE = /^#[A-Za-z0-9_.:-]+$/u;
51
+ /** Attributes, besides any `*:href`, that make the browser fetch or navigate to a URL. */
52
+ const URL_ATTRIBUTES = new Set([
53
+ 'href',
54
+ 'src',
55
+ 'srcset',
56
+ 'poster',
57
+ 'action',
58
+ 'formaction',
59
+ 'background',
60
+ 'data',
61
+ 'codebase',
62
+ 'ping',
63
+ ]);
64
+ /** True for an attribute that makes the browser fetch or navigate to a URL. */
65
+ function isUrlAttribute(lowered) {
66
+ return URL_ATTRIBUTES.has(lowered) || lowered.endsWith(':href');
67
+ }
68
+ /**
69
+ * SVG animation can write a URL into another attribute after parsing
70
+ * (`<set attributeName="href" to="https://…">`), so animating a URL attribute
71
+ * is refused like writing one.
72
+ */
73
+ function animatesUrlAttribute(lowered, value) {
74
+ return lowered === 'attributename' && isUrlAttribute(unquote(value).trim().toLowerCase());
75
+ }
76
+ /** An attribute value without its quotes; an attribute with no value is empty. */
77
+ function unquote(value) {
78
+ if (value === undefined)
79
+ return '';
80
+ const first = value[0];
81
+ return first === '"' || first === "'" ? value.slice(1, -1) : value;
82
+ }
83
+ /**
84
+ * Elements refused anywhere. Some execute, frame or submit; some switch the
85
+ * parser into raw text (`plaintext` never ends, so it would swallow the rest
86
+ * of the page); some merge attributes into the page's own `html` or `body`, or
87
+ * belong in the document head.
88
+ */
89
+ const FORBIDDEN_ELEMENTS = new Set([
90
+ 'script',
91
+ 'iframe',
92
+ 'object',
93
+ 'embed',
94
+ 'form',
95
+ 'base',
96
+ 'foreignobject',
97
+ 'plaintext',
98
+ 'textarea',
99
+ 'xmp',
100
+ 'noembed',
101
+ 'noframes',
102
+ 'noscript',
103
+ 'template',
104
+ 'html',
105
+ 'head',
106
+ 'body',
107
+ 'frameset',
108
+ 'frame',
109
+ 'meta',
110
+ 'link',
111
+ 'math',
112
+ ]);
113
+ /** HTML elements that never have content or an end tag. */
114
+ const VOID_ELEMENTS = new Set([
115
+ 'area',
116
+ 'br',
117
+ 'col',
118
+ 'hr',
119
+ 'img',
120
+ 'input',
121
+ 'source',
122
+ 'track',
123
+ 'wbr',
124
+ ]);
125
+ /**
126
+ * HTML elements that, met inside SVG, make the parser close the SVG and carry
127
+ * on in HTML. The browser's tree would then differ from the markup's nesting,
128
+ * so they are refused there.
129
+ */
130
+ const SVG_BREAKOUT_ELEMENTS = new Set([
131
+ 'b',
132
+ 'big',
133
+ 'blockquote',
134
+ 'br',
135
+ 'center',
136
+ 'code',
137
+ 'dd',
138
+ 'div',
139
+ 'dl',
140
+ 'dt',
141
+ 'em',
142
+ 'font',
143
+ 'h1',
144
+ 'h2',
145
+ 'h3',
146
+ 'h4',
147
+ 'h5',
148
+ 'h6',
149
+ 'hr',
150
+ 'i',
151
+ 'img',
152
+ 'li',
153
+ 'listing',
154
+ 'menu',
155
+ 'nobr',
156
+ 'ol',
157
+ 'p',
158
+ 'pre',
159
+ 'ruby',
160
+ 's',
161
+ 'small',
162
+ 'span',
163
+ 'strike',
164
+ 'strong',
165
+ 'sub',
166
+ 'sup',
167
+ 'table',
168
+ 'tt',
169
+ 'u',
170
+ 'ul',
171
+ 'var',
172
+ ]);
173
+ /** SVG elements whose content the parser reads as HTML again. */
174
+ const SVG_HTML_INTEGRATION_POINTS = new Set(['title', 'desc']);
175
+ /** Attribute prefix the page and its runtime use as hooks. */
176
+ const RESERVED_ATTRIBUTE_PREFIX = 'data-ak-';
177
+ function refuse(reason) {
178
+ return { ok: false, reason };
179
+ }
180
+ /**
181
+ * Walk adapter markup, refuse what cannot be embedded safely, and fit the rest
182
+ * to the page's Content Security Policy.
183
+ */
184
+ export function fitAdapterMarkup(markup, scope) {
185
+ const open = [];
186
+ const startTag = new RegExp(START_TAG);
187
+ const endTag = new RegExp(END_TAG);
188
+ let removedInlineStyles = 0;
189
+ let fitted = '';
190
+ let copied = 0;
191
+ let index = markup.indexOf('<');
192
+ while (index >= 0) {
193
+ const next = markup[index + 1] ?? '';
194
+ if (next === '!' || next === '?')
195
+ return refuse('comment or markup declaration');
196
+ if (next === '/') {
197
+ endTag.lastIndex = index;
198
+ const match = endTag.exec(markup);
199
+ if (match === null)
200
+ return refuse('malformed end tag');
201
+ const name = (match[1] ?? '').toLowerCase();
202
+ if (open.pop()?.name !== name)
203
+ return refuse(`end tag </${name}> without a matching element`);
204
+ index = markup.indexOf('<', endTag.lastIndex);
205
+ continue;
206
+ }
207
+ if (!/[A-Za-z]/u.test(next)) {
208
+ // A `<` that cannot start a tag is text to the browser too.
209
+ index = markup.indexOf('<', index + 1);
210
+ continue;
211
+ }
212
+ startTag.lastIndex = index;
213
+ const match = startTag.exec(markup);
214
+ if (match === null)
215
+ return refuse('malformed tag');
216
+ const [tag, rawName = '', attributes = '', selfClosing = ''] = match;
217
+ const name = rawName.toLowerCase();
218
+ if (FORBIDDEN_ELEMENTS.has(name))
219
+ return refuse(`${name} element`);
220
+ const parent = open.at(-1);
221
+ const inSvg = parent?.svgContent === true;
222
+ if (inSvg && SVG_BREAKOUT_ELEMENTS.has(name))
223
+ return refuse(`HTML ${name} element inside svg`);
224
+ if (!inSvg && name === 'title')
225
+ return refuse('title element outside svg');
226
+ const isSvgElement = inSvg || name === 'svg';
227
+ let reserved;
228
+ let external;
229
+ const kept = attributes.replace(ATTRIBUTE, (attribute, attributeName, value) => {
230
+ const lowered = attributeName.toLowerCase();
231
+ if (lowered.startsWith(RESERVED_ATTRIBUTE_PREFIX))
232
+ reserved = lowered;
233
+ // A drawing may point at its own gradients, markers and symbols, never
234
+ // at another document, a remote resource or a navigation target.
235
+ if (isUrlAttribute(lowered) && !FRAGMENT_REFERENCE.test(unquote(value)))
236
+ external = lowered;
237
+ if (animatesUrlAttribute(lowered, value))
238
+ external = `${lowered}=${unquote(value)}`;
239
+ if (lowered === 'style') {
240
+ removedInlineStyles += 1;
241
+ return '';
242
+ }
243
+ return lowered === 'nonce' ? '' : attribute;
244
+ });
245
+ if (reserved !== undefined)
246
+ return refuse(`reserved attribute ${reserved}`);
247
+ if (external !== undefined) {
248
+ return refuse(`${external} attribute that is not a same-document #fragment`);
249
+ }
250
+ fitted += markup.slice(copied, index);
251
+ copied = index + tag.length;
252
+ index = markup.indexOf('<', copied);
253
+ if (name === 'style') {
254
+ // In HTML a self-closing style tag still opens a stylesheet, while in SVG
255
+ // it does not; the two readings disagree, so neither is accepted.
256
+ if (selfClosing !== '')
257
+ return refuse('self-closing style element');
258
+ // The stylesheet must be plain text up to its end tag, so the text
259
+ // checked here is exactly the text a browser applies.
260
+ if (index < 0 || !markup.startsWith('</', index)) {
261
+ return refuse('style element containing markup or missing its end tag');
262
+ }
263
+ const filtered = filterAdapterStylesheet(markup.slice(copied, index));
264
+ if (!filtered.ok)
265
+ return refuse(filtered.reason);
266
+ fitted += `<style ${ADAPTER_STYLE_MARKER}${kept}>${scopeAdapterStylesheet(filtered.css, scope)}`;
267
+ copied = index;
268
+ open.push({ name, svgContent: false });
269
+ continue;
270
+ }
271
+ fitted += `<${rawName}${kept}${selfClosing === '' ? '' : ' /'}>`;
272
+ if (selfClosing !== '') {
273
+ // Only SVG honours a self-closing slash; in HTML the element stays open.
274
+ if (!isSvgElement && !VOID_ELEMENTS.has(name)) {
275
+ return refuse(`self-closing HTML ${name} element`);
276
+ }
277
+ continue;
278
+ }
279
+ if (!isSvgElement && VOID_ELEMENTS.has(name))
280
+ continue;
281
+ open.push({
282
+ name,
283
+ svgContent: isSvgElement && !SVG_HTML_INTEGRATION_POINTS.has(name),
284
+ });
285
+ }
286
+ const unclosed = open.at(-1);
287
+ if (unclosed !== undefined)
288
+ return refuse(`unclosed ${unclosed.name} element`);
289
+ fitted += markup.slice(copied);
290
+ return { ok: true, markup: fitted, removedInlineStyles };
291
+ }
292
+ //# sourceMappingURL=adapter-markup-fit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-markup-fit.js","sourceRoot":"","sources":["../../src/diagram/adapter-markup-fit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The stylesheet filter for diagram adapter `<style>` elements.
3
+ *
4
+ * Adapter styles receive the page style nonce, so they are live CSS. Two rules
5
+ * keep them from becoming an escape hatch:
6
+ *
7
+ * - **They cannot load anything.** No `@import`, `@font-face` or other at-rule
8
+ * beyond `@media`, `@keyframes` and `@supports`; no `url()` except a fragment
9
+ * reference such as `url(#gradient)`; no `image-set()` or other function that
10
+ * takes a URL; no `expression()`.
11
+ * - **They cannot reach past their own diagram.** Every accepted stylesheet is
12
+ * wrapped in an `@scope` rule rooted at the diagram's canvas, so a selector
13
+ * such as `.ak-shell` or `:root` matches nothing outside it. Braces must
14
+ * balance, so the stylesheet cannot close that rule early.
15
+ *
16
+ * The filter is a deliberately small, conservative scanner rather than a CSS
17
+ * parser: anything that could hide a token from it is refused outright. That
18
+ * covers backslash escapes, HTML character references (which an SVG `<style>`
19
+ * decodes), and markup. Two things typed diagram compilers do emit are removed
20
+ * rather than refused: comments, each replaced by a space so the tokens on
21
+ * either side stay apart exactly as the comment kept them, and `!important`,
22
+ * which would otherwise outrank the page's motion and print guards. Removing
23
+ * either can only take power away from a declaration. The scanner visits each
24
+ * character once, so it is linear in the stylesheet's length.
25
+ */
26
+ /**
27
+ * Keyframes names the page itself defines. Keyframes are page-wide even inside
28
+ * `@scope`, so an adapter must not redefine them. A unit test keeps this list
29
+ * equal to the names in the compiler's stylesheets.
30
+ */
31
+ export declare const PAGE_KEYFRAMES_NAMES: ReadonlySet<string>;
32
+ /** An accepted stylesheet with its comments removed, or the reason it was refused. */
33
+ export type FilteredStylesheet = {
34
+ readonly ok: true;
35
+ readonly css: string;
36
+ } | {
37
+ readonly ok: false;
38
+ readonly reason: string;
39
+ };
40
+ /**
41
+ * Filter the stylesheet text of one adapter `<style>` element.
42
+ *
43
+ * Returns the stylesheet with its comments removed, or the rejection reason.
44
+ */
45
+ export declare function filterAdapterStylesheet(css: string): FilteredStylesheet;
46
+ /** Attribute naming the canvas element an adapter stylesheet is scoped to. */
47
+ export declare const ADAPTER_SCOPE_ATTRIBUTE = "data-ak-diagram-scope";
48
+ /**
49
+ * Wrap an accepted adapter stylesheet so it applies only inside its canvas.
50
+ *
51
+ * Inside `@scope`, a selector without `:scope` or `&` is read as a descendant
52
+ * of the scope root, and no selector can match an element outside the root.
53
+ * `scope` is a token from `[A-Za-z0-9_-]`, so it needs no CSS escaping.
54
+ */
55
+ export declare function scopeAdapterStylesheet(css: string, scope: string): string;
56
+ //# sourceMappingURL=adapter-stylesheet-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-stylesheet-filter.d.ts","sourceRoot":"","sources":["../../src/diagram/adapter-stylesheet-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyBH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAgBnD,CAAC;AAuDH,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAIvE;AAwGD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * The stylesheet filter for diagram adapter `<style>` elements.
3
+ *
4
+ * Adapter styles receive the page style nonce, so they are live CSS. Two rules
5
+ * keep them from becoming an escape hatch:
6
+ *
7
+ * - **They cannot load anything.** No `@import`, `@font-face` or other at-rule
8
+ * beyond `@media`, `@keyframes` and `@supports`; no `url()` except a fragment
9
+ * reference such as `url(#gradient)`; no `image-set()` or other function that
10
+ * takes a URL; no `expression()`.
11
+ * - **They cannot reach past their own diagram.** Every accepted stylesheet is
12
+ * wrapped in an `@scope` rule rooted at the diagram's canvas, so a selector
13
+ * such as `.ak-shell` or `:root` matches nothing outside it. Braces must
14
+ * balance, so the stylesheet cannot close that rule early.
15
+ *
16
+ * The filter is a deliberately small, conservative scanner rather than a CSS
17
+ * parser: anything that could hide a token from it is refused outright. That
18
+ * covers backslash escapes, HTML character references (which an SVG `<style>`
19
+ * decodes), and markup. Two things typed diagram compilers do emit are removed
20
+ * rather than refused: comments, each replaced by a space so the tokens on
21
+ * either side stay apart exactly as the comment kept them, and `!important`,
22
+ * which would otherwise outrank the page's motion and print guards. Removing
23
+ * either can only take power away from a declaration. The scanner visits each
24
+ * character once, so it is linear in the stylesheet's length.
25
+ */
26
+ /** At-rules an adapter stylesheet may use. Every other at-rule is refused. */
27
+ const ALLOWED_AT_RULES = new Set(['media', 'keyframes', 'supports']);
28
+ /**
29
+ * CSS functions that fetch a resource, take a URL as a string, or run code.
30
+ * `url()` is handled separately, because a fragment reference is allowed.
31
+ */
32
+ const FORBIDDEN_FUNCTIONS = new Set([
33
+ 'image-set',
34
+ '-webkit-image-set',
35
+ 'image',
36
+ 'src',
37
+ 'cross-fade',
38
+ '-webkit-cross-fade',
39
+ 'element',
40
+ '-moz-element',
41
+ 'paint',
42
+ 'expression',
43
+ ]);
44
+ /** The argument of an allowed `url()`: a same-document fragment reference only. */
45
+ const FRAGMENT_URL_ARGUMENT = /^[\t\n\f\r ]*(["']?)#[A-Za-z0-9_-]+\1[\t\n\f\r ]*$/u;
46
+ /**
47
+ * Keyframes names the page itself defines. Keyframes are page-wide even inside
48
+ * `@scope`, so an adapter must not redefine them. A unit test keeps this list
49
+ * equal to the names in the compiler's stylesheets.
50
+ */
51
+ export const PAGE_KEYFRAMES_NAMES = new Set([
52
+ 'ak-aurora',
53
+ 'ak-caret',
54
+ 'ak-draw',
55
+ 'ak-drift',
56
+ 'ak-enter',
57
+ 'ak-fade',
58
+ 'ak-line-in',
59
+ 'ak-marquee',
60
+ 'ak-reading',
61
+ 'ak-reveal',
62
+ 'ak-rise',
63
+ 'ak-scroll-edges',
64
+ 'ak-settle',
65
+ 'ak-tilt',
66
+ 'ak-type',
67
+ ]);
68
+ /** `!important`, with the whitespace CSS allows between its two parts. */
69
+ const IMPORTANT = /^![\t\n\f\r ]*important/iu;
70
+ const CLOSERS = { '{': '}', '(': ')', '[': ']' };
71
+ function isIdentCharacter(character) {
72
+ const code = character.charCodeAt(0);
73
+ return ((code >= 0x61 && code <= 0x7a) || // a-z
74
+ (code >= 0x41 && code <= 0x5a) || // A-Z
75
+ (code >= 0x30 && code <= 0x39) || // 0-9
76
+ character === '-' ||
77
+ character === '_' ||
78
+ code >= 0x80);
79
+ }
80
+ function isCssWhitespace(character) {
81
+ return (character === ' ' ||
82
+ character === '\t' ||
83
+ character === '\n' ||
84
+ character === '\r' ||
85
+ character === '\f');
86
+ }
87
+ /** True when `&` at this position would start an HTML character reference. */
88
+ function startsCharacterReference(css, index) {
89
+ const next = css[index + 1] ?? '';
90
+ return next === '#' || (next !== '' && /[A-Za-z0-9]/u.test(next));
91
+ }
92
+ /** End index (exclusive) of the identifier that starts at `start`. */
93
+ function identifierEnd(css, start) {
94
+ let end = start;
95
+ while (end < css.length && isIdentCharacter(css[end] ?? ''))
96
+ end += 1;
97
+ return end;
98
+ }
99
+ /**
100
+ * Check one character that may appear anywhere, including inside a string.
101
+ * Returns a rejection reason, or `undefined` when the character is harmless.
102
+ */
103
+ function hiddenTokenReason(css, index) {
104
+ const character = css[index];
105
+ if (character === '<')
106
+ return 'markup inside a style element';
107
+ if (character === '&' && startsCharacterReference(css, index)) {
108
+ return 'character reference inside a style element';
109
+ }
110
+ return undefined;
111
+ }
112
+ /**
113
+ * Filter the stylesheet text of one adapter `<style>` element.
114
+ *
115
+ * Returns the stylesheet with its comments removed, or the rejection reason.
116
+ */
117
+ export function filterAdapterStylesheet(css) {
118
+ const reason = scanAdapterStylesheet(css);
119
+ if (typeof reason === 'string')
120
+ return { ok: false, reason };
121
+ return { ok: true, css: reason.css };
122
+ }
123
+ function scanAdapterStylesheet(css) {
124
+ // An escape can spell any token, so it is refused before anything is read.
125
+ if (css.includes('\\'))
126
+ return 'CSS escape';
127
+ const open = [];
128
+ let cleaned = '';
129
+ let copied = 0;
130
+ let index = 0;
131
+ while (index < css.length) {
132
+ const character = css[index] ?? '';
133
+ const hidden = hiddenTokenReason(css, index);
134
+ if (hidden !== undefined)
135
+ return hidden;
136
+ if (character === '/' && css[index + 1] === '*') {
137
+ // A comment runs to the first `*/`. Its text is scanned too: in an SVG
138
+ // `<style>` a character reference such as `&#42;` could otherwise end the
139
+ // comment for the browser earlier than it ends here.
140
+ const end = css.indexOf('*/', index + 2);
141
+ if (end < 0)
142
+ return 'unterminated CSS comment';
143
+ for (let cursor = index + 2; cursor < end; cursor += 1) {
144
+ const inner = hiddenTokenReason(css, cursor);
145
+ if (inner !== undefined)
146
+ return inner;
147
+ }
148
+ cleaned += `${css.slice(copied, index)} `;
149
+ index = end + 2;
150
+ copied = index;
151
+ continue;
152
+ }
153
+ if (character === '!') {
154
+ const important = IMPORTANT.exec(css.slice(index, index + 32));
155
+ if (important === null)
156
+ return 'CSS ! other than !important';
157
+ cleaned += css.slice(copied, index);
158
+ index += important[0].length;
159
+ copied = index;
160
+ continue;
161
+ }
162
+ if (character === '"' || character === "'") {
163
+ // A string runs to its matching quote on the same line. Its content is
164
+ // inert, but it is still scanned for the characters that hide tokens.
165
+ let cursor = index + 1;
166
+ while (cursor < css.length && css[cursor] !== character) {
167
+ const inner = css[cursor] ?? '';
168
+ if (inner === '\n' || inner === '\r' || inner === '\f')
169
+ return 'unterminated CSS string';
170
+ const reason = hiddenTokenReason(css, cursor);
171
+ if (reason !== undefined)
172
+ return reason;
173
+ cursor += 1;
174
+ }
175
+ if (cursor >= css.length)
176
+ return 'unterminated CSS string';
177
+ index = cursor + 1;
178
+ continue;
179
+ }
180
+ if (character === '@') {
181
+ const nameEnd = identifierEnd(css, index + 1);
182
+ const name = css.slice(index + 1, nameEnd).toLowerCase();
183
+ if (!ALLOWED_AT_RULES.has(name))
184
+ return name === '' ? 'CSS at-rule' : `CSS @${name}`;
185
+ if (name === 'keyframes') {
186
+ let cursor = nameEnd;
187
+ while (cursor < css.length && isCssWhitespace(css[cursor] ?? ''))
188
+ cursor += 1;
189
+ const quoted = css[cursor] === '"' || css[cursor] === "'";
190
+ const keyframesStart = quoted ? cursor + 1 : cursor;
191
+ const keyframesName = css
192
+ .slice(keyframesStart, identifierEnd(css, keyframesStart))
193
+ .toLowerCase();
194
+ if (PAGE_KEYFRAMES_NAMES.has(keyframesName)) {
195
+ return 'CSS @keyframes name reserved by the page';
196
+ }
197
+ }
198
+ index = nameEnd;
199
+ continue;
200
+ }
201
+ if (isIdentCharacter(character)) {
202
+ const end = identifierEnd(css, index);
203
+ if (css[end] === '(') {
204
+ const name = css.slice(index, end).toLowerCase();
205
+ if (FORBIDDEN_FUNCTIONS.has(name))
206
+ return `CSS ${name}()`;
207
+ if (name === 'url') {
208
+ const close = css.indexOf(')', end + 1);
209
+ if (close < 0 || !FRAGMENT_URL_ARGUMENT.test(css.slice(end + 1, close))) {
210
+ return 'CSS url() other than a fragment reference';
211
+ }
212
+ index = close + 1;
213
+ continue;
214
+ }
215
+ }
216
+ index = end;
217
+ continue;
218
+ }
219
+ const closer = CLOSERS[character];
220
+ if (closer !== undefined) {
221
+ open.push(closer);
222
+ }
223
+ else if (character === '}' || character === ')' || character === ']') {
224
+ if (open.pop() !== character)
225
+ return 'unbalanced CSS brackets';
226
+ }
227
+ index += 1;
228
+ }
229
+ if (open.length > 0)
230
+ return 'unbalanced CSS brackets';
231
+ return { css: cleaned + css.slice(copied) };
232
+ }
233
+ /** Attribute naming the canvas element an adapter stylesheet is scoped to. */
234
+ export const ADAPTER_SCOPE_ATTRIBUTE = 'data-ak-diagram-scope';
235
+ /**
236
+ * Wrap an accepted adapter stylesheet so it applies only inside its canvas.
237
+ *
238
+ * Inside `@scope`, a selector without `:scope` or `&` is read as a descendant
239
+ * of the scope root, and no selector can match an element outside the root.
240
+ * `scope` is a token from `[A-Za-z0-9_-]`, so it needs no CSS escaping.
241
+ */
242
+ export function scopeAdapterStylesheet(css, scope) {
243
+ return `@scope (.ak-diagram-canvas[${ADAPTER_SCOPE_ATTRIBUTE}="${scope}"]){${css}}`;
244
+ }
245
+ //# sourceMappingURL=adapter-stylesheet-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-stylesheet-filter.js","sourceRoot":"","sources":["../../src/diagram/adapter-stylesheet-filter.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,11 @@
17
17
  * "verified before it reaches the artifact".
18
18
  * - The fallback text is always emitted, so the diagram's content is available
19
19
  * to assistive technology and to a reader whose adapter is not installed.
20
+ * - Accepted markup is fitted to the page's Content Security Policy: its
21
+ * `<style>` elements are marked to receive the page style nonce, and inline
22
+ * `style` attributes, which that policy refuses, are removed and reported.
23
+ * - Adapter stylesheets are filtered so they cannot load anything, and scoped
24
+ * to the diagram's own canvas so they cannot restyle the page.
20
25
  */
21
26
  import type { JsonValue } from '../json.js';
22
27
  export interface DiagramRenderRequest {
@@ -46,10 +51,22 @@ export interface DiagramAdapterResult {
46
51
  readonly adapter: string;
47
52
  /** Set when the adapter produced output that the trust boundary rejected. */
48
53
  readonly rejected?: string;
54
+ /**
55
+ * Number of inline `style` attributes removed from accepted markup. The page
56
+ * policy would refuse them anyway; the count lets the compiler say so.
57
+ */
58
+ readonly removedInlineStyles?: number;
59
+ /**
60
+ * Token the accepted markup's stylesheets are scoped to. The embedding page
61
+ * wraps the markup in an element with the class `ak-diagram-canvas` and a
62
+ * `data-ak-diagram-scope` attribute set to this token.
63
+ */
64
+ readonly scope?: string;
49
65
  }
50
66
  export declare const DIAGRAM_ADAPTER_CONTRACT_VERSION: 1;
51
67
  /** Bound on adapter output, so a runaway adapter cannot inflate the artifact. */
52
68
  export declare const MAX_DIAGRAM_MARKUP_BYTES: number;
69
+ export { ADAPTER_STYLE_MARKER } from './adapter-markup-fit.js';
53
70
  export interface AdapterMarkupCheck {
54
71
  readonly ok: boolean;
55
72
  readonly reason?: string;